如何使用QuickGraph Library找到最昂贵(最高)的距离/路径?

时间:2013-11-20 15:07:34

标签: c# graph quickgraph

这是我的问题的一个例子。

enter image description here

我用QuickGraph库(adjacencyGraph)模拟我的图形。

我想找到一个最昂贵(最高)的距离/路径,例如A> D> H> J或A> D> H> ķ

我非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

除非您了解有关图表的其他属性,并且假设没有循环,您可以进行简单的深度优先搜索(这可能比广度优先搜索更快,因为您只需要一个结果)。

答案 1 :(得分:0)

我找到了解决方案。 我将权重成本乘以-1,然后使用Bellman Ford最短路径算法找到单源短路路径(Ref:QuickGraph Shortest Path)。 这样我就找到了最大路径

这是C#源代码

    public AdjacencyGraph<string, Edge<string>> Graph { get; private set; }
    public Dictionary<Edge<string>, double> EdgeCost { get; private set; }

    ......

    public void FindPath(string @from = "START", string @to = "END")
    {
        Func<Edge<string>, double> edgeCost = AlgorithmExtensions.GetIndexer(EdgeCost);
        // Positive or negative weights
        TryFunc<string, System.Collections.Generic.IEnumerable<Edge<string>>> tryGetPath = Graph.ShortestPathsBellmanFord(edgeCost, @from);

        IEnumerable<Edge<string>> path;
        if (tryGetPath(@to, out path))
        {
            Console.Write("Path found from {0} to {1}: {0}", @from, @to);
            foreach (var e in path) { Console.Write(" > {0}", e.Target); }
            Console.WriteLine();
        }
        else { Console.WriteLine("No path found from {0} to {1}."); }
    }