古詩詞大全網 - 成語故事 - 最短路徑的floyd算法的時間復雜度

最短路徑的floyd算法的時間復雜度

Floyd:每對節點之間的最短路徑。Floyd-Warshall算法(Floyd-Warshall

algorithm)是解決任意兩點間的最短路徑的壹種算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。Floyd-Warshall算法的時間復雜度為O(N3),空間復雜度為O(N2)。

Dijkstra: O(n2) 適用於 權值為非負 的圖的單源最短路徑,用斐波那契堆的復雜度O(E+VlgV),

BellmanFord:適用於權值有負值的圖的單源最短路徑,並且能夠檢測負圈,復雜度O(VE)

SPFA:適用於權值有負值,且沒有負圈的圖的單源最短路徑,論文中的復雜度O(kE),k為每個節點進入Queue的次數,且k壹般<=2,但此處的復雜度證明是有問題的,其實SPFA的最壞情況應該是O(VE).

先給出結論:

(1)當權值為非負時,用Dijkstra。

(2)當權值有負值,且沒有負圈,則用SPFA,SPFA能檢測負圈,但是不能輸出負圈。

(3)當權值有負值,而且可能存在負圈,則用BellmanFord,能夠檢測並輸出負圈。

(4)SPFA檢測負環:當存在壹個點入隊大於等於V次,則有負環,後面有證明。