未指向图表中的MST

时间:2017-12-02 17:00:19

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

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

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

我的建议是:

1)添加e'到T.我们得到一个新的图形称为T'包括一个周期 2)在T'上运行DFS;并标记您访问的每个顶点。另外还有    堆栈中的每个顶点和每个边缘权重 3)当我们访问已经访问过的顶点时,我们停止运行 4)并开始从堆栈中退出,直到我们到达我们停在的顶点 5)在撤销时我们保存了我们从中撤出的最大边缘权重    叠加。
6)如果最大边缘重量大于w(e')我们将它们替换掉 7)否则我们保持相同的T.

我希望它清楚 如果有人能帮我,或者给我其他的话,我将非常感激 解决方案和建议。

1 个答案:

答案 0 :(得分:1)

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

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

另一个解决方案是在图中找到bridges,然后找到最大的非桥边并删除它。但是,由于这是一个特殊的图形,因此您提到的解决方案会更容易(非桥边缘是循环中的边缘)。