NP/P/NPH/NPC
NP/P/NPH/NPC都是描述复杂度的。
前置知识
多项式
多项式定义:是由称为未知数的变量和称为系数的常数通过有限次加减法、乘法以及自然数幂次的乘方运算得到的代数表达式。
比如
多项式时间
一般指的是小于等于能用多项式表达的时间
比如
第一个和第二个虽然不符合多项式的定义,但是一般看作多项式时间之内
归约
如果能将问题A转化成问题B,如果问题B可解那么问题A就可解了
举个例子
假设我现在知道数的平方,现在要求乘法
这样乘法就可以归约成乘方和除2
归约不一定能将问题变简单,但是可以将一个问题变为解决另外一个问题
问题f归约成问题g
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不代表问题容易解决, 需要时间的问题是属于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问题是可以在多项式时间内验证的。