code: def strategy_independent_set(G, colors):
      """Uses a greedy independent set removal strategy to determine the
      colors.
  
      This function updates ``colors`` **in-place** and return ``None``,
      unlike the other strategy functions in this module.
  
      This algorithm repeatedly finds and removes a maximal independent
      set, assigning each node in the set an unused color.
  
      ``G`` is a NetworkX graph.
  
      This strategy is related to :func:`strategy_smallest_last`: in that
      strategy, an independent set of size one is chosen at each step
      instead of a maximal independent set.
  
      """
      remaining_nodes = set(G)
      while len(remaining_nodes) > 0:
          nodes = _maximal_independent_set(G.subgraph(remaining_nodes))
          remaining_nodes -= nodes
          yield from nodes
  
imports: import itertools
  from collections import defaultdict, deque
  import networkx
  from networkx.utils import arbitrary_element, py_random_state
label_desc: Use image node_id 5 for calling a global function with example usage: strategy_independent_set(G, colors) without return types