回溯算法入门及应用

回溯算法入门及应用

ID:33638032

大小:114.00 KB

页数:10页

时间:2019-02-27

回溯算法入门及应用_第1页
回溯算法入门及应用_第2页
回溯算法入门及应用_第3页
回溯算法入门及应用_第4页
回溯算法入门及应用_第5页
资源描述:

《回溯算法入门及应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、回溯算法入门及应用广东省东莞市东华高级中学杨光文难易指数:★★★在求解一些问题(如马的遍历、选书、八皇后问题、自然数的拆分等问题)时,题目的要求可能是求出原问题的一种或所有可能的解决方案。这类问题的解往往是由一个一个的步骤或状态所构成的,每一步骤又有若干种可能的决策方案;由于没有固定、明确的数学解析方法,往往要采用搜索的做法,即从某一个初始状态出发,不断地向前(即下一个状态)搜索,以期最终达到目标状态,从而得到原问题的一个解或所有的解。在搜索的过程中,由于问题本身及所采取的搜索方法的特点(如在缺乏全局

2、及足够的前瞻信息的情况下进行搜索等),会导致走到某一状态就走不下去的情况,这时,就必须回头(即回到上一步,而不是回到最初的状态),再尝试其他的可能性,换一个方向或方法再试试。这样,不断地向前探索、回溯,再向前、再回溯,直至最终得出问题的解,或者一路回溯到出发点(出现这种情况即表示原问题无解)。注意,这种搜索过程并不是尝试搜索问题解空间中所有的可能状态和路径,而是采用深度优先的方式,沿着一条路径,尽可能深入地向前探索,这就是回溯算法。一、回溯算法的定义:回溯算法也叫试探法,它是一种系统地搜索问题的解的方

3、法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为:1、定义一个解空间,它包含问题的解。2、利用适于搜索的方法组织解空间。3、利用深度优先法搜索解空间。4、利用限界函数避免移动到不可能产生解的子空间。问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。下面通过一个具体实例加深大家对回溯算法的认识。二、回溯算法的应用举例:例1:马的遍历中国象棋半张棋盘如图1(a)所示。马自左下角往向右上角跳。规定只许往右跳,不许往

4、左跳,马只能走日字。比如图1(a)所示为一种跳行路线,并将所经路线打印出来,打印格式为:0,0->2,1->3,3->1,4->3,5->2,7->4,8。找出所有路径。【算法分析】如图1(b),马最多有四个方向,若原来的横坐标为j、纵坐标为i,则四个方向的移动可表示为:1:(i,j)→(i+2,j+1);(i<3,j<8)2:(i,j)→(i+1,j+2);(i<4,j<7)3:(i,j)→(i-1,j+2);(i>0,j<7)4:(i,j)→(i-2,j+1);(i>1,j<8)搜索策略:S1:A

5、[1]:=(0,0);S2:从A[1]出发,按移动规则依次选定某个方向,如果达到的是(4,8)则转向S3,否则继续搜索下一个到达的顶点;S3:打印路径。【算法设计】proceduretry(i:integer);{搜索}varj:integer;beginforj:=1to4do{试遍4个方向}if新坐标满足条件thenbegin记录新坐标;if到达目的地thenprint{统计方案,输出结果}elsetry(i+1);{试探下一步}退回到上一个坐标,即回溯;end;end;【参考程序】program

6、exam1;constx:array[1..4,1..2]ofinteger=((2,1),(1,2),(-1,2),(-2,1));{四种移动规则}vart:integer;{路径总数}a:array[1..9,1..2]ofinteger;{路径}procedureprint(ii:integer);{打印}vari:integer;begininc(t);fori:=1toii-1dowrite(a[i,1],',',a[i,2],'->');writeln('4,8',t:5);end;pro

7、ceduretry(i:integer);{搜索}varj:integer;begina[1,1]:=0;a[1,2]:=0;forj:=1to4doif(a[i-1,1]+x[j,1]>=0)and(a[i-1,1]+x[j,1]<=4)and(a[i-1,2]+x[j,2]>=0)and(a[i-1,2]+x[j,2]<=8)thenbegina[i,1]:=a[i-1,1]+x[j,1];a[i,2]:=a[i-1,2]+x[j,2];if(a[i,1]=4)and(a[i,2]=8)thenp

8、rint(i)elsetry(i+1);{搜索下一步}a[i,1]:=0;a[i,2]:=0end;end;begintry(2);end.例2:选书学校放寒假时,信息学竞赛辅导老师有A,B,C,D,E五本书,要分给参加培训的张、王、刘、孙、李五位同学,每人只能选一本书。老师事先让每个人将自己喜欢的书填写在如下的表格中。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。输出结果:zhang:Cwang:Al

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。