algorithm - 如果向无向加权图 G 添加了一条新边,则查找 MST T 是否仍然是新图 G' 的 MST

标签 algorithm search time-complexity depth-first-search minimum-spanning-tree

这是一道复习题,我想感受一下我的答案是否正确。

这是原始问题的要点:

您有一个带权无向图的 MST T,然后在节点(u 和 v)之间的原始图中引入一条新边以创建一个新图 G'。给出一个线性时间算法判断T是否是G'的MST。

我的回答:

原图的MST T不包含任何环。从节点 u 到节点 v 应该只有一条路径。我们可以将新边添加到我们的 MST 中,这可以在 O(1) 时间内完成以生成我们的新树 T'。然后,我们可以对 T' 从 u 到 v 运行 DFS,它在 O(|V| + |E|) 时间内完成。添加新边后,我们应该在 u 和 v 之间最多获得 2 条路径。一条将使用新边,一条不会。我们可以在 O(1) 时间内比较这两条路径。如果两者中较短的使用新边,则我们知道原始 MST“T”不是新图 G' 的 MST。我们的整个算法将在线性时间内完成。

最佳答案

这是一个正确的算法,您已经证明,如果它找到了更轻的树,那么旧树就不是最小的。你还需要证明,如果它没有找到更轻的树,那么老树仍然是最轻的。

关于algorithm - 如果向无向加权图 G 添加了一条新边,则查找 MST T 是否仍然是新图 G' 的 MST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571243/

相关文章:

algorithm - 优先修改匹配

algorithm - 查找有向图上是否存在从 v 到 t 的非简单路径

algorithm - 用有限的线段和圆弧逼近一条曲线

c# - 查看一组实数的快速方法

c# - 使用 Linq 搜索任何单词

ruby-on-rails - Searchkick 结果的未定义方法分页

java - 给定 int top、bottom、left 和 right,如何横穿 2D 数组?

c# - 如果不指定容量,将 N 个元素插入 List<T> 的复杂度顺序是什么?

ruby - Ruby 中 UTF-8 编码字符串中随机索引字符访问的时间复杂度是多少?

algorithm - For循环复杂度分析