Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边,将(u,w)这条边加入到已找到边的集合,并且将点w加入到集合U中,当U=V时,就找到了这颗最小生成树。

其实,算法的核心步骤就是:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边。

知道了普利姆算法的核心步骤,下面我就用图示法来演示一下工作流程,如图:

首先,确定起始顶点。我以顶点A作为起始点。根据查找法则,与点A相邻的点有点B和点H,比较AB与AH,我们选择点B,如下图。并将点B加入到U中。

继续下一步,此时集合U中有{A,B}两个点,再分别以这两点为起始点,根据查找法则,找到边BC(当有多条边权值相等时,可选任意一条),如下图。并将点C加入到U中。

继续,此时集合U中有{A,B,C}三个点,根据查找法则,我们找到了符合要求的边CI,如下图。并将点I加入到U中。

继续,此时集合U中有{A,B,C,I}四个点,根绝查找法则,找到符合要求的边CF,如下图。并将点F加入到集合U中。

继续,依照查找法则我们找到边FG,如下图。并将点G加入到U中。

继续,依照查找法则我们找到边GH,如下图。并将点H加入到U中。

继续,依照查找法则我们找到边CD,如下图。并将点D加入到U中。

继续,依照查找法则我们找到边DE,如下图。并将点E加入到U中。

此时,满足U = V,即找到了这颗最小生成树。

最小生成树的Prime算法的思想相关推荐

  1. 数据结构——最小生成树之prime算法(与最短路径之迪杰斯特拉算法很像)

    最小生成树之prime算法 ***最小生成树:一个连通图的生成树中,所有边的权值加起来最小的生成树:称为最小生成树: [简介]:Prime算法可在加权连通图里搜索最小生成树.即:所有边的权值之和为最小 ...

  2. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)

    带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法:有向图的最短路径算法有dijkstra算法和floyd算法. 生成树的概念:联通图G的一个子图如果是一棵包 ...

  3. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)

    带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法:有向图的最短路径算法有dijkstra算法和floyd算法. 生成树的概念:联通图G的一个子图如果是一棵包 ...

  4. 数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

    最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径: [算法概述]:Dijkstra算法适用于解决单源最短路径的问题.即:从源 ...

  5. POJ 2395 Out of Hay 最小生成树(prime算法)

    题目: 有N(2-2000)个农场,M(1-10000)条通路连通各个农场,长度不超109,要求遍历全部的农场,且每走1单位长度就要消耗一单位水,每到一个农场可以把自己的水充满,求最小的水箱容量. 样 ...

  6. prime算法详解【最小生成树】

    无以言表我对着代码懵了两个小时终于看懂了的鸡冻,手写程序大法好哇,[或者只是我太久没敲代码了..]个人感觉这个算法还是有点粗鲁,大量的遍历,比较中意最小生成树的另一个算法,一会搞懂它的代码再说. 最小 ...

  7. 最小生成树Prime算法

    洛谷p1546链接 Prime算法的核心也是贪心,但是不同的就是,它是一直维护一颗树, 直到变成一颗最小生成树, #include<bits/stdc++.h> using namespa ...

  8. 数据结构笔记(二十九)--最小生成树(prim算法思想)

    最小生成树(prim算法思想) 一.预知概念 直达:两顶点直接相连接 路径:两顶点之间可以有其他顶点,但最终两顶点是能够连接的 假如我们有四台电脑,怎样连接才能保证这四台电脑两两相互通信组成局域网呢? ...

  9. 算法:最小生成树(prime,kruskal,floyd)

    最小生成树 Floyd算法O(n^3)- 动态规划 思路 f[i, j, k] 表示从i走到j的路径上除i和j点外只经过1到k的点的所有路径的最短距离.那么f[i, j, k] = min(f[i, ...

最新文章

  1. opencv + python3 利用ros 的 cv_bridge 传送图像消息的一种替代方法
  2. Xamarin Essentials教程磁力计Magnetometer
  3. linux-压缩与解压缩(gz,zip,tar,jar,war)
  4. 解决vista/win7安装windows live messenger 2011找不到wlidcli.dll及错误800488eb .
  5. vue 动态组件组件复用_真正的动态声明性组件
  6. python鼠标选中事件_python对绑定事件的鼠标、按键的判断实例
  7. mfc编程淘汰了吗_工控编程,学完C++基础后再学什么?
  8. 关于本次课堂代码的练习
  9. fileziller 恢复 站点管理器 内的ftp帐号方法
  10. matlab2c使用c++实现matlab函数系列教程-randint函数
  11. Azure School女神相邀,把每分钟都过的更充实
  12. GLASS 产品使用(一)
  13. 颜色空间 ---HSI
  14. Alpha版本冲刺(五)
  15. 下载到的电子书格式是Mobi,这种格式能否在WINDOWS电脑上打开?
  16. Java互联网架构-企业级实战秒杀系统优化方案与应用思路
  17. 分镜头脚本表格模板下载
  18. SpringMVC中使用ajax
  19. drf 安装_drf 生成接口文档
  20. python管理系统设计_基于Python和Django框架的物联网智能设备管理系统的设计与实现

热门文章

  1. 新手一小时就写出人工智能应用 - 看图识熊
  2. springboot api文档_SpringCloud/SpringBoot - 自动生成API文档
  3. 浏览器svg插件_Archer-svgs: 异步加载svg方案
  4. mysql开窗函数over_oracle分析函数技术详解(配上开窗函数over())
  5. 武汉船舶职业技术学院计算机分数线,武汉船舶职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  6. Java中高效判断数组中是否包含某个元素
  7. 初学Java编程经常遇到的问题,你们遇到过吗?
  8. postscript怎么打开_怎么把在学习中用的Adobe PDF文件转换成Microsoft office Word
  9. pythonsort函数时间复杂度_合并排序算法——时间复杂度详解和python代码实现
  10. python 32的值_示例解读 Python 2 和 Python 3 之间的主要差异