Dijkstra.NET 库体验报告

在VS里用Nuget下载"Dijkstra.NET"库,然后就可以在需要的地方使用了。

首先,这是一个简单的graph,5个节点,7条边。

上代码

移动端看不清楚的可以看下面的:

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没有距离
}

基本不需要解释了

发现的问题

第一,这个算法只能解决有向图的最短路径;

第二,计算结果返回的是节点号?不太清楚

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

原文地址:https://www.cnblogs.com/onsummer/p/11235439.html