简述P问题,NP问题,NP完全问题以及NP Hard问题

参考1
参考2

写在前面

在了解P问题,NP问题,NPC问题以及NP Hard问题之前,我们需要明白多项式级的复杂度和非多项式级的复杂度。时间复杂度是当问题规模扩大后,程序需要的时间长度增长得有多快。有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n)。数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。

  • 多项式级的复杂度,它的规模n出现在底数的位置;
  • 非多项式级的复杂度,比如O(a^n)和O(n!)型复杂度,其复杂度计算机往往不能承受。

P问题

如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。

NP问题

在多项式时间内“可验证”的问题。也就是说,不能判定这个问题到底有没有解,而是猜出一个解来在多项式时间内证明这个解是否正确。即该问题的猜测过程是不确定的,而对其某一个解的验证则能够在多项式时间内完成。P类问题属于NP问题,但NP类问题不一定属于P类问题。所有的P类问题都是NP问题,因为能多项式地解决一个问题,也就能够在多项式的时间内验证问题的解。

NP完全问题

约化: 如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B。
一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A。比如一元一次方程可以约化为一元二次方程,方法为将一元二次方程的二次项系数设为0。约化具有传递性,如果问题A可以约化为问题B,问题B可以约化为问题C,则问题A可以约化为问题C。
NPC问题: 首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。

NP-Hard问题

它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广)。NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。

他们之间的关系如下图所示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值