This documents an unmaintained version of NetworkX. Please upgrade to a maintained version and see the current NetworkX documentation.


greedy_color(G, strategy=<function strategy_largest_first>, interchange=False)[source]

Color a graph using various strategies of greedy graph coloring. The strategies are described in [1].

Attempts to color a graph using as few colors as possible, where no neighbours of a node can have same color as the node itself.

  • G (NetworkX graph) –
  • strategy (function(G, colors)) –

    A function that provides the coloring strategy, by returning nodes in the ordering they should be colored. G is the graph, and colors is a dict of the currently assigned colors, keyed by nodes.

    You can pass your own ordering function, or use one of the built in:

    • strategy_largest_first
    • strategy_random_sequential
    • strategy_smallest_last
    • strategy_independent_set
    • strategy_connected_sequential_bfs
    • strategy_connected_sequential_dfs
    • strategy_connected_sequential (alias of strategy_connected_sequential_bfs)
    • strategy_saturation_largest_first (also known as DSATUR)
  • interchange (bool) –

    Will use the color interchange algorithm described by [2] if set to true.

    Note that saturation largest first and independent set do not work with interchange. Furthermore, if you use interchange with your own strategy function, you cannot rely on the values in the colors argument.


  • A dictionary with keys representing nodes and values representing
  • corresponding coloring.


>>> G = nx.cycle_graph(4)
>>> d = nx.coloring.greedy_color(G, strategy=nx.coloring.strategy_largest_first)
>>> d in [{0: 0, 1: 1, 2: 0, 3: 1}, {0: 1, 1: 0, 2: 1, 3: 0}]


[1]Adrian Kosowski, and Krzysztof Manuszewski, Classical Coloring of Graphs, Graph Colorings, 2-19, 2004. ISBN 0-8218-3458-4.
[2]Maciej M. Syslo, Marsingh Deo, Janusz S. Kowalik, Discrete Optimization Algorithms with Pascal Programs, 415-424, 1983. ISBN 0-486-45353-7.