演算法之最小生成樹

2021-08-20 04:39:22 字數 1043 閱讀 5688

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的真子集,就做如下貪心選擇:

選取滿足條件

且c[i][j]最小的邊,並將頂點

j新增到

s中。直到

s==v

時為止。在這個過程中選擇的邊就構成

g的一顆最小生成樹。

2. kruskal演算法基本思想:首先將g的

n個頂點看成

n個孤立的連通分支,將所有的邊按照權值從小大大排序。然後從第一條邊開始,依權值遞增的順序處理每一條邊:

當處理到第k條邊(v,

w)時,如果端點v和

w分別是當前兩個不同連通分支t1、

t2中的頂點時,就用邊(v,

w)將t1、

t2連線成乙個連通分支,然後繼續處理下一條邊;如果v和

w位於同乙個連通分支中,就直接處理下一條邊;直到只剩下乙個連通分支為止。

#include using namespace std;

#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新...