prim 演算法是一種貪心演算法(適合稠密圖)
設g=(v, e) 是無向連通帶權圖,v=;設最小生成樹 t=(u, e'),演算法結束時 u=v,e'⊆e。
貪心選擇的思想是:每次對於還未加入到 u 中(即 v-u 中)所有點頂,從這些頂點中選擇乙個頂點,選擇的標準是,它距離 u 最近(和 u 中某個頂點的權值最小),將這個頂點加入到 u 中,並將這條邊加入到 e' 中。當所有頂點都加入到了 u 中,演算法結束。
/** n : 圖的頂點個數
* u0:開始頂點
* c :帶權鄰接矩陣
*/int prim(int n, int u0, int **c)
}const int infinity = numeric_limits::max();
for(int i=0; i < n; i++) }}
cout << prim(n, u0, c) << endl;
return 0;
}
最小生成樹之Prim(普里姆)演算法
關於什麼是prim 普里姆演算法 在實際生活中,我們經常碰到類似這樣的一類問題 假設要在n個城市之間建立通訊聯絡網,則連通n個城市只需要n 1條線路。這時,我們需要考慮這樣乙個問題,如何在最節省經費前提 下建立這個通訊網.換句話說,我們需要在這n個城市中找出乙個包含所有城市的連通子圖,使得 其所有邊...
最小生成樹之Prim(普里姆)演算法
關於什麼是prim 普里姆演算法 在實際生活中,我們常常碰到類似這種一類問題 如果要在n個城市之間建立通訊聯絡網,則連通n個城市僅僅須要n 1條線路。這時。我們須要考慮這樣乙個問題。怎樣在最節省經費前提 下建立這個通訊網.換句話說,我們須要在這n個城市中找出乙個包括全部城市的連通子圖,使得 其全部邊...
最小生成樹 普里姆演算法 Prim
最小生成樹 的7到12行先初始化了矩陣第一行的值,本來很奇怪,那其他行的值怎麼辦?看到最後的28 35行才知道,原來從下面開始會逐步初始化與上個頂點相關的邊的值,最後能夠把全部都初始化了。截圖如下 演算法定義 1 輸入 乙個加權連通圖,其中頂點集合為v,邊集合為e 2 初始化 v new 其中x為集...