确定是不是存在包含线性时间给定边的 MST

Posted

技术标签:

【中文标题】确定是不是存在包含线性时间给定边的 MST【英文标题】:Decide Whether There Exists a MST That Contains a Given Edge in Linear Time确定是否存在包含线性时间给定边的 MST 【发布时间】:2013-02-16 21:50:10 【问题描述】:

令 G = (V, E) 是一个加权的、连通的和无向图,设 e 是 E 中的任何边。 显示一个线性时间算法,该算法决定是否存在包含边 e 的最小生成树。

我设法为问题 1 找到了一个奇怪的“解决方案”,它似乎有效,但我认为它不是线性的:

他们建议对每条边 (u,v) 使用 union find 并执行 Union(u,v),使得 W(u,v)

另一方面,如果 find(x) = find(y) 那么如果我们运行 Kruskal 算法到这一点,x 和 y 肯定会连接,所以我们不能将边 e 添加到任何 MST(这是已知的通过操纵具有相同权重的边的排序顺序 - Kruskal 算法可用于创建任何 MST)。

我不明白为什么这是线性的?由于工会,它不应该花费 O( |E| alpha(|V|) ) 吗?

也许还有另一种方法可以在线性时间内做到这一点?

提前致谢

【问题讨论】:

Union Find 是一项线性时间作业 - 它以反阿克曼函数 log*N 为界。见here。 【参考方案1】:

如果我们将 Kruskal 算法带到“this”点,标记到目前为止构建的连接组件,并将所有丢弃的边添加回来,每个连接的组件仍将包含与以前相同的所有顶点(丢弃的边只添加循环,而不是连接不同的组件)。所以我们只需要检查 e 是否连接了由严格比 e 轻的边组成的两个不同的连通分量。查找连接的组件是一项线性时间工作。

【讨论】:

以上是关于确定是不是存在包含线性时间给定边的 MST的主要内容,如果未能解决你的问题,请参考以下文章

给定一个特征向量,如何找出我的数据点是不是线性可分

如果删除了不断开图形的边,如何找到新图形的 MST

BZOJ3569 DZY Loves Chinese II

数学建模 非线性规划原理的应用与编程实现

线性代数线性方程组的求解

spss 多元非线性回归分析