Prim演算法 Kruskal演算法

2021-12-30 04:26:01 字數 721 閱讀 9453

prim演算法、kruskal演算法:prim演算法和kruskal演算法,都是用來找出圖中最小生成樹的演算法,兩個演算法有些小差別。

prim演算法

又稱普里姆演算法,以圖上的頂點為出發點,逐次選擇到最小生成樹頂點集距離最短的頂點為最小生成樹的頂點,並加入到該頂點集,直到包含所有的頂點。

1.選擇一出發點,加入集合a。

2.遍歷與集合a中的點相鄰的邊,找到最短的邊,並且不構成迴路。

3.將步驟2得到的邊的目標點加入集合a。

4.重複2,3直到所有結點都加入到集合a中。

又稱克魯斯卡爾演算法,以圖上的邊為出發點依據貪心策略逐次選擇圖中最小邊為最小生成樹的邊,且所選的當前最小邊與已有的邊不構成迴路。

1.邊按照權值從小到大排序。

2.將排序好的權重邊依次加入到最小生成樹中,如果加入時產生迴路就跳過這條邊,加入下一條邊。

3.將所有節點加入最小生成樹時,就找出了最小生成樹。

kruskal演算法,時間複雜度o(nlogn),prim演算法,時間複雜度o(n^2),kruskal演算法在效率上要比prim演算法快,因為kruskal只需要對權重邊做一次排序,而prim演算法則需要做多次排序。kruskal演算法主要是針對邊來展開,邊數少時效率會非常高,所以對於稀疏圖有很大的又是,而prim演算法對於稠密圖情況會好些。

Prim演算法 Kruskal演算法

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

Kruskal演算法 Prim演算法

最小生成樹是什麼?自a2392008643的部落格 此演算法可以稱為 加邊法 初始最小生成樹邊數為0,每迭代一次就選擇一條滿足條件的最小代價邊,加入到最小生成樹的邊集合裡。把圖中的所有邊按代價從小到大排序 把圖中的n個頂點看成獨立的n棵樹組成的森林 按權值從小到 擇邊,所選的邊連線的兩個頂點ui,v...

Prim演算法和Kruskal演算法

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