zoukankan      html  css  js  c++  java
  • 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没有距离
    }

    基本不需要解释了

    发现的问题

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

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

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

  • 相关阅读:
    oracle用户和权限
    oracle中的索引
    oracle中的序列
    oracle中的视图
    oracle PL/SQL块
    oracle创建表案列
    半导体随机存储器
    IEEE754标准
    定点数的移位操作
    真值,原码,反码以及补码和移码总结
  • 原文地址:https://www.cnblogs.com/onsummer/p/11235439.html
Copyright © 2011-2022 走看看