算法概论8.9

来源:互联网 发布:java多线程 编辑:程序博客网 时间:2024/05/17 07:40

题目:在碰撞集(Hitting Set)问题中,给定一组集合{S1,S2,…,Sn}和预算b,我们希望求一个所有的Si相交且规模不超过b的集合H,当然,前提是这样的集合确实存在。换句话说,我们希望对所有的i满足H∩Si≠ϕ。
证明该问题是NP-完全的。

题目求解:
先证明碰撞集问题是一个NP问题
在求解该问题的时候,它需要验证集合H的大小是不是超过b,以及验证对所有的i满足H∩Si≠ϕ,所以它的时间复杂度是 O(n|H||S|), 也既碰撞集问题是一个NP问题。
然后再把顶点覆盖问题归约到碰撞集问题上
对于顶点覆盖问题,它属于一个NP问题,接下来就是需要我们把顶点覆盖的问题归约到碰撞集上,那么碰撞集就是一个NP完全问题。
在某个图G(V,E)中,顶点覆盖问题就是看能否找到不超过k个点的情况覆盖G的所有边的问题。这样我们可以构造一个G到碰撞集问题的映射。设在碰撞集中某个Si,可以用G中的某条边e=(u,v)来表示,再假设其预算b对应于顶点覆盖问题中的K。在顶点覆盖问题中,图G的任意一条边至少有一个点在覆盖集中,也即H∩Si≠ϕ,这也就说明这两个问题是一一对应的,覆盖集中最多的k个点和规模不超过b的集合H对应。至此也就完成了从顶点覆盖问题到碰撞集问题的规约,也即碰撞集是一个NP完全问题。

0 0
原创粉丝点击