我需要找到需要从连接图中移除的最小边数(可能有周期并且具有未加权的无向边),这样我最终得到两个给定节点 - 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)。我认为是后者,但我想肯定。
答案 0 :(得分:3)
您可以使用maximum flow algorithm来计算图表中A和B之间的最小切割。
运行时:O(n * m),具有超出比例push-relabel变量(因为您只有单位容量)。
如果在固定子图中使用DFS或BFS实现可达性,则解决方案为O(2 ^ m *(n + m))。