NP完全理论

P,NP,NPC,NP-HARD

  • P问题:多项式时间内可解
  • NP问题:多项式时间内可构造并验证解
  • NPC问题:任何NP问题都可以在多项式时间被归约到此问题,并且可以在多项式时间内构造并验证此问题的解(同时属于NP与NP-hrad)
  • NP-hard问题:任何NP问题都可以在多项式时间被归约到此问题

优化与判定问题:

  • 最大团->是否存在大小为k的团
  • 背包问题->是否能够在不超过容量C的前提下,装入物品总价值大于等于k

归约

  • 将P归约到Q,记为 P ≤ p Q P\le_{p}Q PpQ:此时Q更难
  • 注:难度不是具体算法的时间复杂度
  • 在NPC问题的证明中,只有多项式时间的归约才有意义

NPC问题的证明

  • 证明Q是NPC的思路:

    • 证明Q是NP的,即多项式时间内构造一个解并完成验证
    • 证明Q是NP-Hard的,即证明任何NP问题都可以在多项式时间内归约到Q,通常的手段是将一个已知NPC问题P在多项式时间内归约到Q
    • 综上Q即是NP,又是NP-Hard,所以Q是NPC
  • P问题:存不存在一种划分X-Y,使得 ∑ X = ∑ Y \sum X=\sum Y X=Y

    Q问题:背包问题的判定问题

    已知P是NPC问题,证明Q是NPC问题:

    解:先证明Q问题是NP问题,构造一个问题的解为{s1,s2,…,sn},然后将其size与price求和,判断是否小于C与K即可,以上显然是一个O(n)的多项式时间,于是Q问题是NP问题。

    再证明Q问题是NP-hard问题:对于P问题的每个输入s[1…n]将其转换为Q的输入: s [ 1... n ] , k = c = ∑ S / 2 s[1...n],k=c=\sum S/2 s[1...n],k=c=S/2每个物品的价值等于si,当Q问题输出"false"时,代表无法装入恰好 s i z e = p r i c e = ∑ S / 2 size=price=\sum S/2 size=price=S/2的物品,即没有一种划分使得 ∑ x = ∑ Y = ∑ S / 2 \sum x= \sum Y = \sum S/2 x=Y=S/2
    输出"true"同理,那么P问题有解当且仅当Q问题有解成立,且此归约是多项式归约,于是我们有: P ≤ p Q P\le_{p}Q PpQ
    于是Q问题是NP-hard问题

    综上,Q问题是NPC问题

  • P问题:独立集问题 Q问题:覆盖集问题

    思路: G − 独 立 集 = 覆 盖 集 G-独立集=覆盖集 G=,对于每个P问题输入:G,k转化为Q问题输入:G,v-k

  • P问题:集合覆盖问题 Q问题:点支配集问题

    思路:对于P问题的每个输入s[1…n],k 转化为Q问题输入:对于每个集合 s i s_{i} si,取其最小元素为顶点,向其他元素连边,这样构造出一个图G,将G,K输入Q。

  • P问题: 最大团问题 Q问题:最大独立集问题

    思路:对于P问题的每个输入G,k 转化为Q问题输入:G的补集,v-k。

  • P问题:三染色问题 Q问题:4染色问题

    思路:对于P问题的每个输入G转化为Q问题输入: V + v , E + E v {V+{v},E+E_{v}} V+v,E+Ev其中v是新增点, E v E_{v} Ev是v向原来的G中的每个点都连了一条边。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值