簡體   English   中英

了解 QuickGraph ShortestPathsDijkstra 結果

[英]Understanding QuickGraph ShortestPathsDijkstra results

我有一張圖,想用 Dijkstra 算法進行一些最短路徑搜索(我並不真正關心算法,但 dijkstra 是我熟悉的算法)。

這是我擁有的圖表的相關部分:

在此處輸入圖像描述

現在我按照 Quickgraph 文檔進行 dijkstra 搜索:

//Build QuickGraph UndirectedGraph from our data
UndirectedGraph<int, Edge<int>> ug = g.CreateUndirectedQuickGraph();

Func<Edge<int>,double> weightFunc = (Edge<int> edge) =>
{
    return 1; //without weights at this moment
};

var tryGetPath = ug.ShortestPathsDijkstra(weightFunc, 20);

IEnumerable<Edge<int>> path;
if (tryGetPath(23, out path))
    foreach (var e in path)
        Trace.WriteLine(e);

如您所見,我試圖獲得節點 20 和 23 之間的最短路徑。我得到的 output 是

20 -> 4
22 -> 4
23 -> 22

這似乎是對的,但我真的不明白如何從中提取節點路徑。 我期待的是:

20 -> 4
4 -> 22
22 -> 23

如何從此 output 構建最終路徑?


從 20 到 34 的示例:

 20->3 
 5->3 
 8->5 
 9->8
 36->9
 36->11
 34->11

注意36->11是如何出現在最后一條邊之前的。

我沒有在 QuickGraph 中使用過那個特定的算法,但這就是它的樣子......

由於您使用的是無向圖,因此 alg 可能按預期工作。

對於無向邊緣A->B (實際上是AB ),我認為您可以同樣將邊緣描述為B->A ,這應該被認為是等效的。

即,您可以將 output 解釋為邊的排序而不是頂點的排序。


如果您可以為第二個更長的示例添加額外的節點,也許我們可以檢查這個想法是否完全有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM