【问题标题】:MST in unDirected graph无向图中的 MST
【发布时间】:2018-05-16 13:22:38
【问题描述】:

我有一个不规则图 G=(V,E) 和权重函数 w:E->R+。另外,我有 G 的 MST T。

我必须构建一个执行以下操作的算法:
如果我们向 E 添加一个权重为 w(e') 的新边 e'。建议使用一种算法更新 T,使其成为新图 G'=(V,EUe') 的 MST。
复杂度:O(V)。

我的建议是:

1) 将 e' 添加到 T。我们得到一个名为 T' 的新图,其中包含一个循环。
2) 在 T' 上运行 DFS 并标记您访问的每个顶点。另外保存
堆栈中的每个顶点和每个边的权重。
3) 当我们访问一个已经访问过的顶点时,我们停止运行。
4) 并开始从堆栈中退出,直到我们到达我们停止的顶点。
5)在撤回时,我们保存我们从撤回的最大边权重 堆栈。
6) 如果最大边权重大于 w(e'),我们将替换它们。
7) 否则我们保持相同的 T。

我希望它很清楚。
如果有人能告诉我它是否有效或给我其他的,我将不胜感激
解决方案和建议。

【问题讨论】:

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


    【解决方案1】:

    是的,您建议的解决方案是正确的,因为具有相同数量的边和节点(如 T)的图由一个简单的循环组成,其中树根植于该循环的某些(可能没有)节点。

    您需要从 T 中准确删除 1 条边,以使剩余的图仍然连接。显然最好的选择是删除最大的边。在保持图形连接的同时,您可以删除的唯一边是循环中的边(您要添加到堆栈中的边)。

    另一种解决方案是在图中找到bridges,然后找到最大的非桥边并将其删除。但是,由于这是一个特殊的图表,您提到的解决方案会容易得多(非桥边是循环中的边)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      相关资源
      最近更新 更多