简述P问题,NP问题,NPC问题以及NP Hard问题

发现我们经常谈到NP问题,NP完全问题,NP难问题,但是其实他们之间是有区别的。


1、P问题是指:一个问题可以找到一个能在多项式的时间里解决它的算法。也就是复杂度为O(1),O(log(n)),O(n^a)等的。

2、NP问题是指可以在多项式的时间里验证一个解的问题(注意,NP问题不是非P问题!!!)。所以比如最短路问题、TSP旅行商问题,一个解出来了(一条路径出来了),那么我验证这个解(计算这条路径的长度)可以在O(n)的复杂度里解决,所以是NP问题。

3、NPC(NP Complete,NP完全)问题满足:首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。证明一个问题是NPC问题也很简单。先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它(由约化的传递性)。第一个NPC问题是逻辑电路问题,并且可以证明所有NP问题都能约化到它(证明过程复杂)。TSP问题是NPC问题。

4、NP Hard问题满足NPC问题定义的第二条但不一定要满足第一条(即所有NP问题都可以约化到它,但它不一定是NP问题),所以NP Hard问题包含了NPC问题。

所以P问题一定是NP问题,NPC问题也一定是NP问题,NPC问题也一定是NP Hard问题,但NP Hard问题不一定是NP问题。(关系如下图)

简述P问题,NP问题,NPC问题以及NP Hard问题_第1张图片


参考资料:
[1]、http://www.matrix67.com/blog/archives/105

你可能感兴趣的:(NP)