【算法】最小生成树之Kruskal

1.Kruskal算法


算法描述:

(1)将点孤立,边非递增排序。
(2)依次添加边e:如果添加e后没有构成回路,则e属于最小生成树(MST, Minimum Spanning Tree);否则,舍弃。
(3)直至添加n-1条边(n为顶点个数)。

判断添加的边(u,v)是否构成回路,可用并查集(union-find sets)来实现:判断u, v的root节点是否一样,即判断root(u)==root(v)。若相等,说明添加(u,v)后构成回路;反之,则不会。


对并查集优化:root节点的parent域为负值,其绝对值为该树的结点数;并查集的union操作采用加权规则,即两个子树union,节点数多的子树的root为新树的root。

图的最小生成树之Prim算法及Kruskal算法 最小生成树 定义:无向图连通图G中,由所有顶点构成且总价值(连接权值和)最低的一棵树(拓扑结构)称为一个最小生成树。 最小生成树顶点为|V|个,边数为|V|-1,没有圈。 对任一生成树T,如果将图中一条不属于T的边添加至T,则会产生一个圈,从该圈中除去任意一条边,则会又恢复成生成树。 下图为一示例: 对于上面的无向有权连通图,其最小生成树为: 解决最小生成树问题有两种算法Prim算法和... 阅读详情

相关推荐

[图] 最小生成树-普利姆算法Prim O(n^2)稠密图-C语言实现-gif图演示

问题 要在【n个城市】之间建立【通讯联络网】,则连通n个城市只需要修建n-1条线路 【问题】如何在最节省经费的前提下建立这个通讯网? 【问题等价于】构造【图】的一棵【最小生成树】,即:在e条带权的边中选取n-1条(不构成回路),使“权值之和”为最小 举例 在这几个城市中修建【通讯联络网】,问最省钱的修建方案 我们能很容易得出如下图的修建方式:(红色线相连) 接下来谈,如何...

geodoer 3209

MATLAB实现Kruskal算法求解最小生成树

图论是数学的一个分支,专注于研究图的性质,它由点(顶点)和线(边)组成,用于建模连接关系。图论在计算机科学、运筹学、工程学以及社会科学等领域有着广泛的应用。图论中的概念,如路径、回路、连通性以及最小生成树等,在解决实际问题,如网络设计、电路布线和社交网络分析中扮演着重要角色。Kruskal算法是一种用来寻找最小生成树(MST, Minimum Spanning Tree)的贪心算法,由数学家Joseph Kruskal于1956年提出。

weixin_35755640的博客 844

获取本机正版windows10激活密钥,以及正版office

本方法面向的是以前买过笔记本电脑给你预装了正版系统,激活了正版office(一般是家庭版)的情况,其他情况请自行尝试。

qq_45774917的博客 2万+

从VBA到Python:探索CODE V API在MTF数据分析中的跨语言实践

本文详细介绍了如何从VBA转向Python,利用CODE V API实现MTF数据分析的高效工作流。通过Python的科学计算库和现代API设计,光学工程师可以大幅提升数据处理和可视化效率,实现自动化报告生成和性能优化。

weixin_29239661的博客 442

FreeSurfer预处理命令

比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录 tar zxvf /source/kernel.tgz -C /source/ linux-2.6.29 tar zxvf /home/tj/application/freesurfer/subjects/mindboggle/OASIS-TRT-20-1.tar.gz -C /home/tj/application/freesurfer/subjects (1)lh.thickness mri_surf2su

Dream19961996的博客 1508

别再乱调NvM_WriteBlock了!手把手教你搞懂Autosar NVM状态机与读写时序

本文深入解析Autosar NVM状态机与读写时序,帮助开发者避免常见错误。通过详细的状态机解读、最佳实践代码示例和异常处理策略,提升嵌入式系统中数据存储的可靠性。特别针对NvM_WriteBlock的调用逻辑和状态机机制进行实战讲解,解决工程师在实际开发中遇到的异步写入问题。

weixin_33701617的博客 345

OpenCV和Halcon分别实现彩色图像的白平衡效果

实现白平衡算法中的灰度世界法,能有效改善图像发红/发蓝/发绿的现象 1、OpenCV #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat g_srcImage,dstImage; vector<Mat> g_vChannels; g_srcImage = im...

$firecat利白的代码足迹$ 2829

强化学习优化多目标冲突推理的决策过程设计

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习的一个重要分支,近年来在计算机科学和人工智能领域取得了显著的进展。其核心思想是通过试错来学习最优策略,从而在复杂的环境中实现目标。然而,在多目标冲突推理(Multi-Objective Conflict Reasoning,MOCR)问题上,强化学习面临着诸多挑

AI天才研究院 1514

PCL 区域生长分割【2026最新版】

区域生长算法原理介绍、代码实现以及一个具体实验场景的应用案例进一步实现将分割结果的分类保存至本地文件夹。最近一次更新时间为:2026年5月4日。

点云侠的博客 40万+

YOLO26剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

针对没有如何去选择剪枝的内容LAMP是层自适应幅度调整剪枝,无需任何参数,通过算法内部自己计算每个层的重要程度进行剪枝。基于权重重要程度和该层权重大小关系,权重越大表明该层越重要的思想进行优化。这个跟我前面说的非结构化全局剪枝是一个解法(MP),也就是lamp是在我前面那个非结构化剪枝的基础上进行优化的。但是这个逐层进行非结构剪枝目前还没有一个清晰的概念,确定每个层要剪枝多少。LAMP得分是一个平方权重大小,由层中所有“幸存权重”的总和归一化。

m0_64661770的博客 675

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 【算法】最小生成树之prim
下一篇: 【数据结构】并查集之一
浅唱书令
博客等级 码龄16年 310粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅唱书令

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值