public void TestDijkstra() { Dijkstra dijkstra = graph.Dijkstra(0); for (int i = 1; i < graph.V(); i++) { Edge[] path = dijkstra.ShortestPath(i); TestContext.WriteLine("Path: " + ToString(path)); TestContext.WriteLine("Weight: " + dijkstra.Weight(i).ToString()); } }
static void Main(string[] args) { var graph = new WeightedGraph(); graph.addVertex("A"); graph.addVertex("B"); graph.addVertex("C"); graph.addVertex("D"); graph.addVertex("E"); graph.addVertex("F"); graph.addEdge("A", "B", 4); graph.addEdge("A", "C", 2); graph.addEdge("B", "E", 3); graph.addEdge("C", "D", 2); graph.addEdge("C", "F", 4); graph.addEdge("D", "E", 3); graph.addEdge("D", "F", 1); graph.addEdge("E", "F", 1); var result = graph.Dijkstra("A", "E"); Console.WriteLine(123); }
public void DijkstraTest() { WeightedGraph <string> weightedGraph = new WeightedGraph <string>(); List <WeightedGraphNode <string> > seed = new List <WeightedGraphNode <string> > { new WeightedGraphNode <string>() { Data = "A", Weight = 0, Children = new Dictionary <string, double> { { "B", 2 }, { "C", 5 } } }, new WeightedGraphNode <string>() { Data = "B", Children = new Dictionary <string, double> { { "A", 2 }, { "C", 6 }, { "D", 1 }, { "E", 3 } } }, new WeightedGraphNode <string>() { Data = "C", Children = new Dictionary <string, double> { { "A", 5 }, { "B", 6 }, { "F", 8 } } }, new WeightedGraphNode <string>() { Data = "D", Children = new Dictionary <string, double> { { "B", 1 }, { "E", 4 } } }, new WeightedGraphNode <string>() { Data = "E", Children = new Dictionary <string, double> { { "B", 3 }, { "D", 4 }, { "G", 9 } } }, new WeightedGraphNode <string>() { Data = "F", Children = new Dictionary <string, double> { { "C", 8 }, { "G", 7 } } }, new WeightedGraphNode <string>() { Data = "G", Children = new Dictionary <string, double> { { "E", 9 }, { "F", 7 } } }, }; weightedGraph.NodeList = seed; weightedGraph.Dijkstra("A", "G"); List <string> result = new List <string>() { "A", "B", "E", "G" }; List <string> path = new List <string>(); weightedGraph.GetShortest(ref path, "A", "G"); path.Reverse(); CollectionAssert.AreEqual(path, result); }