NP,NP-hard,P,NP完全问题

本文介绍了计算复杂度理论中的P、NP、NP-hard和NP完全问题的概念。P类问题指的是能在多项式时间内求解的判定问题,而NP类问题则包括非确定性多项式时间可解的判定问题。NP-hard问题比所有NP问题更难,而NP完全问题既是NP-hard又是NP问题,意味着解决一个NPC问题即可解决所有NP问题。文章引用了知乎作者的解释帮助理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总是看到“NP难”或者“NP=P”还有“多项式时间”,这些到底是什么鬼,??今天好好查了一下,按照我自己的理解总结在这里,说实话在这个问题上我感觉百度好像比维基讲得明白些,知乎解释得比百度更清楚……

下面的解释来源于知乎作者王宇,链接:
https://www.zhihu.com/question/27039635/answer/101730260
最简单的解释:
P:算起来很快的问题
NP:算起来不一定快,但对于任何答案我们都可以快速的验证这个答案是否正确
NP-hard:比所有的NP问题都难的问题
NP-complete:满足两点: 1. 是NP hard的问题 2. 是NP问题

接下来是比较严谨的定义:
问题:对于一个包含由0和1组成的字符串集合S,以某个01字符串x作为输入,要求某个图灵机判断x在不在S里面。这里的图灵机可以先想象成平时我们用的计算机,S也可以被看成我们要解决的问题。注意我们的问题非常简单,就是要判断某个字符串x是否在某个集合S里面。
下面是定义:
P:有一个图灵机在多项式时间内能够判断x是否在S里面
NP:有一个图灵机M,如果某个字符串x在S里面,那么存在一个验证字符串u(注意这个u是针对这个x的,而且长度必须是x长度的多项式关系),M以x和u作为输入,能够验证x真的是在S里面。
NP-hard:如果某个问题S是NP-hard,那么对于任意一个NP问题,我们都可以把这个NP问题在多项式时间之内转化为S,并且原问题的答案和转化后S的答案是相同的。也就是说只要我们解决了S,那么就解决了所有的NP问题。
NP-complete:一个问题既是NP-hard,又在NP里面;也就是说 1. 解决了这个问题我们就解决了所有NP问题 2. 这个问题本身也是个NP问题

下面是百度和谷歌的解释,补充了上面的答案

多项式时间:在计算复杂度理论中,指的是一个问题的计算时间m(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值