最小生成樹之Boruvka算法

Boruvka算法是求最小生成樹的最古老的算法,於1926年由Boruvka提出,那時計算機還沒出現呢。其時間複雜度和Prim、Kruskal算法一樣,也是O(ELogV)。而且Boruvka算法也和Prim、Kruskal一樣是貪心法。

它的基本思想是:生成樹中所有頂點必然是連通的,所以兩個不相交集必須連接起來才能構成生成樹,而且所選擇的連接邊的權重必須最小,才能得到最小生成樹。

算法描述如下

(1)輸入一個連通的有向帶權圖;

(2)把所有頂點都初始化成單獨的一個子集;

(3)初始化一個空的MST;

(4)只要子集個數大於1,就對依次各個子集合執行以下操作

(a)找出所有與當前集合有邊相連的集合,選出權重最小的那條邊(設爲minEdge);

(b)如果minEdge不存在於MST中,則把minEdge添加到MST中;

(5)MST已求得,算法結束。

 

我們以下圖爲例來模擬一下Boruvka算法的執行過程

 

初始時MST是空的,所有頂點都被當成單獨的一個子集,如圖中的藍色圈子所示

 

對所有子集,尋找它與其它子集連接的最小權重邊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章