Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 断开连通图_Algorithm_Graph_Graph Algorithm - Fatal编程技术网

Algorithm 断开连通图

Algorithm 断开连通图,algorithm,graph,graph-algorithm,Algorithm,Graph,Graph Algorithm,我需要从一个连通图(可能有圈,也可能有未加权的无向边)中找到需要删除的边的最小数目,这样我就得到了两个给定的节点——a和B,在独立的断开部分 输入:边、节点A、节点B。(从A到B至少存在一条路径) 输出:要删除的最小边数,以便A和B之间没有路径 我只能想到最糟糕的解决办法:- best = no. of edges in the given connected graph G For each possible subset S of Edges in the given connected g

我需要从一个连通图(可能有圈,也可能有未加权的无向边)中找到需要删除的边的最小数目,这样我就得到了两个给定的节点——a和B,在独立的断开部分

输入:边、节点A、节点B。(从A到B至少存在一条路径) 输出:要删除的最小边数,以便A和B之间没有路径

我只能想到最糟糕的解决办法:-

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个顶点的图。 我不知道我的解决方案是否足够好

谢谢

另外,我不确定我的解决方案的大O复杂性是2^n还是n*(2^n)或(n^2)*(2^n)。我认为是后者,但我想确定一下。

您可以使用a来计算图形中a和B之间的最小割

运行时:O(n*m),具有多余的缩放变量(因为您只有单位容量)


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

感谢您的快速回答。不过维基百科的文章让我有些不知所措。但我在读书。我想我真的需要学习更多的图论fundamentals@user3557625对于初学者,您可能想看看,这是一个简单但相当有效的最大流算法。你也可以使用一个库,大多数图形算法库应该能够解决最大流:)此外,如果你能对我的伪代码发表评论,我将不胜感激——也就是说,如果它能算作一个解决方案。如果是这样的话,在n~15的时间内,速度可能会慢得令人无法接受吗?当然,一旦我理解了最大流量算法,我就不需要它了@user3557625如果图形已连接,则伪代码更多地取决于边的数量而不是节点的数量。它类似于m*2^m,其中m是边的数目,所以是的,当m超过25左右时,它很快就会失控