用Prim和Kruskal演算法構造最小生成樹

2021-10-21 11:57:21 字數 669 閱讀 1836

(1)舉乙個例項,畫出採用prim演算法構造最小生成樹的過程。

(2)舉乙個例項,畫出採用kruskal演算法構造最小生成樹的過程。

prim演算法:在帶權連通圖中,每次找與之連線權值最小的頂點,將該點加入最小生成樹集合中並構造,直到最後得到一顆最小生成樹。

kruskal演算法:對於所有的邊,每次取一條最短的邊(不能重複取),判斷它的兩個端點是否已經在乙個連通塊中了。如果是,那麼取下一條邊;如果沒在乙個連通塊中,則把兩個連通塊(不一定是兩個點)連在一起,答案加上當前邊的長度。直到所有的點都在乙個連通塊中結束。

prim演算法:

void

prim()

} ans+=dis[x]

;//將找到的最小邊加入答案裡

vister[x]=1

;//標記這個點被訪問

for(int j=

1;j<=

n;j++)}

}}

kruskal演算法:
void

kruskal

(int n, int m)

if(num >= n -1)

break;}

printf

("weight of mst is %d\n"

, sum_mst)

;}

Prim演算法和Kruskal演算法

一 prim演算法 prim演算法實現的是找出乙個有權重連通圖中的最小生成樹,即 具有最小權重且連線到所有結點的樹。強調的是樹,樹是沒有迴路的 prim演算法是這樣來做的 首先以乙個結點作為最小生成樹的初始結點,然後以迭代的方式找出與最小生成樹中各結點權重最小邊,並加入到最小生成樹中。加入之後如果產...

Prim演算法和Kruskal演算法

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見...

Prim演算法和Kruskal演算法介紹

一 prim演算法 普利姆 prim 演算法適用於求解無向圖中的最小生成樹 minimum cost spanning tree 下面是prim演算法構造最小生成樹的過程 選擇乙個節點開始,比如v1進入集合u,剩下的集合的v u包括剩下的節點,然後尋找從集合u到集合v u最近的路徑。這裡有三條路徑分...