【数据结构与算法】最小生成树

文章目录

  • 最小生成树(MST)
    • 定义
  • 构造最小生成树
    • Prim算法
    • Kruskal算法

最小生成树(MST)

连通图的生成树包含图的所有顶点,并且只含有尽可能少的边。对于生成树来说,若砍去它的一条边,则会使生成树变成非连通图;若给它增加一条边,则会形成图中的一条回路。

例如:

G
2
1
3
4
A
B
C
D

它的生成树可以是:

G1
2
1
3
A
B
C
D

也可以是

G2
1
3
4
A
B
C
D

定义

对于一个带权连通无向图G来说,生成树不同,每棵树的权(树中所有边上的权值之和)也不同。权值之和最小的那棵生成树称为G的最小生成树(Minimum-Spanning-Tree,MST)。

例如,上文中,G1是G的最小生成树。

不难看出,最小生成树具有以下性质:

  1. 若图G中存在权值相同的边,则G的最小生成树可能不唯一。当图G中的各边权值互不相等时,最小生成树是唯一的。
  2. 若无向连通图G的边数比定点数少1,则G的最小生成树就是它本身。
  3. 虽然图G最小生成树可能不唯一,但权值之和总是唯一的,而且是最小的。
  4. 最小生成树的边数为顶点树减1

构造最小生成树

构造最小生成树的方法有很多,但大多都使用了贪心思维,其中最典型的就是Prim算法和Kruskal算法。

(由于考研对这部分代码的要求并不高,因此实现代码略过)

Prim算法

Prim算法的核心是选择与已构造的生成树连接的权值最小、未被选择过的且另一端结点不在生成树内的边加入到已构造的生成树中。

例如:

在这里插入图片描述

假设我们以1为起点进行构造。

那么我们将1作为已构造的最小生成树。

第一次:选择与1连接的最小的边,有1–2

在这里插入图片描述

第二次,选择与{1,2}连接的最小的边,有2–4

在这里插入图片描述

第三次,选择与{1,2,4}连接的最小的边,有4–7

在这里插入图片描述

第四次,选择与{1,2,4,7}连接的最小的边,有7–6

在这里插入图片描述

第五次,选择与{1,2,4,7,6}连接的最小的边,有6–3

在这里插入图片描述

第六次,选择与{1,2,4,7,6,3}连接的最小的边,有4–5

在这里插入图片描述

第七次,选择与{1,2,4,7,6,3,5}连接的最小的边,有5–8

在这里插入图片描述

所以根据Prim算法得到的最小生成树为:

在这里插入图片描述

Kruskal算法

Kruskal算法的核心是每次选择权值最小的、未被选择过的且两端结点属于两个不同的集合的边。

例如:

在这里插入图片描述

第一次:选择权值最小的、未被选择的且两端属于不同集合的边,有5–8

在这里插入图片描述

第二次,选择权值最小的、未被选择的且两端属于不同集合的边,有2–4

在这里插入图片描述

第三次,选择权值最小的、未被选择的且两端属于不同集合的边,有3–6

在这里插入图片描述

第四次,选择权值最小的、未被选择的且两端属于不同集合的边,有,4–7

在这里插入图片描述

第五次,选择权值最小的、未被选择的且两端属于不同集合的边,有7–6

在这里插入图片描述

第六次,选择权值最小的、未被选择的且两端属于不同集合的边,有1–2

在这里插入图片描述

第七次,选择权值最小的、未被选择的且两端属于不同集合的边,有4–5

在这里插入图片描述

所以根据Prim算法得到的最小生成树为:

在这里插入图片描述

全篇结束,感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

练习时长 1 年 2 个月的 Java 菜鸡练习生最近面经,期望25K

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 自我介绍:本人是练习时长 1 年 2 个月的 Java 后端菜鸡练习生。下面是我最近面试的面经: 百度 一面 约1h时间:2…

MySQL常见面试题自测

文章目录 MySQL基础架构一、说说 MySQL 的架构?二、一条 SQL语句在MySQL中的执行过程 MySQL存储引擎一、MySQL 提供了哪些存储引擎?二、MySQL 存储引擎架构了解吗?三、MyISAM 和 InnoDB 的区别? MySQL 事务一、何谓事务&#xff1…

二、从C语言到C++(二)

二、从C语言到C(二) bool 类型怎么打印 bool 类型的值 强弱类型C语言的类型系统C的类型系统总结 NULL 和 nullptrNULLnullptr示例 起别名使用 typedef使用 using 关键字(C11及以后)注意 void* 万能指针C语言中的 void*C中的 void…

Python类的优势及应用场景深度分析(代码封装与组织、继承与代码复用、多态与接口、状态管理与行为封装)(python class)

文章目录 Python 类的优势及应用场景深度分析1. 代码封装与组织1.1 封装性示例代码:用户账户管理 1.2 组织性 2. 继承与代码复用2.1 继承性示例代码:员工管理系统 3. 多态与接口3.1 多态性示例代码:图形渲染 4. 状态管理与行为的封装4.1 状态…

黄仁勋加州理工毕业典礼演讲:人工智能是我们这个时代最重要的技术

英伟达公司首席执行官黄仁勋周五(6月14日)在加州理工学院(Caltech)毕业典礼上发表演讲,鼓励毕业生在逆境中努力,不断寻求新的机遇。 黄说,加州理工学院因其毕业生受人尊敬而闻名,如…

【耐水好】强耐水UV胶水主要重视什么?

【耐水好】强耐水UV胶水主要重视什么? 应用性方面: 强耐水UV胶水主要重视以下几个方面: 耐水性:强耐水UV胶水经过精心调配和改良,以提供出色的耐水性能。这种胶水能够形成防水层,有效防止水分渗入并保护被…

ISCC2024 WriteUpReverse 迷失之门

Reverse 迷失之门 迷失之门 writeup解题思路 打开题目是一个压缩包解压后是一个.exe程序 按照做题顺序第一步查壳发现并没有壳将其拖入ida中进行查看 使用shiftF12进行字符串查看 发现flag字符了我们双击它 将光标移动到yes哪里右击空白地方打开交叉索引并按F5进行反汇编发现…

6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高

车路云概念股发力上涨,中海达、华铭智能等多股20CM涨停。半导体板块走强,中芯国际港股上涨近3% 。白酒板块下跌,贵州茅台跌1.3% 。30年期及10年期国债期货主力合约均创上市以来新高。 周二,A股全日窄幅震荡 沪指收涨0…

IEEE 期刊、会议论文模板下载网站(TNNLS)

这是网址:IEEE-Template Selector. 1 现在TNNLS匿名 需要专用模板,如果不用会退回 2 选会刊(trans),期刊(journal),快报(letters)会议(conferenc…

封装分发安装教程

【安装环境】 Linux伪静态 PHP7.1mysql5.6 SSL 证书 (使用宝塔) 1、在宝塔上面新建站点,把压缩包上传到根目录,解压出来,然后导入 sql 数据库文件,再 然后修改数据库配置 source\system\db_config.php 2、…

一图看懂华为云CodeArts API 7大特性,带你玩转一站式API

华为云CodeArts API是API全生命周期一体化协作平台 ,支持开发者高效实现API设计、API开发、API测试、API托管、API运维、API变现的一站式体验。以API契约为锚点,CodeArts API保证了API各阶段数据高度一致,为开发者提供友好易用的API全流程端到…

基于Matlab的细胞计数图像处理系统(GUI界面有报告) 【含Matlab源码 MX_003期】

简介: 本文旨在解决生物血细胞数目统计的挑战,提出了基于图像处理的综合方案。通过MATLAB平台,我们设计并实现了一套完整的细胞图像处理与分析流程。在预处理阶段,采用图像增强和阈值分割等方法,有效地提高了细胞图像的…

SQL学习,大厂面试真题(1):观看各个视频的平均完播率

各个视频的平均完播率 1、视频信息表 IDAuthorNameCategoryAgeStart Time1张三影视302024-01-01 7:00:002李四美食602024-01-01 7:00:003王麻子旅游902024-01-01 7:00:00 (video_id-视频ID, AuthorName-创作者, tag-类别标签, duration-视频时长(秒&…

Hadoop提交MR任务

MR作为Hadoop自带的计算框架所运行的任务,它本身通过hadoop jar提交 hadoop jar mr任务jar包路径 你要运行的类的全限定名 后面就是你需要传的参数但是有些时候你需要显示的修改指定这个任务运行时所用的资源数,就可以通过下面的命令指令 hadoop jar y…

六、在Qt下通过PCL在VTK9.3.0下显示自己的pcd点云文件

前几天刚整理好VTK8.2.0,发现我们的项目使用的PCL自带的VTK是9.3.0的,脸黑了快 VTK8.2.0可参考该篇博文:五、在Qt下加载QVTKWidget控件(VTK8.2.0),生成Visual Studio项目,显示点云(C…

玩转nRF52840-DK开发套件 (5) RTT打印调试日志

一、两种日志信息的输出方式 日志信息输出可以方便调试者观察程序运行状态,通常用串口 printf 来输出日志。nRF52840-DK也可以用仿真器 JLink 的 RTT Viewer 输出方式。 二、SDK_config.h配置 勾选相关项: 三、SDK_config.h配置 在主函数 main 中&#x…

给一家银行做的数据中台系统架构方案书(DAMM)招投标用,虽然有内定潜规则,但是方案都是要的,不一定就是价格低就能中标,毕竟是上百万以上的单子

目录 概述需求分析系统架构DAMM设计思路数据治理数据安全实施计划维护和运营 1. 概述 1.1 项目背景 在数字化转型的浪潮中,银行业面临着越来越多的数据挑战与机遇。为了更好地利用数据资产,提升服务质量和运营效率,建立一个高效、灵活的数…

HTML(7)——无语义的布局标签和字符实体

无语义的布局标签 作用&#xff1a;布局网页&#xff08;划分网页区域&#xff0c;摆放内容&#xff09; div&#xff1a;独占一行 span&#xff1a;不换行 字符实体 作用&#xff1a;在网页中显示预留字符 显示结果描述实体名称空格 <小于号<>大于号> 在代码中…

基于单片机的直流电机调速系统设计探讨

摘要 &#xff1a; 直流电动机制动性能与起动性能都较为理想&#xff0c;而且能够实现大范围的平滑调速&#xff0c;因而在电力拖动领域中的应用十分常见。 以控制角度分析&#xff0c;直流电机调速也成为交流拖动系统的重要基础 。 综合考虑直流电机转速测量和自动控制&#…

Ubuntu,Centos,Linux服务器安装Mellanox MCX653105A IB网卡HCA卡驱动

Mellanox 官方驱动下载地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 选择对应操作系统 官方链接速度比较慢&#xff0c;推荐个友商的下载地址 https://support.xfusion.com/support/#/zh/rack-servers/2288h-v5-pid-21872244/software …