kruskal java_Kruskal算法java版
/*** sample Kruskal.java Description:
* kruskal算法的思想是找最小边,且每次找到的边不会和以找出来的边形成环路,利用一个一维数组group存放当前顶点所在连通图标示(每条最小边,属于一个连通图),直到顶点都找完
* 1.0 YESUN Jul 18,
* 2013 8:48:28 AM Create. ChangeLog:*/
public classKruskal {/*** Description:
*
*@paramargs
* 1.0 YESUN Jul 18, 2013 8:47:10 AM Create. ChangeLog:*/
public static voidmain(String[] args) {int[][] map = new int[][]{
{0,10,MAX,MAX,MAX,11,MAX,MAX,MAX},
{10,0,18,MAX,MAX,MAX,16,MAX,12},
{MAX,MAX,0,22,MAX,MAX,MAX,MAX,8},
{MAX,MAX,22,0,20,MAX,MAX,16,21},
{MAX,MAX,MAX,20,0,26,MAX,7,MAX},
{11,MAX,MAX,MAX,26,0,17,MAX,MAX},
{MAX,16,MAX,MAX,MAX,17,0,19,MAX},
{MAX,MAX,MAX,16,7,MAX,19,0,MAX},
{MAX,12,8,21,MAX,MAX,MAX,MAX,0}
};
kruskal(map);
}static int MAX =Integer.MAX_VALUE;/*** Description: by yesun
*@paramarcs
* 1.0 YESUN Jul 18, 2013 1:42:42 PM Create.
* ChangeLog:*/
public static void kruskal(int[][] arcs) {//顶点个数
int num =arcs.length;//存放对应顶点所在连通图标识
int[] group = new int[num];int sum = 0, n1 = 0, n2 = 0;boolean finished = false;int groupNum = 1;while(!finished) {int min =Integer.MAX_VALUE;//找出所有边中最小值
for(int i = 0; i < num; i++) {for(int j = i+1; j < num; j++) {if(arcs[i][j] > 0 && arcs[i][j]
if (group[i] != group[j] || (group[i] == 0 && group[j] == 0)) {
min=arcs[i][j];
n1=i;
n2=j;
}
}
}
}if(min ==Integer.MAX_VALUE){continue;
}
System.out.println(n1+ " ---> " + n2 + " " +min);
sum+=min;//找到了最小值,设置连通标记
if(group[n1] == 0 && group[n2] == 0){
group[n1]=groupNum;
group[n2]=groupNum;
groupNum++;
}else if(group[n1] > 0 && group[n2] > 0) {int tmp =group[n2];for(int m = 0; m < group.length; m++){if(group[m] ==tmp){
group[m]=group[n1];
}
}
}else{if(group[n1] == 0){
group[n1]=group[n2];
}else{
group[n2]=group[n1];
}
}for(int i = 0; i < group.length; i++) {if(group[i] != group[0]){
finished= false;break;
}else{
finished= true;
}
}if(finished) {break;
}
}
System.out.println(" sum:"+sum);
}
}
kruskal java_Kruskal算法java版相关推荐
- java 随机金额_java_微信随机生成红包金额算法java版,最近几年玩得最疯狂的应该是 - phpStudy...
微信随机生成红包金额算法java版 最近几年玩得最疯狂的应该是发红包了,尤其是过年的时候特别受欢迎,下面写了红包的随机算法,其实挺简单的,仅是提供一种思路,希望可以给大家一些启发. public cl ...
- 最小生成树Prim算法Java版
最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...
- Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题
接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题 HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...
- Java算法:牛客网小米笔试真题算法Java版1-40题
题号 题目 知识点 难度 通过率 XM1 小米Git 树 困难 10.22% XM2 懂二进制 中等 29.90% XM3 风口的猪-中国牛市 动态规划 较难 18.73% XM4 电话号码分身 中等 ...
- Java算法:华为机试算法第二版(上),华为算法Java版
牛客网华为机试练习题 文章目录 牛客网华为机试练习题 动态规划问题详解 前言 生活中的动态规划 2. 几个简单的概念 3. DP的典型应用:DAG最短路 4. 对DP原理的一点讨论 5. 例题:最长上 ...
- 跑胡子c语言算法,跑胡子胡牌算法Java版(带赖子、基于回溯算法)
跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...
- kruskal java_Kruskal算法(三)之 Java详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- 最小生成树之克鲁斯卡尔算法 ( java版)
1 图数据如下 二 Java代码 package leaning.graph;import java.util.ArrayList; import java.util.List;import lea ...
- Java算法:LeetCode算法Java版合集1111-1588题
1111. 有效括号的嵌套深度 题目描述 有效括号字符串 仅由 "(" 和 ")" 构成,并符合下述几个条件之一: 空字符串 连接,可以记作 AB(A 与 B ...
最新文章
- 10年,4600万台!树莓派,生日快乐
- hdu 2243 考研路茫茫——单词情结(AC自动+矩阵)
- 用DMA方式从串行USART口连续接收数据,怎样确认收到一个完整的包讨论
- Uva10294 Arif in Dhaka (置换问题)
- android 進度條_Android更新下載進度條 | 學步園
- 嵌入式开发过程中结构体字节对齐问题pragma pack(1)
- 默认权限umask、文件系统权限、特殊权限
- paip.C#.net TIMER不起作用在用户控件中
- ubuntu硬盘装机_配置系统总结
- 开源GIS(八)——开源GIS简史
- 2019,一年一度的高考季来临,作文又成热门话题
- python syntactic suger
- 什么是智能无损网络?
- 【arcgis中两种路网密度计算结果对比】
- 电商平台用户行为分析—Tableau
- jenkins中文语言设置
- Python 条件运算符的嵌套来完成此题:学习成绩
- 做好项目信息管理,是优秀项目经理的必备技能
- Petalinux-conifg 错误失败
- 扭矩扭力测量——扭矩传感器