P类、NP类、NPC类、NPH类的定义与基本关系

要想了解这写问题需要先了解下面这个定义
判定问题: 判断是否有一种能够解决某一类问题的能行算法的研究课题。
P类问题(P:polynominal,多项式):所有可以在多项式时间内求解的判定问题构成P类问题,也就是可以用确定性算法在多项式步骤内解决的问题。
多项式就是最高次幂为n^k。

非确定性算法: 非确定性算法将问题分解成猜测和验证两个阶段。算法的猜测阶段是非确定性的,算法的验证阶段是确定性的,它验证猜测阶段给出解的正确性。
NP类问题(NP:Nondeterministic polynominal,非确定性多项式):所有的非确定性多项式时间可解的判定问题构成NP类问题,也就是可以用非确定性算法在多项式步骤内解决的问题
可满足性问题、哈密顿回路问题、旅行商问题等都属于NP类问题。
P类问题是NP问题的子集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。
注意这里说的是验证。NP类问题,实际上就是不知道这个问题是不是存在多项式时间内的算法,所以叫non-deterministic非确定性,但是我们可以在多项式时间内验证并得出这个问题的一个正确解。

NPC问题:NP中的某些问题的复杂性与整个类的复杂性相关联.这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的.这些问题被称为NP-完全问题(NPC问题)。
NPC问题是NP问题的子集。

NP-hard(NP难问题或NPH):指所有NP问题都能在多项式时间复杂度内归约到的问题

你可能感兴趣的:(算法)