次小生成树
不是,这为什么是对的啊?
第二个方法见蓝书
我们来严格证明一下这个做法
首先证明严格次小生成树的边一定只会与最小生成树的边相差一条边(只有一条边不一样)
假设有两条边不一样,我们删除最小生成树中不在严格次小生成树中的两条边,图就会分裂成三个连通块,如下
红色虚线是被删除的边
然后严格次小生成树新加入的两条边一定会使这三个连通块再次联通
我们发现无论如何分配这两条边总可以找到一种方法使得我们找到一种更优的方法,如下
第一种情况
绿色是新加入的边
此时不可能两条红色的边都分别比各自对应的绿色的边大(不然的话我们最开始求的MST就不会选择两条红色边而只会选择两条绿色边了),于是就存在一条红色边的边权不超过其对应的绿色的边,于是就可以把这条绿色的边换成红色的边
第二种情况
证明同上面
综上,我们如果枚举每一条树边删除再选择加入一条边,那么肯定能得到严格次小MST
我们考虑转换对象,枚举非树边,易知这样并不会遗漏最优解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构