图连通性分配

时间:2009-07-17 14:14:24

标签: algorithm graph

有没有人知道以下问题的算法:

  

给定一个无向连通图,找出方法的数量2   可以切割不同的边缘,使图形断开连接。

我认为问题的一部分(我知道算法)是计算可以切断1行的方式的数量,以便它变得断开连接。然后计算这些可以与其他行分组的方式得到值(M-K)*K + K*(K-1)/2M =否。边缘,K =否。 1个边缘切割。

我不知道该怎么做的部分是找到切割2行的其他方法的数量,例如在只有周期1 - 2 - 3 - 1的图中,任何边的组合都是有效的方式切割线以使图形断开。

我编写了程序中找到所有1个边缘切口的部分,然后通过删除这些边缘将图形拆分为双连通分量。我尝试为第二部分写了一些内容,为此制作了两个版本,但没有一个在每次测试中得到正确的答案。

有关此作业问题的其他信息:  *边数是< 100000  *顶点的数量是< 2000  *在具有上述限制的任何图表上,程序最多应运行2秒  * 2个顶点之间可以有多条边。

我可以在O(N + M)中完成第一部分。我想第二部分的复杂性应该是最大O(N * M)。

3 个答案:

答案 0 :(得分:7)

您正在寻找包含两条边的所有edge cuts。仅当图表最多为2-edge-connected时,才会存在此类边缘切割。

Karzanov和Timofeev撰写的论文“Efficient algorithm for finding all minimal edge cuts of a nonoriented graph”包含一种计算图形的所有最小边缘切割的算法。从简单的角度来看,在我看来,似乎该算法也可用于查找具有指定边数(例如,2条边)的切割。算法的复杂度为O(lambda ^ 2),其中lambda是所需切割中的边数(在您的情况下为2),n是顶点数。

答案 1 :(得分:0)

简单的解决方案:对于所有边缘对,从图形中删除它们并查看它是否仍然连接。它是O(n ^ 3)但应该有用。

答案 2 :(得分:0)

此问题是2边连接问题的扩展。为确保图表中的任何边(v, w)不是桥梁,我们会发现从adjacent to w and including wancestor of v的顶点的后边缘。这里,祖先意味着在v之前发现的顶点。 现在,如果只有一个这样的后边缘,那么移除that back-edge and (v, w)时会使图形断开连接。

相关问题