private void ColorNodes(List<Node> orderedNodes) { orderedNodes.ForEach(x => x.Color = 0); var queue = new Queue<Node>(); orderedNodes.ForEach(queue.Enqueue); var bfsColorizer = new BfsGraphColorizer(); bfsColorizer.Color(queue, orderedNodes); }
public void ColoringTest() { //http://en.wikipedia.org/wiki/File:4CT_Non-Counterexample_1.svg var states = new Graph(); states.AddNode("9"); states.AddNode("1"); states.AddNode("2"); states.AddNode("3"); states.AddNode("4"); states.AddNode("5"); states.AddNode("6"); states.AddNode("7"); states.AddNode("8"); //TODO: add all states states["1"].AddEdge(states["2"]); states["1"].AddEdge(states["3"]); states["1"].AddEdge(states["4"]); states["1"].AddEdge(states["5"]); states["2"].AddEdge(states["3"]); states["2"].AddEdge(states["5"]); states["2"].AddEdge(states["6"]); states["2"].AddEdge(states["9"]); states["3"].AddEdge(states["4"]); states["3"].AddEdge(states["6"]); states["3"].AddEdge(states["7"]); states["4"].AddEdge(states["5"]); states["4"].AddEdge(states["7"]); states["4"].AddEdge(states["8"]); states["5"].AddEdge(states["8"]); states["5"].AddEdge(states["9"]); states["6"].AddEdge(states["7"]); states["6"].AddEdge(states["9"]); states["7"].AddEdge(states["8"]); states["8"].AddEdge(states["9"]); //TODO: add all edges for adjacent states var bfsGraphColorizer = new BfsGraphColorizer(); bfsGraphColorizer.Color(states.Values); Debug.Print("Using BFS algorithm:"); foreach (var state in states) Debug.Print("{0}: {1}", state.Key, state.Value.Color); var bruteForceGraphColorizer = new BruteForceGraphColorizer(); bruteForceGraphColorizer.Color(states); Debug.Print("Using Brute Force algorithm:"); foreach (var state in states) Debug.Print("{0}: {1}", state.Key, state.Value.Color); }