演算法筆記 普里姆Prim演算法的簡單實現

2021-08-19 18:44:28 字數 861 閱讀 6910

由於最近在學習資料結構,在學習的過程中動手把演算法的思路用**的形式實現了,這樣記憶更深刻。所以在此記錄下學習普里姆演算法時,如何通過該演算法獲得連通網的最小生成樹。

一、建立以鄰接矩陣為儲存方式的帶權連通無向圖(連通網)

二、利用prim演算法計算最小邊的權值之和

(1)從圖中任取乙個頂點,把它當成一棵樹,並用vest記錄頂點是否在生成樹中

(2)從圖中選取與該樹相接的邊中權值最小的邊,並將與該邊連線的頂點併入樹中

(3)重複步驟2直到圖中所有頂點都被併入樹中為止

#include 

#include

//圖的鄰接矩陣儲存結構

typedef

char vertextype;

typedef

int edgetype;

#define maxvex 100 //最大頂點數

#define infinity 65535 //用65535代表無窮遠,表示不相鄰

typedef

struct

mgraph;

//建立無向網圖的鄰接矩陣表示

void createmgraph(mgraph *g)

}/**

* v0為任意一頂點

*/void prim(mgraph g,int v0)

// vset[i]=1表示頂點併入生成樹中

vset[v0]=1;

// 累計樹的權值

sum=0;

// 從與樹相接的邊中選取一條權值最小的邊,並將與該邊連線的頂點併入樹中

for(i=0;i1;++i)

int main()

普里姆(Prim)演算法

普里姆 prim 演算法 網類 template class netgraph 析構函式 void print 列印鄰接矩陣 void minispantree prim prim演算法生成最小生成樹 獲取資料el在頂點表中的位置 template int netgraph getposition ...

演算法之 普里姆(Prim)演算法

普里姆演算法 prim s algorithm 是圖中的一種演算法,可在加權連通圖中搜尋最小生成樹。該演算法的作用就是根據圖中權值找到連線所有頂點的最短路徑,也就是連線所有頂點的最小權值之和,也是這個加權圖中的最小生成樹。1.選取權值最小邊的其中乙個頂點作為起始點。2.找到離當前頂點權值最小的邊,並...

普里姆Prim演算法介紹

普里姆 prim 演算法,和克魯斯卡爾演算法一樣,是用來求加權連通圖的最小生成樹的演算法。基本思想 對於圖g而言,v是所有頂點的集合 現在,設定兩個新的集合u和t,其中u用於存放g的最小生成樹中的頂點,t存放g的最小生成樹中的邊。從所有u u,v v u v u表示出去u的所有頂點 的邊中選取權值最...