约化(Reducibility):A问题能约化到B问题,是指可用B的解法来解决A。
类型 | 全称 | 含义 |
P类 | Polynominal (多项式) | 能找到可在多项式时间内解决它的算法 |
NP类 | Nondeterministic Polynominal(非确定性多项式) | 能在多项式时间内猜出一个解 |
NPC类 | Nondeterministic Polynominal Complete(NP完全问题/NP规约问题) | 任何NP问题都能约化到它;且它是一个NP问题 |
NP-hard类 | Nondeterministic Polynominal-hard(NP难问题) | 任何NP问题都能约化到它;且它不是个NP问题 |
打个比方:
回想一下我们高中时做数学试卷的时候
一道解方程组的题,我们明确地知道它该怎么解,并且能求出它的一个通解,这是P类问题;
一道解方程组的题,我们可能求不出通解,但通过观察发现把x=0代入式中能让等式成立,那我们就知道了x=0是它的一个解,这是NP类问题;
其他的所有问题都归到解这个方程组,一旦解出这个方程组所有题目都能做出来了,无论我们求不求得出通解,反正猜出来了x=1是它的一个解,这是NPC类问题;
其他的所有问题都归到解这个方程组,一旦解出这个方程组所有题目都能做出来了,但我们不光求不出通解,连任何一个让等式能成立的解都猜不出来,这是NP-hard类问题。
打的比方不完全准确,权当辅助理解。
需要注意NP类问题指能(在多项式时间内)猜出一个解,但并不意味着它(多项式时间内)就求不出通解只能靠猜的。事实上P类问题一定是NP类问题。
证明一个问题是NPC类问题的方法:先证明它是NP问题,再证明一个已知的NPC类问题能约化到它。