Dijkstra.NET 庫體驗報告

在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

第三,沒有提供鄰接矩陣的接口,輸入數據也比較麻煩接口

相關文章
相關標籤/搜索