P、NP、NPC、NPH问题介绍
-
几者的关系:
-
P类问题
-
在多项式时间内可以解决的问题
-
-
NP问题
-
针对一个答案在多项式时间内判断正确性的问题。因为验证一个答案的时间一定不大于解决问题的时间,所以P类问题是NP问题的子集
-
-
要搞明白NPC和NPH问题,要先明白规约的概念
-
规约
-
通俗地讲,问题A能够用问题B的方法解决,那么A可以规约成B(A是B的一种类型)。类似于求解一元一次方程和求解一元二次方程的关系,前者可以规约成后者。可以看出,后者比前者的难度更大、复杂度更高、使用范围更广。
-
-
NPC问题:
-
NPC问题满足两个条件:首先,是NP问题;其次,任意NP问题可以在多项式时间内规约为这个问题。
-
提出NPC问题是为了将所有的NP问题总结(规约)成一个NPC问题,只要解决这个NPC问题,就可以得到解决所有NP问题的通用做法,比如可以将NP问题看做求解一元一次方程,NPC问题看做求解一元二次方程,前者可以看做后者的一个特殊类型,而只要解决了后者,前者就可以解决(套一元二次解的公式)。
-
NPC问题是NP问题的标准形式,一般NP问题是NPC问题的特殊类型。因为规约的原因,NPC问题是NP问题中最难的,想要找到多项式时间内的算法十分困难。
-
如果找到多项式时间内的NPC问题的算法,那么就可以证明NP=P。
-
-
NPH问题
-
满足NPC问题的第二个条件(即任意NP问题可以在多项式时间内规约成该问题)。
-
NPC问题是NP问题和NPH问题的交集。NPH问题的难度不低于NPC问题。
-
参考资料