反向操作“联合并找到”

时间:2011-06-22 10:00:52

标签: algorithm find union

我们知道对于不相交的集合存在“联盟并找到”。 http://en.wikipedia.org/wiki/Union_find

但如何进行逆向操作?考虑具有与E边连接的N个节点的集合(实际上是图形)。 并且在每一步我们都想删除一些边缘并检查这个删除操作是否导致另一个不相交的集合。是否有可能像“联盟和发现”那样快速地完成它?

P.S这不是功课,我们有假期:)

3 个答案:

答案 0 :(得分:5)

这称为在线边缘删除问题或在线连接问题。算法的一些链接在section of the Wikipedia article on graph connectivity

答案 1 :(得分:1)

Union-find用于Kruskal算法,它重复添加最小权重边缘,不会产生循环。一个相反的想法 - 删除最大权重的边缘,只要它不会断开图形 - 在reverse-delete algorithm中使用,它似乎可以利用一些复杂的数据结构(见维基百科)。

答案 2 :(得分:0)

所以你的问题是如何有效地检测Bridge?这可以在线性时间内完成(也可参见链接)。