Windows系统数据结构——最小生成树、Prim算法和Kruskal算法

news/2025/2/26 0:28:08

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows系统数据结构——最小生成树、Prim算法和Kruskal算法

我在各在论坛看了很多相关帖子,发现一个简单的问题都被复杂化了。最小生成树、Prim算法和Kruskal算法真的没有大家想的那么复杂。

一些所谓的数据结构教材把这个问题讲的极其复杂,其实这真的没有必要。其实这个问题只需要两张图就可以全部搞懂。

我们下面来看看这个问题。

最小生成树的基本概念

最小生成树: 在一个连通网的所有生成树中,各边的代价之和最小的那棵生成树称为该连通网的最小代价生成树, 简称为最小生成树。
Prim算法Kruskal算法是两个利用最小生成树性质构造最小生成树的算法

如果连通图的子图是一棵包含该图所有顶点的树,则该子图称为连通图的生成树。生成树往往不唯一。Prim算法和Kruskal算法是求连通带权无向图的最小生成树的常用算法。两种算法都采用贪心策略。

1.Prim算法

Prim算法的实现原理
假设图中的所有顶点和边结点存于U全集集合中,而新建一个集合T用于存放最小生成树的结点。从U集合中的某个顶点开始,不断查找到U-V集合的最小权值边和边所依附的另一个顶点,将此最小权值边和另一个顶点归并入T集合中,在实行完归并操作后,检查此时U-V中的所有结点到刚归入的结点的边的权值是否有小于当前辅助数组单元值lowcost值的情况,若有此情况,则更新辅助数组单元值,使辅助数组的lowcost中永远存放剩余顶点到T集合的最小边权值。
 

设一个带权连通无向图为G=(V,E),其中顶点集合V有n个顶点。
(1)设置一个顶点集合U和边集合T,U的初始状态为空。
(2)选定一条最小权值的边,并将顶点加入到顶点集合U中。
(3)重复下面的步骤,直到集合U=V为止:
1)选择一条最小权值的边(i,j),且满足i∈U,j∈V-U。
2)把顶点j加到顶点集合U中,把边(i,j)加到边集合T中。
此时,T为图G的最小生成树。如下图。

 该算法的时间复杂度为O(n^2),只和顶点相关,适合于稠密图。

2.Kruskal算法

Kruskal算法的实现原理
设置两个辅助数组Edge和Vexset,Edge用来存储边权值及边依附的始点和终点,Vexset用来存储各顶点的连通分量值(Vexset的单元值相同则表明顶点属于同一个连通分量)。根据输入的边数和点数创建无向图的邻接矩阵,此处不同的是,需要将输入的边信息存储到辅助数组Edge中去。将Edge数组中的元素按边权值从小到大排序,初始化Vexset数组。按照边权值从小到大的顺序,依次使边依附的终点和始点属于同一个连通分量,直到遍历结束边信息,此时最小生成树的所有结点同属于一个连通分量,最小生成树构造完毕。
 

设初始状态只有n个顶点且无边的森林T,选择最小代价的边加入T,直到所有顶点在同一连通分量上,这就生成了最小生成树。这里加入边应避免环的出现。如图所示。

  该算法的时间复杂度为O(elog2e),只和边相关,较适合于稀疏图。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。


http://www.niftyadmin.cn/n/354870.html

相关文章

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法: 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程: 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯: 网口通讯: 西门子1200与组态王TCP通讯 - 知…

HACK ME PLEASE: 1

文章目录 HACK ME PLEASE: 1实战演练一、前期准备1、相关信息 二、信息收集1、访问网站2、端口扫描2、扫描目录3、访问网站4、访问网站5、扫描目录6、访问网站7、登录MySQL数据库8、查看数据表9、查看users表的内容10、查看tblUsers表内容11、解密12、加密13、修改密码14、查询…

AI与税务管理:新技术带来的新机遇和新挑战

本文作者:王伊琳 人工智能(Artificial Intelligence,AI)是指由计算机系统或机器人模拟人类智能的过程和结果,包括感知、理解、学习、推理、决策等能力。近年来,随着计算机技术、互联网平台、大数据分析等的…

Imagination推出IMG CXM最小GPU,为家庭娱乐带来无比便捷的用户界面

全新IMG CXM GPU核兼容RISC-V并原生支持全HDR,帮助数字电视及整个消费市场降低成本 中国北京 - 2023年5月23日 - Imagination Technologies推出全新IMG CXM GPU系列为对成本敏感的消费级设备带来无缝的视觉体验。该系列包含原生支持全HDR用户界面的最小GPU。 IMG CX…

网络安全工程师考证指南

已经到2023年了,那么信息安全类证书最有前途的有哪些呢?今天和大家一起聊聊这个话题! 1.CISP(国家登记的信息安全专业人员) 就CISP而言,安全实践者基本耳闻,算是国内权威认证,毕竟有政府背景为认证做背书&…

“向上管理”的7个最佳实践:如何管理你的老板?

向上管理是一种管理技巧,它指的是如何有效地管理你的老板。这种技巧可以帮助你更好地与老板沟通,提高工作效率,增加工作成就感。本文将介绍七个最佳实践,帮助你学会如何向上管理。 1. 了解老板的需求和期望 了解老板的需求和期望…

BSCI验厂13个执行领域注意事项分享

【BSCI验厂13个执行领域注意事项分享】 什么是BSCI验厂? BSCI验厂是为了商界能够接受并遵守全球的社会责任审核,用一套统一、通用的程序和不断完善的政策,来监督、督促、发展企业的社会责任表现,也会利于积极推动供应商接受BSCI验…

2022 年第四届河南省 CCPC 大学生程序设计竞赛vp补题

Dashboard - 2022 CCPC Henan Provincial Collegiate Programming Contest - Codeforces Problem B. Hash 思路: 发现31的次幂取模的答案,所以如果一段太长肯定不如拆成2段。首先如果一段长度为7,那么无论他的开头是a,eh,n的谁,都有val>31^6887503…