NP,NPC,NP-hard

起因:最近在看算法教材,还是老教材,实在是太晦涩了,把自己看得东西,学的东西,用自己的语言记录一下,供以后查看。

P与NP问题

P问题:可以在多项式时间内用确定算法解决的问题。
NP问题:可以在多项式时间内用不确定算法解决的问题。这个不确定算法指的是,下一步执行啥是不确定的。对于大家日常接触的确定算法,就是执行到某一步后,下一步执行的内容就被确定了。但是对于不确定算法,执行到某一步A后,可能会执行B或者C等,下一步的状态是不确定的。我觉得目前不研究理论的话,没有必要深究,我看了书中举出的不确定算法的例子,就是选择并验证的算法。比如逻辑表达式的可满足性问题的不确定算法,就是选择出一组解,验证这一组解是否可以使得逻辑表达式的值为真。所以:
NP问题,暂时理解为,可以在多项式时间内验证的问题,但目前并不知道是否可以在多项式内解决。数学家还没研究出来。
这里要啰嗦几句,NP是Non-deterministic Polynomial的缩写,意思就是不确定的多项式问题。很多地方提到NP问题,说的是在多项式时间内得到验证的算法,这个说法也不是错的,但是我个人认为不应该如此简单的理解。从理论上来说,科学家提出不确定算法,是想要创造出更高效的计算方式,而不是简单地验证一个问题。在理论中,不确定机可以执行不确定算法,在多项式时间内解决NP问题。当然这只是理论,目前无法实现。(我这里的理解不一定对,因为这个理论的水挺深的,我也没学过)。但是肯定不是简单的验证问题,事实上,NP问题的不确定算法包含两个方面(1)确定一组解,这个过程,具有不确定性(2)验证部分,这个部分是确定的。而这个不确定算法的复杂度,是在确定部分。
这里还是举一个书中的可满足性问题的例子,合取范式CNF的可满足性问题被称为SAT问题。这个SAT问题很关键,因为这个第一个NP完全问题,后文会提到的。
在这里插入图片描述
可满足性问题的不确定算法:
在这里插入图片描述
可以看出来,这个不确定算法其实就是选一组解,确定这一组解是否使表达式的值为真。

NPC与NP-hard问题

先给出书上的定义

NP-hard:可满足性问题可以规约为问题L,那么问题L是NP-hard问题。
NPC:如果问题L既是NP-hard问题也是NP问题,那么L是NP完全问题,即NPC问题。
从上述定义可以看到,NPC是NP与NP-hard的交集。
定义中提到了一个词,“规约”。问题L1规约为问题L2,说的是,如果L2可以在多项式时间内得到解决,那么L1也可以在多项式时间内得到解决。可见L2的难度>=L1的难度,如果L2可以顺利解决,那么L1一定可以顺利解决。可以将问题L2看作问题L1的一个一般情况,比如L1是一元一次方程,L2是一元二次方程。那么问题L1规约为L2,即为,一元一次方程规约为一元二次方程。一元二次方程的难度大于一元一次方程,一元一次方程是一元二次方程二次项为0的特殊情况,如果可以顺里解决一元二次方程,那么一元一次方程可以用同样的算法得到解决,进一步说,如果一元二次方程可以在多项式时间内得到解决,那么一元一次方程一定也可以在多项式时间内得到解决。
再列举个计算机的例子,背包问题的判定问题可以规约化为背包问题的最优化的问题,显然最优化问题比判定问题要难的多,如果可以在多项式时间内解决背包最优化问题,那么背包判定问题一定可以在多项式时间内解决。但是如果背包判定问题可以在多项式时间内解决,背包最优化问题不一定可以在多项式时间内解决。

综上所述,NPC是NP问题中最难的问题,NP-hard是NP或者比NP更难的问题。

再来分析一下定义,说的是可满足性问题规约到NPC。事实上,所有的NP问题都可以规约到的一类NP问题是NPC问题。这里之所以用可满足性问题,即SAT问题,前面提到过,SAT是第一个被证明的NPC问题。我觉得这样定义还是比较好的,不然如果说所有的NP问题规约到的问题就是NPC问题,那么证明的时候难道要所有的NP问题都可以规约到这个问题吗?按照这个定义,只需要证明可满足性问题规约到的某个NP问题是NPC问题。
至于这个可满足性是NPC问题,是由COOK证明的。下面给出COOK定理的内容:可满足性问题是P问题,当且仅当P=NP。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值