對普利姆演算法的理解(大話資料結構)。

2021-07-04 03:04:25 字數 768 閱讀 3370

普利姆演算法用來做什麼?

·要弄清楚普利姆演算法的用途,首先要知道連通圖是什麼,

連通圖就是圖中任一兩點可達。

·然後就是樹的概念,

這裡的樹不是資料結構的中的樹,這裡樹的概念是:無環的連通圖。

·然後我們就可以來講普利姆演算法了,普利姆演算法是用來求圖的最小生成樹(即最小權重生成樹)的。

他演算法的思路是這樣的:① 從圖中任意找乙個點,加入到最小生成樹中;

②在剩下的頂點中,找權重最小的邊,將該頂點納入最小生成樹;

③重複步驟②;

·在實現該演算法的過程中,主要用到兩個陣列lowcost[maxvex],adjvex[maxvex],只要理解這兩個陣列的意義,就能理解這個演算法的實現。

lowcost[maxvex]陣列的意義:lowcost[j]表示,在已經被納入生成樹的頂點中,他們到頂點 j 的最小權重的值。

adjvex[maxvex]陣列的意義:adjvex[j]表示,j 這個頂點的最小權重,是以哪個頂點為起點的。

void prim(mgraph g)

//普利姆演算法的核心

for(i = 1; i < numvex; i ++)

}lowcost[k] = 0;

printf("(%d,%d)", adjvex[k], k);

//將頂點k納入生成樹之後,更新lowcost和adjvex的資料

for(j = 1; j < numvex; j ++)}}

}

資料結構與演算法 普里姆演算法

應用場景 修路問題的本質就是最小生成樹問題,簡稱mst 給定乙個帶權的無向連通圖,如何選取一顆生成樹,使樹上所有邊上權的總和最小,這叫最小生成樹 n個頂點,一定有n 1條邊 包含全部頂點 普里姆演算法 設g v,e 是連通網,t u,d 是最小生成樹,v,u是頂點集合,e,d是邊的集合 若從頂點u開...

常用資料結構之普里姆演算法

在圖中,尋找一棵最小代價的生成樹尤為重要。現在有普里姆演算法。基於鄰接矩陣來實現。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 大致思路解析 ...

資料結構與演算法之普里姆演算法

思想 選取圖中任意乙個頂點,把它看成一棵樹,並在與此樹相接的邊中選取乙個權值最小的邊,並將與這條邊相接的另乙個頂點也納入樹中,得到了一顆有兩個頂點的樹,以此類推,知道訪問完圖中所有的頂點並納入樹中為止 普里姆演算法構造最小生成樹的過程中 需要構造兩個陣列vset 和lowcost vset i 1表...