递归与分治策略.pptxVIP

  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页/共59页 学习要点:理解递归的概念。掌握设计有效算法的分治策略。通过下面的范例学习分治策略设计技巧。(1)二分搜索技术; (2)大整数乘法;(3)Strassen矩阵乘法;(4)棋盘覆盖;(5)合并排序和快速排序;(6)线性时间选择;(7)最接近点对问题;(8)循环赛日程表。2.1 递归的概念与思想第2页/共59页直接或间接地调用自身的算法称为递归算法。使算法的描述简单明了、易于理解、容易编程和验证。很多复杂问题使用递归技术,可能容易而有效地进行求解。计算机软件领域,是一种非常重要并且不可或缺的算法2.1 递归的概念与思想第3页/共59页在思想方法上,递归技术分为:基于归纳法的递归 把归纳法的思想应用于算法设计中基于分治法的递归 把问题划分成一个或多个子问题递归地进行求解2.1 递归的概念与思想第4页/共59页对规模为n的问题P(n),归纳法思想:(1) 基础步: 是问题P(1)的解(2)归纳步:对所有的k,1kn,若b是问题P(k)的 解,则p(b)是问题P(k+1)的解。其中, p(b)是对b的某种运算或处理。例如 a1是问题P(1)的解,若a2=p(a1),则a2是问题P(2)的解;以此类推,若an-1是问题P(n-1)的解,且an=p(an-1),则an是问题P(n)的解。2.1 递归的概念第5页/共59页用函数自身给出定义的函数称为递归函数。例1 阶乘函数 阶乘函数可递归地定义为:边界条件递归方程边界条件与递归方程是递归函数的二个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。2.1 递归的概念第6页/共59页n阶乘的递归计算如下:Int factorial(int n){ if(n==0) return 1; return n*factorial(n-1);}递归方程为:此类递归方程时间复杂度为(n)第7页/共59页2.1 递归的概念例2 Fibonacci(斐波那契)数列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为:边界条件递归方程第n个Fibonacci数可递归地计算如下:int fibonacci(int n) { if (n = 1) return 1; return fibonacci(n-1)+fibonacci(n-2); }第8页/共59页2.1 递归的概念例3 Ackerman函数当一个函数及它的一个变量是由函数自身定义时,称这个函数是双递归函数。Ackerman函数A(n,m)定义如下:第9页/共59页2.1 递归的概念例3 Ackerman函数前2例中的函数都可以找到相应的非递归方式定义:本例中的Ackerman函数却无法找到非递归的定义。第10页/共59页2.1 递归的概念例3 Ackerman函数A(n,m)的自变量m的每一个值都定义了一个单变量函数:m=0时,A(n,0)=n+2m=1时,A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2,和A(1,1)=2故A(n,1)=2*nm=2时,A(n,2)=A(A(n-1,2),1)=2A(n-1,2),和A(1,2)=A(A(0,2),1)=A(1,1)=2,故A(n,2)= 2n 。m=3时,类似的可以推出 ,其中 2的层数为nm=4时,A(n,4)的增长速度非常快,以至于没有适当的数学式子来表示这一函数。第11页/共59页2.1 递归的概念例3 Ackerman函数定义单变量的Ackerman函数A(n)为,A(n)=A(n,n)。定义其拟逆函数B(n)为:B(n)=min{k|A(k)≥n}。即B(n)是使n≤A(k)成立的最小的k值。A(0)=1,A(1)=2,A(2)=4,A(3)=16推知B(1)=0,B(2)=1,B(3)=B(4)=2和B(5)=…=B(16)=3。由此可以看出B(n)的增长速度非常慢。 B(n)在复杂度分析中常遇到。A(4)=222…2其中2的层数为65535,对于通常所见到的正整数n,有B(n)≤4。但在理论上α(n)没有上界,随着n的增加,它以难以想象的慢速度趋向正无穷大。第12页/共59页2.1 递归的概念例4 排列问题设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。集合X中元素的全排列记为perm(X)。(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列。R的全排列可归纳定义如下: 当n=1时,perm(R)=(r),其中r是集合R中唯一的元素;当n1时,perm(R)由(r1)perm(R1),(

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档