dijkstra,belllman-ford,spfa最短路算法

 

參考博客優化

 

時間複雜度對比:spa

  Dijkstra:  O(n2.net

  Dijkstra + 優先隊列(堆優化):  O(E+V∗logV) blog

  SPFA:  O(k∗E) ,k爲每一個節點進入隊列的次數,通常小於等於2,最壞狀況爲O(V∗E)   隊列

  BellmanFord: O(V∗E) ,可檢測負圈get

  Floyd: O(n3)   計算每對節點之間的最短路徑博客

 

結論:
  ① 當權值爲非負時,用Dijkstra。
  ② 當權值有負值,且沒有負圈,則用SPFA,SPFA能檢測負圈,可是不能輸出負圈。
  ③ 當權值有負值,並且可能存在負圈,則用BellmanFord,可以檢測並輸出負圈。
  ④ SPFA檢測負環:當存在一個點入隊大於等於V次時,則有負環。時間

相關文章
相關標籤/搜索