2016-06-12 164 views
1

我需要一種方法來找到有向圖中的第二條最短路徑,在第二條最短路徑上不能完全包含最短路徑。我意識到dijkstra算法,但是我無法找到一個簡單的方法來改變算法,在合理的時間內給我第二短的路徑。算法,sudo-code或C++的例子,三者之一將不勝感激。在直接圖中找到第二條最短路徑

+3

[可以使用哪種算法來查找圖中最短路徑的下一個?](http://stackoverflow.com/questions/4971850/which-algorithm-can-i-use-to-find圖中的最短路徑) – dotNET

+0

你將遇到的問題是證明你有第二短的路徑,你可能已經找到了第三,第四或其他路徑。 –

+0

不是算法專家,而是從最短路徑*中連續移除一個鏈接連接,然後找到缺少該鏈接的新的最短路徑。然後比較所有新的最短路徑? – Galik

回答

0

不知道下面是正確的作品,但它只是一個想法....

第二最短路徑,從最短路徑不同的至少一個邊緣。如果沒有節點被訪問兩次,這也意味着最短路徑中至少存在一條未被第二條最短路徑使用的邊。

如果這是正確的,你可以先搜索最短路徑。然後,對於最短路徑中的每條邊:將其權重設置爲無窮大(即將其從圖中排除)並在結果圖中搜索最短路徑。其中最短的路徑應該是原始圖中的第二短路徑。