public void prim(Graph1 graph1){
int k ;
int j;
//初始化
lowCost[0] = 0;
adjVtex[0] = 0;
//初始化 以节点 0 为 初始 节点 初始化lowCost[]
for(int i = 1;i<graph1.curSize;i++){
lowCost[i] = graph1.relation[0][i];
adjVtex[i] = 0;
}
for(int i = 0;i<graph1.curSize;i++){
int min = Integer.MAX_VALUE;
k = 0;
j = 1;
//遍历 找到最小生成树 的下一个距离最小 的节点
while(j<graph1.curSize) {
if(lowCost[j]!=0 && lowCost[j]<min ){
min = lowCost[j];
k = j;
}
j++;
}
//打印最小边
System.out.println("("+adjVtex[k]+","+k+")");
//代表 k 加入 最小生成树节点集
lowCost[k] = 0;
// 在新加入 节点后 更新lowCost[]
for( j = 1;j<graph1.curSize;j++){
if(lowCost[j]!=0 && graph1.relation[k][j]<lowCost[j]){
lowCost[j] = graph1.relation[k][j];
adjVtex[j] = k;
}
}
}
}
prim 算法 最小生成 树
最新推荐文章于 2019-12-25 14:37:44 发布