P,NP.NP-hard,NP-complete

本文详细解释了P、NP、NP-hard及NP-complete问题的概念及其相互之间的关系,并介绍了如何证明一个问题属于NP-complete类别。

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

P、NP、NP-hard、NP-complete问题是一个比较难理解的问题,实际上他们的本质只是根据问题的复杂程度进行分类。

P问题

通过一个多项式公式,使用一个图灵机计算这个公式的答案就能解决的问题。比如说判断一个数是否是偶数,只需要对它取余数判断是否为0即可。
通常解决问题的时间跟公式的复杂程度有关,称为多项式时间。一般来说,这种问题我们称为简单的,可以通过计算公式答案直接解决的。但是这个问题一定是简单到可解决的吗?不一定,要是公式非常复杂,以现在已有的图灵机根本算不出来,这也是没啥意义的。比如galactic algorithm
但是实用性和理论研究上确实有不同,理论研究只是讲模型,算不出来我不管,如果这个问题能用公式总结,我就称为P问题,不管这个公式的复杂程度。

NP问题

那么很多问题是无法直接通过套公式直接计算出来的,那么就需要一直“猜”来获取正确结果值。只要是猜中了,那么立刻返回这个结果值就行。这个过程我们可以理解为某种算法,通过不停的if(相当于猜结果)来获取最后的结果。这类问题称为NP问题。

NP-hard问题

首先需要说明什么叫归约,这有点类似函数当中的映射。如果解决了A问题,那么就可以解决B问题,我们称为A归约为B,他们之间有一种映射关系。那么如果有一个问题L,通过解决一个NP问题T之后,再通过多项式时间把T归约到L,那么问题L称为NP-hard问题。

NP-complete问题

如果问题L是NP-hard问题,同时还是NP问题,那么问题L被称为NP-complete问题。
迄今为止,这类问题中没有一个找到有效算法。倾向于接受NP完全问题(NP-Complete或NPC)和NP难题(NP-Hard或NPH)不存在有效算法这一猜想,认为这类问题的大型实例不能用精确算法求解,必须寻求这类问题的有效的近似算法。

证明一个问题是NP-complete

  1. 证明这个问题是NP问题
  2. 使用一个已经被证明的NPC问题规约成当前问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值