破圈法求最小生成树_【学科加油站】悉大COMP9007 最小生成树知识点总结!

本文详细总结了悉尼大学COMP9007课程中的最小生成树知识点,重点介绍了Prim算法和Kruskal算法的原理与应用,同时分享了更多相关学习资源。
摘要由CSDN通过智能技术生成

70a9ad923d35ad0fa7dc8316de8ad394.png

最小生成树(Minimum Spanning Tree,MST) 是COMP9007算法课中Graph章节下的一个重要知识点。 MST的定义是这种 树中包括了连通图里的所有顶点(Vertex),且树中所有边的权值之和最小。 在实际应用中,我们常用Prim算法和Kruskal算法来生成一个MST。 下面我们就来看看这两个算法的具体操作:

Prim算法

 算法输入 一个加权连通图G,其中顶点集为V、边集为E,即G(V,E); ➤  算法步骤 ①初始化用来存放MST的G1(V1,E1),其中V1 = {x},x为集合V中的任一节点(起始点); E1 = {},为空集; ②在集合E中选取权值最小的边,其中u为集合V1中的元素,而v在集合V中且不在V1集合当中(如果有多条具有相同权值的边,则可任意选取其中之一); ③将v加入集合V1中,将边加入集合E1中; ④重复操作②③直到V1=V;   ➤  算法输出 G1(V1,E1)用来记录生成的MST。 ➤  时间复杂度 ❶  使用邻接矩阵表示数据结构,不加任何优化,时间复杂度为O(n2),n为顶点个数 ❷  使用二叉堆来记录数据,邻接表来记录边,时间复杂度为O(mlog2n),n为顶点个数、m为边的个数 ➤  案例 7bc4d60ca24cd926eb8e12dac26260eb.png c9a453a13c15610e57a311ecba663ec5.png be38aec1894ed94a11b1c3d284a5be79.png

Kruskal算法

算法输入 一个加权连通图G,其中顶点集为V、边集为E,即G(V,E); ➤  算法步骤 ❶  初始化用来存放MST的G1(V1,E1),其中V1 = V,E1= {},为空集; ❷  将G中所有的边按权值从小到大排序 ❸  从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边到图G1中 ❹  重复操作③直到G1中的所有节点都在同一个连通分量中。   ➤ 算法输出 G1(V1,E1)用来记录生成的MST。 ➤ 时间复杂度 Kruskal算法要借助并查集来实现, 其时间复杂度为O(mlog2n)+ O(mlog2m)+O(n), n为顶点个数、m为边的个数。 只有当图为稠密图时,时间复杂度表示为 O(mlog2m); 一般情况下图都是稀疏图,即m   ➤ 案例 dc6f036a5b4b6ca54e917a12c8cff169.png 1c735b42af39a02a70dd0b7a9129f412.png 0bc6918569938a1813bf116a6b4f4228.png

更多学习资料分享

???

e5e9885754deb5f30233133d43a9b1e3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值