P、NP、NPC、NP困难

目录

一,P、NP

1,P问题

2,NP问题

3,P=NP?

二,多项式规约

三,NP难问题

四,NPC问题

五,四种问题的关系


一,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、NPC、NP困难_第1张图片

如果P不等于NP,即P是NP的真子集,那么NPC也是NP的真子集,P和NPC没有交集。

如果P等于NP,那么NPC是NP的真子集,几乎所有的NP问题都是NPC问题。

无论哪种情况,NPC问题都是NP难问题的真子集。

你可能感兴趣的:(python,numpy,机器学习)