prim演算法構造最小生成樹

2021-10-03 11:34:59 字數 734 閱讀 5344

1.問題

假設g=(v,e)是連通的,te是g上最小生成樹中邊的集合。演算法從u=(u0∈v)、te={}開始。重複執行下列操作:

在所有u∈u,v∈v-u的邊(u,v)∈e中找一條權值最小的邊(u0,v0)併入集合te中,同時v0併入u,直到v=u為止。

此時,te中必有n-1條邊,t=(v,te)為g的最小生成樹。

2.解析

演算法過程如下圖所示:

(1)圖中有6個頂點v1-v6,每條邊的邊權值都在圖上;先隨意選擇乙個頂點作為起始點,一般選擇v1作為起始點,設u集合為當前所找到最小生成樹裡面的頂點,e集合為所找到的邊,現在狀態如下:

u=; te={};

(2)現在查詢乙個頂點在u集合中,另乙個頂點在v-u集合中的最小權值,如圖所示,通過圖中我們可以看到邊v1-v3的權值最小為1,那麼將v3加入到u集合,(v1,v3)加入到te,狀態如下:

u=; te=;

(3)繼續尋找,現在狀態為u=; te=;在相交的邊上查詢最小值。

我們可以找到最小的權值為(v3,v6)=4,那麼我們將v6加入到u集合,並將最小邊加入到te集合,那麼加入後狀態如下:

u=; te=; 如此迴圈一下直到找到所有頂點為止。

3.設計

4.分析

時間複雜度:o(n^2) (n為頂點數)

5.原始碼位址

演算法 Prim演算法構造最小生成樹

基本概念 生成樹 乙個連通圖的生成樹是它的乙個極小連通子圖 從生成樹的定義可知,乙個連通圖的生成樹含有圖的全部n個頂點和n 1條邊。最小生成樹 minimal spanning tree 給連通圖的邊附上權值,則其所有權值之和最小的生成樹是最小生成樹。prim演算法構造最小生成樹 假設有連通圖g v...

使用prim演算法構造最小生成樹

對於乙個無向連通圖,若是稠密圖的話 儲存 鄰接矩陣g n n 來儲存圖,n為圖最大的點的數量 dist n 儲存集合外的點到集合的最短距離,s n 即集合s,儲存集合的點,若s i true,則該點在集合,否則不在。演算法 設乙個s集合 圖的點的集合 初始時集合沒有點 步驟 1 從所有點中找距離s集...

最小生成樹(prim演算法)

最小生成樹是資料結構中圖的一種重要應用,它的要求是從乙個帶權無向完全圖中選擇n 1條邊並使這個圖仍然連通 也即得到了一棵生成樹 同時還要考慮使樹的權最小。prim演算法要點 設圖g v,e 其生成樹的頂點集合為u。把v0放入u。在所有u u,v v u的邊 u,v e中找一條最小權值的邊,加入生成樹...