断开连接的图形

时间:2014-04-29 17:18:26

标签: algorithm graph graph-algorithm

我需要找到需要从连接图中移除的最小边数(可能有周期并且具有未加权的无向边),这样我最终得到两个给定节点 - A和B在不同的断开部分中。

输入:边缘,节点A,节点B.(从A到B至少存在1条路径) 输出:要移除的最小边数,以便在A和A之间不存在任何路径。乙

我只能想到最糟糕的解决方案: -

best = no. of edges in the given connected graph G
For each possible subset S of Edges in the given connected graph G
   Graph temp = G minus edges S
   if there exists a path between A and B in temp
       continue
   else
        best = Min(best, no. of edges in S)
return best

我正在寻找一种解决方案,可以在一秒或两秒内完成15个顶点的图形。 我想知道我的解决方案是否足够好。

谢谢!

P.S。我不确定我的解决方案的大O复杂度是2 ^ n还是n *(2 ^ n)或(n ^ 2)*(2 ^ n)。我认为是后者,但我想肯定。

1 个答案:

答案 0 :(得分:3)

您可以使用maximum flow algorithm来计算图表中A和B之间的最小切割。

运行时:O(n * m),具有超出比例push-relabel变量(因为您只有单位容量)。

如果在固定子图中使用DFS或BFS实现可达性,则解决方案为O(2 ^ m *(n + m))。