当前位置: 首页 > article >正文

数据结构(6.4_1)——最小生成树

生成树

连通图生成树包含图中全部顶点的一个极小连通子图(边要尽可能的少,但要保持连通)

若图中顶点数为n,则它的生成树含有n-1条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。

最小生成树(最小代价树) 

对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则称T为G的最小生成树(Minimum-Spanning-Tree,MST)

  1. 最小生成树可能有多个,但边的权值之和总是唯一且最小的
  2. 最小生成树的边数=顶点数-1。砍掉一条则不连通,增加一条边则会出现回路

  1. 如果一个连通图本身就是一棵树,则其最小生成树就是它本身
  2. 只有连通图才有生成树,非连通图只有生成森林 

例:

修路问题:

普通方案: 

 

Prim算法(普里姆) 

从某一个顶点开始构建生成树;

每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。

注:同一个图可能会有不同的最小生成树

 

Kruskal算法(克鲁斯卡尔)

每次选择一条权值最小的边,使这条边的两头连通(原本已经连通的就不选),直到所有顶点连通

两种算法的对比 

Prim算法的实现思想 

1、

2、 

3、

 

4、

 

5、

6、

 

总:

Kruskal算法的实现思想  

1、

2、

3、

4、

5、

6、

7、

总:

总结 


http://www.kler.cn/a/286187.html

相关文章:

  • Vue 中 Axios 配置指南
  • 使用物联网卡访问萤石云的常见问题
  • Vue——认识day06_class与style绑定
  • TESSY创建单元测试或集成测试工程
  • Spring 源码解读:手动实现自动装配与@Qualifier
  • 低代码技术助力移动端开发:简化开发流程,实现快速创新
  • 算法设计与分析:实验五 图论——桥问题
  • 每日错题(2024年9月1日)
  • 经验笔记:Apache Kafka
  • python3.10安装
  • 【C++ Primer Plus习题】8.4
  • 六、vue进阶知识点
  • VastBase——VPatch版本控制
  • 使用docker file创建镜像(thirty-seven day)
  • 存储系统总结
  • MATLAB中save_system的用法
  • 【CSS】border-image 样式不生效 - 和谷歌浏览器版本有关系 - 谷歌 80 版本边框图片样式失效问题
  • 人该怎样活着呢?48
  • zdppy+vue3+onlyoffice文档管理系统实战 20240901 上课笔记 基于验证码登录功能基本完成
  • Excel 导入和导出--前后端整合