前面说过,Prim算法是从顶点着手构建最小生成树的。应该说,Prim算法比Kruskal更简单。我们还是以前面的乡镇假设光纤网络为例:

Prim算法工作步骤

(1) 构建全部顶点集V,选取初始顶点,加入顶点集U。

构建顶点集V={a,b,c,d,e,f,g,h,i},从中选取任意一个顶点。我们假设从顶点a开始。将a加入到顶点集U={a}中。

(2) 找U中顶点与V-U中顶点的所有边。

 

U中顶点只有a,V-U={b,c,d,e,f,g,h,i},则U中顶点与V-U中顶点的所有边为a-b和a-f,图中紫色边。U中顶点为绿色背景顶点,V-U中顶点为黑色背景顶点。

(3) 选取所有边中的最短边加入最小生成树。

所有边a-b和a-f中的最短边a-b,将其加入最小生成树(图中绿色边)。

(4) 将最短边另一头的顶点,加入顶点集合U。

最短边a-b的另一头顶点为b,将b加入到U={a,b}。

(5) 继续找U中顶点与V-U中顶点的所有边。

此时,U={a,b},V-U={c,d,e,f,g,h,i},则U与V-U中顶点所有边为a-f, b-c, b-g,b-h。图中紫色边所示。

(6) 继续选取最短边,将最短边加入最小生成树,并将最短边另一头顶点加入U。

此时最短边为a-f,将最短边加入最小生成树,并将最短边顶点f加入U={a,b,f}。此时V-U={c,d,e,g,h,i}。

(7) 如此循环反复,直至U=V。

下面是按顺序的U和V-U以及最小生成树的变化过程:

 

U={a,b,f,g};V-U={c,d,e,h,i}                                                   U={a,b,f,g,h};V-U={c,d,e,i}

 

U={a,b,c,f,g,h};V-U={d,e,i}                                                    U={a,b,c,f,g,h,i};V-U={d,e}

 

U={a,b,c,e,f,g,h,i};V-U={d}                                                      U={a,b,c,d,e,f,g,h,i};V-U={}

为什么不会构成环

因为我们在寻找边时,只是找U与V-U中顶点所构成的边,而U中内部顶点的边是不会找的。找到最短边后,直接将另一头顶点加入U了,也就是说这两个顶点都在U中了,即使这2个顶点还有其他路径,后面都不会再找,也就不会构成回路了。

图论(十)最小生成树-Prim算法相关推荐

  1. [Java学习] 最小生成树——Prim算法

    文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...

  2. 最小生成树Prim算法Java版

    最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...

  3. D-OJ刷题日记:使用邻接矩阵实现最小生成树Prim算法 题目编号:1135

    理解: [理解prim算法本质--让一棵小树逐渐长大] Prim算法:又称为加边法,即每次选择最小权值的边加入到生成树中,然后再更新权值,如此反复,保证每次最优来达到最优解. Prim算法生成树用的是 ...

  4. 西南科技大学OJ题 求最小生成树(Prim算法)1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...

  5. 最小生成树-Prim算法详解(含全部代码)

    目录 适用条件 测试所用图 算法详解 Prim算法代码 全部代码 实验结果 适用条件 加权连通图 测试所用图 所用原图及生成过程 其中,(a) 为原图,圆圈里面是节点的名称,边上的数字是边的权值.由实 ...

  6. 最小生成树 - Prim算法

    最小生成树 - Prim算法 思路: 采用 贪心策略,每次选取连通块外延的最短边和对应的点放入连通块,再更新新的连通块外延的边.连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小. 时间复杂度: ...

  7. 【数据结构】最小生成树 Prim算法 Kruskal算法

    最小生成树应用场景: 假设以下场景,有一块木板,板上钉上一些钉子,这些钉子可以由一些细绳连接起来.假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样得情况,即用最少的细绳把所有的钉子连接起 ...

  8. 生成树的概念,最小生成树Prim算法 Kruskal算法

    求解最小生成树可以用Prim算法 Kruskal算法

  9. POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法

    首先,纪念我用Linux系统AC的第一题-   安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...

最新文章

  1. 转载--tomcat整合apr
  2. 数据结构与算法 | 插值查找
  3. Logback介绍及入门
  4. 【报告分享】2021年营销数智化趋势洞察报告:深链经营孕育品牌发展新商机.pdf(附下载链接)...
  5. 手机QQ Hybrid 的架构演进
  6. sql注入开源网站包
  7. 618大促,我把知识星球的价格调错了……
  8. S32K144时钟配置
  9. java libraries在哪_java.library.path在哪? | 学步园
  10. drm单个framebuffer显示
  11. 『每周译Go』Go sync map 的内部实现
  12. 数学物理方法·基础③复数基本运算法则
  13. STM2F407ZGT6和NBIOT模块链接华为云
  14. ChatGLM-6B模型微调实战(以 ADGEN (广告生成) 数据集为例,序列长度达 2048)
  15. 2020年第二届网鼎杯,青龙队伍题目,共十八道
  16. 计算机科学与技术部分图书书评
  17. 大中型网吧的无盘网络硬件配置与方案(转)
  18. VisionBank 机器视觉软件常见问题,软件使用问题,无法采集图像
  19. linux下h.264码流实时rtp打包与发送,Linux下H.264码流实时RTP打包与发送
  20. 数据可视化就应该这么做!

热门文章

  1. 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表
  2. 分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!
  3. 究竟什么样的简历才能拿到面试?
  4. 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
  5. 面试官问:为什么String的hashCode选择 31 作为乘子?
  6. 卧槽!面试官 5 连问一个 TCP 连接可以发多少个 HTTP 请求?
  7. Activiti工作流从入门到入土:入门实例
  8. 蓝桥杯-Anagrams问题(java)
  9. Eclipse导入项目常见问题----jdk版本问题(有个红色感叹号)01
  10. his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告