prim 與 dijkstra 的比較

2021-07-04 07:30:21 字數 542 閱讀 8855

他們的不同之處是:

兩個集合u,v

u是構成最小生成樹的集合,v原圖的集合

prim 每次都是從u的每個點出發,尋找u集合與v集合最近的距離的點,再將v中的該點加入u中

dijksra從原點出發在v找離該點最近的點 p1, 將該距離加入到 dis[i],接著以p1為原點開始找

舉個例子就知道他們不能亂來了:

有四個頂點

(v0, v1, v2, v3)和四條邊

且邊值定義為

(v0, v1)=20, (v0, v2)=10, (v1, v3)=2, (v3, v2)=15

的圖,用

prim

演算法得到的最小生成樹中v0跟

v1是不直接相連的,也就是在最小生成樹中

v0v1

的距離是

v0->v2->v3->v1

的距離是

27,而用

dijkstra

演算法得到的

v0v1

的距離是

20,也就是二者直接連線的長度。

相關鏈結

Prim演算法 與 dijkstra演算法

有時總將兩者搞混,兩者都是基於貪心策略,且都是將圖中頂點劃分為兩部分,每次取最小值。在這裡對兩者的演算法做乙個區分。prim演算法是解決圖的 最小生成樹 問題,在每次迴圈中,選取乙個點在s中,另乙個點在v s中,且兩點權值最小,直到v s為空。dijkstra演算法是解決圖的 最短路徑 問題,即從某...

Dijkstra演算法與Prim演算法的異同

dijkstra演算法用於構建單源點的最短路徑樹 mst 即樹中某個點到任何其他點的距離都是最短的。例如,構建地圖應用時查詢自己的座標離某個地標的最短距離。可以用於有向圖,但是不能存在負權值 bellman ford可以處理負權值 dijkstra 選初始點r,q是無向圖g中所有點v的權值優先佇列,...

Prim演算法和Dijkstra演算法的異同

之前一直覺得prim和dijkstra很相似,但是沒有仔細對比 今天看了下,主要有以下幾點 1 prim是計算最小生成樹的演算法,比如為n個村莊修路,怎麼修花銷最少。dijkstra是計算最短路徑的演算法,比如從a村莊走到其他任意村莊的距離。2 prim演算法中有乙個統計總len的變數,每次都要把到...