NPC(NP完全问题)证明

简介

NPC

Non-deterministic Polynomial complete problem,NP完全问题。

P、NP、NP,NP-hard

P 问题:一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题,比如解决这个问题的复杂度为O(1),O(log(n)),O(n^a)的问题
NP 问题:还未被证明是否存在多项式算法能够解决的问题
NPC(NP完全问题):如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NPC问题。
NP-hard问题:问题未必可以在多项式的时间内验证一个解的正确性(即不一定是NP问题),因此即使NP完全问题有多项式时间内的解,NP困难问题依然可能没有多项式时间内的解。因此NP困难问题“至少与NPC问题一样难”。

P、NP、NP,NP-hard 关系

问题举例

2009年机械工业出版社《算法概论》(《algorithms》)课后习题8.9

    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 ≠ ∅ for all i.
    Show that HITTING SET is NP-complete.

下面是译文

    在碰撞集(HITTING SET)问题中,给出了一组集合{S1,S2,...。。 ,Sn}和预算b,我们希望找到一个所有的Si相交且规模≤b的集合H,当然,前提是这样的H存在。换句话说,我们想要所有i满足 H∩Si≠∅。
    证明碰撞集问题(HITTING SET)为NP完全问题。

证明

(1)证明该问题是一个NP问题。

假设给出集合H的所有元素,显然可以在多项式时间内验证该集合H是否满足条件要求(和Si逐一比较是否有交集并检查规模是否超过b),所以该问题是个NP问题

(2)再证明该问题是一个NP-hard问题。

已知图的最小顶点覆盖问题(Vertex Cover)是NP-hard问题(在《算法概论》书中已有证明),只要能找到一种把最小顶点覆盖问题规约到碰撞集问题的方法,即可以证明碰撞集问题是NP-hard问题。

(3)规约

假设有一个图G(V,E),则把该图的每一条边对应一个集合Si,边上的两个点即该集合的元素,即每个集合有两个元素,如S1={v1,v2},这样一来,就能构造出 |E| 个集合。求图G的最小顶点覆盖问题,可以转化成求这 |E| 个集合的碰撞集,最小顶点覆盖的顶点就是H的元素,最小顶点覆盖数即为b。

(4)结论

所以碰撞集是一个NP问题且是一个NP-hard问题,即碰撞集为一个NP完全问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值