P、NP、NPC(完全)、NPH(难)问题

P、NP、NPC(完全)、NPH(难)问题

P类问题

存在多项式时间复杂度解法的一类问题

像指数时间复杂度,阶乘这些就不属于多项式时间复杂度

NP问题(Non-deterministic Polynomial)

给定该问题的答案,可以在多项式时间内判定这个答案是否正确,这个问题就是NP类问题,也就是目前还不知道这个问题是不是存在多项式时间复杂度的解法,但是可以在多项式时间内判定某个答案是否正确。

P类问题是NP问题的一个子集,因为存在多项式复杂度解法的问题一定可以在多项式时间复杂度内验证某个答案是否正确

NPC问题(Non-deterministic Polynomial complete problem)也叫NP完全问题

1920px-Complexity_classes.svg

NPC问题定义:

存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要能在多项式时间内解决了这个问题,那么所有的NP问题都解决了,也就证明了NP=P
其定义要满足2个条件:

①它是一个NP问题;②所有NP问题都能在多项式时间内转换为该NPC问题

约化的含义:

约化的标准概念:如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B,即可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。 如:一元一次方程可以“归约”为一元二次方程

约化的意义:

问题A可约化为问题B”有一个重要的直观意义:B的时间复杂度高于或者等于A的时间复杂度。也就是说,问题A不比问题B难

约化的性质:
约化具有一项重要的性质:约化具有传递性。如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C

约化的要求:
我们所说的“可约化”指的是可“多项式时间地”约化(Polynomial-time Reducible),即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义

NPC问题的例子:

旅行商问题、0-1背包问题、逻辑电路问题、集合覆盖问题等等

NPH问题(NP-hard)

NPH问题(NP难问题,英文NP-hard问题),其满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,但不一定是NP问题)

NP-Hard问题同样难以找到多项式时间复杂度的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决

2880px-P_np_np-complete_np-hard.svg

参考链接:

npc问题

https://blog.csdn.net/lonnee/article/details/80361624

posted @   rain-1227  阅读(890)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示