(
T=(U
①T的初值是({r}
即最小生成樹初始時只有一個紅點r
②T經過n
⒈選擇紫邊集中一條輕邊並擴充進T
⒉將輕邊連接的藍點改紅點
⒊將輕邊改紅邊
⒋修改紫邊集
(
若當前形成的T中有k個頂點
對於每個藍點v ∈V
短紫邊作為輕邊的候選集即可
(
當把輕邊(u
於藍點j原來所關聯的最短紫邊的長度
(
PrimMST(G
//求圖G的以r為根的MST
InitCandidateSet(…);//初始化
for(k= (u,v)=SelectLiShtEdge(…);//選取輕邊(u,v); T←T∪{(u,v)};//擴充T,即(u,v)塗紅加入TE,藍點v並人紅點集U ModifyCandidateSet(…); //根據新紅點v調整候選輕邊集 } } (5) 算法的執行過程 用PRIM算法得到最小生成樹的過程【 參見動畫演示 】
注意: 若候選輕邊集中的輕邊不止一條,可任選其中的一條擴充到T中。TW.WINgWIT.cOM 連通網的最小生成樹不一定是惟一的,但它們的權相等。 【例】在上圖(e)中,若選取的輕邊是(2,4)而不是(2,1)時,則得到如圖(h)所示的另一棵MST。 (6)算法特點 該算法的特點是當前形成的集合T始終是一棵樹。將T中U和TE分別看作紅點和紅邊集,V-U看作藍點集。算法的每一步均是在連接 紅、藍點集的紫邊中選擇一條輕邊擴充進T中。MST性質保證了此邊是安全的。T從任意的根r開始,並逐漸生長直至U=V,即T包含了 C中所有的頂點為止。MST性質確保此時的T是G的一棵MST。因為每次添加的邊是使樹中的權盡可能小,因此這是一種"貪心"的策略。 (7)算法分析 該算法的時間復雜度為O(n 2 )。與圖中邊數無關,該算法適合於稠密圖。
From:http://tw.wingwit.com/Article/program/sjjg/201311/23827.html