浅谈Kruskal算法以及各种生成树的理解

本文详细介绍了Kruskal算法及其在最小生成树问题中的应用,包括最小瓶颈生成树、最小瓶颈路、次小生成树和最小有向生成树等概念。通过对算法原理的解析,展示了如何利用Kruskal算法简化问题复杂度,并探讨了各种特殊情况的处理方法,如瓶颈路的暴力法和LCA优化。此外,还讨论了严格次小生成树的求解策略。
摘要由CSDN通过智能技术生成

对Kruskal算法的一些理解&各种MST

首先我们来回顾一下Kruskal的基本思想和原理  第一次发文,好激动

原理

我们每次先把边按照权值大小进行排序,然后我们从小到大开始进行选择,每次判断边的两个端点所在的连通块是否相同,不同则将它选入MST并继续向下考虑

理解

通过上面的过程我们可以获得一些好的思路,比如边的选取只是与它在边的序列中的排名有关系,而与其他的因素无关。这样我们完全可以在大部分时候无视除最小生成树边以外的其他边,只留下n-1条最小生成树边,这样对于所有对边进行的操作(如删除或增边),如果不在这一段区间中则可以忽略,否则我们就只需要对这个区间进行修改与调整。这样大大地简化了我们的思维复杂度

各种各样的MST

这些东西应该都是老生常谈了,在刘汝佳蓝书上应该已经快被翻烂了,但本文还是将它们拿出来说一说

最小生成树

最普通的一种,就不再赘述了

最小瓶颈生成树

可以从字面上来理解,它就是指这一棵生成树上,所有树边权值的最大值最小的那一棵树(MST)。通过上面的“理解”我们可以很容易知道所有的最小生成树都一定是最小瓶颈生成树,反之并不一定

最小瓶颈路

这个东西指的是一条从uv的路径,这条路径它满足其经过的所有边中权值的最大值最小(其中u和v都是给定的)。它的求法仍与最小生成树有关。我们可以先求出原图的最小生成树,然后在这棵树上寻找uv的树上路径,那么这条路径即为所求。这样做为什么是对的呢?我们可以用上文所述的“理解”来进行证明(如采用反证法),这里不再赘述。由此我们也能看到Kruskal带给我们的理解是多么地重要

每对节点间最小瓶颈路

这其实就是对上面内容的一个小扩展。刘汝佳给出了一个时间复杂度为O( n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值