P类问题、NP类问题、NPC类问题与NP-hard类问题

约化(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类问题能约化到它。

点赞