算法-计算问题.pptVIP

  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文档。上传文档
查看更多
算法-计算问题

第1章 计算问题 1.1计算问题及其算法 所谓计算问题,指的是问题中所涉及的事物或其属性可用数据加以表示——称为输入数据,问题的解也可以表示成数据——称为输出数据,并且可以在有限步基本计算(算术运算、逻辑运算以及数据的暂存等)后,将特定的输入数据转换成正确的输出数据的问题。解计算问题就是将输入数据转换成正确的输出数据的过程。 计算问题例——查找问题 输入:n个数构成的序列A=a1, a2, …, an,序列中指定的范围起点p和终点q,特定值x。 输出:若序列A的指定部分A[p..q]中存在元素,其值等于x,返回从左到右的第一个值为x的元素在序列A中的位置——下标。否则,返回-1。 算法及其设计 将问题描述成其输入与输出后,就要考虑按什么样的顺序安排有限步的基本计算,将输入数据转换成输出数据,这个过程称为算法设计。安排好的计算步骤称为解决计算问题的算法。一个算法对问题输入的任何特定数据都能得到正确的输出数据,则称算法是正确的。 线性查找示意图 在线性表A=3, 6, 0, 4, 1, 7, 9, 5, 2, 8中查找特定值x的元素。(a)查找值为x=1的元素,从A[1]起依次要做5次检测。(b)查找值为x=11的元素,从A[1]起依次检测完所有元素(作10次检测),没有找到值为11的元素。(c)查找值为x=3的元素,从A[1]起仅做一次检测就找到值为3的元素。 线性查找算法的为代码过程 LINEAR-SEARCH(A, x) 1 n?length[A] ?n表示序列A中元素个数 2 i?1 ?从A[1]开始 3 while i ? n ?逐一检测A[i]的值是否等于x 4 do if A[i]=x 5 then return i?若存在A[i]=x,则返回i 6 i?i+1 7 return -1 伪代码的使用约定 用分层缩进来指示块结构。 循环结构while、for和repeat以及条件结构if、then和else具有与计算机高级程序设计语言相仿的解释。 符号“?”表示本行其余部分是注释。 多重赋值形式i ← j← e对变量i和j同赋予表达式e的值。 变量(如i、j及key)都局部于给定的过程。 数组元素是通过数组名后跟括在方括号内的下标来访问。 组合数据通常组织在对象中,其中组合了若干个属性或域。用域名紧跟包括在方括号中的对象名来访问一个具体的域。例如,为说明数组A的元素个数的属性,我们写length[A]。 过程的参数是按值传递的:被调用的过程以拷贝的方式接受参数,若对参数赋值,则主调过程不能看到这一变化。 布尔运算符and和or都是短回路的。 算法分析 解决同一问题的不同的算法,消耗的时间和空间资源量可能有所不同。算法运行所需要的计算机资源的量称为算法的复杂性。一般来说,解决同一问题的算法,需要的资源量越少,我们认为越优秀。计算算法运行所需资源量的过程称为算法复杂性分析,简称为算法分析。 算法运行时间 为客观、科学地评估算法的时间复杂性,我们设置一台抽象的计算机。它只用一个处理机,却有无限量的随机存储器。它的有限个基本操作——算术运算、逻辑运算和数据的移动(比如对变量的赋值)均在有限固定时间内完成,我们进一步假定所有这些基本操作都消耗一个时间单位。称此抽象计算机为随机访问计算机,简记为RAM(Random Access Machine)。算法在RAM上运行时所需的时间,显然就是执行基本操作的次数。 把算法的运行时间记为T,输入的规模记为n。则根据以上说明知T是n的正值递增函数,我们以T(n)来表示算法的运行时间。 3种情形运行时间 对固定的输入规模,使得运算时间最长的输入所消耗的运行时间称为算法的最坏情形时间。 而对固定的输入规模,使运行时间最短的输入所消耗的时间,称为最好情形时间。 假定对固定的输入规模n,所有不同输入构成的集合为Dn,对问题的每一个输入I?Dn,若已知该输入发生的概率为P(I),对应的运行时间为T(I),运行时间的数学期望值 称为算法的平均情形时间。 算法运行时间的渐近表示 对算法的运行时间T(n),用几个定义在自然数集N上的正值函数?(n):幂函数nk(k为正整数),对数幂函数lgkn(k为正整数,底数为2)和指数函数an(a为大于1的常数)作为“标准”,研究极限: 若λ为一正常数,我们称?(n)是T(n)的渐近表达式,或称T(n)渐近等于?(n),记为T(n)=Θ(?(n)),这个记号称为算法运行时间的渐近Θ-记号,简称为Θ-记号。 O记号和?记号 考察定义域为自然数集N的正值函数?(n)和 T(n)构成的极限式 的值?,若 为常数1???0,则称函数T(n)渐近不超过函数?(n),记为

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档