总是看到“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-ha