我正在实现顶点覆盖问题的内核化算法中的优化算法:理论和实验 (PDF)。
我有点卡在第 2.3 章:Kernelization by linear programming。
这种技术的想法(在 ILP 公式中)是为输入图的X_u \in \left\{ 0,1 \right\}每个顶点u(也表示为)分配一个权重,以满足以下约束:vG=\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?