在圖中,尋找一棵最小代價的生成樹尤為重要。現在有普里姆演算法。基於鄰接矩陣來實現。
void prim(mgraph g,int v0,int &sum){
int lowcost[maxsize],vset[maxsize],v;
int k;
int min;
int v=v0;
for(i=0;i**大致思路解析:首先要明白此**是有三個遍歷,並且後兩個遍歷是巢狀與第乙個遍歷中。為了說明,將後兩個遍歷命名為a,b;
a是為了找出當前lowcost陣列中的最小值,後續並將其接入當前的樹中,而b在接入乙個新的頂點後,將lowcost陣列進行更新與拓展。最後在回到第乙個大迴圈中,大迴圈執行了n次,正好相當於對每個結點進行一次。最後生成的樹自然是最小代價樹,屬於貪心演算法的一種。
資料結構與演算法之普里姆演算法
思想 選取圖中任意乙個頂點,把它看成一棵樹,並在與此樹相接的邊中選取乙個權值最小的邊,並將與這條邊相接的另乙個頂點也納入樹中,得到了一顆有兩個頂點的樹,以此類推,知道訪問完圖中所有的頂點並納入樹中為止 普里姆演算法構造最小生成樹的過程中 需要構造兩個陣列vset 和lowcost vset i 1表...
資料結構與演算法 普里姆演算法
應用場景 修路問題的本質就是最小生成樹問題,簡稱mst 給定乙個帶權的無向連通圖,如何選取一顆生成樹,使樹上所有邊上權的總和最小,這叫最小生成樹 n個頂點,一定有n 1條邊 包含全部頂點 普里姆演算法 設g v,e 是連通網,t u,d 是最小生成樹,v,u是頂點集合,e,d是邊的集合 若從頂點u開...
普里姆演算法
include include include include using namespace std define max name 5 define max vertex num 20 權的上限值 typedef char vertex max name 頂點名字串 typedef int ad...