图论(十)最小生成树-Prim算法
前面说过,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算法相关推荐
- [Java学习] 最小生成树——Prim算法
文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...
- 最小生成树Prim算法Java版
最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...
- D-OJ刷题日记:使用邻接矩阵实现最小生成树Prim算法 题目编号:1135
理解: [理解prim算法本质--让一棵小树逐渐长大] Prim算法:又称为加边法,即每次选择最小权值的边加入到生成树中,然后再更新权值,如此反复,保证每次最优来达到最优解. Prim算法生成树用的是 ...
- 西南科技大学OJ题 求最小生成树(Prim算法)1075
求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...
- 最小生成树-Prim算法详解(含全部代码)
目录 适用条件 测试所用图 算法详解 Prim算法代码 全部代码 实验结果 适用条件 加权连通图 测试所用图 所用原图及生成过程 其中,(a) 为原图,圆圈里面是节点的名称,边上的数字是边的权值.由实 ...
- 最小生成树 - Prim算法
最小生成树 - Prim算法 思路: 采用 贪心策略,每次选取连通块外延的最短边和对应的点放入连通块,再更新新的连通块外延的边.连通部分逐渐扩大,最后将整个图连通起来,并且边长之和最小. 时间复杂度: ...
- 【数据结构】最小生成树 Prim算法 Kruskal算法
最小生成树应用场景: 假设以下场景,有一块木板,板上钉上一些钉子,这些钉子可以由一些细绳连接起来.假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样得情况,即用最少的细绳把所有的钉子连接起 ...
- 生成树的概念,最小生成树Prim算法 Kruskal算法
求解最小生成树可以用Prim算法 Kruskal算法
- POJ2728 Desert King ——01分数规划Dinkelbach迭代法+最小生成树prim算法
首先,纪念我用Linux系统AC的第一题- 安装这个万恶的NOI Linux系统费了6小时的时间,不过好在最后终于装上了,但是因为我安装的Linux系统比较烂,还遭到了小花儿和js的鄙视,唉,本人 ...
最新文章
- 转载--tomcat整合apr
- 数据结构与算法 | 插值查找
- Logback介绍及入门
- 【报告分享】2021年营销数智化趋势洞察报告:深链经营孕育品牌发展新商机.pdf(附下载链接)...
- 手机QQ Hybrid 的架构演进
- sql注入开源网站包
- 618大促,我把知识星球的价格调错了……
- S32K144时钟配置
- java libraries在哪_java.library.path在哪? | 学步园
- drm单个framebuffer显示
- 『每周译Go』Go sync map 的内部实现
- 数学物理方法·基础③复数基本运算法则
- STM2F407ZGT6和NBIOT模块链接华为云
- ChatGLM-6B模型微调实战(以 ADGEN (广告生成) 数据集为例,序列长度达 2048)
- 2020年第二届网鼎杯,青龙队伍题目,共十八道
- 计算机科学与技术部分图书书评
- 大中型网吧的无盘网络硬件配置与方案(转)
- VisionBank 机器视觉软件常见问题,软件使用问题,无法采集图像
- linux下h.264码流实时rtp打包与发送,Linux下H.264码流实时RTP打包与发送
- 数据可视化就应该这么做!
热门文章
- 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表
- 分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!
- 究竟什么样的简历才能拿到面试?
- 看看人家那后端API接口写得,那叫一个巴适~,再看看我的,像坨屎!
- 面试官问:为什么String的hashCode选择 31 作为乘子?
- 卧槽!面试官 5 连问一个 TCP 连接可以发多少个 HTTP 请求?
- Activiti工作流从入门到入土:入门实例
- 蓝桥杯-Anagrams问题(java)
- Eclipse导入项目常见问题----jdk版本问题(有个红色感叹号)01
- his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告