NP问题——精选推荐.pdfVIP

  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文档。上传文档
查看更多
NP问题 希望通过这篇⽂章可以不仅让计算机相关专业的⼈可以看懂和区分什么是类问题什么是 类问题,更希望达到的效果是⾮专业⼈⼠⽐如学 P NP ⽂科的朋友也可以有⼀定程度的理解。 有⼀则程序员界的笑话,就是有⼀哥们去 ⾯试的时候被问到⼀个问题是:在什么情况下 ,然后他的回答是当 的时候。这 google P=NP ” N=1 ” 是我第⼀次听说P=NP问题,⼤概是在临近毕业为找⼯作⽽准备的时候。 这⼏天科技类新闻的头条都被阿尔法狗⼤战李世⽯刷爆了,虽然我也不是专家,但是也想从普通⼈的⾓度来写点东西来聊聊这个有意思的 AI 事情,在搜集资料的时候⼜⼀次看到了 问题,于是想开个⼩差,先说说这个 问题。 NP NP P类问题最简单的定义是这样的: P问题:⼀个问题可以在多项式(O(n^k))的时间复杂度内解决。 NP问题:⼀个问题的解可以在多项式的时间内被验证。 NP-hard问题:任意np问题都可以在多项式时间内归约为该问题,但该问题本⾝不⼀定是NP问题。归约的意思是为了解决问题A ,先将问题 A归约为另⼀个问题B,解决问题B同时也间接解决了问题A。 NPC问题:既是NP问题,也是NP-hard问题。 这样的定义虽然简单,但是对于第⼀次接触P、NP的⼈来说,就像前⼀阵问你什么是“引⼒波”⽽你回答:引⼒波是时空的涟漪。从答案中⼏ 乎没有得到任何有意义的理解。所以接来来的内容希望不仅计算机相关专业的⼈可以看懂,希望达到的效果是⽂科⽣们也可以有⼀定程度的 理解。 算法要素 现阶段虽然电脑已经⾮常的普及,有⼈⽤它来上⽹,有⽤它来的游戏,有⽤它来看⽚,但是很少⼈有还在乎电脑的本质是计算机,它在给⼈ 们的⽇常⽣活带来娱乐和⽅便的同时表现的其实是其庞⼤的计算能⼒。⽇常⽣活中我们使⽤的各种五花⼋门的软件,其实都是⼀组计算机程 序,⽽程序则可以看作是⼀系列算法,⽽我们看到的计算机的硬件的作⽤就是处理这些算法。这⾥的所说算法不只是简单的加减乘除,⽽是 包括下⾯这些要素: 1. 算术运算:加减乘除等运算 2. 逻辑运算:或、且、⾮等运算 3. 关系运算:⼤于、⼩于、等于、不等于等运算 4. 数据传输:输⼊、输出、赋值等运算    5.以及通过控制结构来控制处理这些运算或操作的顺序 说到这⾥有点担⼼有些朋友已经不是很明⽩了,举个例⼦吧: 我们如何从n个数⾥⾯挑出最⼤的数。这个简单吧,就只需要⼀个⼀个数的对⽐过去就⾏了。具体说也就是先⽐较n和n-1,记下⽐较⼤的那 个数,接着我们再⽐较记下的这个数和n-2,⼜记下⽐较⼤的数,这样⼀直⽐到最后⼀个数。这整个⽐较的过程我们就可以把其叫作算法, ⽽这个算法就包含了上述的这些要素。给我们的n个数就是算法的输⼊数据,我们要挑选出最⼤的那个数就是算法的输出数据,当中我们判 断⼤⼩的时候必然采⽤了⼀些基础的算术运算或关系运算。 希望说到这⾥⼤家能够基本理解什么是算法,因为接下来我要花⼀点时间说说什么是算法的时间复杂度。要计算或解决⼀个问题,该问题通 常有⼀个⼤⼩规模,⽤n表⽰。我们还是引⽤上⾯的例⼦,从n个数⾥⾯找出最⼤的那个数,这个n就是该问题的规模⼤⼩。怎么找呢?我们 要通过⽐较n-1次才能得到结果,这个n-1次就可以理解为所花的时间,也就是时间复杂度。再⽐如,将这n个数按从⼤⾄⼩排序,n是其规模 ⼤⼩,若是我们按照这样的⽅法:第⼀次从n个数⾥找最⼤,第⼆次从n-1个数⾥找最⼤,以此类推,需要的⽐较次数就是n(n-1)/2。我们所 ⽤的⽅法称之库为算法,那么n(n-1)/2就是该算法的时间复杂度。对于时间复杂度,当n⾜够⼤时,我们只注重最⾼次⽅的那⼀项,其他各项 可以忽略,另外,其常数系数也不重要,所以,n(n-1)/2我们只重视n的平⽅这⼀项了,记为O(n^2),这就是该算法对该问题的时间复杂度的 专业表⽰。 时间复杂度其实并不是表⽰⼀个程序解决问题具体需要花多少时间,⽽是当问题规模扩⼤后,程序需要的时间长度增长得有多快。也就是 说,对于⾼速处理数据的计算机来说,处理某⼀个特定数据的效率不能衡量⼀个程序的好坏,⽽应该看当这个数据的规模变⼤到数百倍后,

文档评论(0)

134****3224 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档