在线性复杂度判断边是否在最小生成树内

题目:带权联通图G,其上边权重皆不相同。给定一边e,请设计一线性复杂度算法来判断e是否出现在G的最小生成树MST里。(注意:计算MST树本身复杂度已超过线性复杂度,因此本题无法承受先计算MST树)
描述算法:
1.令u和v分别为边e的两个顶点,从u开始使用DFS或BFS算法遍历所有权重不超过e的边来看能否到达顶点v。
2.如果能够到达v,那么存在一些MST不包含边e。否则每个MST包含边e。

时间复杂度:
步骤1和2的时间复杂度都是o(E),算法确定是否存在一个循环包括边e,其中没有一个边权重大于e。换句话说,算法检测e是否是一个循环的权重最大的边。
算法的正确性从下面的MST的特性可以得到
== 所有MST边的特性:一个边出现在MST中当且仅当边不是一个循环中的权值最大的边==
定理证明:
充分性
假设e不是任何一个循环的权值最大的边。令u是边e的一个顶点。令H是所有从u开始权重<e的顶点的集合。我们能够确定e是唯一的权重最小的边。所以任何一个MST必定包括e
必要性
假设e出现在所有的MST中。令C是一个包括e的循环。令m是MST,m不包括边e包括两个不相交的树,成为m1和m2.通过边e连接m1和m2,循环C存在e‘连接m1和m2.如果我们在m中用e‘来代替e,那么我们得到一个生成树不包括e,成为m‘。m‘不是一个MST。因为m和m‘的唯一区别是e和e‘,所有边e的权重一定<e‘。所有e不是C中权重最大的边。

参考文献
https://math.stackexchange.com/questions/2577365/determine-if-an-edge-appears-in-all-minimum-spanning-trees

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值