[英]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.