目录
一,P、NP
1,P问题
如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。
2,NP问题
NP问题是指可以在多项式的时间里验证一个解的问题。
显然,P问题一定是NP问题。
3,P=NP?
是否存在一个NP问题,它不是P问题?
这个问题非常著名,至今没有定论。
著名的TSP问题,显然是一个NP问题,但它是不是P问题目前没有定论。
二,多项式规约
如果可以把问题A的解法表述成,先用多项式时间做输入转换,再调用问题B的算法多项式次,再用多项式时间做输出转换,那么我们说问题A可以多项式规约成问题B。
其中,输入、调用、输出的三个多项式时间,都是指关于问题A的规模的多项式时间复杂度。
显然,多项式规约具有传递性。
三,NP难问题
如果所有NP问题都可以多项式归约到某个问题,则称该问题为NP难问题,也叫NP困难问题。
NP难问题可能是NP问题,也可能不是NP问题。
四,NPC问题
如果一个NP问题是NP难问题,则称为NP完全问题,也叫NPC问题。
实例:布尔可满足性问题。
对于给定的真值方程式,是否存在一组变量赋值,使得结果为真?
这个已经被证明是NPC问题,只要证明了存在一个NPC问题,那么就有很多问题都很容易证明是NPC问题。
五,四种问题的关系
如果P不等于NP,即P是NP的真子集,那么NPC也是NP的真子集,P和NPC没有交集。
如果P等于NP,那么NPC是NP的真子集,几乎所有的NP问题都是NPC问题。
无论哪种情况,NPC问题都是NP难问题的真子集。