您的位置:首页 > 其它

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

2014-04-16 21:35 316 查看
此处略去吹牛逼的部分。。。。。

顶点覆盖问题

一.不带权值

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*的一个二倍近似解)



(第一个箭头)

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

(第三个箭头)

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

(第四个箭头)

【引理】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐