【问题标题】:How to correct MST after deleting an edge from the graph in O(|E|)?从 O(|E|) 中的图中删除一条边后如何更正 MST?
【发布时间】:2024-01-20 01:45:01
【问题描述】:

我正在研究算法,我看到一个练习说如下:

令 G=(V,E) 为加权无向图。令 T 为 G 的 MST。令 e 是 T 中的一条边,令 G'=(V,E') 是从 删除 e 后的 G(即 E'=E/{e} )。 G' 是一个连通图。描述 一种校正 T 的算法,这样我们将得到 G' 的 MST T' O(|E|)。

A 我知道,去掉边后,T 现在被分成两个连通分量 T1 和 T2,我们需要找到连接它们的最小距离路径,即一条边,即我们需要找到连接 T1 和 T2 的最小权重边。

问题是我不知道如何证明这个算法以及如何在 O(|E|) 中实现它。我找到了this solution,但它需要的时间超过 O(|E|)。

我将不胜感激。

【问题讨论】:

  • 您引用的解决方案似乎需要 O(|E|),不是吗?

标签: algorithm graph graph-theory minimum-spanning-tree


【解决方案1】:

注意 |E| >= |V|。

选择任何顶点,将其标记为component1,迭代每个连接的顶点(沿MST 边)并标记component1。那是O(|V|)

通过扫描直到未标记从其他组件中找到一个顶点。又是O(|V|)

迭代第二个组件中的每个顶点(沿着 MST 边),选择连接到component1 的非 MST 边。跟踪最小边缘答案。那是O(|E|)

复杂度 O(|E|)

【讨论】:

  • 喜欢它!如何证明这个算法的正确性?
  • 嗯,第一个组件被证明是一个组件,因为它是通过迭代发现的。证明了第二个分量,因为原始 MST 减去一条边正好是两个分量。最后,根据定义连接两者的最小边会创建 MST(它们总是这样生成的)
最近更新 更多