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

2021-09-08 09:02:27 字數 997 閱讀 3207

之前一直覺得prim和dijkstra很相似,但是沒有仔細對比;

今天看了下,主要有以下幾點:

1:prim是計算最小生成樹的演算法,比如為n個村莊修路,怎麼修花銷最少。

dijkstra是計算最短路徑的演算法,比如從a村莊走到其他任意村莊的距離。

2:prim演算法中有乙個統計總len的變數,每次都要把到下一點的距離加到len中;

dijkstra演算法中卻沒有,只需要把到下一點的距離加到cls陣列中即可;

3:prim演算法的更新操作更新的cls是已訪問集合到未訪問集合中各點的距離;

23              for (j=0;j)

2429              }

dijkstra演算法的更新操作更新的cls是源點到未訪問集合中各點的距離,已經訪問過的相當於已經找到源點到它的最短距離了;

20for (j=1;j<=n;j++)21

prim演算法

1

//初始化

2 memset(visited,0,sizeof

(visited));

3 visited[0] = 1

;4 len = 0;5

for (i=0;i0];6

//begin

7for (i=1;i)818

}19//訪問找到的那個點

20 len +=nlen;

21 visited[nid] = 1;22

//更新鄰接距離

23for (j=0;j)

2429 }

dijkstra演算法

1

void dijkstra(intv)2

18}19 vis[nxt]=1;20

for (j=1;j<=n;j++)

2125

}26 }

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

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

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

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

Dijkstra演算法和Prim演算法有什麼區別?

這兩個演算法十分相似 但是dijkstra演算法用於構建單源點的最短路徑樹 即從乙個圖中,找到這樣乙個樹,使得這個樹的根節點到任何節點的距離都是能到達這個節點的路徑的最短的那條。就是從圖中的任何一點出發 能找到其去往任何節點的最短路徑 prime演算法用於構建最小生成樹 mst 即書中的所有路徑的和...