在VS裏用Nuget下載"Dijkstra.NET"庫,而後就能夠在須要的地方使用了。算法
首先,這是一個簡單的graph,5個節點,7條邊。ui
移動端看不清楚的能夠看下面的:spa
Graph<int, string> graph = new Graph<int, string>(); graph.AddNode(1); // 添加節點1 graph.AddNode(2); // 添加節點2 graph.AddNode(3); graph.AddNode(4); graph.AddNode(5); graph.Connect(1, 2, 4, "some custom information in edge"); // 添加節點1和2的邊長(即成本)5,並添加描述信息 graph.Connect(2, 4, 1, "some custom information in edge"); graph.Connect(1, 4, 2, "some custom information in edge"); graph.Connect(2, 3, 4, "some custom information in edge"); graph.Connect(3, 4, 1, "some custom information in edge"); graph.Connect(3, 5, 3, "some custom information in edge"); graph.Connect(4, 5, 7, "some custom information in edge"); // graph.Connect(4, 3, 1, "some custom information in edge"); // 註釋這一句就會變成1 4 5 不註釋就是 1 4 3 5 // 證實這個算法只能算有向圖 ShortestPathResult result = graph.Dijkstra(1, 5); // 從圖中獲取節點1和2的最短路徑 IEnumerable<uint> path = result.GetPath();// 返回所需走過的節點列表 foreach (var item in path) { System.Console.WriteLine(item);// 結果是 1 4 5 -> 由於4~3沒有距離 }
基本不須要解釋了code
第一,這個算法只能解決有向圖的最短路徑;orm
第二,計算結果返回的是節點號?不太清楚blog
第三,沒有提供鄰接矩陣的接口,輸入數據也比較麻煩接口