如何在一个节点消失时组织MST?

时间:2011-03-18 15:18:06

标签: algorithm tree minimum

我正在研究并坚持提问:

我有一个最小的生成树(prim算法),现在我的树中的一个节点被删除了,我想知道是否有一种方法可以重新组织我的树,以便最优性仍然保持?

我在这里寻找一些建议,我将非常感谢你的帮助。

谢谢!

3 个答案:

答案 0 :(得分:2)

这个问题已得到充分研究。 2001年完成的研究找到了一种维护图形数据结构的方法,以便您可以插入或删除边缘并在时间O(log 4 n)中更新最小生成树,这是我最好的知识是迄今为止任何人都能想到的最佳时间。描述这种算法的论文是密集和棘手的,但如果你有兴趣,你可以在这里找到它:

Poly-Logarithmic Deterministic Fully-Dynamic Algorithms for Connectivity, Minimum Spanning Tree, 2-Edge, and Biconnectivity

希望这有帮助!

答案 1 :(得分:1)

删除树中的节点时,它可能会将图形划分为多个断开连接的组件。在最坏的情况下,想象一个MST,其中所有边缘从一个中心节点到所有其他边缘 - 就像一颗星。在这种情况下,如果移除中心节点,则必须重做整个MST。所以,我想简短的答案是 - 它取决于删除的节点。解决方案是像提到的aix那样做 - 找到因删除节点而断开连接的所有组件并贪婪地连接它们。这可以从0(如果移除叶子节点)延伸到n-1(如果移除了星的中心)

答案 2 :(得分:-1)

如果删除的顶点是MST的叶子,则不需要执行任何操作:您仍然拥有生成树并且它仍然是最佳的。

如果它不是叶子,你现在有两棵子树。您需要做的就是通过两个子树之间存在的最短边缘重新连接它们。找到该边缘的最佳方法可能是使用您用于Prim算法的任何数据结构(或者,通过考虑所有顶点对,简单地在O(n ^ 2)中)。