天天看点

NP理论(P、NP、NPC和NP-hard)

P问题:可以在以多项式表达的时间内求出确切解的问题,也就是说它的计算复杂度是一个多项式。我们通常用的O(n),O(logn),O(n^2)等等类似的都是这类问题。

NP问题:英文是non-deterministic polynomial,是多项式时间可以验证的问题。最初是在非确定图灵机上,如果一个问题存在一个解,那么就先猜它,一定可以在多项式时间内猜到这个解。(关键是就是不判定这个问题到底有没有解)

    p?=NP 目前还没有被证实。也就是还不知道P和NP的关系,但是可以确定的是P属于NP。

NP-hard问题:是指从算法角度比NP还难的问题,指的是所有的NP问题可以通过某个多项式时间的函数规约到这类问题。就是说如果L’是NP的,且L'《pL,p是多项式表达式,那么L就是NP-hard问题。NP-hard问题不一定是NP问题,因为总有一些NP-hard问题无法在多项式时间判断一个解是否可行。

NP-complete问题:是NP问题中最难的问题。因为NP也包含P呀,所以NP问题中有的简单,在多项式时间内就可以确定,有的相对难,只能验证。所以要区分对待一下,就把那些最难的挑出来,就是NP-complete问题了。

P问题就是在多项式时间内可以解决的问题      
NP问题就是可以在多项式时间内对一个给定的解进行验证,并给出其正确性的问题      
NPC问题就是可以在多项式时间内对这个问题所有可能的解进行验证,并给出其正确性的问题      
NP理论(P、NP、NPC和NP-hard)