全文预览

Kruskal算法求最小生成树(java)

上传者:菩提 |  格式:doc  |  页数:3 |  大小:43KB

文档介绍
nt i = 0; Р while(i < n-1 && edge.size() > 0){ Р //每次取一最小边,并删除Р double min = INFINITY; Р int tag = 0; Р Edge tmp = null; Р for(int j = 0; j < edge.size(); ++j){ Р Edge tt = edge.get(j); Р if(tt.cost < min){ Р min = tt.cost; Р tmp = tt; Р } Р } Р int jj = parent[tmp.start]; Р int kk = parent[tmp.end]; Р //去掉环Р if(jj != kk){ Р ++i; Р target.add(tmp); Р mincost += tmp.cost; Р union(jj,kk); Р } Р edge.remove(tmp); Р } Р if(i != n-1){ Р System.out.println("没有最小生成树"); Р System.exit(0);Р } Р }//打印结果Р public void print(){ Р double sum=0;Р System.out.println("最小生成树:");Р for(int i = 0; i < target.size(); ++i){ Р Edge e = target.get(i); Р System.out.println("第" + (i+1) + "条边: " + e.start + "---" + e.end Р + " 权值:" + e.cost); Р sum=sum+e.cost;Р } Р System.out.println("最小生成树的权值:" + sum);Р } Р} Р Р调试结果:

收藏

分享

举报
下载此文档