NP完全问题证明:hitting set problem

hitting set problem:

In the HITTING SET problem, we are given a family of sets {S1, S2, ..., Sn} and a budget b, and we wish to find a set H of size <= b which intersects every Si, if such an H exists. In other words, we want H ∩ Si != 0 for all i。

给定一些集合{S1, S2, ..., Sn},和一个预算b,我们希望找到一个不超过b个元素的集合H,其与每个Si的交集都不为空。


首先证明问题是NP的:

若给定一个H,我们判断他是否符合要求,只需要判断其中元素个数是否小于b,以及集合中每个Si与其交集是否为空即可。判断可以在多项式时间内完成。


接下来证明问题是NP难的:

已知Vertex Cover问题是NP难的,问题内容为:给定一个N个点,M条边的无向图G(点的编号从1至N),问是否存在一个不超过K个点的集合S,使得G中的每条边都至少有一个点在集合S中。

我们尝试将Vertex Cover问题规约到Hitting Set问题。若我们要求图G的顶点覆盖,我们建立一个Hitting Set实例,令{S1, S2, ..., Sn}是G的边的集合,每条边包含两个顶点。所有Si集合的交集就是与边相连的顶点的集合。若我们能找到一个不超过k个元素的集合H,其与每个Si的交集都不为空,那么这个H就是所求的顶点覆盖S。

由于NP难的Vertex Cover问题能够规约到Hitting Set问题,那么Hitting Set问题也是NP难的。


综上,Hitting Set问题是NP的且是NP难的,故该问题是NP完全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值