证明碰撞集问题为NP完全问题。

来源:互联网 发布:虚拟男朋友聊天软件 编辑:程序博客网 时间:2024/05/02 14:18

            碰撞集问题中,给定一组集合{S1, S2, ..., Sn} 和预算b, 我们希望求出一个所有Si 相交且规模不超过b的集合H,当然,前提是这样的集合确实存在。证明该问题为NP完全问题。

         同样的,我们使用归约的方法来证明,而我使用顶点覆盖问题来归约。顶点覆盖问题为:给定一个无向图,求一个大小不超过b 的点集,使得图中每一条边都至少有一个顶点属于该点集,当然,前提是这样的集合确实存在。顶点覆盖问题已经用SAT-> 3SAT -> 独立集问题 -> 顶点覆盖问题  这样的归约过程被证明为NP完全问题了,接下来就是如何从顶点覆盖问题归约到碰撞集问题。

         对于顶点覆盖问题中给定的无向图中的每一条边,我们取边的两个顶点作点集S。如果有n条边,我们就能得到一个点集的集合T  = {S1,  S2, ..., Sn} ;如果我们有m个顶点,就有一个点集V = {v1, v2, ... , vm} 。则原问题就变成了求一个大小不超过b的点集H,使得T中每一个集合Si 都至少有一个元素在H 中的问题。这就是一个碰撞集的问题。归约的过程显然是多项式时间复杂度的。

         若碰撞集问题不是NP完全问题,则顶点覆盖问题也不是。但事实是顶点覆盖问题是一个NP完全问题,所以碰撞集问题也是。

         这就证明了碰撞集问题为NP完全问题。

0 0
原创粉丝点击