P,NP,NP-hard,NPC问题

一、知识储备

1.什么是多项式时间?
简单来讲,就是问题求解规模n处于底数的求解时间,以问题求解的时间复杂度为例,如O(n2 ),O(n2+2n+1)……这样的时间复杂度求解的时间都可以称之为多项式时间。
多项式时间会随着问题求解的规模而加速增大(可以求导证明),即随着n增大,n每增加1所花的时间增长越来越多。但增长速度远不及指数时间增长快(指数时间是指问题求解规模处于指数时的求解时间,如O(αn)。

2.什么叫做约化?
假设问题A约化问题B,则可以解释为可以用解B的解法解决问题A。举一个比较容易理解的例子,对于一个一元一次方程A x+3,我们使用求解一元二次方程B x2+x+3的方法依旧可以用来求解A,只不过x2的系数写为0即可,同时显然,求解B的时间复杂度自然高于求解A的复杂度。

二、简单解释

P:能够在多项式的时间内求解的问题
NP:可以在多项式的时间内验证一个解的问题
NP-hard问题(又称NP-难问题):所有NP问题都可以多项式的约化到某个问题,则该问题就可以称之为NP-hard问题;
NPC(NP-complete)问题(又称NP完备问题):问题可用如下两个条件表示
(1)该问题是一个NP问题;
(2)所有的NP问题都可以多项式的约化到该问题。

三、补充

1.Class P
若将初始问题变为如下问题:对于一个包含由0和1组成的字符串集合S,以某个01字符串x作为输入,要求某个图灵机判断x在不在S里面。这里的图灵机可以先想象成平时我们用的计算机,S也可以被看成我们要解决的问题。注意我们的问题非常简单,就是要判断某个字符串x是否在某个集合S里面。则Class P:有一个图灵机在多项式时间内能够判断x是否在S里面
2.Class NP问题:
这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式(polynomial)时间内算出来,就叫做多项式非确定性问题(Non-Deterministic Polynomial)。

3.Class other problems not in P and NP

四、猜想 NP =P?

所有的多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题(比如每次给一个解,去在多项式的时间内去验证一下是否满足)。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们于是就猜想,是否这类问题存在一个确定性算法,可以在多项式时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。目前尚未得到相应证明。

无论是P问题也好,NP问题也好,问题的核心在于可判

参考出处:
[1]https://blog.csdn.net/swgsunhj/article/details/86603101
[2]https://blog.csdn.net/wuzhichenggo/article/details/78404526
[3]https://www.zhihu.com/question/27039635/answer/101730260
[4]https://blog.csdn.net/u014571489/article/details/82560517
[5]https://blog.csdn.net/Sunshine_ZCC/article/details/51384433

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值