prime演算法 構造最小生成樹

2021-10-16 22:06:42 字數 790 閱讀 9342

將所有節點分成兩個集合v,u。

在帶權連通圖中v是包含所有頂點的集合,u是已經在最小生成樹中的節點;

(1)初始時,從圖中任意某一頂點v開始,此時集合u=(以v到其他頂點的所有邊為侯選邊);

(2) 在所有u∈u,w∈v-u的邊(u,w)∈e中找到一條權值最小的邊,將(u,w)這條邊加入到已找到邊的集合,並且將點w加入到集合u中,

(3)重複上一操作,當u=v時,就找到了這顆最小生成樹

總而言之,每次查詢u中的點與v-u中點路徑權值最小的邊,再將這條邊連線的v-u中的點加入到最小生成樹,一直迴圈,直到所有的點被加入到最小生成樹中,所生成的集合u就是最小生成樹。

設立兩個資料結構

vector<

bool

>visited; 表示該點是否被加入到最小生成樹中,如果在值為1

,不在值為0

vector<

int>min_cost; 未在最小生成樹中的點到最小生成樹中的節點的最小權值

**參見leetcode 1584

class

solution

while

(count>0)

} result+

=min;

//將min加入

visited[index]=1

;//更新min_cost

for(

int i=

0;icount--;}

return result;}}

;

最小生成樹 Prime演算法

對於乙個圖,它的所有生成樹中必有乙個 邊的權值最小 的生成樹,我們把它稱為最小生成樹。概念很抽象,換做實際問題 有十個城市,各個城市之間距離或遠或近。需要建設乙個道路網,把十個城市連線在一起,要求道路網的道路長度最小。各個城市的連線可以抽象為乙個圖,本質上即是求該圖的乙個最小生成樹。每乙個圖可能有多...

最小生成樹 prime演算法

問題 c 建立通訊 時間限制 1 sec 記憶體限制 128 mb 提交 7 解決 4 提交 狀態 討論版 題目描述 據不完全統計,受 影響,四川大部分災區通訊陷入癱瘓,數千個基站因斷電 傳輸中斷等原因退出服務,目前總公司已緊急部署對受災地區進行通訊搶修。按照應急通訊保障預案,必須盡快 付出代價最小...

最小生成樹 prime演算法

生成樹頂點集合,初始只含起點 v0。visit i 1 i點已在生成樹中 lowcost i 生成樹中的點 到頂點 i 的最短距離。演算法過程 1.初始化生成樹,一開始只將起點 v0 加入到 樹中。2.初始化 lowcost 陣列,初值為 v0 到各頂點的距離,無邊則為 inf。重複以下步驟,直到所...