一文讲懂NP/P/NPH/NPC之间的关系

542 阅读3分钟

NP/P/NPH/NPC

NP/P/NPH/NPC都是描述复杂度的。

P/NP问题wiki

image.png

前置知识

多项式

多项式定义:是由称为未知数的变量和称为系数的常数通过有限次加减法、乘法以及自然数幂次的乘方运算得到的代数表达式。

比如x2+88y99x^2+88y^{99}

多项式时间

一般指的是小于等于能用多项式表达的时间

比如

O(x),O(1x),O(x2+88y99)O(\sqrt{x}),O(\frac{1}{x}),O(x^2+88y^{99})

第一个和第二个虽然不符合多项式的定义,但是一般看作多项式时间之内

归约

归约wiki

如果能将问题A转化成问题B,如果问题B可解那么问题A就可解了

举个例子

假设我现在知道数的平方,现在要求乘法

ab=(a+b)2a2b22a*b=\frac{(a+b)^2-a^2-b^2}{2}

这样乘法就可以归约成乘方和除2

归约不一定能将问题变简单,但是可以将一个问题变为解决另外一个问题

问题f归约成问题g

f(x)=g(h(x))f(x)=g(h(x))

NP

NP(Nondeterministic Polynomial - time) Nondeterministic不确定性 Polynomial多项式 time时间, 表示的是:不确定能在多项式时间求出此问题的解,因为P=NP没人证实也没人证伪。

一个问题如果能在多项式时间内验证解的正确性,那么这个问题是NP的。 举一个经典的例子

TSP问题的决定性问题版本

它需要给定若干城市,同时明确每两座城市之间的距离、旅行成本之类的衡量指标, 并且设定一个具体的数值X 找出一条Hamilton回路, 而且总的旅行距离或者成本等不超过事先给定的那个界限值X。

上面这个问题找出此条Hamilton回路的时间是高于多项式时间的,但是给出解来验证是多项式时间内的, 所以TSP问题的决定性问题版本是NP的

P

P是特殊的NP,P是Polynomial - time 表示在多项式时间内可以求出问题的解。

需要注意的是P不代表问题容易解决, 需要101000n10^{1000}n时间的问题是属于P的(它是线性时间的),但是完全无法处理的。

NP-hard

如果所有的NP问题都可以归约成问题Q,那么问题Q就是NP-hard问题。

如果能求解np-hard就可以求解所有的np问题

NP-hard问题对于求解时间和验证时间都没有限制,无论是否是多项式时间。

举个例子

经典TSP问题,求最优解

找出这个最优解不是多项式时间内的,验证一个解是最优解也不是多项式时间内的。 但是所有的NP问题都可以归约成这个问题,所以经典TSP问题是np-hard问题

NP-complete

NP-complete是特殊的NP-hard问题,NPC属于NP,意味着NPC问题是可以在多项式时间内验证的。