5.3 The Pricing Method: Vertex Cover (定价法:顶点覆盖)

此处略去吹牛逼的部分。。。。。

顶点覆盖问题

一.不带权值

1.使用贪心算法

每次选择度数最大的点加入S集合,然后去掉所在的边,重复直到图中没有边为止。

这个算法可以,但是不太好。

2.极小XXX

记不清了 唉

二.带权值

1.Weighted vertex cover. Given a graph G with vertex weights, find a vertex cover of minimum weight.

【带权值的顶点覆盖:对于给出的一个顶点带权值的图G,找到一个顶点覆盖,使它们的权值之和最小。】

 (这里我们主要解决的是:求图G=(V,E)的顶点覆盖S,要使顶点集合S中所有顶点的权值之和最小。)


 左右两个都是图G的顶点集合,显然,左图的权值之和比右图的较小。


2. Pricing Method 

 【定价法】

Pricing method. Each edge must be covered by some vertex. Edge e = (i, j) pays price pe >=0 to use vertex i and j.

【定价法:(因为顶点覆盖要求每条边至少有一个顶点在集合S里)每条边必须被一些顶点所覆盖,根据顶点i和j,给边e = (i, j) 标上价格Pe。】

Fairness. Edgesincident to vertex i should pay<=wi intotal

【公平性:与顶点i所连接的所有边的价格(权值)之和必须小于顶点的权值。】


(注意:上图还没给边标上权值)

引理:图G的所有边的价格(权值)之和 小于等于 顶点覆盖S中所有顶点的权值之和(两个简单的缩放)。】

Pricing method. Set prices and find vertex cover simultaneously.

【定价法:(边的)价格设置与找寻顶点覆盖同时进行。】


带权重的顶点覆盖:

输入:图G=(V, E),权重向量w

初始化:把所有的边的价格(权重)都置为0.

循环:

循环条件:当(边e的两个顶点)i和j都是非紧致的时候(紧致的意思就是该顶点所有边的价格之和等于该顶点的权值)

循环体:选择这个边,不断的增加它的价格(权重),直到有一个边达到紧致的状态。(注:如果是第一循环,则边e的价格等于顶点i和j中权值较小的一个)

把紧致的顶点加入到集合S中。

返回S。

(具体过程如下图所示:)


Pricing Method:  Analysis

【分析定价法】

Theorem. Pricing method is a 2-approximation.

【定理:定价法是一个二倍近似算法。】

Pf.

【证明】

(证明S是一个顶点集合)

·Algorithm terminates since at least one new node becomes tight after each iteration of while loop

【算法结束条件:在while循环的每次迭代结束之后,至少有一个顶点会是紧致的(除非图没有边)】

·Let S = set of all tight nodes upon termination of algorithm. 

S is a vertex cover:  

if some edge i-j is uncovered, then neither i nor j is tight. But then while loop would not terminate.

【当算法终止的时候,集合S就是顶点覆盖。】

【因为,while循环的结束条件就是每一条边的两个顶点,至少有一个顶点会是紧致的,所以每一条边至少会有一个顶点在S中,否则循环就不会停止。】

【所以S是一个顶点集合】

(证明S是最优解S*的一个二倍近似解)

(第一个箭头)

【因为所有节点是紧致的,所以它的边价格(权值)之和肯定等于顶点的权值】

(第三个箭头)

【因为所有边肯定会被加两次】

(第四个箭头)

【引理】

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值