分层技术求解顶点覆盖问题

分层技术求解顶点覆盖问题

图上的顶点覆盖问题是一类特殊的集合覆盖问题,如果你把每一个顶点变换成其邻边的集合,那么顶点的集合就会被替换成一个邻边集合的集合,记为S。可以看到,我们把图中的边集记为全集U,那么从S中选择集合来覆盖U就是一个集合覆盖问题。本文我们介绍一种叫做分层的技术来求解顶点覆盖问题。

一个特殊顶点权重的例子

在一个图中,如果每个顶点的权重被定义为它的度,那么这个图会变得非常特殊(如下图)。
在这里插入图片描述
在这个图中,最小覆盖集(之一)如下:
在这里插入图片描述
我们想阐述一个事实:
在图G=(V,E)中,记最小覆盖集的权重和为OPT,那么即使我们选完图上的所有顶点作为覆盖集C(C=V),那么也有:
c o s t ( C ) ≤ 2 ⋅ O P T cost(C)\leq 2·OPT cost(C)2OPT
显然在上例中OPT=12,而cost(V)=24,是满足这个不等式的。

证明:

首先有:OPT>=|E| ,因为覆盖集是必须要覆盖到每一条边的,就算每一条边只和覆盖集中一个顶点相连,OPT也得等于|E|,何况可能会有一些边和覆盖集中的两个顶点相连呢。

其次有:cost(V)=2*|E|,其实cost(V)就是顶点度的和,由度和公式知该等式成立。

因此有:cost(V)=2*|E|<=2·OPT

一般化结论:

如果所有顶点的权重都是度的某一常数c倍(满足这个性质,我们就称该图顶点的权重叫做基于度的权重),也有cost(V)<=2·OPT。(其实就是不等式两边同时乘以了c,方法和上面雷同,就不证明了)。

一般权重的情况

一般权重下,我们可以借鉴上述性质构造一个算法,从图中一层一层地剥离出顶点基于度的权重的子图来。算法步骤如下:

  1. 去除图中的孤立点将他们添加到集合d_i(i表示循环轮数,因此这个集合表示i轮循环中出现的孤立点),如果图为空,结束循环
  2. 遍历剩余图中的所有顶点v,计算c=cost(v)/deg(v),找到最小的c_min,从图中剥离出基于c_min倍顶点权重的子图,对于c=c_min的顶点,将其添加到集合w_i(i表示循环的轮数,因此该集合表示i轮循环中平均代价最小的点)
  3. 循环上述步骤
  4. 输出顶点覆盖集为所有w_i的并集W。

用一幅图来概括大概就是这样:
在这里插入图片描述
一个具体实例如下:
一开始的图G0:
在这里插入图片描述
清除孤立点:
在这里插入图片描述
计算出c_min=1/4,从图中剥离出基于c_min倍度数权重的子图:

在这里插入图片描述
没有孤立点可以去除,继续计算出c_min=1/8,从图中剥离出基于c_min倍度数权重的子图:

在这里插入图片描述
现在只剩下孤立点,去除后程序运行完毕,下面是最终生成的覆盖集合(红色点,我们还标记出了每个点的分类):

在这里插入图片描述
下面我们来分析算法,讨论为什么W是一个覆盖集,以及为什么cost(W)<=2·OPT

首先为什么W是覆盖集?我们说明这样一个事实,所有的边只有两种情况:

  • 一个顶点在W中,一个顶点在D中
  • 两个顶点都在W中

这两个条件就表明了W是覆盖集,也就等价于不存在这样的情况:

  • 两个顶点都在D中

我们来证明这个命题。从上图也能看出来他是成立的,原因何在呢?很简单,如果两个顶点i,j相互连接,他们二者之一必有一个是被集合W选走的,否则它两不可能被D选走。因为W不选走他们之一,它两就不会落单,不会落单就不会被D选走。

所以,W是覆盖集就得证了,下面我们考虑为什么这个近似算法的cost<=2·OPT:

基于分层,这个问题就很容易得证了,我们可以把cost看成覆盖集W在每个分层图中的cost的累加:

在这里插入图片描述
OPT也能如此分解在每个分层图中,并且OPT对应的覆盖集在每个分层图中的分解也是分层图的覆盖集,这是很显然的。当然在分层图中OPT可能还会有位于D上的顶点,这更不妨碍在W第i层分解上的开销不大于2倍OPT在第i层分解上的开销。对每一层求和,即可得到cost(W)<=2·OPT

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分层单存形法(Lexicographic Goal Programming)可以用来求解完全分层多目标规划问题。该方法将多目标规划问题转化为一系列单目标规划问题,对每个单目标规划问题进行求解,直到得到一个满足所有目标函数约束的解。 具体地,分层单存形法的求解过程如下: 1. 将目标函数按重要性顺序排序,得到 $f_1(x) \geq f_2(x) \geq ... \geq f_m(x)$。 2. 对于每个目标函数 $f_k(x)$,定义一个偏差变量 $d_k$,并对其进行约束,得到单目标规划问题: $\max\limits_{x\in X} f_k(x)$ s.t. $f_j(x) - f_j^* \leq d_j$,对 $j = 1,2,...,k-1$,其中 $f_j^*$ 为目标函数 $f_j(x)$ 的目标值。 $d_j \geq 0$,对 $j = 1,2,...,k-1$。 上述模型的含义是,对于目标函数 $f_k(x)$,最大化其值;对于目标函数 $f_j(x)$,要求其偏差 $d_j$ 不超过目标值与已确定目标函数的最优值之差。 3. 解决单目标规划问题:对于每个单目标规划问题,可以采用现有的单目标规划方法(如线性规划、非线性规划等)进行求解,得到一个最优解 $x_k^*$。 4. 检验解的可行性:对于每个解 $x_k^*$,检验其是否满足所有目标函数约束条件。 5. 更新目标函数约束:如果某个解 $x_k^*$ 不满足某个目标函数约束条件,则将该目标函数的偏差 $d_j$ 增加一定的量,重新求解单目标规划问题;如果所有解都满足所有目标函数约束条件,则得到了一个最优解。 在本题中,按照重要性顺序排序的目标函数为 $f_1(x) = -(x_1 + x_2 - 1)^2$,$f_2(x) = -(2 - x_1 - x_2)^2$ 和 $f_3(x) = -x_1$。按照上述步骤,可以得到如下的分层单存形模型: Step 1: $f_1(x) \geq f_2(x) \geq f_3(x)$ Step 2: Maximize $f_1(x)$ subject to: $-(x_1 + x_2 - 1)^2 - f_1^* \leq d_1$ $d_1 \geq 0$ Maximize $f_2(x)$ subject to: $-(2 - x_1 - x_2)^2 - f_2^* \leq d_2$ $d_2 \geq 0$ Maximize $f_3(x)$ subject to: $-x_1 - f_3^* \leq d_3$ $d_3 \geq 0$ Step 3: Solve the following single objective problems in order: 1. Maximize $f_1(x)$ 2. Maximize $f_2(x)$ subject to $-(x_1 + x_2 - 1)^2 - f_1^* \leq d_1$ and $d_1 \geq 0$ 3. Maximize $f_3(x)$ subject to $-(x_1 + x_2 - 1)^2 - f_1^* \leq d_1$, $-(2 - x_1 - x_2)^2 - f_2^* \leq d_2$ and $d_1, d_2 \geq 0$ Step 4: Check the feasibility of the solutions obtained in Step 3. Step 5: If any of the obtained solutions violates any of the objective function constraints, increase the corresponding deviation variable and repeat Steps 3-4; otherwise, the obtained solution is optimal. 需要注意的是,分层单存形法得到的解并不一定是帕累托最优解,而是满足目标函数约束的最优解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值