最小生成樹之Prim演算法分析

2021-10-03 08:13:18 字數 1078 閱讀 7605

設g=(v,e)是無向連通帶權圖,即乙個網路。圖中每一條邊(u,v)的權是c[u][v],表示聯通u與v的代價。

如果g的子圖t是一棵包含g的所有頂點的樹,則稱t為g的生成樹。生成樹上各邊權的總和稱為該生成樹的耗費。在g的所有生成樹中,耗費最小的生成樹稱為g的最小生成樹:

貪心演算法可以設計出構造最小生成樹的有效演算法。

primkruskal演算法都是應用貪心演算法設計的。

prim演算法基本思想

設g=(v,e)是連通帶權圖,v=

首先置s=,這裡vx為任意起點(vx∈v),然後重複執行下列操作:

下面繪圖的形式來演示prim演算法的具體過程,這裡選取v1為起點,具體演算法中根據prim函式的start來決定起點。

// start為起始頂點

s[start]

= true;

//頂點start加入集合s

for(遍歷除start外剩餘頂點)

sumweight +

= lowcost[j]

;//加上權重

s[j]

= true;

//頂點j加入s集合

for(遍歷所有點)if(

(!s[k])&&

(cost[j]

[k]< lowcost[k]))

//若有更小的權重

return sumweight;

//返回權重和

}prim演算法的時間複雜度與網中的邊數無關,適合於稠密圖,時間複雜度o(n²),但可以用堆優化,優化後的prim演算法時間複雜度o(mlogn)。

最小生成樹之prim演算法

最小生成樹的演算法思想和介面介紹過的求單源的最短路徑演算法dijkstra演算法有很多相似地方,甚至很多 都是一樣。prim演算法要解決的主要問題是路徑的最短問題。假設平面上有很多點,各個點之間有很多的線連線起來,並且到達各個點的距離不相同,需要求出一條路徑,使得各個點都能被連線起來,並且他們的距離...

最小生成樹之prim演算法

普利姆演算法 prim algorithm 最小生成樹的概念 所謂最小生成樹,就是在乙個具有n個頂點的帶權連通圖g中,如果存在某個子圖g 其包含了圖g中的所有頂點和一部分邊,且不形成迴路,並且子圖g 的各邊權值之和最小,則稱g 為圖g的最小生成樹。普利姆演算法 prim algorithm 演算法描...

最小生成樹之prim演算法

mst minimum spanning tree,最小生成樹 問題有兩種通用的解法,prim演算法就是其中之一,它是從點的方面考慮構建一顆mst,大致思想是 設圖g頂點集合為u,首先任意選擇圖g中的一點作為起始點a,將該點加入集合v,再從集合u v中找到另一點b使得點b到v中任意一點的權值最小,此...