如何找到面向图的最大非循环子图的2近似解?

时间:2009-12-22 05:48:36

标签: algorithm graph

如何在没有定向图循环的情况下找到确定最大子图的问题的2近似解?如果子图包含具有相同属性的其他图形中的最大边数,则子图为“最大”。

2-approximate意味着我们可以构建比最佳图形小2倍的图形。这是一个相当大的约束减少,应该导致相当愚蠢的算法 - 哇! - 结果只比精确解决方案差两倍。

[这是我最近通过的考试的一个问题。不再做作业了。]

2 个答案:

答案 0 :(得分:8)

将节点集划分为两个非空集A和B.考虑从A到B的边集和从B到A的边集。抛出较小集的边并保持边的距离较大的一组(任意断裂)。单独递归A和B.

结果图是非循环的,因为每次循环都会在循环节点在A和B之间分割时被破坏。我们抛出的总边集不会大于我们保留的边集总数,所以我们'在最多的一半边缘抛出了。

[注意:我认为你的意思是'最大',你的意思是'最大'。 “最大”图表通常表示没有符合条件的正确超集的图表。最大非循环子图很容易构造而没有近似因子,只有在没有添加循环时才将所有边添加到一个新图中。]

答案 1 :(得分:3)

Vijay Vazirani关于近似算法的书将此作为第一个练习问题,他给出了一个非常明显的提示,我将在这里解释。

  1. 任意编号从1到n的节点;
  2. 将边缘分成两组,向前和向后(不再有交叉边缘);
  3. 选择前进集和后退集之间的较大集合。
  4. 正确性和近似比证明都是微不足道的。

    编辑:实际上@Keith Randall的解决方案只是其中的一个变体,其中他将集合A中的节点从1编号为| A | B中的节点来自| A | + 1到| A | + | B |,类似于递归情况。