演算法總結 Prim

2022-05-03 02:51:12 字數 732 閱讀 7740

prim:

複雜度:o(n^2)

用途:最小生成樹演算法,求一點到所有的位置之和的最小值,不是形成環,是把所有頂點連在一起的最短路

適用條件:

步驟:跟dijkstra出奇的相似,只是prim把d和p都變成乙個k陣列(- -其實一樣好嗎)而且dijkstra是第乙個for為了記錄下標,而prim是為了記錄下標和記錄最小值(- -其實也是一樣好嗎),不過prim的第二個for是已經確定了走了一條路,然後是從這條路出發,看從這個定點出發和原來的最短路徑相比哪個短,如果從這個頂點出發的更短,那麼更新k,,而dijkstra只是單純的把地圖優化。

模板:

#include#include

#include

using

namespace

std;

const

int inf = 0x3f3f3f3f,max = 3000

;int

map[max][max], k[max];

void prim (int map[max][max],int

n) }

k[m] = 0

; ans +=min1;

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

}printf(

"%d\n

",ans);

}int

main()

return0;

}

Prim演算法 Kruskal演算法

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

Prim演算法 Kruskal演算法

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

Kruskal演算法 Prim演算法

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