如何通过添加最小边数来增加图中最小割的大小

时间:2012-10-06 06:49:21

标签: algorithm graph graph-theory graph-algorithm

问题:给定树T =(V,E)。添加最小边数,这样即使从新创建的图形中删除一条边,仍然存在从任何顶点到任何其他顶点的路径。

我相信这个问题可以减少到将当前最小切割为1的图形最小切割的大小增加到2但是这样做的有效算法是什么。

2 个答案:

答案 0 :(得分:2)

这是算法,为任何无向图解决这个问题。经过一些简化后,它可以应用于树(不需要步骤1)。

  1. 使用DFS或Bridge-finding algorithm by Robert Tarjan查找图表中的所有桥梁。
  2. 创建一个图形(事实上,它是一棵树),其中每个无桥子图被一个顶点替换。
  3. 将树中的每条链折叠成一条边。
  4. 找到两片叶子之间的路径(如果可能,长度至少为3)。
  5. 在原始图的子图中选择任意两个顶点,对应于此路径的两端,然后连接它们。
  6. 将此路径折叠为单个顶点。
  7. 虽然树中有多个顶点,但请从步骤3开始重复。
  8. 步骤4保证在步骤6之后我们不会获得新的不需要的叶子,这是最佳性的关键。

答案 1 :(得分:1)

Evgeny的解决方案相当不错,但这是一个更简单的解决方案,适用于树木,其正确性很容易看到。

L成为树T的(原始)叶子。让n成为树中的任何节点,以便通过删除n获得的每个子树最多具有|L|/2个原始叶。请注意,始终可以找到这样的节点n

T 1 T 2 ,..,T k 为通过删除n获得的子树。每个原始叶子(L)都出现在T i 之一中。构造来自原始叶子的最大不相交对,其约束条件是任何对中的两个原始叶子属于不同的子树。 (这在概念上与在完整的k-partite图中构建最大匹配相同,其中部分是子树中存在的原始叶。)

如果|L|是偶数,那么每个原始叶子将出现在某些对中,并且添加与这些对中的每一对相对应的边将使得结果图2连接。因此,我们需要在这种情况下添加|L|/2边。

如果|L|是奇数,则一个原始叶子将不会被配对,因此我们可以将此叶子连接到存在于不同子树中的某个任意原始叶子。在这种情况下,我们需要添加(|L|+1)/2边。