簡體   English   中英

找到兩個節點(頂點)之間的最短路徑

[英]Find the shortest Path between two nodes (vertices)

我有一個互連邊緣列表( E ),如何找到從一個頂點到另一個頂點的最短路徑?

我正在考慮使用最低共同的祖先 ,但邊緣沒有明確定義的根,所以我認為解決方案不起作用。

最短路徑由遍歷的最小頂點數定義。

注意:可能存在連接兩個頂點的多路徑,因此顯然廣度優先搜索將不起作用

Dijkstra的算法將為您完成此任務。

我不確定你是否需要在對節點之間或兩個特定節點之間的路徑。 既然某人已經給出了解決前者的答案,我會解釋后者。

如果您沒有關於圖形的任何先驗知識(如果您這樣做,您可以使用基於啟發式的搜索,例如A * ),那么您應該使用廣度優先搜索

Floyd-Warshall算法可能是您問題的可能解決方案,但也有其他解決方案來解決所有對最短路徑問題。

Shortest path is defined by the minimum number of vertexes treversed

它與最小邊數加1相同。

您可以使用標准廣度優先搜索,它將正常工作。 如果你有多個連接兩個頂點的路徑,只需保存其中一個頂點就不會影響任何東西,因為每個邊的權重都是1。

額外2美分。 看看networkx 有一些有趣的算法已經實現了你需要的東西,你可以選擇最適合的。

暫無
暫無

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

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