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*的一个二倍近似解)
(第一个箭头)
【因为所有节点是紧致的,所以它的边价格(权值)之和肯定等于顶点的权值】
(第三个箭头)
【因为所有边肯定会被加两次】
(第四个箭头)
【引理】
顶点覆盖问题
一.不带权值
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*的一个二倍近似解)
(第一个箭头)
【因为所有节点是紧致的,所以它的边价格(权值)之和肯定等于顶点的权值】
(第三个箭头)
【因为所有边肯定会被加两次】
(第四个箭头)
【引理】
相关文章推荐
- 集合覆盖 顶点覆盖: set cover和vertex cover
- 使用布局的Onclick属性运行出现“Could not find a method~~(View) in the activity class com.~~”
- Java 警告------Type safety: The method add(Object) belongs to the raw type Vector
- The method list(String, Object[]) is ambiguous for the type BaseHibernateDao<M,PK>错误解决方法
- The method setDefaultCloseOperation(int) is undefined for the type
- POJ 2125 Destroying The Graph 二分图 最小点权覆盖
- pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
- What can we do in the CacheMetaData Method of Activity
- The method setOnClickListener(View.OnClickListener) in the type View is not
- 本体开发方法——the Method of Ontology Development
- Duplicate modifier for the method isExist in type UploadMusicInfoController
- The method getTextContent() is undefined for the type Node
- RuntimeException: Type "nmethodBucket*", referenced in VMStructs::localHotSpotVMStructs in the remot
- eclipse报错:The method convert(String) of type DateConvertor must override a superclass method;
- poj 1325 Machine Schedule 最小顶点覆盖
- Error:The number of method references in a .dex file cannot exceed 64K.
- The King’s Problem 【scc+缩点+最小路径覆盖】
- 关于error:Cannot assign to 'self' outside of a method in the init family
- 关于error:Cannot assign to 'self' outside of a method in the init family
- The method getContextPath() from the type HttpServletRequest refers to the missing type