最小生成树算法:
结合上一章学习了解了图的基本概念,接下来了解一下最小生成树的两种算法。

Prim算法(普里姆算法):
思想:找到所有最短的权值连接的顶点集合,所组成的树是最小生成树。
从某一顶点为起点,逐步找各个顶点上的最小权值的边来构建最小生成树。

首先,从根节点A开始,我们发现A到对所有顶点的权值信息如下:
找到最小权值,权值必须有意义,我们这里的有意义暂定为:权值要大于0,且不能为无穷大。

找到第一个最近的顶点B后,同时更新A点到各个顶点的距离,此时B点已经访问过了,我们需要标识它防止下一次它再被访问,所以我们将其到A的权值更新为0,接下来继续寻找第二个最近的顶点:

开始寻找第四个顶点:

如此往复,一直寻找,如图:

Prim算法的时间复杂度是O(N^2)。

Kruskal算法(克鲁斯卡尔算法)
Prim算法是以顶点为起点开始寻找更新最短权值,但是竟然是为了找到所有的最短权值相连接的顶点集合,那么为何不从最短权值入手?
于是克鲁斯卡尔算法,就将所有的权值放在一个数组中进行排序,然后从最短的权值开始连接所有的顶点,具体思路如下:

获取第一个最短权值,连接两个顶点,

获取第二个最短权值:

如此继续循环,连接下一个最短权值顶点:



以上就是我们克鲁斯卡尔的思想,克鲁斯卡尔的时间复杂度是针对边来讲的,如果边很少,它的效率会非常高,时间复杂度是O(N*logN),这里的N是指边。

总结分析:Prim算法是针对顶点来算的,克鲁斯卡尔是针对边来算的,适用于稀疏图,如果对于边很少的图可以使用克鲁斯卡尔算法,如果针对边数很多的情况下,使用Prim算法会好一点,Prim算法针对稠密图。

最小生成树图之-Prim算法和Kruskal算法相关推荐

  1. 作业1-采用Prim算法和Kruskal算法构造最小生成树

    采用Prim算法和Kruskal算法构造最小生成树 实验报告 1.问题 2.解析 (1)Prim算法 (2)Kruskal算法 3.设计 (1)Prim算法 (2)Kruskal算法 4.分析 (1) ...

  2. 求的带权图最小生成树的Prim算法和Kruskal算法

    求的带权图最小生成树的Prim算法和Kruskal算法 最小生成树的概念 最小生成树其实是最小权重生成树的简称. 一个连通图可能有多个生成树.当图中的边具有权值时,总会有一个生成树的边的权值之和小于或 ...

  3. 加权无向图与最小生成树(Prim算法和Kruskal算法)

    目录 0 引入 1 图的最小生成树定义及相关约定 2 最小生成树原理 2.1 性质 2.2 切分定理 3 贪心思想 4 Prim算法 4.1 算法步骤 4.2 API设计 4.3 Java代码演示 5 ...

  4. 最小生成树之Prim算法和Kruskal算法

    一个连通图可能有多棵生成树,而最小生成树是一副连通加权无向图中一颗权值最小的生成树,它可以根据Prim算法和Kruskal算法得出,这两个算法分别从点和边的角度来解决. Prim算法 输入:一个加权连 ...

  5. 【最小生成树】Prim算法和Kruskal算法的区别对比

    Prim算法和Kruskal算法都是从连通图中找出最小生成树的经典算法- 从策略上来说,Prim算法是直接查找,多次寻找邻边的权重最小值,而Kruskal是需要先对权重排序后查找的- 所以说,Krus ...

  6. 【Java数据结构与算法】第十九章 贪心算法、Prim算法和Kruskal算法

    第十九章 贪心算法.Prim算法和Kruskal算法 文章目录 第十九章 贪心算法.Prim算法和Kruskal算法 一.贪心算法 1.介绍 2.支付问题 二.Prim算法 1.最小生成树 2.介绍 ...

  7. matlab实现prim算法,Prim算法和Kruskal算法的Matlab实现

    Prim算法和Kruskal算法的Matlab实现 <计算机仿真>期末大作业 Prim算法和Kruskal算法的Matlab实现 05605刘禹050697(30) 连线问题应用举例: 欲 ...

  8. 【数据结构】最小生成树问题(Prim算法和Kruskal算法)

    相关概念 连通图与它的生成树 连通图的生成树是包含图中全部顶点的一个极小连通子图.若图的顶点数为n,则它的生成树含有n-1条边.一个连通图可能拥有多个生成树. 最小生成树(Minimum-Spanni ...

  9. Prim算法和Kruskal算法

       Prim算法和Kruskal算法都能从连通图找出最小生成树.区别在于Prim算法是以某个顶点出发挨个找,而Kruskal是先排序边,每次选出最短距离的边再找. 一.Prim(普里姆算法)算法: ...

最新文章

  1. Apollo 5.0,GitHub热榜第四
  2. CTFshow 反序列化 web268
  3. UA MATH571B 试验设计 QE练习题 不使用代码分析试验结果I
  4. 在同一个Linux上配置多个git账户
  5. git 拉取gitlab代码
  6. 2018.09.15 vijos1053Easy sssp(最短路)
  7. 零基础学习什么编程语言比较合适?别的不说,听说大佬都学了这个!
  8. Android,已知应用名称, 通过应用名称来启动应用
  9. 微软Window硬件大会(WinHEC)
  10. 2017乌鲁木齐ICPC: K. Sum of the Line(容斥)
  11. ConcurrentHashMap源码分析
  12. SMOTE算法原理及Python代码实现
  13. hspice标识符语法
  14. pl/sql编程语言
  15. BZOJ 5477: 星际穿越
  16. lol排位服务器维护赢了没加分,LOL最新排位制裁,“挂机退游戏会被限制加分,力度将逐次叠加”...
  17. UCSC下载ENCODE数据
  18. ​​​​Convolutional Neural Networks on Graphswith Fast Localized Spectral Filtering
  19. python读取excel汉字转成拼音_python 批量将中文名转换为拼音
  20. python Pygame库介绍和使用,基本游戏开发

热门文章

  1. 【机器学习】机器学习之梯度下降法简单应用(Python)
  2. 另辟蹊径!公众号留言功能新思路
  3. 20221226英语学习
  4. 【一】VVC理论知识之图像块划分
  5. 纯CSS实现淘宝天猫优惠券效果
  6. Pycharm2019使用方法(六)——鼠标放代码中单击Edit后菜单功能
  7. JAVA:实现PerfectCube完美立方公式算法(附完整源码)
  8. 宁德时代、亿纬锂能储能“列阵”
  9. 抖音矩阵系统源码定制。look here
  10. HDU 4348 To the moon(主席树区间修改)