2019独角兽企业重金招聘Python工程师标准>>>

目前正在看《大话数据结构》,其中介绍了普利姆算法,自己对算法理解能力太差,能够手写求出最小生成树,但是写出算法代码却无从下手,看了几遍书中的算法,也没看明白,最后通过自己的理解写了以下代码,过后再去搞定书中的算法。

public class MinTree {private static final int max = 65535;private static final int VertrixCount = 9;private static int[][] martrix = 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 } };public void createMinTree() {int[] nodes = new int[VertrixCount];for (int i = 0; i > VertrixCount; i++) {nodes[i] = 0;}nodes[0] = 1;while (true) {int min_out = max;int x_out = 0;int y_out = 0;for (int x = 0; x < VertrixCount; x++) {if (nodes[x] == 0) {continue;}int min = max;int index = 0;for (int y = 0; y < VertrixCount; y++) {if (nodes[y] != 0) {continue;}if (martrix[x][y] != 0 && martrix[x][y] < max) {if (min > martrix[x][y]) {min = martrix[x][y];index = y;}}}if (min_out > min) {min_out = min;x_out = x;y_out = index;}}nodes[y_out] = 1;System.out.println(String.format("(%d,%d)", x_out, y_out));boolean flag = false;for (int i = 0; i < VertrixCount; i++) {if (nodes[i] == 0) {flag = true;}}if (flag == false) {return;}}}
}

转载于:https://my.oschina.net/u/1429862/blog/220307

[算法]最小生成树-普利姆算法相关推荐

  1. 最小生成树-普利姆和克鲁斯卡尔算法

    目录 最小生成树 普利姆算法 算法介绍 代码 克鲁斯卡尔算法 算法介绍 步骤解析 回路 代码实现 最小生成树主要是用于解决修路问题等类似问题,要将所有顶点连通,并且权值之和最小. 最小生成树 给定一个 ...

  2. 普利姆算法和克鲁斯卡尔算法求解最小生成树

    Q:最小生成树有什么用? A:譬如我要去五个城市旅游,每两个城市之间可能有路也可能没有,路的距离可能一样也可能不一样,随机从一个城市出发,我想要把每个城市走一遍,怎么样走过的路距离最短,比如我想从上海 ...

  3. 最小生成树算法普利姆算法和克鲁斯卡尔算法实现

    最小生成树算法: 普里姆算法:顶点集合N,辅助顶点集合S,初始化中,将出发点vi加入S,并从N中删除 1.从顶点集合N中找到一条到集合S最近的边(vi,vj),存储该边,并将vj从N移到S中 2.重复 ...

  4. Java普利姆算法(Prim)与克鲁斯卡尔算法(Kruskal)

    1.Java普利姆算法(Prim)与克鲁斯卡尔算法(Kruskal) 普利姆算法(Prim)与克鲁斯卡尔算法(Kruskal)求**最小生成树(极小连通子图)**的算法 1.1普利姆算法(Prim) ...

  5. 普利姆算法(prim)求最小生成树(MST)过程详解

    生活中最小生成树的应用十分广泛,比如:要连通n个城市需要n-1条边线路,那么怎么样建设才能使工程造价最小呢?可以把线路的造价看成权值求这几个城市的连通图的最小生成树.求最小造价的过程也就转化成求最小生 ...

  6. 最小生成树——Highways(普利姆算法结合对于父亲节点标记)

    题意描述: 高速路修路问题,有一些点是可以直接连通的现在需要修其他的路径不过现在要的不是总的路径长度,而是要修的每一条路的顶点编号 原题: The island nation of Flatopia ...

  7. 【数据结构】图的应用(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序)

    最小生成树 什么是最小生成树 是一棵树 - 无回路 - |V|个顶点一定有|V|-1条边 是生成树 - 包含全部顶点 - |V|-1条边全在图里 贪心算法 什么是"贪":每一步都要 ...

  8. 数据结构与算法-普利姆算法(Prim) | 尚硅谷韩顺平

    最小生成树 给定一个带权无向连通图,选取一棵树,让树所有边上权的总和最小,叫最小生成树 N个顶点,一定有N-1条边 包含全部顶点 N-1条边都要在图中 算法介绍 普里姆算法求最小生成树,也就是在包含n ...

  9. 普利姆算法解决最短修路问题

    普利姆算法 1.应用场景-修路问题 2.最小生成树 3.普利姆算法介绍 4.普利姆算法的最为简单的理解(重点): 理论上7个点要6条路就可以连通,随便从一个结点(村庄)出发(假设为A),先找该结点和邻 ...

最新文章

  1. python判断 t1 树是否有与 t2 树拓扑结构完全相同的子树
  2. html浏览位置坐标,HTML5教程 | HTML5地理定位(GeoLocation API)
  3. Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]
  4. gperf的学习笔记(一)
  5. [云炬创业基础笔记]第十章企业的利润计划测试8
  6. kuka机器人焊接飞溅大_库卡机器人KCP4示教器屏幕校准方法
  7. kotlin中判断字符串_Kotlin程序查找字符串中字符的频率
  8. 用cmd运行java可以javac不行(win10)
  9. C#GDI画立体渐变圆角panel
  10. python经典程序实例-Python简单基础小程序的实例代码
  11. zend studio【快捷键】
  12. KMP模板以及入门题型总结
  13. 转载:微信抢红包算法
  14. SQL server完整性约束的操作
  15. 五年Java架构师深入剖析微服务架构设计理念与技术体系(值得一看!)
  16. SOM自组织(竞争型)神经网络(Python实现)
  17. X Spring File Storage 0.6.0 发布,新增支持 FTP、SFTP、WebDAV
  18. 谈谈当代大学生学习IT技术的必要性
  19. 名称 WORKGROUP:1d 不能注册到 IP 地址 192.168.99.185 的界面上。
  20. seo php 寄生虫繁殖,seo寄生虫(蜘蛛池程序)

热门文章

  1. ClassLoader(二)- 加载过程
  2. OSChina 周六乱弹 —— 去做点疯狂的事情
  3. vue 编译警告 Compiled with 4 warnings
  4. 保证同一个账号同时只能在一个设备上登录
  5. 【转】C#解析HTML
  6. 经常使用的eclipse插件
  7. Microsoft宣称Visual Studio Installer将退役
  8. mysql M/S配置小记
  9. java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider
  10. Android Studio 第五十一期 - 自定义RecycleView Gallery