Prim演算法與Kruskal演算法生成最小生成樹

2021-10-21 23:44:02 字數 899 閱讀 6462

演算法思想:

1.先選擇乙個頂點作為樹的根節點,把這個根節點當成一棵樹

2.選擇圖中距離這棵樹最近但是沒有被樹收錄的乙個頂點,把他收錄在樹中,並且保證不構成迴路

3.按照這樣的方法,把所有的圖的頂點一一收錄進樹中。

4.如果沒有頂點可以收錄

a.如果圖中的頂點數量等於樹的頂點數量-->最小生成樹構造完成

b. 如果圖中的頂點數量不等於樹的頂點數量-->此圖不連通

dist:距離當前生成樹的最小距離。和根節點直接相鄰的初始化為權重,其他的初始化為正無窮。等每插入乙個樹節點,對dist進行更新。對於已經收錄的節點,更新其dist=0

//prim演算法偽**:

//dist:距離當前生成樹的最小距離。和根節點直接相鄰的初始化為權重,其他的初始化為正無窮。等每插入乙個樹節點,對dist進行更新。對於已經收錄的節點,更新其dist=0

void

prim()

;while(1

)}if( mst中收的頂點不到|v|個 )

error ( 「生成樹不存在」 )

;}

演算法思想:

在不構成迴路的情況下,每次選取權最小的邊,直到去到v-1條邊為止。

//kruskal演算法偽**

void kruskal ( graph g )

;while

( mst 中不到 |v|

-1 條邊 && e 中還有邊 )}if

( mst 中不到 |v|

-1 條邊 )

error ( 「生成樹不存在」 )

;}

prim演算法實現

kruskal演算法實現

**例子為本文中的圖所構造

最小生成樹 Prim演算法與Kruskal演算法

乙個連通圖的生成樹是乙個極小的連通子圖,包含有圖中全部的頂點,但只有足以構成一棵樹的n 1條邊。我們把構造連通網的最小代價生成樹稱為最小生成樹 mi nimu mcos tspa nnin gtre e minimum cost spanning tree minim umco stsp anni ...

Prim演算法 Kruskal演算法

一 prim演算法 1 要求 1 生成一顆連通的樹 2 生成樹 包含全部頂點,v 1條邊,沒有迴路,並且新增一條邊會變成有迴路 3 權重和最小 2 過程模擬 最重要 貪心的思想,每一步都要選擇權值最小的,這棵樹所有跟頂點相連的邊中最小的。從根節點開始,讓樹慢慢的長大。過程 從v1開始 跟v1有聯絡的...

Prim演算法 Kruskal演算法

prim演算法 kruskal演算法 prim演算法和kruskal演算法,都是用來找出圖中最小生成樹的演算法,兩個演算法有些小差別。prim演算法 又稱普里姆演算法,以圖上的頂點為出發點,逐次選擇到最小生成樹頂點集距離最短的頂點為最小生成樹的頂點,並加入到該頂點集,直到包含所有的頂點。1.選擇一出...