基本思想

先构造一个只含 n 个顶点、而边集为空的子图,把子图中各个顶点看成各棵树上的根结点,之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树(不构成回路),则将其加入子图,即把两棵树合成一棵树,反之,若该条边的两个顶点已落在同一棵树上(构成回路),则不可取,而应该取下一条权值最小的边再试之。依次类推,直到森林中只有一棵树,也即子图中含有 n-1 条边为止。

基本步骤

1、新建图G,G中拥有原图中相同的节点,但没有边;
2、将原图中所有的边按权值从小到大排序;
3、从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边到图G中;
4、重复3,直至图G中所有的节点都在同一个连通分量中。

关于步骤3的解释:选取的边要是剩下边权值最小的,且与G中的边不构成回路。

详细步骤图解

原图如下:

第一步:判断权值为1的连接边hg是否属于集合,由于开始集合为空,则将两个节点加入到集合,且连接该边,并判断是否属于回路;

第二步:判断权值为2的连接边ic是否属于集合,由于集合只有节点h和g,则将节点i和c加入到集合中,且连接该边,并判断是否属于回路;

第三步:判断权值为2的连接边gf是否属于集合,根据判断规则,把f加入到集合,且连接该边;

第四步:根据判断规则,将节点a和b加入到集合,且连接该边;

第五步:根据判断规则,连接该边cf;

第六步:根据判断规则,连接节点i和g时形成回路,则放弃,继续下次判断;

第七步:判断权值为7的连接边;根据判断规则,节点i和h形成回路,则放弃,将节点d加入到集合,并连接该边;

第八步:判断权值为8的连接边;根据判断规则,连接节点a和h;

第九步:判断权值为9的连接边;将节点e加入到集合,并连接该边;此时集合已经包含所有节点,则终止循环;

总结

1、克鲁斯卡尔算法需要对图的边进行访问,所以克鲁斯卡尔算法的时间复杂度只和边有关系,可以证明其时间复杂度为O(eloge)

2、克鲁斯卡尔算法和普利姆算法一样,都是贪心算法,不同的是克鲁斯卡尔算法是从森林到树,而普利姆一直保持着一个树。

3、克鲁斯卡尔算法适合边少的,也即稀疏图。

参考文章:
【1】算法——最小生成树:Kruskal算法、Prim算法
【2】克鲁斯卡尔算法

克鲁斯卡尔算法(Kruskal)求最小生成树(MST)过程详解相关推荐

  1. 【数据结构】图—克鲁斯卡尔算法(原理及C程序详解)

    普利姆(Prim)算法是以某个顶点为起点,逐步寻找各个顶点上权值最小的边来构建生成树. 文章指引:图-普里姆(Prim)算法(原理和C程序解释) 而克鲁斯卡尔(Kruskal)算法是以边为目标,直接寻 ...

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

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

  3. prim算法求最小生成树_克鲁斯卡尔算法(Kruskal算法)求最小生成树

    上一节介绍了求最小生成树之普里姆算法.该算法从顶点的角度为出发点,时间复杂度为O(n2),更适合与解决边的绸密度更高的连通网.本节所介绍的克鲁斯卡尔算法,从边的角度求网的最小生成树,时间复杂度为O(e ...

  4. 无向图的最小生成树(克鲁斯卡尔算法 Kruskal)

    引子: 克鲁斯卡尔算法的作用是:构建图的最小生成树. 克鲁斯卡尔算法 Kruskal的构造过程: 1.初始化图:n个顶点,n个连通分量(如果两个顶点的连通分量相同,表示两点在同一个连通图中).把所有的 ...

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

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

  6. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  7. 克鲁斯卡尔算法c语言,最小生成树-克鲁斯卡尔(Kruskal)算法

    1. 克鲁斯卡尔算法简介 克鲁斯卡尔算法是一种用来寻找最小生成树的算法(用来求加权连通图的最小生成树的算法).在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边. 而具体 ...

  8. 数据结构——最小生成树之克鲁斯卡尔算法(Kruskal)

    最小生成树算法 prime算法和克鲁斯卡尔算法 克鲁斯卡尔算法 思路 优先队列+并查集 Kuskal算法 [算法简介]:上一篇中的Prime算法是一种"加点式的算法",而Kuska ...

  9. 数据结构与算法-克鲁斯卡尔算法(Kruskal) | 尚硅谷韩顺平

    提出问题 基本介绍 克鲁斯卡尔(Kruskal)算法,求加权连通图最小生成树的算法 基本思想:按权值从小到大顺序选择n-1条边,保证n-1条边不够成回路 具体做法:先构造一个只有n顶点的森林,然后按权 ...

最新文章

  1. RADStudio连接MySQL_使用FireDac(Delphi)在Firebird中创建数据库
  2. %3cphp和%3c php_关于 PHP 表单安全性
  3. vue控制台报错Duplicate keys detected: 'xxxx'. This may cause an update error.解决方案
  4. Keras-Sequential模型(1)
  5. DNT 3.1 快速安装手记
  6. RoboWare studio学习笔记
  7. BT5中安装VMWare Tool的相关命令
  8. 番外7. 在 Python OpenCV 寻找目标区域以及边缘扩展的解决方案
  9. foxmail 登陆gmail报密码错误
  10. 99%的手机Root方法都在这里
  11. 洛谷P5437/5442 约定(概率期望,拉格朗日插值,自然数幂)
  12. 创宇滤镜|API防刷|短信邮件接口防刷|验证码防刷|搜索防刷 - 知道创宇云安全
  13. docker查看mysql镜像版本_Docker 查看镜像信息
  14. 分布式服务发现与注册中心 Consul 中文入门指南
  15. 工业相机 镜头 焦距 视野 计算相关
  16. 计算机冷门知识大全集,阴阳师冷门小知识汇总 冷门小知识合集一览
  17. 手撕HashMap(原理)
  18. 嵌入式主板在数控机床领域的应用
  19. Dendro NH2-PEG-Dendro NH2,Dendro Amine-PEG-Dendro Amine,PEG超支化树状胺
  20. 领英辅助工具—领探,可突破领英的好友人脉限制

热门文章

  1. LaTex(windet及miktex)安装教程
  2. rtthread工业使用_RT Thread SPI设备 使用
  3. 分布式数据库同步系统之Otter
  4. 计算机网络-自顶向下方法-笔记【第2章-应用层】
  5. K8S 常见面试题总结
  6. java聊天室(实训项目)
  7. adb 打开 diag 端口用qpst备份恢复qcn
  8. SCI和SCIE的区别和联系
  9. DM8数据守护(Data Watch) 实时主备环境搭建与管理
  10. VoLTE下视频彩铃与普通彩铃冲突的现象