最小生成樹(prim)
網路的生成樹中的邊帶權值,將生成樹各邊的權值加起來稱為生成樹的權,
權值最小的生成樹稱為為最小生成樹。
設g=(v,e)是連通帶權圖,v=.
prim演算法基本思想:
首先置s=,然後,只要s是v的真子集,就進行如下貪心選擇:選取滿足條件i∈s,j∈v-s,
且c[i][j]最小的邊,將頂點j新增到s中。這個過程一直進行下去直到v=s為止。
演算法如下:
//c:所有頂點的距離
public static void prim(int n,float c)
for(int i=1;ifloat min=float.max_value;
int j=1;
for(int k=2;k<=n;k++)//從lowconst中找最小的值且沒有加入s中的點
if((lowcost[k]min=lowcost[k];
j=k;//記錄要加入的點
}system.out.println(j+","+closest[j]);
s[j]=true;
for(int k=2;k<=n;k++)}}
}如下用prim實現最小生成樹的過程
貪心演算法 最小生成樹 Prim演算法
乙個無向帶權圖g v,e 其中n個頂點vertex,以及連線各個頂點之間的邊edge,可能有些頂點之間沒有邊,每條邊上的權值都是非負值。生成樹 g的乙個子圖,包含了所有的vertex,和部分的edge。最小生成樹 所有的生成樹中,各條edge上的權值總和最小的乙個。例子 設計通訊網路時,各個城市之間...
貪心演算法之Prim最小生成樹
滿足貪心演算法的條件是都滿足動態規劃的,只是貪心演算法的條件更強,不僅前乙個步驟的解可以用到後一步,而且前一步的解是子問題的最優解,最後能夠得到全域性的最優解。prim演算法是乙個求最小生成樹的演算法。表示圖g 有鄰接表 用於稀疏矩陣 和鄰接矩陣 用於稠密矩陣 下面我給的例項適合用稀疏矩陣。聽了大概...
C 之最小生成樹演算法(Prim)
最小生成樹是一副連通加權無向圖中一棵權值最小的生成樹。在一給定的無向圖 g v,e 中,u,v 代表連線頂點 u 與頂點 v 的邊 即 u,v in e 而 w u,v 代表此邊的權重,若存在 t 為 e 的子集 且 v,t 為樹,使得 w u,v w t sum w u,v 的 w t 最小,則此...