【问题标题】:Is there an O(|V|) algorithm for adding a new node to a minimum spanning tree, given the old minimum spanning tree from a graph?给定图中的旧最小生成树,是否有 O(|V|) 算法用于将新节点添加到最小生成树?
【发布时间】:2017-10-08 15:15:17
【问题描述】:

我知道使用 DFS 可以在 O(|V| + |E|) 内更新它,但是否可以在 O(|V|) 内更新?

编辑:如果这不可能,O(|V| + |E|) 算法究竟如何工作?

【问题讨论】:

    标签: algorithm graph tree


    【解决方案1】:

    更新图的最小生成树(MST)不限于将新顶点连接到现有 MST。还应该验证初始 MST 中使用的边仍然是连接所有顶点的最便宜的方法。在某些情况下,vk 可能是这样一个节点,它可以彻底检查图 G 的整个现有 MST。新的顶点和随之而来的边可能会形成一种更便宜的方式来连接图 G图的顶点,因此,初始 MST 中的一些(或所有)边可能会变得不是最便宜的

    可以很容易地构建一个这样的案例。考虑初始图 G=(V={1,2,3}, E={(1, 2), (2, 3), (1, 3)}),其中每条边的权重为 100。然后引入一个顶点 4,以及从 4 到其他顶点的边,每个顶点的权重为 1。G 的初始 MST 将具有 E 的任意两个元素,但在添加新节点后,MST 将完全由不同的边缘。

    也许一个聪明的数据结构可能会产生比 O(|E|) 更好的时间复杂度,但需要检查每个边的有效性(即它们是否仍然是连接所有顶点的最便宜的方法)初始 MST 以及新添加的边意味着时间复杂度取决于 |E| 的大小。一个有效的想法是,初始 MST 可以提供有用的信息,可以帮助扩展它以覆盖具有较低时间复杂度的新顶点。但是,MST 的定义在很大程度上依赖于图本身,更新图可能使所有初始 MST 失效,从而使其指示的有关图的信息变得无用。因此,虽然我没有在这里准确地提供数学证明,但我认为当一个新节点(和它的边)添加到图中时,没有 O(|V|) 算法来更新 MST。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多