P问题,NP问题,NPC问题,NP-H问题比较

来源:互联网 发布:ubuntu 网络配置 编辑:程序博客网 时间:2024/05/16 16:10

阅读了一篇既长又清楚的博客:

http://www.360doc.com/content/13/0910/18/478627_313548536.shtml


以下个人总结以下,标题中各大时间复杂度问题的区别:

P问题:一定可以在多项式时间内得以解决的问题,多项式时间,有O(1),O(n),O(log(n)),O(n^2),非多项式时间包括O(2^n),O(n!)

NP问题:可以在多项式时间内验证算法存在的问题,但不一定真能找到多项式时间算法的问题。P不等于NP,因为存在NPC问题

比方说,我RP很好,在程序中需要枚举时,我可以一猜一个准。现在某人拿到了一个求最短路径的问题,问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图,但怎么也算不出来,于是来问我:你看怎么选条路走得最少?我说,我RP很好,肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线,说就这条吧。那人按我指的这条把权值加起来一看,嘿,神了,路径长度98,比100小。于是答案出来了,存在比100小的路径。别人会问他这题怎么做出来的,他就可以说,因为我找到了一个比100 小的解。在这个题中,找一个解很困难,但验证一个解很容易。验证一个解只需要O(n)的时间复杂度,也就是说我可以花O(n)的时间把我猜的路径的长度加出来。


NPC问题: 将许多NP问题,都约化(总结)为一类NP问题,该类问题叫为NPC问题,NPC问题很难在多项式时间内找到解,只能用非多项式时间进行搜索。如果找到多项式时间的解,所有能约化成该类NPC问题的所有NP问题,都可以在多项式时间内解决,即变为P问题。

NP-H问题:比NPC问题范围更大的一类问题,比NPC问题更难找到多项式时间算法

NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。


最后,附上一张图,挺生动的


0 0
原创粉丝点击