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

2022-08-29 16:06:23 字數 999 閱讀 1838

prim演算法和dijkstra演算法的異同

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

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

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

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

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

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

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

1

for (j=0;j)

27 }

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

1

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

2

prim演算法:

1 memset(visited,0,sizeof(visited));//

初始化2 visited[0] = 1

;3 len = 0;4

for (i=0;i)

5 dist[i] = map[0][i];//

begin

6for (i=1;i)717

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

19 len +=min;

20 visited[pos] = 1;21

//更新鄰接距離

22for (j=0;j)

2328

}29 }

dijkstra演算法:

1

void dijkstra(intv)2

19}20 vis[u]=1;21

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

2226

}27 }

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演算法中卻沒有,只需要...