递归与分治策略教学课件.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 递归与分治策略学习要点:理解递归的概念。掌握设计有效算法的分治策略。通过下面的范例学习分治策略设计技巧。(1)二分搜索技术;(2)大整数乘法;(3)Strassen矩阵乘法;(4)棋盘覆盖;(5)合并排序和快速排序;(6)线性时间选择;(7)最接近点对问题;(8)循环赛日程表。???????????算法总体思想对这k个子问题分别求解。如果子问题的规模仍然不够将要求解的较大规 个 模 子 的 问 问 题 题 , 分 如 割 此 成 递个更小规模的子问到问题规模足够小,很容易求出其解为止。??小,则再划分为k k归的进行下去,直题。n=T(n)T(n/2)T(n/2)T(n/2)T(n/2)算法总体思想对这k 分将求出 个 的 子 小 问 规 题 模的 别 问 求 题 解 的 。 解 如 合 果 并 子 为 问 一 题 个 的 更 规 大 模 规 仍 模 然 的 不 问 够题的解,自底向上 个 逐 子 步 问 求 题 出 , 原 如 来 此 问 递 题 归 的 的 解 进 。 行下去,直到问题规模足够小,很容易求出其解为止。?小,则再划分为kn=T(n)n/2n/2n/2n/2T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4算法总体思想将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。?n=T(n)n/2n/2n/2n/2T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4算法总体思想将求出的小规模的问题的解合并为一个更大规模的问? 题的解,自底向上逐步求出原来问题的解。分治法的设计思想是,将一个难以直接解决的大问题, 成一分而治之。n/2n/2n/2n/2T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/4) T(n/4)T(n/4)T(n/4)T(n/42.1 递归的概念直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。???2.1 递归的概念例1阶乘函数 阶乘函数可递归地定义为: 边界条件 ? 1 n = 0 n!= ? 递归方程边界条件与递归方程是递归函数的二个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。 2.1 递归的概念例2 Fibonacci数列无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为: 边界条件递归方程 ? 1 n = 0 ? 1 ?F(n ?1)+ F(n ?2) n 1第n个Fibonacci数可递归地计算如下:int fibonacci(int n) { if (n = 1) return 1; return fibonacci(n-1)+fibonacci(n-2); }F(n) = ?n =1?2.1 递归的概念例3Ackerman函数 当一个函数及它的一个变量是由函数自身定义时,称这个函数 是双递归函数。 Ackerman函数A(n,m)定义如下: ? A(1,0) = 2 ? ? ? ? ?A(n,m) = A(A(n?1,m),m?1) n,m ≥1Level 22.1 递归的概念例3Ackerman函数前2例中的函数都可以找到相应的非递归方式定义:n!=1?2?3???(n ?1)?n阶乘函数1 ??1+ 5 ?n+1???n+1?1? 5 ??Fibonacci数 列? ?? ?F(n) =??????5 ?2??2??有些函数(如本例中的Ackerman函数)无法找到非递归的定义。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时,pe

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档