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

    基本不需要解释了

    发现的问题

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

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

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

  • 相关阅读:
    Action直接访问Servlet API
    Struts2与Struts1的对比
    参入github上的开源项目的步骤
    TortoiseSVN中图标的含义
    eclipse 快捷键
    base(function strchr)
    1
    Java 关于路径
    java初阶
    关于C++中计时的方法
  • 原文地址:https://www.cnblogs.com/onsummer/p/11235439.html
Copyright © 2011-2022 走看看