递归回溯搜索优秀PPT.ppt
《递归回溯搜索优秀PPT.ppt》由会员分享,可在线阅读,更多相关《递归回溯搜索优秀PPT.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、导入练习v例1,N!。N!=N*(N-1)!,因此求N!转化为求(N-1)!。这就是一个递归的描述。例2:裴波那契数列的定义:递归的概念v由函数或者过程调用引起。v一个对象部分地由它自己组成,或者是按它自己定义,我们称之是递归。v例3:汉诺塔问题:有n个半径各不相同的圆盘,按半径从大到小,自下而上依次套在A柱上,另外还有B、C两根空柱。要求将A柱上的n个圆盘全部搬到C柱上去,每次只能搬动一个盘子,且必需始终保持每根柱子上是小盘在上,大盘在下。输出总共移动的次数。ABCv分析:在移动盘子的过程当中发觉要搬动n个盘子,必需先将n-1个盘子从A柱搬到B柱去,再将A柱上的最终一个盘子搬到C柱,最终从B
2、柱上将n-1个盘子搬到C柱去。搬动n个盘子和搬动n-1个盘子时的方法是一样的,当盘子搬到只剩一个时,递归结束。vprogramhannuota;vvarvn:integer;vprocedurehnt(a,b,c,n:integer);vbeginvifn=1thenwriteln(a,-,c)velsebeginhnt(a,c,b,n-1);writeln(a,-,c);hnt(b,a,c,n-1);end;vend;vbeginvwrite(pleaseinputn:);vread(n);vhnt(1,2,3,n);vend.汉诺塔问题的递推解法v设设f(n)为为n 个盘子从个盘子从1柱移
3、到柱移到3柱所需移动的最少盘次。柱所需移动的最少盘次。当当n=1时,时,f(1)=1。v当当n=2时,时,f(2)=3。v以此类推,当以此类推,当1柱上有柱上有n(n2)个盘子时,我们可以利用下列个盘子时,我们可以利用下列步骤:步骤:v第一步:先借助第一步:先借助3柱把柱把1柱上面的柱上面的n-1个盘子移动到个盘子移动到2柱上,柱上,所需的移动次数为所需的移动次数为f(n-1)。v其次步:然后再把其次步:然后再把1柱最下面的一个盘子移动到柱最下面的一个盘子移动到3柱上,只柱上,只须要须要1次盘子。次盘子。v第三步:再借助第三步:再借助1柱把柱把2柱上的柱上的n-1个盘子移动到个盘子移动到3上,
4、所需上,所需的移动次数为的移动次数为f(n-1)。v由以上由以上3步得出总共移动盘子的次数为:步得出总共移动盘子的次数为:f(n-1)+1+f(n-1)。v 所以:所以:f(n)=2 f(n-1)+1 现在就可以用递推现在就可以用递推做了做了vf(1)=1vf(2)=3vf(3)=7vf(4)=15f(n)=2n-1现在可以用数学方法做了现在可以用数学方法做了练习1:简洁背包问题。v有一个背包涵量为s,现有n件物品,重量分别为s1、s2、s3。Si(1=i=n),假设si均为正数,从这n件物品中选择若干件物品放入背包,使得放入总重量恰好为s,请输出一种解,若无解输出“NOANSWER”。练习2
5、v快速排序vvara:array1.10000oflongint;vn,i:longint;vprocedureqsort(s,t:longint);vvari,j,x:longint;vbeginvi:=s;j:=t;x:=ai;vwhile(ij)dobeginvwhile(ij)and(x=aj)dodec(j);vai:=aj;vwhile(ij)and(ai=x)doinc(i);vaj:=ai;vend;vai:=x;vifsi-1thenqsort(s,i-1);vifj+1nthen输出结果velseforj:=下界to上界dovbeginvxi:=hj;vif可行满足限界函数
6、和约束条件thenbegin置值;try(i+1);取消置值;end;vend;vend;v例4:N皇后问题在N*N的棋盘上放置N个皇后而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放置2个皇后),编程求解全部的摆放方法。八皇后的两组解v分析:v由于皇后的摆放位置不能通过某种公式来确定,因此对于每个皇后的摆放位置都要进行摸索和订正,这就是“回溯”的思想。在N个皇后未放置完成前,摆放第I个皇后和第I+1个皇后的摸索方法是相同的,因此完全可以接受递归的方法来处理。v下面是放置第I个皇后的的递归算法:vProcedureTry(I:integer);v搜寻第I行皇后的位置vvarvj:i
7、nteger;vbeginvifI=n+1then输出方案;vforj:=1tondovif皇后能放在第I行第J列的位置thenbeginv放置第I个皇后;v对放置皇后的位置进行标记;vTry(I+1)v对放置皇后的位置释放标记;vEnd;vEnd;vN皇后问题的递归算法的程序如下:vprogramN_Queens;vconstvMaxN=100;最多皇后数vvarvA:array1.MaxNofBoolean;同列-竖线被限制标记vB:array2.MaxN*2ofBoolean;i+j和相等-左下到右上斜线被限制标记vC:array1MaxN.MaxN1ofBoolean;j-i差相等-左
8、上到右下斜线被限制标记vX:array1.MaxNofInteger;记录皇后的解vTotal:Longint;解的总数vN:Integer;皇后个数vprocedureOut;输出方案vvarvI:Integer;vbeginvInc(Total);Write(Total:3,:);vforI:=1toNdoWrite(XI:3);vWriteln;vend;vprocedureTry(I:Integer);v搜寻第I个皇后的可行位置vvarvJ:Integer;vbeginvifI=N+1thenOut;N个皇后都放置完毕,则输出解vforJ:=1toNdovifAJandBJ+IandC
9、JIthenbeginvXI:=J;vAJ:=False;vBJ+I:=False;vCJI:=False;vTry(I+1);搜寻下一皇后的位置vAJ:=True;vBJ+I:=True;vCJI:=True;vend;vend;vbeginvWrite(QueensNumbers=);vReadln(N);vFillChar(A,Sizeof(A),True);vFillChar(B,Sizeof(B),True);vFillChar(C,Sizeof(C),True);vTry(1);vWriteln(Total=,Total);vend.v上机练习题v1.添加自然数问题。(add.pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 回溯 搜索 优秀 PPT
限制150内