P,NP,NPC以及NP-Hard问题说明

这里并不证明这些问题,也不涉及任何数学公式或者定理,单纯以大白话说一下这几类问题的区别与联系

1.P类问题:能够在多项式时间内解决的问题

2.NP类问题:能够在多项式时间内验证的问题,注意这里的验证。打个比方,旅行商问题求解最短路径,我们给出一组数据,可以很容易的计算出路径长度,但是并不能验证是否是最短的,所以这并不是NP类问题,而且NP-Hard问题。当然,如果问题只是要我们计算路径长度,而非最短路径,那么这就是NP问题。

3.NPC问题:存在这样一类NP问题,现如今并没有多项式时间的解法,如果能够证明他们在多项式时间内是能够解决的,那么其余的NP问题就能在多项式时间内解决,换句话说就是这些问题可以推导出其他任何的NP问题。NPC问题首先必须要是NP问题。

4.NP-Hard问题:NP-Hard问题与NPC问题有点像,现如今并没有多项式时间的解法,但是它并不要求是NP问题,注意是并不要求,而不是并非。所有的NPC问题都是NP-Hard问题,所以还有个说法就是NP-Hard问题是至少比NPC问题要难的问题。


如何用集合来表示的话,应该是如下关系(当然也可以用维恩图来表示,这里画图太麻烦了。。):

P⊆NP

NPC⊆NP

NPC⊆NP-Hard

NPNP-Hard = NPC

网上有些维恩图表示还是有问题的,从那些图上看,NPCP = Ø,但实际结果未知,因为尚不能证明NP不等于P,而NPC又是一类NP问题

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