如何执行图顶点覆盖的整数线性规划公式的松弛?

时间:2014-07-20 15:32:01

标签: algorithm graph linear-programming vertex-cover

我正在实施Kernelization Algorithms for the Vertex Cover Problem: Theory and Experiments (PDF)的优化算法。

我有点陷入第2.3章:线性编程的内核化

这种技术(在ILP公式中)的想法是为输入图X_u \in \left\{ 0,1 \right\}的每个顶点u(也表示为v)分配权重G=\left\( V,E \right\)满足以下约束:

  • 最小化权重总和\Sigma_uX_u
  • 只要X_u + X_v \geq 1通过图表中的边缘连接,就会满足\left\{ u,v \right \}

因此,作为输出,我得到一组X_v为1的顶点,其余为X_v为0。 该文件称,放宽的基础是将X_u \in \left \{ 0,1 \right \}替换为X_u \geq 0。 (S. Khuller (PDF)指出在这种情况下X_u \in \left \{ 0,0.5,1 \right \})。这种放松会导致有3组顶点,权重为1,0.5和0。

我的问题是我不太确定如何进行重量分配。

从我能够理解的情况来看,为了最小化权重之和(最好是每个边缘),首先关注具有最高度数的顶点,并且当它们的权重已经大于零时,添加值到分析边缘的第二端的顶点。

这导致我(正确?)到基本公式中每个顶点实际X_v \in \left \{ 0,1 \right \}的情况。当我想放松整数约束时,它只会改为X_v \in \left \{ 0,0.5 \right \}

我的逻辑中有什么缺陷?

我需要如何处理松弛以获得具有权重1和0以及0.5?

的顶点

1 个答案:

答案 0 :(得分:1)

正如您所注意到的,约束X_v in {0, 1/2, 1}不适合作为(分数)线性程序。这里发生的是,如果您设置较弱的约束X_v >= 0,那么存在一些最优解,其中X_v in {0, 1/2, 1}适用于所有v,但通常不是每个最优解决方案有这个属性。您链接的论文的第6部分提出了一种算法,该算法可以找到顶点覆盖LP的最佳解决方案。