简体   繁体   English

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

[英]How to perform a relaxation of an integer linear programming formulation of graph vertex cover?

I'm implementing the optimization algorithms from Kernelization Algorithms for the Vertex Cover Problem: Theory and Experiments (PDF) . 我正在实现针对顶点覆盖问题的核化算法:理论和实验(PDF)中的优化算法。

I'm a bit stuck at chapter 2.3: Kernelization by linear programming . 我对第2.3章“ 通过线性编程进行内核化”有些困惑

The idea of this technique (in ILP formulation) is to assign a weight X_u \\in \\left\\{ 0,1 \\right\\} to each vertex u (also denoted as v ) of the input graph G=\\left\\( V,E \\right\\) to satisfy the following constraints: 该技术的思想(在ILP公式中)是为输入图G=\\left\\( V,E \\right\\)每个顶点u (也表示为v )分配权重X_u \\in \\left\\{ 0,1 \\right\\} G=\\left\\( V,E \\right\\)满足以下约束:

  • Minimize the sum of weights \\Sigma_uX_u 最小化权重总和\\Sigma_uX_u
  • Satisfy X_u + X_v \\geq 1 whenever \\left\\{ u,v \\right \\} are connected by an edge in the graph. 只要\\left\\{ u,v \\right \\}通过图中的一条边连接,就满足X_u + X_v \\geq 1

So, as output I get a set of vertices having X_v of 1 and the rest, having X_v of 0. The paper says that the relaxation is based on replacing X_u \\in \\left \\{ 0,1 \\right \\} by X_u \\geq 0 . 因此,作为输出,我得到一组顶点, X_v为1,其余顶点的X_v为0。该论文说,松弛是基于将X_u \\in \\left \\{ 0,1 \\right \\}X_u \\geq 0替换为X_u \\geq 0 ( S. Khuller (PDF) points out that in this case X_u \\in \\left \\{ 0,0.5,1 \\right \\} ). S. Khuller(PDF)指出,在这种情况下, X_u \\in \\left \\{ 0,0.5,1 \\right \\} )。 That relaxation would lead to having 3 groups of vertices with weights of 1, 0.5 and 0. 该松弛将导致具有权重分别为1、0.5和0的3组顶点。

My problem is that I am not quite sure how to approach the weight assignment. 我的问题是我不太确定如何进行体重分配。

From what I was able to understand, to minimize the sum of weights it would be best to (for each edge) focus on the vertices with the highest degrees first, and when their weight is already greater than zero, add the value to vertex on the second end of analyzed edge. 根据我的理解,要最大程度地减少权重之和,最好(针对每个边缘)首先关注度数最高的顶点,然后在权重已大于零时,将值添加到分析边缘的第二端。

This leads me (correctly?) to the situation where actually X_v \\in \\left \\{ 0,1 \\right \\} for each vertex in the basic formulation. 这使我(正确吗?)得出这样的情况:对于基本公式中的每个顶点,实际上X_v \\in \\left \\{ 0,1 \\right \\} When I'm thinking of relaxing the integer constraint, that just changes to X_v \\in \\left \\{ 0,0.5 \\right \\} . 当我考虑放宽整数约束时,它会变成X_v \\in \\left \\{ 0,0.5 \\right \\}

What's the flaw in my logic? 我的逻辑有什么缺陷?

How would I need to approach the relaxation to have vertices with weight 1 and 0 as well as 0.5? 我将如何处理松弛以拥有权重1和0以及0.5的顶点?

As you've noticed, the constraint X_v in {0, 1/2, 1} is not amenable to formulation as a (fractional) linear program. 如您X_v in {0, 1/2, 1}的约束X_v in {0, 1/2, 1}不适合表述为(分数)线性程序。 What's going on here is that, if you set the weaker constraint X_v >= 0 , then there exists some optimal solution where X_v in {0, 1/2, 1} holds for all v , though in general not every optimal solution has this property. 这里发生的是,如果设置较弱的约束X_v >= 0 ,则存在一些最优解,其中X_v in {0, 1/2, 1}中的X_v in {0, 1/2, 1}对所有v都成立,尽管通常并不是每个最优解都具有这个最优解。属性。 Section 6 of the paper that you linked presents an algorithm that finds such an optimal solution for the vertex cover LP. 您链接的论文的第6节介绍了一种算法,该算法可为顶点覆盖LP找到最佳解决方案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM