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

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

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

原理

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

理解

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

各种各样的MST

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

最小生成树

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

最小瓶颈生成树

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

最小瓶颈路

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

每对节点间最小瓶颈路

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值