P与NP问题

这是困扰计算机系的同学们50年的经典问题:P是否等于NP?

P就是能在多项式时间内解决的问题,NP就是能够在多项式时间内对给定答案正确性进行验证的问题。抛开复杂的定义不谈,P=NP实际上问的是:
如果答案的对错可以很快的得到验证,它是否也可以很快的计算?
P是英文单词多项式 polynomial的首字母,什么样的问题被称为P类问题?
如果一个问题可以找到一个能在多项式的时间里解决的算法,那么这个问题就属于P类问题。
信息奥赛的题目都是P类问题,因为 一个用穷举换来的非多项式时间的超时程序不会涵盖任何有价值的算法。!对应的什么是NP问题呢?
对于一个问题的解,能够在多项式时间里验证解的正确性的问题。
一个例子:
某人拿到一个求最短路径的问题,问从起点到终点是否存在一条小于100单位长度的路径,她根据数据集画出了图,这时候运气爆棚,随手一连得到了一条路径,数一数刚好96单位长度,现在这个问题用证明的方法给出了答案。
这个问题中,要找到一个解很难,验证一个解很容易。只需要O(n)的时间复杂度,对于给定的一条路径,一定能在多项式时间里验证这条路径,这就是NP问题。

是否存在不是NP问题的问题?当然。只要问题的解无法在多项式时间内得到验证,这个问题就不是NP问题。Hamilton回路的问题,因为验证一条路径是否经过每一个顶点,是非常容易的。如果把Hamilton问题换成这样:试问一个图是否不存在Hamilton回路。除非你尝试过所有的路径,否则你回答不了这个问题。
通常只有NP问题才可能是P类问题,我们不会指望一个连多项式时间验证一个解都不行的问题,会存在一个解决它是多项式级的算法。到了这里你会意识到,“NP问题”,实际上是在探讨NP问题与P类问题的关系。

所有P类问题都是NP问题,也就是说能多项式的解决一个问题,对一个问题的解也能多项式的进行验证。关键是人们很想知道对于所有的NP问题是否都是P类问题,
P-NP问题.jpg

人们普遍认为P≠NP,他们相信,至少存在一个NP问题的“解析方程”算法时间复杂度是非多项式级。他们不是盲目的笃信,是因为在研究NP问题的过程中找到了一类非常特殊的NP问题,也即所谓的NP-完全问题(NPC问题)。

问与答:
Does NP stand for Not-Polynomial?(NP代表非多项式?)
Non-deterministic Polynomial(非确定多项式,如果是确定多项式就变成了P问题了)
知乎-量子通讯-参考地址
P与NP问题的参考博文

你可能感兴趣的:(P与NP问题)