0%

P问题,NP问题,NPC问题,NPH问题

P问题

可以在多项式时间内求解的问题。

“P” 代表 “polynomial time” 。

NP问题

可以在多项式时间内检查解是否合法的问题。

“NP” 代表 “nondeterministic polynomial time” 。

显然有$P\subseteq NP$

归约

对于两个问题A和B,如果能够在多项式时间内对A的输入进行转化,使得解决B的算法能够得到A问题的输出,那么就称A可以归约为B。一个例子是A为求解形式为$ax=b$的方程,而B为求解形式为$ax^2+bx+c=0$的方程。

NPC问题(NP完全问题,NP-Complete问题)

对于一个NP问题,如果所有的NP问题都可以归约为它,那么称之为NPC问题。

NPH问题(NP-Hard问题)

对于一个问题,如果所有的NP问题都可以归约为它,那么称之为NPH问题。

关于3-sat问题

3-sat问题

有若干个布尔型的变量(variable)。

定义文字(literal)为,一个variable(称为positive literal)或者它的取反(称为negative literal)。

定义子句(clause)为,若干个文字(可能是一个)的或。

定义3-sat问题为:给出一个布尔表达式,这个表达式由若干个子句的与构成,每个子句恰好为三个文字的或,问是否存在一种给变量赋值的方式,使得表达式的值为真。

3-sat问题相关的归约

(下面的例子来自维基百科)

表达式$l_1 \vee l_2\vee l_3\cdots\vee l_n$可以归约为3-sat的形式:

已经被证明的重要结论:任意一个NP问题都可以归约为一个3-sat问题。

所以,如果要证明一个问题是NPC问题,则只需要证明它是NP问题且可以由某一个已知为NPC的问题归约到它就可以了。

P=NP?

到目前为止还没有找到在多项式时间内求解NPC问题的算法,也无法将这个命题证明或者证伪。