最小生成树的prime算法
来源:互联网 发布:快走丝编程用什么软件 编辑:程序博客网 时间:2024/06/06 04:09
- /**
- * 最小生成树的prim算法
- * @author liuy
- */
- public class Prim {
- public static void prim(int num, float[][] weight) { //num为顶点数,weight为权
- float[] lowcost = new float[num + 1]; //到新集合的最小权
- int[] closest = new int[num + 1]; //代表与s集合相连的最小权边的点
- boolean[] s = new boolean[num + 1]; //s[i] == true代表i点在s集合中
- s[1] = true; //将第一个点放入s集合
- for(int i = 2; i <= num; i++) { //初始化辅助数组
- lowcost[i] = weight[1][i];
- closest[i] = 1;
- s[i] = false;
- }
- for(int i = 1; i < num; i++) {
- float min = Float.MAX_VALUE;
- int j = 1;
- for(int k = 2; k <= num; k++) {
- if((lowcost[k] < min) && (!s[k])) {//根据最小权加入新点
- min = lowcost[k];
- j = k;
- }
- }
- System.out.println("加入点" + j + ". " + j + "---" + closest[j]);//新加入点的j和与j相连的点
- s[j] = true;//加入新点j
- for(int k = 2; k <= num; k++) {
- if((weight[j][k] < lowcost[k]) && !s[k]) {//根据新加入的点j,求得最小权
- lowcost[k] = weight[j][k];
- closest[k] = j;
- }
- }
- }
- }
- public static void main(String[] args) {
- // ①
- // / | /
- // 6 1 5
- // / | /
- // ②-5--③--5--④
- // / // /
- // 3 6 4 2
- // // //
- // ⑤--6-⑥
- //最小生成树为:
- // ①
- // |
- // 1
- // |
- // ②-5--③ ④
- // / / /
- // 3 4 2
- // / //
- // ⑤ ⑥
- //
- float m = Float.MAX_VALUE;
- float[][] weight = {{0, 0, 0, 0, 0, 0, 0},
- {0, m, 6, 1, 5, m, m},
- {0, 6, m, 5, m, 3, m},
- {0, 1, 5, m, 5, 6, 4},
- {0, 5, m, 5, m, m, 2},
- {0, m, 3, 6, m, m, 6},
- {0, m, m, 4, 2, 6, m}};//上图的矩阵
- prim(weight.length - 1, weight);
- //加入点3. 3---1
- //加入点6. 6---3
- //加入点4. 4---6
- //加入点2. 2---3
- //加入点5. 5---2
- }
- }
0 0
- Prime的最小生成树算法
- 最小生成树的prime算法
- 最小生成树算法[prime]
- 最小生成树-prime算法
- 最小生成树 prime算法
- 最小生成树 prime算法
- 最小生成树Prime算法
- 最小生成树--Prime算法
- 最小生成树 Prime算法
- 最小生成树 prime 算法
- 最小生成树-prime算法
- prime算法-最小生成树算法
- 最小生成树的Prime算法的思想
- prime算法求无向图的最小生成树
- 最小生成树的prime和kruskal算法
- 最小生成树 prime算法 求权值最大的边
- prime算法求所有最小生成树
- hdu 1879 最小生成树【prime算法】
- Android加载动画 旋转动画 、帧动画
- 回望来时的路,照亮前行的灯——实习大总结
- git 使用教程
- JS 正则表达式
- 易语言Socket5客户端连接源码
- 最小生成树的prime算法
- Open GL es 学习(一)
- Java中随机数方法的使用 math.random()
- 局部变量、全局变量、堆、堆栈、静态和全局的区别
- java学习之NIO(转)
- 有关matlab拟合工具箱的使用
- WebRTC中的拥塞控制 一
- promise对象,以及其在Angular中的使用
- 表生成器@ TableGenerator