第六章 图 六、最小生成树(Prim算法、Kruskal算法)

news2024/11/19 15:14:11

一、定义

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

二、手动实现算法

(1)Prim算法

介绍:从某一个顶点开始构建生成树;每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。

时间复杂度:O(\left | V \right |^2),适合用于边稠密图

例子1:

1、我们从P城开始,找到权最小的路径,并构建出新的树。此时最小为1

2、再次寻找权最短的路径,为P城到矿场。

3、如此反复,得到最终结果。

(2)Kruskal算法

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

时间复杂度:O(|E|*log2|E|),适合用于边稀疏图

例子2:

1、我们从P城出发,找一条权值最小的边,我们找到学校到P城的路径为1(最短),于是连通它们。

2、再次找最短,找到2,连通它们。

3、反复执行这个操作,直到所有的结点都连通。

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

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

相关文章

PCD235A101-3BHE032025R010 为航海级用户提供卓越的性能

PCD235A101-3BHE032025R010 为航海级用户提供卓越的性能 PCD235A101 系列提供 12.1 英寸、19 英寸和 24 英寸 LCD 尺寸,配备宽视角屏幕,以满足不同船舶的要求。船用PC符合DNV标准,通过IEC 60945认证,具有日光/月光可读、防腐涂层…

C语言入门Day_18 判断和循坏的小结

目录 前言: 1.判断 2.循环 3.课堂笔记 4.思维导图 前言: 判断语句和循环语句都可以大致分为三个部分,第一个部分是固定的语法格式;第二部分是代码的执行顺序,第三部分是判断和循环成立与否的判断条件。 1.判断 1…

小米13Pro/13Ultra刷面具ROOT后激活LSPosed框架微X模块详细教程

喜欢买小米手机,很多是因为小米手机的开放,支持root权限,而ROOT对普通用户来说更多的是刷入DIY模块功能,今天ROM乐园小编就教大家如何使用面具ROOT,实现大家日常情况下非常依赖的微X模块功能,体验微X模块的…

10.2 整流电路

在分析整流电路时,为了突出重点,简化分析过程,一般均假定负载为纯电阻性;整流二极管为理想二极管,即导通时正向压降为零,截止时反向电流为零;变压器无损耗,内部压降为零等。 一、整…

信息化发展35

IT审计技术-风险评估技术 常用的IT 审计技术包括风险评估技术、审计抽样技术、计算机辅助审计技术及大数据审计技术。 IT 风险评估技术一般包括: 1 )风险识别技术: 用以识别可能影响一个或多个目标的不确定性, 包括德…

W11下CMake MinGW配置OpenCV和Qt

💂 个人主页:风间琉璃🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 前几天将cuda版本的opencv给编译成功了,当时用的VS的MSVC&…

初阶扫雷(超详解)

✨博客主页:小钱编程成长记 🎈博客专栏:C语言小游戏 🎈推荐相关博文:初阶三子棋(超详解) 初阶扫雷 1.游戏介绍2.基本思路3.实现前的准备4.实现步骤4.1 打印菜单4.2 初始化扫雷棋盘4.3 打印扫雷棋…

服务器基准测试实践:SysBench的搭建与基本使用

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,AWS/阿里云资深使用…

Java 中的比较 equals 和 ==

这个问题在 Java 面试的时候大概率会被问到。 不是因为这个问题有什么复杂的,只是因为这个地方超出人类认知,你相信吗? 比较什么 如果你上培训班或者在学校学习的话,你的老师大概率可能会告诉你对于: 基本类型&…

【数据结构面试题】栈与队列的相互实现

目录 1.队列实现栈 1.1创建栈 1.2判断是否为空 1.3入栈 1.4出栈 1.5获取栈顶元素 1.6完整代码 2. 用栈实现队列 2.1创建队列 2.2判断是否为空 2.3入队列 2.4出队列 2.5获取队头元素 2.6完整代码 1.队列实现栈 用队列实现栈https://leetcode.cn/problems/impleme…

Java笔记:Volatile

一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级…

比较Visual Studio Code中的文件

目录 一、比较两个文件 1.1VS code中的文件大致分为两类: 1.2如何比较VS code中的两个文件? 二、并排差异模式:VS code中的一种差异模式 三、内联差异模式:VS code中的另一种差异模式 四、VS code忽略在行首或者行尾添加或删除…

Shazam音乐检索算法原理及实现

算法基本流程如下: 1. 采集音乐库 2. 音乐指纹采集 3. 采用局部最大值作为特征点 4. 将临近的特征点进行组合形成特征点对 5. 对每个特征点对进行hash编码 编码过程:将f1和f2进行10bit量化,其余bit用来存储时间偏移合集形成32bit的hash码 …

使用LambdaQueryWrapper再也不担心字段拼写错误了 [MyBatis-Plus系列] - 第485篇

历史文章(文章累计480) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…

数据结构--二叉树-堆(1)

文章目录 树概念相关的基本概念树的表示 二叉树概念特殊二叉树性质 堆二叉树的顺序结构堆的概念 堆的实现初始化数组初始化为堆向上调整向下调整插入删除打印、摧毁、判空、获取堆顶数据验证 堆的应用堆排序TopK问题 树 概念 树是一种常见的非线性的数据结构,&…

Docker 入门:如何打包、部署并运行你的应用

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

cmake构建和编译

什么是CMake? CMake本身是一个工具集,由五个可执行的程序组成:cmake、ctest、cpack、cmake-gui和ccmake,其中cmake可以说是出镜率最高的明星级别程序了,它用于在构建项目的第一步,进行项目的配置、生成和构…

SQL4 查询结果限制返回行数

描述 题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。 示例: iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijin…

健身房预约小程序开发全攻略

随着健身行业的快速发展,健身房预约小程序成为了方便、快捷的预约方式,为健身爱好者提供了更好的服务。本文将介绍如何开发健身房预约小程序。 第一步:登录小程序制作平台 首先,进入后台,点击【轻应用小程序】中的【去…

MATLAB入门-数据的导入和导出

MATLAB入门-数据的导入和导出 注:本篇文章是课程学习笔记,课程链接为:头歌 常见的几个导入数据的方法 load函数 load函数专门用于引入MATLAB的.mat格式数据,十分的简单方便。 例如:一个-ASCII编码形式存储的数据文件…