搞了一天的这类问题,终于把他们之间的关系弄明白了。现在做一个总结。
首先,P类问题是这样一类问题:他们能够以确定的算法在多项式时间内求解。
其次,NP类问题是这样一类问题:他们的所有可能答案都可以以非确定的算法在多项式时间内验证是否为正确的解。
显然NP类问题包含P类问题,即一个问题如果是P类问题,那么他也一定是NP类问题。
再次,NPC类问题是这样一类问题:他首先是NP问题,然后所有的NP问题都能够在多项式时间内规约到他(即NPC问题)。换一个说法,就是只要证明某一个NPC问题能够被多项式时间算法求解,那么所有的NP问题都能够拥有多项式时间算法求解。
而如今的世界七大数学难题就是证明P=NP或者P≠NP。这个问题的证明相当有难度,不过NPC类问题出现后,就将这个问题的证明大大的简化了,因为只需要证明其中有一个NPC问题能够被多项式时间算法解决,那么,所有的NP问题都是P类问题了,即NP=P。不过即便是这样,这个问题依然至今没有人证明出来。
还有一类问题就是NP-hard问题,这类问题是这样一类问题:他有些可能答案并不能用非确定性的算法在多项式时间内验证是否正确。这些问题都能够被NPC问题规约到,换句话说只要证明了其中某一道NP-hard问题能够被多项式时间算法解决,那么NP=P,但是这无疑更难证明。
这些就是我所理解的P、NP、NPC、NP-hard问题,以后会更加的深入了解。
有一张图可以使得前三类问题之间的关系更加明确:

浙公网安备 33010602011771号