2013-05-03 37 views
2

設G =(E,V)爲一個有非負邊緣代價的有向圖。讓s爲頂點。我需要找到一個算法,每個頂點v,包含s和v的最短週期。循環可能包含幾次相同的邊緣。尋找包含兩個節點的最短週期

有意義的解決方案是從s運行Dijkstra以便找到從s到每個v的最短路徑。然後,從每個v再次運行Dijkstra以便找到從v到s的最短路徑。最短的週期是兩者的結合。

這個工作,但將採取O(| V || E | + | V |^2 *日誌| V |)。有更好的解決方案嗎?

+0

我覺得這個問題更適合數學論壇。 – 2013-05-03 11:56:57

+0

是的,有一個解決方案可以運行Dijkstra兩次。 – 2013-05-03 12:04:38

+0

http://math.stackexchange.com/ – 2013-05-03 12:05:24

回答

4

對於有向圖,您可以使用Floyd-Warshall Algorithm找到所有兩對之間的最短路徑。

或者更有效的解決辦法是在反轉圖形運行Dijsktra(G'=(V,E'),使得對於在每E(v,u)(u,v)是在E')和CONCAT兩個溶液(一個在當然反向)。 這基本上是運行Dijkstra兩次。

+0

這麼簡單!謝謝! – Roy 2013-05-03 12:27:51

相關問題