加入收藏 | 设为首页57365线路检测中
 365bet手机网址
Prim算法的Prim算法实现
发布时间:2019-02-16 点击:
展开全部
为了便于选择两组顶点U和VU之间的最小边缘,创建了两个辅助阵列,最近和最低,并将它们分成从U到VU的最小权重的边缘。注册。对于某些j∈VU,最近的[j]存储附加到边缘的U的顶点数,而lowcost[j]存储边缘的权重。
为方便起见,我们假设使用邻接矩阵g存储G图,并且相应的Prim(g,v)算法如下。voidPrim(MatGraphg,intv)//表示获取的最小树的所有边。Entry{intlowcost[MAXVEX]; array lowcostintclosest[MAXVEX]; //创建一个最近的布置,i,j,k。(I = 0; ig。
n; // lowcost[]和close[]设置初始值{lowcost[i]= g。
划线[v][i];(i = 1;最接近ig[i]= v;})。
n; i ++)//使n-1个边{min = INF; k =?1。(J = 0; jg。
n;(+++)//找到最近的顶点kif(lowcost[j]!in(VU)!
= 0慢维护[j]min){min =低成本[j]; k = j。// k是最近的顶点数}printf(边(%d,%d),重量%d
,最近[k],k,min)。低成本[k]= 0。//将k标志添加到Ufor(j = 0; jg。
n;修复低成本和阵列闭合(g。
边界[k][j]!
= 0克。
边界[k][j]低成本[j]){低成本[j]= g
边界[k][j]; Primm算法有两个循环,因此时间复杂度为O(n 2)。其中n是图中顶点的数量。
由于它与e无关,因此Primm算法特别适用于高密度图形以找到最小生成树。