最小生成樹專題

2021-09-10 19:26:46 字數 841 閱讀 6800

首先來回顧一下最小生成樹的概念:

在一給定的無向圖

g = (v, e) 中,(u, v) 代表連線頂點 u 與頂點 v 的邊(即),而 w(u, v) 代表此邊

的權重,若存在 t 為 e 的子集

(即)且為無迴圈圖,使得

的 w(t) 最小,則此 t 為 g 的最小生成樹

最小生成樹其實是最小權重生成樹的簡稱。

簡單地說,就是乙個無環且權值最小的連通圖。

計算最小生成樹有kruskal演算法和prim演算法,以下給出兩種演算法的c++模板:

kruskal:

struct linea[1000000];

bool eee(line x11,line y11){

return x11.w從程式中不難看出,kruskal演算法的核心思想就是先將邊從小到大排序,然後判斷邊的兩端是否有相同的祖宗(即是否聯通),如果不是,則將兩邊聯通,知道整個圖聯通為止。

prim:

#define maxn 100001

#define inf 96795798

int closest[maxn],lowcost[maxn],m;//m為節點的個數

int g[maxn][maxn];//鄰接矩陣

int prim(){

for(inti=0;i從這段**裡,我們可以發現,prim演算法的核心即是先任意選擇乙個點,然後將這個點加入集合,接著選擇與這個點聯通的權值最小的邊並聯通,將邊的另一端加入集合,然後連線集合中的點所聯通的邊中最小的那一條,並重複以上操作,直到所有點聯通為止。

最小生成樹專題

一 prim演算法 poj1258 有n個農場,已知這n個農場都互相相通,有一定的距離,現在每個農場需要裝光纖,問怎麼安裝光纖能將所有農場都連通起來,並且要使光纖距離最小,輸出安裝光纖的總距離 資料 幾個點,矩陣表示各點中間的距離 40 4 9 21 4 0 8 17 9 8 0 16 21 17 ...

專題 最小生成樹 一

這個專題我們討論的問題是在無向圖中尋找一棵最小生成樹 minimum spanning tree 這個問題對於有向圖的討論也是有意義的,只不過演算法更加複雜,這裡我們將只討論無向圖。最小生成樹存在當且僅當圖是連通的。此處我們不對概念做過多的介紹,直接介紹兩種主要的演算法 1.kruskal演算法 2...

專題六 最小生成樹 Kuangbin

kuangbin專題 poj1251 jungle roads 最小生成樹 poj1278 networking 最小生成樹 poj2031 building a space station 最小生成樹 poj2421 constructing roads 最小生成樹 zoj1586 qs netw...