时间复杂度
1.复杂类P
可在多项式时间内解决问题。即求解所需时间:O(poly(|input|))
2.复杂类NP(非确定性多项式问题)
可在多项式时间内验证解。即验证所需时间:O(poly(|input|))
例:大合数的质因数分解
没有确定的算法来直接求出一个合数的两个质因数,但可在多项式时间内验证两个数是否为合数的质因数。
3.复杂类NPC(NP-Complete)
任何别的NP问题都可以多项式地约化到此问题。
NPC满足条件:
- 它为一个NP问题
- 所有别的NP问题都可以多项式地约化到它。
约化:若存在一个变换准则,使得对于人一个程序A的输入,按照这个变换准则变为程序B的输入,且使得两程序输出相同,则称A问题可以约化到B问题。
简单理解:就是A问题可以转化为B问题或者可用问题B可以解决问题A。
例子:逻辑电路问题为一个NPC类问题。
4.复杂类NPI
NP类问题中既不是P类也不是NPC类的问题
5.复杂类NP-Hard
所有NP问题都可在多项式时间内约化到此问题,此问题不一定为NP问题
五类问题关系(P、NP、NPC、NP-Hard、NPI)