- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析什么是P问题、NP问题和NPC问题
什么是P问题、NP问题和NPC问题 时间复杂度 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。 也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。 不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度; 时间复杂度 数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值; 而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。 还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。 不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。 时间复杂度 同样地,O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。 因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。我们也说,O(n^100)的复杂度小于O(1.01^n)的复杂度。 时间复杂度 容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者: 一种是O(1),O(log(n)),O(n^a) 等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置; 另一种是O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。 当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。 不可解问题 自然地,人们会想到一个问题:会不会所有的问题都可以找到复杂度为多项式级的算法呢? 答案是否定的。有些问题甚至根本不可能找到一个正确的算法来,这称之为“不可解问题”(Undecidable Decision Problem)。 例如: Hamilton回路。 问题是这样的:给你一个图,问你能否找到一条经过每个顶点一次且恰好一次(不遗漏也不重复)最后又走回来的路(满足这个条件的路径叫做Hamilton回路)。 这个问题现在还没有找到多项式级的算法。事实上,这个问题就是我们后面要说的NPC问题。 P问题定义 如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。 P是英文单词多项式的第一个字母。 NP问题定义 在这里强调,NP问题不是非P类问题。 NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。 比方说,我RP很好,在程序中需要枚举时,我可以一猜一个准。 现在某人拿到了一个求最短路径的问题,问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图,但怎么也算不出来,于是来问我:你看怎么选条路走得最少? NP问题 我说,我RP(人品,运气)很好,肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线,说就这条吧。那人按我指的这条把权值加起来一看,嘿,神了,路径长度98,比100小。于是答案出来了,存在比100小的路径。 别人会问他这题怎么做出来的,他就可以说,因为我找到了一个比100 小的解。 在这个题中,找一个解很困难,但验证一个解很容易。验证一个解只需要O(n)的时间复杂度,也就是说我可以花O(n)的时间把我猜的路径的长度加出来。 那么,只要我RP好,猜得准,我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的,不满足题意的方案也不会来骗我去选它。这就是NP问题。 NP问题 当然有不是NP问题的问题,即你猜到了解但是没用,因为你不能在多项式的时间里去验证它。 一个经典的例子,它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。 很显然,前面所说的Hamilton回路是NP问题,因为验证一条路是否恰好经过了每一个顶点非常容易。 但我要把问题换成这样:试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试过所有的路,否则你不敢断定它“没有Hamilton回路”。 NP问题 之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。 我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。 很显然,所有的P类问题都是NP问题。也就是说,能多项式地解决一个问题,必然能多
您可能关注的文档
- 第四篇银行结算业务(陈艳芬).ppt
- 第四节公司中高层管理者应具备.ppt
- 第四节_通风系统的主要设备及管道.ppt
- 第四节腰痛1.ppt
- 第四组-农民工问题.ppt
- 第四讲 金融中介体系.pptx
- 第四讲 不确定与非单调推理1.ppt
- 第四讲 介词和数词.ppt
- 第四讲 历史选择题常见解法.doc
- 第四讲 国家机构.ppt
- 2024年8月小区物业办事工作总结7篇.docx
- 2024年社区消防安全宣传日活动总结7篇.docx
- 2025版高考化学全程一轮复习第40讲化学反应速率及影响因素课件.pptx
- 文员月度工作总结怎么写8篇.docx
- 2024年财务工作年关小我总结范文7篇.docx
- 交互性预先干预对社交平台用户虚假信息感知和行为的影响.docx
- 2019年施工员(市政工程)考试题库.pdf
- 基础写作(倡议书)课件-2025届高三上学期英语二轮复习专项.pptx
- 《综合与实践 一次方程组与CT技术》试卷及答案_初中数学七年级上册_沪科版_2024-2025学年.docx
- 2024年汽车城职业顾问个人总结6篇.docx
文档评论(0)