P问题和NP问题。

本文介绍了P问题和NP问题的基本概念,并探讨了它们之间的关系。P问题是指可以在多项式时间内解决的问题,而NP问题则是在多项式时间内可以验证解的问题。文章还讨论了NP问题是否包含P问题以及NP是否等于P等问题。

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

最近在读图解算法,看到P问题和NP问题,分享下书中的知识,加上自己的见解,帮助大家更好的理解P、NP及其他们之间的关系。

 

首先,我们需要了解概念。

什么是P问题?

P是英文单词多项式(Polynomial)的第一个字母。如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。例如,常见的排序算法时间复杂度,快速排序(O(log(n))),冒泡排序(O(n^2)))等。

 

什么是NP问题?

会不会所有的问题都可以找到复杂度为多项式级的算法呢?很遗憾,答案是否定的。有些问题甚至根本不可能找到一个正确的算法来,这称之为“不可解问题”(Undecidable Decision Problem)。

举出一个不大可能会有多项式级算法的问题来:Hamilton回路。问题是这样的:给你一个图,问你能否找到一条经过每个顶点一次且恰好一次(不遗漏也不重复)最后又走回来的路(满足这个条件的路径叫做Hamilton回路)。

NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。请注意,他只能验证一个解的问题,还是举例Hamilton回路,也就是说,你告诉他一条线路,他告诉能不能满足这个条件,告诉你YES和NO。对于这种问题,你要算出所有可能的话,只能使用穷举法。但是这种O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。

所以NP问题是时间复杂度一般是O(a^n)和O(n!)型。

 

P问题和NP问题的关系?

就目前还说,只有一个结论,NP问题是包含P问题的。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解——既然正解都出来了,验证任意给定的解也只需要比较一下就可以了。很显然,所有的P类问题都是NP问题。

 

剩下的一些没有被解决的问题?

NP比P大吗?

NP看起来比P大,NP包含P。

 

有没可能NP=P?

不知道,尚未有人证实。

目前还没有人可以证明NP=P或者NP不等于P。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值