古詩詞大全網 - 成語經典 - Floyd算法與Dijkstra算法的不同

Floyd算法與Dijkstra算法的不同

Floyd算法又稱為弗洛伊德算法,插點法,是壹種用於尋找給定的加權圖中頂點間最短路徑的算法。

算法過程:1,從任意壹條單邊路徑開始。所有兩點之間的距離是邊的權,或者無窮大,如果兩點之間沒有邊相連。

2,對於每壹對頂點 u 和 v,看看是否存在壹個頂點 w 使得從 u 到 w 再到 v 比己知的路徑更短。如果是更新它。

Dijkstra(迪傑斯特拉)算法是典型的單源最短路徑算法,用於計算壹個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。

 

算法步驟如下:

1. 初使時令 S={V0},T={其余頂點},T中頂點對應的距離值

若存在<V0,Vi>,d(V0,Vi)為<V0,Vi>弧上的權值

若不存在<V0,Vi>,d(V0,Vi)為∝

2. 從T中選取壹個其距離值為最小的頂點W且不在S中,加入S

3. 對T中頂點的距離值進行修改:若加進W作中間頂點,從V0到Vi的

距離值比不加W的路徑要短,則修改此距離值

重復上述步驟2、3,直到S中包含所有頂點,即S=T為止