P问题、NP问题、NP完全问题和NP难问题.pdfVIP

P问题、NP问题、NP完全问题和NP难问题.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
P问题、NP问题、NP完全问题和NP难问题 在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。(知道这两概念的可以⾃动跳过这部分) 1、多项式:axn-bxn-1+c 恩就是长这个样⼦的,叫x最⾼次为n的多项式 咳咳,别嫌我啰嗦。。有些⼈说不定还真忘了啥是多项式了。。例如第⼀次看到的鄙⼈→_→ 2、时间复杂度 我们知道在计算机算法求解问题当中,经常⽤时间复杂度和空间复杂度来表⽰⼀个算法的运⾏效率。空间复杂度表⽰⼀个算法在计算过程当 中要占⽤的内存空间⼤⼩,这⾥暂不讨论。时间复杂度则表⽰这个算法运⾏得到想要的解所需的计算⼯作量,他探讨的是当输⼊值接近⽆穷 时,算法所需⼯作量的变化快慢程度。 举个例⼦:冒泡排序。 在计算机当中,排序问题是最基础的,将输⼊按照⼤⼩或其他规则排好序,有利于后期运⽤数据进⾏其他运算。冒泡排序就是其中的⼀种排 序算法。假设⼿上现在有n个⽆序的数,利⽤冒泡排序对其进⾏排序, ①⾸先⽐较第1个数和第2个数,如果后者前者,就对调他们的位置,否则不变 ②接着⽐较第2个数和第3个数,如果后者前者,就对调他们的位置,否则不变 ③⼀直向下⽐较直到第n-1和第n个数⽐较完,第⼀轮结束。(这时候最⼤的数移动到了第n个数的位置) ④重复前三步,但是只⽐较到第n-1个数(将第⼆⼤的数移动到第n-1个数位置) ⑤持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。 举个实例:5,4,3,2,1,对其进⾏排序,先是⽐较5跟4变成4,5,3,2,1,第⼀轮结束后变成43215,可以计算,当对其排序完正好要经过 4+3+2+1=10次⽐较,当然这是最复杂的情况,即完全反序。可以知道对于n个数,⾄多要经过1+2+...+n-1即(n^2-n)/2次⽐较才能排好 序。这个式⼦⾥n的最⾼次阶是2,可知道当n→∞时,⼀次性对其⽐较次数影响很⼩,所以我们把这个算法的时间复杂度⽐作:o(n^2)。取 其最⾼次,可以看出,这是⼀个时间复杂度为多项式的表⽰⽅式。 时间复杂度排序o(1)o(n)o(lgn)o(n^2)o(n^a)o(e^n)(a2,n表⽰输⼊的数据个数,o(1)为常数级别) 好了,介绍完上⾯的概念就可以开始讲关于什么叫P类问题了。以上个例⼦冒泡排序为例,我们知道了,在排序这个⼤问题⾥,是可以找到 ⼀种时间复杂度为多项式o(n^2)的算法(如冒泡排序法)来求解排序问题的,所以我们说排序问题是⼀个有多项式时间算法的问题。 所以我们称, P类问题:存在多项式时间算法的问题。(P:polynominal,多项式) 然后扯个题外话,为什么我们要研究这个?因为计算机处理的输⼊常常不是那么⼏⼗个⼏千个那么⼀点点,想象⼀下,当计算机处理的数据 达到100万个的时候,时间复杂度为o(n^2)和o(e^n)的算法,所需的运⾏次数简直是天壤之别,o(e^n)指数级的可能运⾏好⼏天都没法完 成任务,所以我们才要研究⼀个问题是否存在多项式时间算法。⽽我们也只在乎⼀个问题是否存在多项式算法,因为⼀个时间复杂度⽐多项 式算法还要复杂的算法研究起来是没有任何实际意义的。 好了,接下来我们介绍NP,先给定义, NP类问题:能在多项式时间内验证得出⼀个正确解的问题。(NP:Nondeterministic polynominal,⾮确定性多项式) P类问题是NP问题的⼦集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。 注意定义,这⾥是验证。NP类问题,我⽤个⼈的俗话理解就是,不知道这个问题是不是存在多项式时间内的算法,所以叫non- deterministic⾮确定性,但是我们可以在多项式时间内验证并得出这个问题的⼀个正确解。举个例⼦, 著名的NP类问题:旅⾏家推销问题(TSP)。即有⼀个推销员,要到n个城市推销商品,他要找出⼀个包含所有n个城市的环路,这个环路路 径⼩于a。我们知道这个问题如果单纯的⽤枚举法来列举的话会有(n-1)! 种,已经不是多项式时间的算法了,(注:阶乘算法⽐多项式的复 杂)。那怎么办呢?我们可以⽤猜的,假设我⼈品好,猜⼏次就猜中了⼀条⼩于长度a的路径,我画画画画,好的,我得到了⼀条路径⼩于a 的环路,问题解决了,皆⼤欢喜。可是,我不可能每次都猜的那么准,也许我要猜完所有种呢?所以我们说,这是⼀个NP类问题。也就 是,我们能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在⼀个多项式时间的算法,每次都能解决他(注 意,这⾥是不知道,不是不存在)。 所以这就引出了这类讨论的⼀个千年问题:是否 NP类问题=P类问题? 即,是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法

文档评论(0)

千帆起航 + 关注
实名认证
文档贡献者

走过路过,不要错过!

1亿VIP精品文档

相关文档