欢迎来到天天文库
浏览记录
ID:57643204
大小:926.00 KB
页数:100页
时间:2020-08-29
《回溯算法设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、programp4(input,output);procedurerever;varc:char;beginread(c);ifc<>'!'thenrever;write(c);end;begin{主程序}rever;end.运行:输入hey!输出!yeh。程序中,c是过程rever的局部变量。每一次递归调用,都要为局部变量重新分配单元,因此各层的变量c实际上是不同的量,它们分别用于保存执行本层调用时的输入值。例3:输入一串以‘!’结束的字符,按逆序输出。procedurerever;varc:char;beginread(c);ifc<>'!'
2、thenrever;write(c);end;hey!c=‘h’procedurerever;varc:char;beginread(c);ifc<>'!'thenrever;write(c);end;procedurerever;varc:char;beginread(c);ifc<>'!'thenrever;write(c);end;procedurerever;varc:char;beginread(c);ifc<>'!'thenrever;write(c);end;c=‘e’c=‘y’c=‘!’程序中的递归过程图解如下:整个递归过程可视为
3、由往返双向“运动”组成,先是逐层递进,逐层打开新的“篇章”,(有可能无具体计算值)当最终递进达到边界,执行完本“层”的语句,才由最末一“层”逐次返回到上“层”,每次返回均带回新的计算值,直至回到第一次由主程序调用的地方,完成对原问题的处理。procedurenum(x:integer)beginifx=5thena:=10elsebeginnum(x+1);a:=a+2endend;回溯计算机求解的过程在状态空间寻找机内解,可以看成是从初始状态出发,搜索目标状态(解所在的状态)的过程。状态空间初始状态目标状态搜索搜索的过程可描述为:S0S1…
4、Sn,其中S0为初态,Sn为终态。或者说ψ(S0)且φ(Sn),这里ψ称为初始条件,φ称为终止条件。求解是状态空间的搜索求解的过程可以描述为对状态空间的搜索S0S11S12…S1k………………Sn1……Sni……Snm其中S0为初始状态,不妨设Sni为终止状态S0Sni问题求解就是通过搜索,寻找出一条从初始状态S0到终止状态Sni的路径。几种搜索方法状态空间的搜索实际上是一种树/DAG(DirectedAcyclicGraph)的搜索,常用的方法有:广度优先搜索深度优先搜索启发式搜索从初始状态开始,逐层地进行搜索。从初始状态开始,逐个分枝地进行
5、搜索。从初始状态开始,每次选择最有可能达到终止状态的结点进行搜索。三种搜索的优劣之处一般来说,三种搜索方法各有优劣之处:广度优先搜索和深度优先搜索优点:一定能找到解;缺点:时间复杂性大。启发式搜索优点:一般来说能较快地找到解,即其时间复杂性小;缺点:需要设计一个评价函数,并且评价函数的优劣决定了启发式搜索的优劣。当需要找出问题的解集,或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。在问题的解空间树中,回溯法按
6、深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法回溯法的算法框架5.1.1问题的解空间应用回溯法解问题时,首先应明确定义问题的解空间。问题的解空间应至少包含问题的一个(最优)解。通常将解空间组织成树或图的形式。问题的解向量:回溯法希望一个问题的解,能够表示成一个n元式(x1,x2,…,xn)的形式。显约束:对分量xi的取值限定隐约束:为满足问题的解,而对不同分量之间施加的约束。
7、解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。例如,对于有n种可选物品的0-1背包问题,其解空间由长度为n的0-1向量组成。n=3时的0-1背包问题用完全二叉树表示的解空间回溯法的基本思想扩展结点:一个正在产生儿子的结点活结点:一个自身已生成但其儿子还没有全部生成的节点死结点:一个所有儿子已经产生的结点深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)宽
8、度优先的问题状态生成法:在一个扩展结点变成死结点之前,它一直是扩展结点。回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用
此文档下载收益归作者所有