由於最近在學習資料結構,在學習的過程中動手把演算法的思路用**的形式實現了,這樣記憶更深刻。所以在此記錄下學習普里姆演算法時,如何通過該演算法獲得連通網的最小生成樹。
一、建立以鄰接矩陣為儲存方式的帶權連通無向圖(連通網)
二、利用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的所有頂點 的邊中選取權值最...