02 递归与分治策略(精品).ppt
《02 递归与分治策略(精品).ppt》由会员分享,可在线阅读,更多相关《02 递归与分治策略(精品).ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学本章主要内容本章主要内容n2.1 递归的概念n2.2 分治法的基本思想n2.3 二分搜索技术n2.4 大整数的乘法n2.5 Strassen矩阵乘法n2.7 合并排序n2.8 快速排序n2.11 循环赛日程表段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n2.1.1 递归的概念n直接或间接地直接或间接地调用自身调用自身的算法称为递归算法。的算法称为递归算法。n用函数自身给出定义的函数用函数自身给出定义的函数称为称为递归函数递归函数。n在计算机算法设计与分析中,使用递归技术往往使在计算机算法设计与分析中,使
2、用递归技术往往使函数的定义和算法的函数的定义和算法的描述简洁且易于理解描述简洁且易于理解。n使用递归解决问题,思路清晰,代码少。但是在主使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如流高级语言中(如C语言、语言、Pascal语言等)使用递归语言等)使用递归算法要算法要耗用更多的栈空间耗用更多的栈空间,应避免采用。,应避免采用。n一般的的递归算法都一般的的递归算法都可以可以改写成与之等价的改写成与之等价的非递归非递归算法。算法。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n2.1.2 递归的几个实例n例例1 阶乘函数(理解)阶乘函数(理解)n可
3、以递归可以递归地定义为:地定义为:n其中:其中:nn=0时,时,n!=1为边界条件为边界条件nn0时,时,n!=n(n-1)!为递归方程为递归方程n边界条件与递归方程是递归函数的二个要素,边界条件与递归方程是递归函数的二个要素,只有具只有具备这两个要素,才能在备这两个要素,才能在有限次有限次计算后得出结果。计算后得出结果。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n若若乘法执行次数记作记作M(n),则有如下结论:,则有如下结论:nM(n)没有定义为没有定义为n的函数,而是定义的函数,而是定义它本身在另一点它本身在另一点上值的函数上值的函数,这种等式称为,
4、这种等式称为递推关系递推关系,或,或递推式递推式。n用用反向替换法反向替换法求解递推关系式:求解递推关系式:M(n)=M(n-1)+1替换 M(n-1)=M(n-2)+1=M(n-2)+1+1=M(n-2)+2替换 M(n-2)=M(n-3)+1=M(n-3)+1+1=M(n-3)+3=M(n-i)+i=M(n-n)+n=n段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n例例2 斐波那契数斐波那契数列(理解)列(理解)nFibonacci Sequencen黄金分割数列黄金分割数列兔子繁殖问题 1202年,意大利数学家斐波那契(Fibonacci)在他的算盘
5、书中提出这样一个问题:有人想知道一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面。已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后第二个月就开始生小兔子。假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念表示一对成熟的兔子;表示未成熟的兔子。每一对成熟的兔子经过一个月变成本身的及新生的未成熟;未成熟的一对经过一个月变成成熟的,没有出生新兔;画出左图。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n在数学上,斐波那契数列是以递归的方法来定义:在数学上,斐
6、波那契数列是以递归的方法来定义:n第第n个个Fibonacci数可递归地计算如下:数可递归地计算如下:段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n斐波那契数列一般表达式的初等代数解法斐波那契数列一般表达式的初等代数解法n已知已知na1=1,a2=1,an=an 1+an 2n首先构建等比数列首先构建等比数列n令令 0,0,n设设an+an 1=(an 1+an 2)n化化简简得得nan=()an 1+an 2比较系数可比较系数可得得解得解得段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n预知后事如何变换.n参见维基百科
7、参见维基百科斐波那契数列斐波那契数列nhttp:/zh.wikipedia.org/zh-cn/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97 段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n斐波那契数斐波那契数列的列的通项公式通项公式为(为(又叫又叫“比内公式比内公式”,是,是用无理数表示有理数用无理数表示有理数的一个的一个范例)范例)n可它的每一项却都是整数。开普勒发现两个斐波那契可它的每一项却都是整数。开普勒发现两个斐波那契数数的的后两项比后两项比会趋近黄金分割会趋近黄金分割:n这个数列有广
8、泛的应用,如这个数列有广泛的应用,如树的年分枝数目树的年分枝数目就遵循斐就遵循斐波那契数列的规律;而且计算机科学的发展,为斐波波那契数列的规律;而且计算机科学的发展,为斐波那契数列提供了新的应用场所。那契数列提供了新的应用场所。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n斐波那契的另一种表示法段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n前面定义的前面定义的递归算法效率并不高递归算法效率并不高,为什么?,为什么?F(5)F(4)F(3)
9、F(3)F(2)F(2)F(1)F(1)F(0)F(2)F(1)F(1)F(0)F(1)F(0)数列的递归调用树Fib(n)/输入:非负整数n/输出:第n个斐波那契数Create F0nF0=1;F1=1for i=2 to n do Fi=Fi-1+Fi-2return F(n)段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n例例3 Ackerman函数(了解)函数(了解)n当一个当一个函数函数及及它的一个变量它的一个变量是由是由函数自身函数自身定义时,称定义时,称这个函数是这个函数是双递归函数双递归函数。n前两例都能找到函数的非递归定义,但前两例都能找到
10、函数的非递归定义,但Ackerman函函数却无法数却无法找到找到(?但是有非递归的算法但是有非递归的算法)。nAckerman函数函数A(n,m)定义如下:定义如下:段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念nA(n,m)的自变量的自变量m的每个值都定义了一个单变量函数的每个值都定义了一个单变量函数nM=0时:时:A(n,0)=n+2nM=1时:时:nA(n,1)=A(A(n-1,1),0)=A(n-1,1)+2nA(1,1)=2n故故A(n,1)=2*n(n=1)nM=2时:时:nA(n,2)=A(A(n-1,2),1)=2A(n-1,2)nA(1,2
11、)=A(A(0,2),1)=A(1,1)=2n故故A(n,2)=2n。nM=3时,类似的可以推出时,类似的可以推出 ,2的层数为的层数为nnM=4时,时,A(n,4)的的增长速度非常快增长速度非常快,没有适当的数学,没有适当的数学式子来表示这一函数。式子来表示这一函数。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n定义单变量的定义单变量的Ackerman函数函数A(n)为,为,A(n)=A(n,n)。n定义其拟逆函数定义其拟逆函数(n)为为n(n)=minkA(k)nn即即(n)是使是使nA(k)成立的最小的成立的最小的k值。值。nA(0)=1,A(1)=
12、2,A(2)=4,A(3)=16,A(4)=溢出溢出推知推知(1)=0,(2)=1,(3)=(4)=2,(5)=(16)=3.n(n)在复杂度分析中常遇到。在复杂度分析中常遇到。n对于通常所见到的正整数对于通常所见到的正整数n,有,有(n)4。n但在理论上但在理论上(n)没有上界,随着没有上界,随着n的增加,它以难以想的增加,它以难以想象的慢速度趋向正无穷大。象的慢速度趋向正无穷大。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n例例4 排列排列问题(理解)问题(理解)n全排列是全排列是将一组数按一定顺序进行排列将一组数按一定顺序进行排列,如果这组数,如果这
13、组数有有n个,那么全排列数为个,那么全排列数为n!个。个。n设计设计一个递归算法生成一个递归算法生成n个元素个元素r1,r2,rn的全排列的全排列(所有元素按不同顺序所有的组合所有元素按不同顺序所有的组合)。n以以1,2,3,4,5为例说明全排列的递归算法。为例说明全排列的递归算法。n先看最后两个数先看最后两个数4,5。它们的全排列为它们的全排列为4 5和和5 4,即即以以4开头和开头和5的全排列的全排列和和以以5开头和开头和4的全排列的全排列。n再看后三个数再看后三个数3,4,5。它们的全排列为。它们的全排列为3 4 5、3 5 4、4 3 5、4 5 3、5 3 4、5 4 3 六组数。即
14、六组数。即以以3开头和开头和45的全的全排列的排列的、以、以4开头和开头和35的全排列的全排列和和以以5开头和开头和34的全排的全排列列。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n根据以上分析,可有如下递归定义根据以上分析,可有如下递归定义n设设R=r1,r2,rn是待排列的是待排列的n个元素,个元素,Ri=R-ri。n集合集合X中元素的全排列记为中元素的全排列记为Perm(X)。n(ri)Perm(X)表示在全排列表示在全排列Perm(X)的每一个排列前加的每一个排列前加上前缀得到的排列。上前缀得到的排列。nR的全排列可归纳定义如下:的全排列可归纳定
15、义如下:n当当n=1时,时,Perm(R)=(r),其中,其中r是集合是集合R中唯一的中唯一的元素;元素;n当当n1时,时,Perm(R)由由(r1)Perm(R1),(r2)Perm(R2),(rn)Perm(Rn)构成。构成。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n例例5 整数划分整数划分问题(了解)问题(了解)n将正整数将正整数n表示成表示成一系列正整数之和一系列正整数之和:n=n1
16、+n2+nk,其中,其中n1n2nk1,k1。n正整数正整数n的这种表示称为的这种表示称为正整数正整数n的划分的划分。n求正整数求正整数n的不同划分个数。的不同划分个数。n例如正整数例如正整数6有如下有如下11种不同的划分:种不同的划分:n6n5+1n4+2,4+1+1n3+3,3+2+1,3+1+1+1n2+2+2,2+2+1+1,2+1+1+1+1n1+1+1+1+1+1段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n前面问题本身都有明显递归关系,容易求解。前面问题本身都有明显递归关系,容易求解。n本例中,若设本例中,若设p(n)为正整数为正整数n的划分
17、数,难以找到递的划分数,难以找到递归关系归关系;n增加增加一个变量:一个变量:将最大加数将最大加数n不大于不大于m的划分个数记的划分个数记作作q(n,m)。q(n,m)有如下递归关系:有如下递归关系:nq(n,1)=1,n1n当最大数当最大数n1时,任何正整数时,任何正整数n只有一种划分形式:只有一种划分形式:n=1+1+.+1(共(共n个)。个)。nq(n,m)=q(n,n),mnn最大加数最大加数n 实际上实际上不能大于不能大于n。nq(1,m)=1。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念nq(n,n)=1+q(n,n-1)n正整数正整数n的划分
18、由的划分由n=n的划分和的划分和nn-1的划分组成。的划分组成。nq(n,m)=q(n,m-1)+q(n-m,m),nm1n正整数正整数n的最大加数的最大加数n不大于不大于m的划分由的划分由n=m的划分和的划分和nm-1 的划分组成。的划分组成。n计算计算q(n,m)的递归式如下,可以的递归式如下,可以发现发现 p(n)=q(n,n)段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学相传相传.n印度北部贝拿勒斯圣庙里n一块一块黄铜板上插着三根宝石黄铜板上插着三根宝石针,针,在其中一根针上从在其中一根针上从下到
19、上地穿好了由大到小下到上地穿好了由大到小的的64片片金片,这金片,这就是就是汉诺汉诺塔塔。不论。不论白天黑夜,总有一个僧侣在按照下面的法白天黑夜,总有一个僧侣在按照下面的法则移动这些金片则移动这些金片:n一一次只移动一次只移动一片片n不管不管在哪根针在哪根针上上n小小片必须在大片片必须在大片上面上面n僧侣们预言,当所有的金片都从梵天穿好的那根针僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。灭,而梵塔、庙宇和众生也都将同归于尽。段旭良四川农业大学段旭良四川农业大学段旭良四川
20、农业大学假如这个假如这个传说是真的传说是真的!n2012年?n假设假设有有n片,移动次数是片,移动次数是f(n)。n显然显然f(1)=1,f(2)=3,f(3)=7,且,且f(k+1)=2*f(k)+1。n即即f(n)=2n-1。nn=64时时nf(64)=264-1=18446744073709551615n假如假如每秒钟一次,平均每年每秒钟一次,平均每年31556952秒,则秒,则18446744073709551615/31556952=584554049253.855年年=5845亿亿年年以上以上段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n例例6
21、 Hanoi塔塔问题(理解)问题(理解)n设设a,b,c是是3个塔座。开始时,在塔座个塔座。开始时,在塔座a上有一叠共上有一叠共n个个圆盘,这些圆盘圆盘,这些圆盘自下而上自下而上,由大到小由大到小地叠在一起。地叠在一起。n各圆盘从小到大编号为各圆盘从小到大编号为1,2,n,现要求将塔座现要求将塔座a上的上的这一叠圆盘移到塔座这一叠圆盘移到塔座b上,并仍按同样顺序叠置。上,并仍按同样顺序叠置。n在移动圆盘时应遵守以下移动规则:在移动圆盘时应遵守以下移动规则:n每次只能移动每次只能移动1个圆盘;个圆盘;n任何时刻都任何时刻都不允许不允许将较大的圆盘压在较小的圆盘上;将较大的圆盘压在较小的圆盘上;n
22、在满足移动规则在满足移动规则1和和2的前提下,可将圆盘移至的前提下,可将圆盘移至a,b,c中中任一塔座上。任一塔座上。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n解法解法n为了把为了把n1个盘子从木桩个盘子从木桩1移到木桩移到木桩3,需要把,需要把n-1个盘个盘子递归的移到木桩子递归的移到木桩2(借助(借助3););n然后把最大的盘子(第然后把最大的盘子(第n个)移到木桩个)移到木桩3;n再把再把n-1个盘子由木桩个盘子由木桩2移动到木桩移动到木桩3(借助(借助1)。)。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n
23、移动次数为移动次数为M(n),n为盘子数量,则有如下递推式为盘子数量,则有如下递推式nM(1)=1nM(n)=M(n-1)+1+M(n-1),n1n建立如下递推关系:建立如下递推关系:nM(1)=1nM(n)=2M(n-1)+1,n1n使用使用反向替换法反向替换法求解:求解:nM(n)=2M(n-1)+1n=22M(n-2)+1+1=22M(n-2)+2+1n=222M(n-3)+1+2+1=23M(n-3)+22+2+1n=2iM(n-i)+2i-1+2i-2+2+1=2iM(n-i)+2i-1段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n由于初始条件是
24、由于初始条件是n=1,所以,所以i=n-1,求解递推式:,求解递推式:nM(n)=2n-1M(n-(n-1)+2n-1-1n=2n-1M(1)+2n-1-1=2n-1n这是一个这是一个指数级指数级的算法,但是,对于此问题来说,这的算法,但是,对于此问题来说,这是最高效的算法。是最高效的算法。段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n递归算法递归算法n/hanoi(n,a,b,c)表示将塔座表示将塔座a上自下而上、由大到小上自下而上、由大到小叠放的叠放的n个圆盘依规则移动到个圆盘依规则移动到b上,移动过程中以上,移动过程中以c为为辅助塔座。辅助塔座。n/
25、move(a,b)表示将表示将a上编号为上编号为n的圆盘移动到的圆盘移动到b上上npublic static void hanoi(int n,int a,int b,int c)if(n 0)hanoi(n-1,a,c,b);move(a,b);hanoi(n-1,c,b,a);段旭良四川农业大学段旭良四川农业大学段旭良四川农业大学2.1 递归的概念递归的概念n递归小结n优点优点n结构清晰,可读性强结构清晰,可读性强,而且容易用数学归纳法来证明,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很算法的正确性,因此它为设计算法、调试程序带来很大方便。大方便。n缺点缺点n递
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 递归与分治策略精品 递归 分治 策略 精品
限制150内