P、NP、NPC、NP-Hard问题的区别

时间复杂度

衡量程序的好坏不是用特定的数据量来衡量,而是数据的规模变大到几百倍后,程序运行的时间是否相同。

举例:数据增大两倍,时间增大4倍,那么属于O(n^2)的复杂度。

分类

  • 多项式级 O(1),O(log(n)),O(n^a)
  • 非多项式级别 O(a^n)和O(n!)

P类问题

一个问题可以找到一个在多项式时间内解决的算法

NP类问题

指在多项式时间内验证一个解的问题/猜出一个解。

(类似于存在性问题,比如问A到B是否有一条长度为100的路)

关系

显然,所有的P问题都是NP问题,但P=NP是关注的焦点。

NPC问题

规约:问题A可规约为问题B,即指可以用B的解法来解A,或者说问题A可以变为问题B。

举例:一元一次方程可以规约为一元二次方程。原因在于只要加上系数为0的二次项即可。

意义:B的时间复杂度 > A的时间复杂度;具有传递性

不断提升时间复杂度,存在一类(许多个)NP问题,能够让所有的NP问题转化为它。即NP-C问题。

当想要表达一个问题不存在多项式的高效算法时,就说这个问题属于NPC问题。

NPC问题两个要求
  1. 是一个NP问题
  2. 所有的NP问题能规约到它

那么如果一个NPC问题找到多项式解法,所有的NP问题就能用这个算法解决了。因此正是由于NPC的存在,所以P≠NP。

(如果证明了P=NP,那么证明一个解和验证一个解一样容易)

NP-Hard问题

只满足NPC问题的第二条

放宽了条件,比NPC问题更难解决。

参考:

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值