克鲁斯卡尔算法生成最小树(画图)

  • (1)克鲁斯卡尔算法概念
  • (2)实现思路
  • (3)例题
    • 例题解题思路分析:
      • 1.根据信息画出这棵树的所有连通网
      • 2.我们根据权值的大小进行升序排序
      • 2.根据权值的大小依次连接顶点
  • 总结:

(1)克鲁斯卡尔算法概念

克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。与普里姆算法不同,它的时间复杂度为O(eloge)(e为网中的边数),所以,适合于求边稀疏的网的最小生成树

(2)实现思路

对于任意一个连通网的最小生成树来说,在要求总的权值最小的情况下,最直接的想法就是将连通网中的所有边按照权值大小进行升序排序,从小到大依次选择。

克鲁斯卡尔算法的具体思路是:将所有边按照权值的大小进行升序排序,然后从小到大一一判断,条件为:如果这个边不会与之前选择的所有边组成回路,就可以作为最小生成树的一部分;反之,舍去。直到具有 n 个顶点的连通网筛选出来 n-1 条边为止。筛选出来的边和所有的顶点构成此连通网的最小生成树;
可能概念有点难理解,看后面的例子就懂了。

(3)例题


答案为最后一张图

例题解题思路分析:

怎么得到的呢?

1.根据信息画出这棵树的所有连通网

我们知道该图是有7个顶点,12条边
根据信息我们先画出这棵树的所有连通网,如下图:

2.我们根据权值的大小进行升序排序

根据上图我们知道权值的大小按升序排序依次为:

3→4→5→6→8→9→10→12→15→18→20→25

2.根据权值的大小依次连接顶点

条件为:如果这个边不会与之前选择的所有边组成回路,就可以作为最小生成树的一部分;反之,舍去。直到具有 n 个顶点的连通网筛选出来 n-1 条边为止。
我们这个例子有7个顶点:所以我们连通网筛选出来 6 条边为止。

  1. 连接3号线
    3→4→5→6→8→9→10→12→15→18→20→25

  2. 连接4号线
    3→4→5→6→8→9→10→12→15→18→20→25

  3. 连接5号线
    3→4→5→6→8→9→10→12→15→18→20→25

  4. 连接6号线时,我们发现,1,2,3这三个顶点形成了回路,舍弃这条线的连接
    3→4→5→6→8→9→10→12→15→18→20→25

  5. 连接8号线
    3→4→5→6→8→9→10→12→15→18→20→25

  6. 连接9号线,我们发现,1,3,4,6这四个顶点形成了回路,舍弃这条线的连接
    3→4→5→6→8→9→10→12→15→18→20→25

  7. 连接10号线
    3→4→5→6→8→9→10→12→15→18→20→25

  8. 连接12号线,我们发现,1,2,3,5这四个顶点形成了回路,舍弃这条线的连接
    3→4→5→6→8→9→10→12→15→18→20→25

  9. 连接15号线,我们发现,1,3,4这三个顶点形成了回路,舍弃这条线的连接
    3→4→5→6→8→9→10→12→15→18→20→25

  10. 连接18号线我们发现,1,2,5,6,4这五个顶点形成了回路,舍弃这条线的连接
    3→4→5→6→8→9→10→12→15→18→20→25

  11. 连接20号线
    3→4→5→6→8→9→10→12→15→18→20→25

  12. 连接25号线,肯定形成回路,因为最小树已经生成,所有的顶点已经连通
    3→4→5→6→8→9→10→12→15→18→20→25
    最后就得到了最小树:是不是很简单呢!

总结:

最小生成树的方法有:克鲁斯卡尔算法和普里姆算法,我们这里介绍了克鲁斯卡尔算法

克鲁斯卡尔算法:从边的角度求网的最小生成树,时间复杂度为O(eloge)。和普里姆算法恰恰相反,更适合于求边稀疏的网的最小生成树。

普里姆算法:该算法从顶点的角度为出发点,时间复杂度为O(n2),更适合与解决边的绸密度更高的连通网

代码实现我就不写了:可以看看其他博客主的实现

本文就你有帮助的,点个赞 给予渺小的博客主一个支持哦

克鲁斯卡尔算法生成最小树(画图)相关推荐

  1. 克鲁斯卡尔算法生成最小生成树

    克鲁斯卡尔算法的介绍 1)克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法. 2)基本思想:按照权值从小到大的顺序选择 n-1条边,并保证这 n-1条边不构成回路 3)具体做法: ...

  2. 常用的十种算法--克鲁斯卡尔算法

    1.克鲁斯卡尔算法应用场景: 使用克鲁斯卡尔算法生成最小生成树. 2.克鲁斯卡尔算法介绍:         克鲁斯卡尔算法的核心思想是:在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最 ...

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

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

  4. 【数据结构基础整理】图--06:克鲁斯卡尔算法详解

    详解最小生成树中的克鲁斯卡尔算法 0x01.关于克鲁斯卡尔算法 Kruskal算法是一种用来查找最小生成树的算法,由Joseph Kruskal在1956年发表.克鲁斯卡尔算法主要针对边集数组展开. ...

  5. 克鲁斯卡尔算法_修路问题

    克鲁斯卡尔算法 问题描述 修路问题:七个村庄(A,B,C,D,E,F,G)要修路,七个村庄之间路线很多,要怎样才可以在保证联通所有村庄的同时修最短的路 思路分析 我们可以把所有的边存入数组,然后按照从 ...

  6. (浙大-19-夏-数据结构)Prim(普里姆算法)和Kruskal(克鲁斯卡尔算法)最小生成树

    Prim最小生成树算法(贪心算法) 最小生成树的性质: 一棵树 没有回路 n 个顶点含有 n - 1 条边 生成树 所有顶点都在里面 n - 1 条边都在图中 边的权重最小 在生成树的图中任意加一条边 ...

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

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

  8. 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  9. 最小生成树——普里姆算法和克鲁斯卡尔算法

    最小生成树 用来解决工程中的代价问题. 一:普里姆算法 具体代码用C语言实现如下: typedef int VRType;typedef char InfoType;#define MAX_NAME ...

最新文章

  1. ps用法linux,在linux上使用ps(转载)
  2. UBUNTU adb连接android设备
  3. 49 jQuery事件
  4. 比特币如何达成共识 - 最长链的选择
  5. PyTorch - torchvision - datasets
  6. 多线程介绍和多线程模块-lock-互斥锁
  7. 中国工程院院士徐宗本:大数据的挑战和问题
  8. OMG,学它!mac怎么安装java插件
  9. readonly和disabled的区别
  10. Android学习(五)—— Android初级控件
  11. 20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
  12. vue3 eslint吐槽记录
  13. 多系统精密星历下载与分析
  14. win10系统任务栏卡死
  15. 03 ,n 维向量,向量运算,向量组,向量组的线性组合,基,张成空间,向量组的线性相关性 :
  16. 【3】WEB安全学习----HTTP协议
  17. java 自动转 golang_JAVA转Golang
  18. ESM蛋白质语言模型学习笔记
  19. curl https -k
  20. 使用阿里云消息服务mns发送短信

热门文章

  1. 校招 | 梅特勒托利多2023届校招
  2. 读书笔记——魔鬼经济学
  3. 自定义ViewGroup与SurfaceView
  4. Varnish高性能开源HTTP加速器:Varnish Nginx和Varnish Apache搭建配置
  5. 路与远方:从方舟开源,说到中国软件行业的生态未来
  6. 检讨书生成微信小程序工具源码-拥有流量主安装搭建简单
  7. 注意力机制 - 多头注意力
  8. JAVA毕业设计江智能股票推荐系统计算机源码+lw文档+系统+调试部署+数据库
  9. python绘制圣诞树、烟花、爱心及节日倒计时
  10. mc服务器plotme修改,我的世界plotme地皮指令