P、NP、NPC(完全)、NPH(难)问题
P、NP、NPC(完全)、NPH(难)问题
P类问题
存在多项式时间复杂度解法的一类问题
像指数时间复杂度,阶乘这些就不属于多项式时间复杂度
NP问题(Non-deterministic Polynomial)
给定该问题的答案,可以在多项式时间内判定这个答案是否正确,这个问题就是NP
类问题,也就是目前还不知道这个问题是不是存在多项式时间复杂度的解法,但是可以在多项式时间内判定某个答案是否正确。
P类问题是NP问题的一个子集,因为存在多项式复杂度解法的问题一定可以在多项式时间复杂度内验证某个答案是否正确
NPC问题(Non-deterministic Polynomial complete problem)也叫NP完全问题

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
问题的时间复杂度更高从而更难以解决

参考链接:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!