static void TestMinimumSpanningTree(UGraphMatrix <string> g) { Console.WriteLine("Minimum Spanning Tree"); UGraphMatrix <string> minGraph = (UGraphMatrix <string>)g.MinimumSpanningTree(); Console.WriteLine(minGraph); }
static void TestShortestPath() { Console.WriteLine(); UGraphMatrix <string> uGraph = new UGraphMatrix <string>(); uGraph.AddVertex("A"); uGraph.AddVertex("B"); uGraph.AddVertex("C"); uGraph.AddVertex("D"); uGraph.AddVertex("E"); uGraph.AddVertex("F"); uGraph.AddVertex("G"); uGraph.AddVertex("H"); uGraph.AddEdge("A", "F", 10); uGraph.AddEdge("A", "B", 28); uGraph.AddEdge("B", "H", 13); uGraph.AddEdge("F", "E", 25); uGraph.AddEdge("B", "G", 14); uGraph.AddEdge("B", "C", 16); uGraph.AddEdge("E", "G", 24); uGraph.AddEdge("E", "D", 22); uGraph.AddEdge("G", "D", 18); uGraph.AddEdge("D", "C", 12); UGraphMatrix <string> shortestPath = (UGraphMatrix <string>)uGraph.ShortestWeightedPath("A", "D"); Console.WriteLine(shortestPath); }
static void TestTraversals() { UGraphMatrix <string> uGraph = new UGraphMatrix <string>(); uGraph.AddVertex("PA"); uGraph.AddVertex("Saskatoon"); uGraph.AddVertex("Regina"); uGraph.AddVertex("Weyburn"); uGraph.AddVertex("Estevan"); uGraph.AddVertex("MJ"); uGraph.AddVertex("Yorkton"); uGraph.AddVertex("Swift"); uGraph.AddEdge("PA", "Saskatoon", 141); uGraph.AddEdge("Saskatoon", "MJ", 220); uGraph.AddEdge("Saskatoon", "Yorkton", 328); uGraph.AddEdge("Yorkton", "Regina", 187); uGraph.AddEdge("Swift", "MJ", 190); uGraph.AddEdge("MJ", "Regina", 72); uGraph.AddEdge("Regina", "Weyburn", 115); uGraph.AddEdge("Weyburn", "Estevan", 86); //Console.WriteLine(uGraph); uGraph.DepthFirstTraversal("Saskatoon", processData); }
static void TestEnumerateNeighbours(UGraphMatrix <string> g, string start) { Console.WriteLine("Enumerate Neighbours"); foreach (Vertex <string> vertex in g.EnumerateNeighbours(start)) { Console.WriteLine(vertex); } }
static void Main(string[] args) { UGraphMatrix <string> uGraph = new UGraphMatrix <string>(); AddData(uGraph); Console.WriteLine(uGraph); TestMinimumSpanningTree(uGraph); TestEnumerateNeighbours(uGraph, "Reg"); TestDepthFirst(uGraph, "SA"); TestBreadthFirst(uGraph, "SA"); TestShortestPath(); }
static void TestUndirectedGraph() { UGraphMatrix <string> dGraph = new UGraphMatrix <string>(); dGraph.AddVertex("Saskatoon"); dGraph.AddVertex("Moose Jaw"); dGraph.AddVertex("Regina "); dGraph.AddEdge("Saskatoon", "Moose Jaw", 255); dGraph.AddEdge("Saskatoon", "Regina ", 250); dGraph.AddEdge("Regina ", "Moose Jaw", 70); Console.WriteLine(dGraph); }
static void TestShortestWeightedPath() { UGraphMatrix <string> uGraph = new UGraphMatrix <string>(); uGraph.AddVertex("Prince Albert"); uGraph.AddVertex("Saskatoon"); uGraph.AddVertex("Yorkton"); uGraph.AddVertex("Regina"); uGraph.AddVertex("Weyburn"); uGraph.AddEdge("Prince Albert", "Saskatoon", 2); uGraph.AddEdge("Saskatoon", "Yorkton", 4); uGraph.AddEdge("Saskatoon", "Regina", 1); uGraph.AddEdge("Regina", "Yorkton", 3); uGraph.AddEdge("Regina", "Weyburn", 5); uGraph.AddEdge("Yorkton", "Weyburn", 1); Console.WriteLine(uGraph); Console.WriteLine(uGraph.ShortestWeightedPath("Weyburn", "Prince Albert")); }
static void AddData(UGraphMatrix <string> g) { g.AddVertex("SA"); g.AddVertex("PA"); g.AddVertex("Reg"); g.AddVertex("MJ"); g.AddVertex("Wyn"); g.AddVertex("Yk"); g.AddVertex("SC"); g.AddVertex("Wey"); g.AddEdge("SA", "PA", 140); g.AddEdge("SA", "Reg", 250); g.AddEdge("SA", "SC", 300); g.AddEdge("MJ", "Reg", 72); g.AddEdge("MJ", "SC", 200); g.AddEdge("SA", "Wyn", 189); g.AddEdge("Wyn", "Yk", 140); g.AddEdge("Reg", "Yk", 190); g.AddEdge("Wey", "Reg", 116); }
static void TestBreadthFirst(UGraphMatrix <string> g, string s) { Console.WriteLine("Breadth First"); g.BreadthFirstTraversal(s, ProcessCity); }