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

第三,没有提供邻接矩阵的接口,输入数据也比较麻烦接口

相关文章
相关标签/搜索