NP问题
- P问题是一类可以通过确定性图灵机在多项式时间(Polynomial time)内解决的问题集合。
- NP问题是一类可以通过非确定性图灵机( Non-deterministic Turing
Machine)在多项式时间(Polynomial time)内解决的决策问题集合。
多项式时间(Polynomial time)在计算复杂度理论中,指的是一个问题的计算时间m(n)不大于问题大小n的多项式倍数,即m(n) = O(n)。任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。
P问题是NP问题的子集,也就是说任何可以被图灵机在多项式时间内解决的问题都可以被非确定性的图灵机解决,NP问题至今没有找到多项式时间算法解。
NP-complete&NP-hard问题
NP问题中最困难的问题称之为NP完全问题(NP-complete)。根据库克定理,任意一个NP完全问题如果能够在多项式时间内解决,则所有的NP问题都能在多项式时间内解决。
其定义如下,如果一个决策问题 L 是 NP-Complete的,那么L具备以下两个性质:
- L 是 NP问题;
- NP里的任何问题可以在多项式时间内转为 L。
而NP-Hard只需要具备NP-Complete的第二个性质,因此NP-Complete是NP-Hard的子集。
这四者的关系如下图(假设P!=NP)