O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) 其中,称 O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n 2 ) < O ( n 3 ) . . . < O ( n k ) 为多项式算法复杂度 O ( 2 n ) < O ( n ! ) < O ( n n ) 为非多项式算法复杂度 O(1)<O(log\ n)<O(n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)\\ 其中,称O(1)<O(log\ n)<O(n)<O(n^2)<O(n^3)...<O(n^k)为多项式算法复杂度\\ O(2^n)<O(n!)<O(n^n)为非多项式算法复杂度 O(1)<O(log n)<O(n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)其中,称O(1)<O(log n)<O(n)<O(n2)<O(n3)...<O(nk)为多项式算法复杂度O(2n)<O(n!)<O(nn)为非多项式算法复杂度
P问题
能够在多项式算法复杂度解决的问题,就是一个P问题,
一个规模为n的问题,如果能在n的多项式时间内解决,就是p问题
NP问题
在多项式的时间内,能够验证一个解问题
遇到一个问题,猜想一个解,能在多项式时间复杂度内能验证这个解是否正确,那么这个问题就是一个np问题,所有p问题一定是一个np问题(既然是p问题,那么就能解决这个问题了,验证更不在话下)
NP-Hard和NP-Complete问题
若所有的NP问题都能多项式时间内归约到问题X(X的复杂度大于等于原NP问题),那么X就是一个NP-Hard问题,如果X也是NP的,称X是NP-Complete的,否则X就只能是NP-Hard的。
NP-Complete问题有Hamilton回路问题、旅行商问题等
著名问题,NP=P?
能够在多项式时间内验证一个NP问题,那么能否在多项式时间内解决它?
如果将所有的NP问题都多项式规约到某一个NP-Complete问题,如果P=NP,那么NP-Complete问题能在多项式时间内得到解决,那么所有的NP问题都可以在多项式时间内得到解决了。
通俗点讲:
P问题就是算符时间复杂度为多项式时间
NP问题是目前没有多项式时间解的问题但是如果我们随便猜想一个解,可以在多项式时间内验证这个解是否正确
NP-Hard问题是由NP问题规约而来的,NP问题归约到的NP-Hard问题如果也是一个NP问题,那么这个NP-hard就是一个NP-Complete问题。