2011-08-02 66 views

回答

2

根據Wikipedia,要計算圖的直徑,首先應該找到所有對最短路徑。在計算完全對最短路徑後,兩種算法都減少到O(V^2)計算,因此它們的複雜性是相同的。

0

不,兩者之間的時間複雜性不應有任何差異。

通過調整最短路徑算法,您可以找到兩個頂點之間最長的路徑。

1

我還沒有閱讀關於這個問題的很多文獻,但我懷疑這兩者是相同的。但是,如果有差異,我會說計算圖的直徑可能漸近地快。

我的兩種算法都是使用Dijkstra算法在V*(E+V*log(V))中運行計算所有對最短路徑。那麼你的平均值就是所有這些值的算術平均值。我看不到一種可以加快速度的方法。

但是,對於計算圖的直徑,可能有一些巧妙的技巧可以用來加速此過程。但是作爲一個上界,你可以簡單地通過所有對最短路徑上的上確界來得到直徑,其具有與計算平均最短路徑相同的運行時複雜度。

+0

Dijkstra算法只計算單源最短路徑,而不是所有對最短路徑。計算所有對最短路徑的Dijkstra算法的一個修改是Johnson算法,在某些情況下它可以勝過Floyd-Warshall。 – templatetypedef

+0

只需在所有單一來源上運行Dijkstra算法。它仍然比FW更快。 – tskuzzy

+0

@ tskuzzy-約翰遜的算法實質上是在對圖進行預處理以消除任何負重邊後完成的。 :-) – templatetypedef