四種最短路徑演算法對比

2021-07-11 16:13:29 字數 541 閱讀 3986

floyd

dijkstra

bellman-ford

佇列優化的bellman-ford

空間複雜度

o(n²)

o(m)

o(m)

o(m)

時間複雜度

o(n²)

o((m+n)logn)

o(nm)

o(nm)

適用情況

稠密圖,和頂點關係密切

稠密圖,和頂點關係密切

稀疏圖,和邊關係密切

稀疏圖,和邊關係密切

負權可以解決

不能解決

可以解決

可以解決

注1:n為定點數,m為邊數

注2:  floyd的編碼複雜度較小,均攤到每個點上的時間複雜度並不算太高,如果是求所有點對間的最短路徑,或資料範圍較小,floyd演算法較為合適

注3: dijkstra用堆優化後,時間複雜度可以達到o(mlogn),具有良好的擴充套件性,最大的缺點是不能解決負權的問題

以上內容摘自《啊哈!演算法》第六章,177頁

最短路徑四種解法

在學習 圖 的時候,遇到過一道經典的題 最短路徑。最短路徑有四種最經典的解法。廢話不多說,直接上 floyd warshall include using namespace std const int m 999999 int n,m,p1,p2,l int map 1000 1000 intma...

最短路徑四種演算法 總結篇

最短路 在乙個圖中有 n個點 m條邊。邊有權值,權值可正可負。邊可能是有向的,也可能是無向的。給定兩個點,起點是s,終點是t,在所有能連線s和t的路徑中尋找邊的權值之 和 最小的路徑,這就是最短路徑問題 最短路有兩種 無權圖bfs求最短路 有權圖演算法 對比 主要適用方向 時間複雜度 處理負權邊 處...

最短路四種演算法模板

1.floyed演算法求多源最短路 includeusing namespace std const int maxn 1e3 10 define inf 0x3f3f3f3f int mp maxn maxn 記錄圖之間的路徑 int main 初始化 for int i 0 i a b c mp...