最小生成樹 Prim演算法

2021-05-23 14:23:34 字數 750 閱讀 1615

prim 演算法

以領接矩陣儲存 圖g

bool b[i]表示頂點i是否被訪問,初始化時候memset(b,false,sizeof(b));

b[0]=value,表示從第0個節點開始。

用value[i] 表示節點i到最小生成樹a中定點的最小距離。例如value[1]=a[0][1];

int sum記錄權值和

int min判斷最小權值,初始值要設定的大,例如  min = 0xffffff;

int temp記錄插入最小生成樹a的定點。

**:例如存好了鄰接矩陣a;

memset(b,flase,sizeof(b));

b[0] = ture;

for(i=1; i < n;i++)

value[i] = a[0][i];

int sum;

for (i = 1; i < n; i++)

int min = 0xffffff;

int temp = 0;

for(j = 1; j < n; j++)

if(!b[j] && min > value[j])

min = value[i];

temp = j;

sum+=min;

b[temp] = true;

for(j = 1; j < n;j++)

if(!b[j] && value[j] > a[temp][j])

value[j] = a[temp][j];

最小生成樹(prim演算法)

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

最小生成樹 prim 演算法

一 演算法描述 假設存在連通帶權圖g v,e 其中最小生成樹為t,首先從圖中隨意選擇一點s屬於v作為起始點,並將其標記後加入集合u 中。然後演算法重複執行操作為在所有v屬於u,u屬於v u的邊 v0,u0 屬於e中找一條代價最小的邊並加入集合t,同時將u0併入u,直到u v為止。這是,t中必有n 1...

最小生成樹Prim演算法

prim演算法的執行非常類似於尋找圖的最短通路的dijkstra演算法。prim演算法的特點是集合a中的邊總是只形成單棵樹。如圖5所示,陰影覆蓋的邊屬於正在生成的樹,樹中的結點為黑色。在演算法的每一步,樹中的結點確定了圖的乙個割,並且通過該割的輕邊被加進樹中。樹從任意根結點r開始形成並逐漸生長直至該...