Set Cove与顶点覆盖以及哈密顿圈的连接与区别

Set Cove与顶点覆盖以及哈密顿圈的连接与区别

week3part3
1.Set Cover本身
输入:一组元素U,集合 S1 … Sm 都是函数子集U和一个整数k。
问题:是否存在≤ k的子集组集合等于U?

例子:
U={1,2,3,4,5,6,7},k=2
S1={3,7}S4={2,4}
S2={3,4,5,6}S5={5}
S3={1}S6={1,2,6,7}

S2 和 S6 一结合就是整个U,所以存在.(smallest number of there connections)

2.用顶点覆盖Vertex Cover 推导出Set Cover(主要用图形实现)

寻找解决方案:到目前为止,我们只考虑了每种情况下的决策问题输入输出是或否。
然而,在实践中,人们更感兴趣的是找到一个解决方案,而不仅仅是决定解决方案是否存在。
因此就需要顶点覆盖(Vertex Cover)

在这里插入图片描述

确定顶点覆盖(Vertex Cover)
输入:一个图G和一个整数k。
问题:确定G是否有一个最大为k的顶点覆盖。

查找顶点覆盖(Vertex Cover)
输入:一个图G和一个整数k。
问题:查找最大大小为k in G或输出的顶点覆盖
如果不存在这样的顶点覆盖,则不存在。
如果我们发现一个顶点是顶点覆盖的一部分,我们可以扔掉它,扔掉所有连接的边。
这个顶点和图的其他部分也应该是(k-1)大小的解。

如果决策者说没有大小为k的顶点覆盖,那么答案将被丢弃,并在此时停止
如果决策者说没有,开始做最初的解决方案,这将是一个空集。然后我们遍历图中的所有顶点。如果取其中一个顶点,我们假设这是顶点覆盖部分,那么其余的边也应该有顶点覆盖
在最后,你可能会得到一个少数独立的边以及一部分的顶点

在这里插入图片描述
哈密顿循环与上面的情况有些相像.(都是去除一部分再看剩下的)
确定哈密顿圈
输入:图G。
问题:确定G是否有哈密顿循环。

求哈密顿圈
输入:图G。
问题:在G中找到一个哈密顿循环,如果没有,则输出NO
循环存在。

最长路径
输入:一个图G和一个整数k。
问题:G的路径长度是否至少为k?
提示:使用哈密顿路径的约化。

boolean C(G, P)
	foreach consecuitive pair (u, v) of vertices in P
		if u and v are not adjacent
			return NO
	return YES

consecuitive pair 连续对

解决办法:
Observation: A path of length at least |V (G)| − 1 is a Hamiltonian path.
Reduction: Let G be an instance of Hamiltonian Path. Then
(G, |V (G)| − 1) is an equivalent instance of Longest Path.
Proof:
(⇒) Let P be a Hamiltonian path in G. Then P is a path of length at
least |V (G)| − 1 in G.
(⇐) Let P be a path of length |V (G)| − 1 in G. Then P is a
Hamiltonian path in G.
Clearly the reduction works in polynomial-time.

总结:决策与发现
一般来说,寻找解决方案并决定是否存在多项式时间等价物,即:
你可以决定NP中的一个问题是否有多项式时间如果你能在多项式时间。问题的决策版本更适合展示NP-hard!

考虑SAT问题ω(x1,x2,…)还有一个决定
程序如果Φ不令人满意,则报告未达到要求。否则选择x1=1并尝试Φ(1,x2,…)的可满足性。如果令人满意,继续x2。如果没有,则将x1设置为0并继续用x2表示Φ(0,x2,…)。
问题的决策版本更适合展示NP-hard!!

优化解决方式
确定顶点覆盖
输入:一个图G和一个整数k。
问题:确定G是否有一个最大为k的顶点覆盖。
与:
最小顶点覆盖
输入:图G。
问题:G的顶点覆盖的最小尺寸是多少?
显然,如果我们能解出最小顶点覆盖,我们就能
也可以求解顶点覆盖

最小顶点覆盖的逻辑解释:
有的图里面没有顶点或者没有边, 顶点覆盖将会给一个空的集合.
另一种不一样的解决方式是二进制搜索(binary search)
查看解决方案中可能存在的边界。
已知最小的数字是0,最大值是图中的顶点数量.对于依赖事实的特殊解决办法,如果有大小为K的解决办法,那么K+1也是可行的解决办法.
二进制搜索选择顶点数量除以2后得到的值是否有符合那个大小的顶点覆盖.如果有,那可能就是最小数值.如果这里有被可以除以2 的那么就意味着也有可以被除以20的.同样的原理是在第一次除后得到的值被再一次除以2然后搜查.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值