1. 程式人生 > >四大最短路徑算法比較

四大最短路徑算法比較

路徑 spa .net 擴展 title repl 範圍 structure 算法與數據結構

FloydDijkstraBellman-Ford隊列優化的Bellman-ford
空間復雜度 O(N²) O(M) O(M) O(M)
時間復雜度 O(N3) O((M+N)logN) O(NM) O(NM)
適用情況 稠密圖,和頂點關系密切 稠密圖,和頂點關系密切 稀疏圖,和邊關系密切 稀疏圖,和邊關系密切
負權 可以解決 不能解決 可以解決 可以解決

註1:N為定點數,M為邊數

註2: Floyd的編碼復雜度較小,均攤到每個點上的時間復雜度並不算太高,如果是求所有點對間的最短路徑,或數據範圍較小,Floyd算法較為合適

註3: Dijkstra用堆優化後,時間復雜度可以達到O(MlogN),具有良好的擴展性,最大的缺點是不能解決負權的問題

四大最短路徑算法比較