prim演算法和dijkstra演算法的異同
之前一直覺得prim和dijkstra很相似,但是沒有仔細對比;
今天看了下,主要有以下幾點:
1:prim是計算最小生成樹的演算法,比如為n個村莊修路,怎麼修花銷最少。
dijkstra是計算最短路徑的演算法,比如從a村莊走到其他任意村莊的距離。
2:prim演算法中有乙個統計總len的變數,每次都要把到下一點的距離加到len中;
dijkstra演算法中卻沒有,只需要把到下一點的距離加到dist陣列中即可;
3:prim演算法的更新操作更新的dist是已訪問集合到未訪問集合中各點的距離;
1for (j=0;j)
27 }
dijkstra演算法的更新操作更新的dist是源點到未訪問集合中各點的距離,已經訪問過的相當於已經找到源點到它的最短距離了;
1for (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演算法:
1void 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演算法中卻沒有,只需要...