貪心演算法之最小生成樹(Prim)

2021-07-25 13:19:38 字數 831 閱讀 6534

最小生成樹(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 最小,則此...