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

2022-02-03 09:33:04 字數 996 閱讀 2470

之前一直覺得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++)

21prim演算法

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演算法的異同

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

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

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