版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、递推关系的建立及其求解方法第1页,共37页,2022年,5月20日,19点39分,星期三一、递推式的建立1、Hanoi塔问题问题: 三柱问题问题:四柱问题问题:m柱问题2、平面分割问题问题:封闭曲线分割平面问题:Z分割平面问题:M分割平面3、Catalan数问题一:凸n边形的三角形剖分问题二:二叉树数目问题三:出栈序列4、第二类Stirling数 问题一:放置小球问题二:集合划分问题5、其他问题一:集合取数问题问题二:整数划分问题二、递推式的求解方法:1 递归函数用数组实现求递推式的通项表达式: 31、迭加法 32、待定系数法 33、特征方程法 34、生成函数法第2页,共37页,2022年,5
2、月20日,19点39分,星期三一、递推式的建立1、Hanoi塔问题 问题的提出:Hanoi塔由n个大小不同的圆盘和m根木柱1,2,3.m组成。开始时,这n个圆盘由大到小依次套在1柱上,如图所示。现在要求把1柱上n个圆盘按下述规则移到m柱上:(1) 一次只能移一个圆盘;(2) 圆盘只能在m个柱上存放;(3) 在移动过程中,不允许大盘压小盘。求将这n个盘子从1柱移动到m柱上所需要移动盘子的最少次数 。第3页,共37页,2022年,5月20日,19点39分,星期三问题:三柱问题设f(n)为n 个盘子从1柱移到3柱所需移动的最少盘次。当n=1时,f(1)=1。当n=2时,f(2)=3。第4页,共37页
3、,2022年,5月20日,19点39分,星期三以此类推,当1柱上有n(n2)个盘子时,我们可以利用下列步骤:第一步:先借助3柱把1柱上面的n-1个盘子移动到2柱上,所需的移 动次数为f(n-1)。第二步:然后再把1柱最下面的一个盘子移动到3柱上,只需要1次 盘子。第三步:再借助1柱把2柱上的n-1个盘子移动到3上,所需的移动次 数为f(n-1)。由以上3步得出总共移动盘子的次数为:f(n-1)+1+ f(n-1)。 所以:f(n)=2 f(n-1)+1 f(n)= 2n-1第5页,共37页,2022年,5月20日,19点39分,星期三问题:四柱问题第6页,共37页,2022年,5月20日,19
4、点39分,星期三第7页,共37页,2022年,5月20日,19点39分,星期三【问题分析】: 令fi表示四个柱子时,把i个盘子从原柱移动到目标柱所需的最少移动次数。 j第一步:先把1柱上的前j个盘子移动到另外其中一个非目标柱(2或3柱均可,假设移到2柱)上,此时3和4柱可以作为中间柱。移动次数为:fj。第二步:再把原1柱上剩下的i-j个盘子在3根柱子(1、3、4)之间移动,最后移动到目标柱4上,因为此时2柱不能作为中间柱子使用,根据三柱问题可知,移动次数为:2(i-j)-1。第三步:最后把非目标柱2柱上的j个盘子移动到目标柱上,次数为:fj。 第8页,共37页,2022年,5月20日,19点3
5、9分,星期三通过以上步骤我们可以初步得出:fi = 2*fj+2(i-j)-1j可取的范围是1=jI,所以对于不同的j,得到的fi可能是不同的,本题要求最少的移动次数 fi = min2*fj+2(i-j)-1,其中1=jI 第9页,共37页,2022年,5月20日,19点39分,星期三const MaxNum = 1000;var n : integer; F3, F4 : array1.MaxNum of double;procedure Init;var i : integer;begin fillChar(F3,sizeOf(F3),0); fillChar(F4,sizeOf(F4)
6、,0); readln(n); F31 := 1; F41 := 1; *F3n 为Hanoi塔中3根柱子,n个盘子的最少移动次数 F3n = 2n -1; F4n 为Hanoi塔中4根柱子,n个盘子的最少移动次数* for i :=2 to n do F3i := 2*F3i-1 + 1;end; 第10页,共37页,2022年,5月20日,19点39分,星期三procedure Run;var i, j : integer; minF4i,temp : double;begin for i := 2 to n do begin minF4i :=1e+100; for j := 1 to
7、i-1 do begin temp := 2*F4j + F3i-j; if (temp minF4i) then minF4i := temp; end; *F4i = min(2*F4j + F3i-j);( 1= j =i-1) * F4i :=minF4i; end; writeln(F4n:0:0);end;begin Init; Run;end.第11页,共37页,2022年,5月20日,19点39分,星期三问题:m柱问题【问题分析】:设F(m,n)为m根柱子,n个盘子时移动的最少次数:1、先把1柱上的前j个盘子移动到另外其中一个除m柱以外的非目标柱上,移动次数为:fm, j; 2
8、、再把原1柱上剩下的n-j个盘子在m-1根柱子之间移动,最后移动到目标柱m上,移动次数为:fm-1, n-j; 3、最后把非目标柱上的j个盘子移动到目标柱没柱上,移动次数为:fm, j。F(m,n) = min2*F(m, j)+F(m-1,n-j) (1= j n)j第12页,共37页,2022年,5月20日,19点39分,星期三2、平面分割问题问题问题的提出:设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,求这些封闭曲线把平面分割成的区域个数。【问题分析】:设f(n)为n条封闭曲线把平面分割成的区域个数。 由图4很容易得出:f(1)=2;f(
9、2)=4。第13页,共37页,2022年,5月20日,19点39分,星期三假设当前平面上已有的n-1条曲线将平面分割成f(n-1)个区域,现在加入第n条封闭曲线。第n条曲线每与已有的n-1条曲线相交共有2(n-1)个交点,也就是说第n条曲线被前n-1条曲线分割成2(n-1)段弧线,而每一条弧线就会把原来的区域一分为二,即增加一个区域,所以共增加2(n-1)个区域 F(n)=f(n-1)+2(n-1)第14页,共37页,2022年,5月20日,19点39分,星期三问题问题的提出:一个z形曲线可以把一个平面分割成2部分。如图所示。求n个z形曲线最多能把平面分割成多少部分。写出递推式f(n)。【问题
10、分析】:根据上图容易得出:f(1)=2;f(2)=12。假设平面上已有n-1个z图形把平面分成了f(n-1)个区域。加入第n个z后,单独考虑第n个z的3条边,每一条边和前面的n-1个z共有3(n-1)个交点,即这条边被分成3(n-1)+1部分,所以增加3(n-1)+1个区域,3条边共增加3(3(n-1)+1)个区域。但是第n个z本身有2个交点,故少了2个区域,所以实际增加了3(3(n-1)+1)-2个区域。由以上得出:f(n)=f(n-1)+3(3(n-1)+1)-2 即:f(n)=f(n-1)+9n-8 初始条件:f(1)=2第15页,共37页,2022年,5月20日,19点39分,星期三问
11、题:M分割平面问题二的扩展:在问题二的基础上进一步考虑:如果z图形扩展为m边的下列图形:看一下问题的解。通过上面的分析我们很容易知道:n个上述图形可以将平面划分的区域的递推关系:f(n)=f(n-1)+m(m(n-1)+1)-(m-1)初始条件:f(1)=2第16页,共37页,2022年,5月20日,19点39分,星期三3、Catalan数问题一:凸n边形的三角形剖分在一个凸n边形中,通过不相交于n边形内部的对角线,把n边形拆分成若干三角形,不同的拆分数目用f(n)表之,f(n)即为Catalan数。例如五边形有如下五种拆分方案,故f(5)=5。求对于一个任意的凸n边形相应的f(n)。第17页
12、,共37页,2022年,5月20日,19点39分,星期三区域是一个凸k边形,区域是一个凸n-k+1边形,区域的拆分方案总数是f(k) 区域的拆分方案数为f(n-k+1),故包含P1PkPn的n 边形的拆分方案数为f(k)* f(n-k+1)种 F(n)= 第18页,共37页,2022年,5月20日,19点39分,星期三问题二:二叉树数目问题描述:求n个结点能构成不同二叉数的数目。【问题分析】:设F(n)为n个结点组成二叉树的数目。容易知道:f(1)=1;f(2)=2,f(3)=5选定1个结点为根,左子树结点的个数为i,二叉树数目f(i)种;右子树结点数目为n-i-1,二叉树数目f(n-i-1)
13、种,I的可取范围0,n-1。所以有:F(n)= 为了计算的方便:约定f(0)=1第19页,共37页,2022年,5月20日,19点39分,星期三问题三:出栈序列问题描述:N个不同元素按一定的顺序入栈,求不同的出栈序列数目。【问题分析】:设f(n)为n个元素的不同出栈序列数目。容易得出:f(1)=1;f(2)=2。第n个元素可以第i(1=i1,m1)第21页,共37页,2022年,5月20日,19点39分,星期三问题二:集合划分问题。设S是一个包含n个元素的集合,S=b1,b2,b3,bn,现需要将S集合划分为m个满足如下条件的集合S1,S2, Sm。Si;SiSj=;S1S2Sm=S; (1=
14、I ,j1,m1)边界条件:S2(n,1)=1;S2(n,n)=1;S2(n,k)=0(kn)。第22页,共37页,2022年,5月20日,19点39分,星期三5 、其他:)集合取数问题设f(n,k)是从集合1,2,。,n中能够选择的没有两个连续整数的k个元素子集的数目,求递归式f(n,k)。【问题分析】:N有两种情况: 当n在子集时,则n-1一定不在子集中,即在1,2,。,n-2中选k-1个元素,数目为f(n-2,k-1)。 当n不在子集中时,则在1,2,。,n-1中选k个元素,数目为f(n-1,k)。所以:f(n,k)= f(n-2,k-1) +f(n-1,k)边界条件:F(n,1)=n,
15、 f(n,k)=0 ( n=k)第23页,共37页,2022年,5月20日,19点39分,星期三)整数划分问题将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。输入:n,k (6n=200,2=k=2,可以先那出j个1分到每一份,然后再把剩下的I-j分成j份即可,分法有:f(I-j,j). 第二类 : j份中至少有一份为1的分法,可以先那出一个1作为单独的1份,剩下的I-1再分成j-1份即可,分法有:f(I-1,j-1).所以:f(I,j)= f(I-j,j)+
16、f(I-1,j-1)边界条件:f(i,1)=1,f(i,j)=0, (Ij)第24页,共37页,2022年,5月20日,19点39分,星期三 1 递归函数用数组实现求递推式的通项表达式: 31、迭加法 32、待定系数法 33、特征方程法 34、生成函数法递推式的求解方法:第25页,共37页,2022年,5月20日,19点39分,星期三1、递归函数 用递归函数来实现递推式是初学选手们采用最多的求解方法,只要设置正确的边界条件,相对来说比较容易实现。如:集合取数问题f(n,k)= f(n-2,k-1) +f(n-1,k) 边界条件:F(n,1)=n, f(n,k)=0 ( n=k)function
17、 f(n,k:integer):integer; begin if k=1 then f:=n else if n1,m1)边界条件:S2(n,1)=1;S2(n,n)=1;S2(n,k)=0(kn)。var s:array1.100,1.100 of longint; n,m,i,j:integer;begin read(n,m); fillchar(s,sizeof(s),0); for i:=1 to n do si,1:=1; for i:=1 to m do si,i:=1; for i:=2 to m do for j:=i to n do sj,i:=i*sj-1,i+sj-1,
18、i-1; writeln(sn,m);end.第27页,共37页,2022年,5月20日,19点39分,星期三3求递推式的通项表达式 31、迭加法一般符合下列形式的递推式可以使用迭代法。 F(n)=f(n-1)+g(n)其中:g(n)是关于n的线性表达式。F(2)=f(1)+9*2-8F(3)=f(2)+9*3-8F(4)=f(3)+9*4-8F(n)=f(n-1)+9*n-8以上n-1个等式相加得到:f(n)=f(1)+9*(2+3+4+n)-8*(n-1)即:f(n)=9*n*n/2-7*n/2+1如:平面分割问题二:f(n)=f(n-1)+9n-8初始条件:f(1)=2 第28页,共37
19、页,2022年,5月20日,19点39分,星期三32、待定系数法 适合下列格式的递推式: F(n)=a*f(n-1)+g(n) a1例1:Hanoi塔三柱问题:f(n)=2 f(n-1)+1, 边界条件:f(1)=1令:f(n)+A=2(f(n-1)+A) A为待定系数求得A=1, 即:f(n)+1=2(f(n-1)+1) 由等比数列性质得出:f(n)+12n-1(f(1)+1)=2n所以:f(n)2n1第29页,共37页,2022年,5月20日,19点39分,星期三例2: 求 f(n)=3f(n-1)+n2+n+2的通项。令: f(n)+An2+Bn+c=3(f(n-1)+A(n-1)2+B
20、(n-1)+c) A,B,C为待定系数。由于上述恒等成立,得:2A=12B-6A=03+3B+2C=0求出:A,B,C后,从而得出f(n)的通项 第30页,共37页,2022年,5月20日,19点39分,星期三33、特征方程法 如果a1, ,ak是常数,且ak=0,nk,则递推关系 F(n)= a1f(n-1)+a2f(n-2)+akf(n-k)称为k阶常系数线性齐次递推关系。它的特征方程是:Xk- a1Xk-1- a2Xk-2-ak=0只要求出特征方程的根,再由初始条件表达式中的待定系数,便可以得到原递推关系的解。如果特征方程有k个互不相同的解X1,X2,.Xk,则通解为:F(n)=c1X1n+c2X2n+.+ckXknc1 ,c2ck待定。第31页,共37页,2022年,5月20日,19点39分,星期三例:Fibonacci数列F(n)=f(n-2)+f(n-1); f(1)=1;f(2)=1解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宝鸡市辅警招聘考试题及答案
- 消化系统疾病的护理与医患沟通
- 梅毒患者合并慢性疾病护理
- 2026 儿童专注力游戏课件
- 2025-2030中国智能传感器行业运行趋势及前景规划分析报告
- 护理软件课件模板下载站
- 一例糖尿病合并冠心病患者的护理个案
- 厂房工程技术要求
- 普速列车旅客突发疾病应急演练脚本
- (完整版)食源性疾病监测管理体系及上报措施
- 【MOOC答案】《电工电子实验(二)》(南京邮电大学)章节期末慕课答案
- 铝粉代加工铝锭合同范本
- 广东省深圳市2024-2025学年八年级下学期期末数学试卷(含解析)
- JJG 688-2025汽车排放气体测试仪检定规程
- 骨科引流管护理
- 2025广西专业技术人员公需科目培训考试答案
- 集中用餐单位食品安全主体责任落实专题培训
- 四川省成都市青羊区2025年中考语文二诊试卷(含答案)
- 中央2025年中国佛教协会和中国佛学院应届生招聘6人笔试历年参考题库附带答案详解
- 多轴加工项目化教程课件 项目二 任务2-2 左右半球加工
- DB21-T2478-2015风力发电场建设项目初步设计安全专篇编制导则
评论
0/150
提交评论