Prim演算法詳解

2022-06-04 08:09:08 字數 1324 閱讀 5746

prim演算法是幹什麼的?

prim演算法可以計算出乙個無向加權圖的最小生成樹

什麼是最小生成樹?

首先,樹兩個最重要的性質是①用一條邊連線樹中的任意兩點都會產生乙個新的環從樹中刪除一條邊將會得到兩棵獨立的樹

最小生成樹即為連線圖中所有點,且總權重最小的樹。最小生成樹的性質:將圖中的點分為兩個集合,橫跨兩個集合的邊中權重最

小的邊必在最小生成樹中(並不只有權重最小邊在樹中)

最小生成樹的性質的證明:

用反證法,如果權重最小的邊 e 不在樹中,那和它橫跨兩個相同的集合且權重比它大的邊 f 樹一定在樹中,如果把 e 加入樹中,再

將 f 刪除,則得到乙個權重更小的樹,所以 e 必在樹中

prim演算法如何進行計算?

①選定乙個點做為乙個集合a,剩下的點為另乙個集合b

②將橫跨兩個集合且權重在其中最小的邊加入最小生成樹

③將剛剛加入最小生成樹的邊中不在集合a中的點加入集合a,直到所有的點加入集合a

具體到**如何計算?

1

class

mst 31}

32/*

33* 將v的邊加入優先佇列

34*/

35private

void visit(int

v) 47}48

}4950public iterableedgs()

51 }

將樹所有鄰近點的到樹距離最短的邊全部加入優先佇列,從佇列中拿出最短的邊,將其加入樹中

pq始終儲存著樹旁邊所有的節點到樹的最短距離

①將0加入mst,將0-7,0-2,0-4,0-6加入優先佇列,其中0-7的權重最小

②將7加入mst,將7-1,7-4(因為發現了比0-4到樹距離更小的邊所以刪了0-4,加入7-4),7-5,(7-2不加入因為原來的距離更小),其中7-1權重最小

Prim演算法 二 之 C 詳解

本章是普里姆演算法的c 實現。目錄 1.普里姆演算法介紹 2.普里姆演算法 3.普里姆演算法的 說明 4.普里姆演算法的原始碼 普里姆 prim 演算法,是用來求加權連通圖的最小生成樹的演算法。基本思想 對於圖g而言,v是所有頂點的集合 現在,設定兩個新的集合u和t,其中u用於存放g的最小生成樹中的...

Prim演算法 Kruskal演算法

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

Prim演算法 Kruskal演算法

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