求最小生成樹
在所有u屬於u,v屬於v-u的邊(u,v)屬於e中找一條代價最小的邊(u0,v0)併入集合te,同時v0併入u,直至u=v為止。此時te中必有n-1條邊,則t=(v,)為n的最小生成樹。
以下圖為例,構造最小生成樹,如圖:
構造過程中輔助陣列中各分量值,如圖:
**如下:(詳解見注釋)
void
minispantree_prim
(mgraph g, vertextype u)
closedge[max_vertex_num]
; k =
localvex
(g, u)
;//得u在g中的位置
for(j =
0; j < g.vexnum;
++j)
;//把所有與u相鄰接的點和權值都錄入
} closedge[k]
.lowcost =0;
//初始,u=。
for(i =
1; i < g.vexnum;
++i);}}}}
普利姆演算法
演算法思想 可取圖中任意乙個頂點v作為生成樹的根,之後若要往生成樹上新增頂點w,則在頂點v和w之間必定存在一條邊。並且該邊的權值在所有連通頂點v和w之間的邊中取值最小。一般情況下,假設n個頂點分成兩個集合 u 包含已落在生成樹上的結點 和v u 尚未落在生成樹上的頂點 則在所有連通u中頂點和v u中...
普利姆演算法
普利姆 prim 這個演算法有什麼用?在實際中這個演算法經常用到電子板的電路連線中,因為可以使用到最少的連線將所有的電子連線起來,又打個比方在鋪設電線將所有使用者連線起來可以使用最少的電線連線起來 知道了這個作用之後你是不是比較感興趣呢?首先看 prim演算法生成最小生成樹 void minispa...
普利姆演算法
演算法思想 可取圖中任意乙個頂點v作為生成樹的根,之後若要往生成樹上新增頂點w,則在頂點v和w之間必定存在一條邊。並且該邊的權值在所有連通頂點v和w之間的邊中取值最小。一般情況下,假設n個頂點分成兩個集合 u 包含已落在生成樹上的結點 和v u 尚未落在生成樹上的頂點 則在所有連通u中頂點和v u中...