algorithm - 在图中找到最小生成树(MST)?
问题描述
给定一个边上有权G
重的无向图和 2 个different
最小生成树:T, T'
然后我想证明以下几点:
对于 T 中不在 T' 中的每条边
e
,在 T' 中都有一条不在 T 中的边e'
,因此如果我们e
用e'
in T 替换(我们称之为 T_new),那么它仍然是 的最小生成树G
。
我认为我离找到正确的算法太近了,但有点卡住了:
我已经证明
weight(e)
必须完全等于weight(e')
。由于 T 是一棵树,删除 e 将导致 2 个分离的组件,然后 T_new 要成为一棵树,它必须使用连接来自这些不同组件的两个顶点的边之一。
但是,我无法知道哪个边缘e'
会起作用。另外,我无法证明总是存在这样的优势(我只是发现e'
必须满足一些要求)。
一些注意事项:我知道 Kruskal 算法,并且熟悉一种算法,在该算法中我们可以用黄色绘制一些边缘并要求它生成具有最大黄色边缘的最小生成树(换句话说,从所有找到的最小生成树中返回具有最大数量的树黄色边缘)
解决方案
让T1
和T2
成为 的两个连通分量T \ {e}
。考虑连接inP
端点的路径。由于连接and ,所以连接 and ,因此在连接and中存在一条边。边缘不能比 轻,否则不会是最小值 ( )。边缘不能重于,否则不会是最小值 ( )。e
T'
e
T1
T2
P
e'
P
T1
T2
e'
e
T
T \ {e} U {e'}
e'
e
T'
T' \ {e'} U {e}
推荐阅读
- javascript - 爬楼梯并在 JavaScript 中一次找到所有可能的楼梯组合 1 和 2
- asp.net-mvc - 我应该从我的模型中删除所有 [DataType(DataType.Date)] 吗?
- python - 有没有一种有效的方法来优化这个网络抓取脚本?
- android - 为什么我在 Flutter AnimatedChecked 中得到了这一点?(自定义油漆)
- devexpress - DevExpress 是否有用于 WPF 的网络摄像头控制
- loopback4 - 我的 Loopback 4 模型有一个字符串类型的 id,但它在 /explorer 中报告为数字
- javascript - 资源渲染挂钩控件没有响应
- c - printf 并不总是正确打印
- excel - Excel:查找和替换,同时不抓住另一个单词的开头
- bash - 非注释行的 grep 文件的 Git 别名