1.問題描述:利用貪心演算法設計策略構造乙個無向連通帶權圖的最小生成樹。
最小生成樹:設g=(v,
e)是無向連通帶權圖,即乙個網路。
e中每條邊(v,
w)的權為
c[v][w]
。包含g
所有頂點的樹且該生成樹各邊權的總和最小(即耗費最小),則稱該生成樹為
g的最小生成樹。
設g=(v,
e)是無向連通帶權圖,頂點集v={
1,2,…,n}。
1. prim演算法基本思想:首先置頂點集s={
1},然後只要s是
v的真子集,就做如下貪心選擇:
選取滿足條件2. kruskal演算法基本思想:首先將g的且c[i][j]最小的邊,並將頂點
j新增到
s中。直到
s==v
時為止。在這個過程中選擇的邊就構成
g的一顆最小生成樹。
n個頂點看成
n個孤立的連通分支,將所有的邊按照權值從小大大排序。然後從第一條邊開始,依權值遞增的順序處理每一條邊:
當處理到第k條邊(v,#include using namespace std;w)時,如果端點v和
w分別是當前兩個不同連通分支t1、
t2中的頂點時,就用邊(v,
w)將t1、
t2連線成乙個連通分支,然後繼續處理下一條邊;如果v和
w位於同乙個連通分支中,就直接處理下一條邊;直到只剩下乙個連通分支為止。
#define n 6
#define max 10000
//頂點個數n,各邊權值c
void prim(int n,int c[n][n])
}cout《複雜度分析:o(n^2)
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 最小,則此...
最小生成樹之最大生成樹
題目 poj 3723 conscription 題意 要徵兵n個男兵和m個女兵,每個花費10000元,但是如果已經徵募的男士兵中有和將要徵募的女士兵關係好的,那麼可以減少花費,給出關係,求最小花費。分析 這個題目初始乙個是個二分圖,以為可以從這裡入手,但是這個題目這個性質沒用。初始花費沒人1000...
貪心演算法之最小生成樹(Prim)
最小生成樹 prim 網路的生成樹中的邊帶權值,將生成樹各邊的權值加起來稱為生成樹的權,權值最小的生成樹稱為為最小生成樹。設g v,e 是連通帶權圖,v prim演算法基本思想 首先置s 然後,只要s是v的真子集,就進行如下貪心選擇 選取滿足條件i s,j v s,且c i j 最小的邊,將頂點j新...