From c05b52762f157760355e7a332dab345a75daf83f Mon Sep 17 00:00:00 2001 From: abhaysinghraihal <117754689+abhaysinghraihal@users.noreply.github.com> Date: Sun, 15 Jan 2023 11:41:12 +0530 Subject: [PATCH] Python implementation for greedy graph colouring algo --- algorithms/graph/greedyGraphColoring.py | 64 +++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 algorithms/graph/greedyGraphColoring.py diff --git a/algorithms/graph/greedyGraphColoring.py b/algorithms/graph/greedyGraphColoring.py new file mode 100644 index 000000000..44b3a9e56 --- /dev/null +++ b/algorithms/graph/greedyGraphColoring.py @@ -0,0 +1,64 @@ + +def addEdge(adj, v, w): + + adj[v].append(w) + + # Note: the graph is undirected + adj[w].append(v) + return adj + +# Assigns colors (starting from 0) to all +# vertices and prints the assignment of colors +def greedyColoring(adj, V): + + result = [-1] * V + result[0] = 0; + + + available = [False] * V + + for u in range(1, V): + + for i in adj[u]: + if (result[i] != -1): + available[result[i]] = True + + cr = 0 + while cr < V: + if (available[cr] == False): + break + + cr += 1 + + result[u] = cr + + for i in adj[u]: + if (result[i] != -1): + available[result[i]] = False + + for u in range(V): + print("Vertex", u, " ---> Color", result[u]) + +# Driver Code +if __name__ == '__main__': + + g1 = [[] for i in range(5)] + g1 = addEdge(g1, 0, 1) + g1 = addEdge(g1, 0, 2) + g1 = addEdge(g1, 1, 2) + g1 = addEdge(g1, 1, 3) + g1 = addEdge(g1, 2, 3) + g1 = addEdge(g1, 3, 4) + print("Coloring of graph 1 ") + greedyColoring(g1, 5) + + g2 = [[] for i in range(5)] + g2 = addEdge(g2, 0, 1) + g2 = addEdge(g2, 0, 2) + g2 = addEdge(g2, 1, 2) + g2 = addEdge(g2, 1, 4) + g2 = addEdge(g2, 2, 4) + g2 = addEdge(g2, 4, 3) + print("\nColoring of graph 2") + greedyColoring(g2, 5) +