- 1、本文档共290页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
acm-搜索专题选编
搜索技术 包含的内容 回溯法 回溯+剪枝法 广度搜索 双向广度优先搜索 A,A*算法 渐进深度优先算法 爬山法 分支限界法 遗传算法 与或图与博弈树 模拟退火法 1.回溯法 回溯法概念 回溯法也称试探法. 它的基本思想是:从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。 这种不断“前进”、不断“回溯”寻找解的方法,就称作“回溯法”。 回溯策略回溯搜索的示意 ? 1 A ? ? B 2 8 C 11 D ? ? E 3 F 6 9 G 10 H ? I 4 J 5 7 K 状态空间中回溯搜索 图中虚线箭头的方向表明了搜索的轨迹,结点边的数字表明了被搜索到的次序 ? 回溯法分析 采用递归,算法简单,时间复杂度比较大 采用迭代法,算法设计与题目相关度大,时间复杂度较小。 递归回溯:由于回溯法是对解空间的深度优先搜索,因此在一般情况下可用递归函数来实现回溯法如下: Proc Search(当前状态); begin If 当前状态等于目标状态 then exit; for 对所有可能的新状态 Search(新状态); end Procedure BACKTRACK(n); {k:=l; repeat if TK (x1,x2,...xK-1 )中的值未取遍then { xK:=TK (x1,x2,..., x K-1 )中未取过的一个值; if BK (x1, x2, ..., x K) then //状态结点(x1,...xk)被激活 if k=n then output(x1, x2, ..., xk) //输出一个回答结点 e1se k:=k + l;} //深度优先 e1se k:=k-l; //回溯 until k=0; end;{BACKTRACK} 本课件题库网站 /judgeonline/problemlist 1400题 马的走法 在一个4*5的棋盘上,马的起始位置坐标(纵、横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数。(马的位置不能重复,马走“日”字。) 马的走法分析(1) 由于4*5问题规模小,采用基于递归的回溯法 问题定义: (1)采用二维数组表示棋盘。 (2)马走步表示方法二维数组,{{-1,-2},{-1,2},{-2,1},{-2,-1},{1,2},{1,-2},{2,1},{2,-1}},8个方向。 (3)棋盘的最小坐标,左下角为(1,1) (4)棋盘越界条件 0≤x ≤4, 0≤ y ≤5 (5)走过的棋盘位置应该设置一个标示。 马的走法分析(3) 递归的回溯算法可描述为: procedure search(now:position); {now是当前位置} begin for 马从当前位置now出发走一步到位置next的每一种走法 do begin if next在棋盘内 and next位置没有走过 then if next=出发点 then 不同走法总数加1 else begin 标记next已经走过了; search(next) 取消位置next的标记; end; end; end; #include?iostreamusing?namespace?std;const?int?ROWS?=?4;//行数const?int?COLUMS?=?5;//列数int?chess[ROWS][COLUMS];//棋盘int?numCount?=?0;int?posX,posY;int?direction[2][8]={{-1,-1,-2,-2,2,2,1,1},{-2,2,1,-1,1,-1,2,-2}};//马走日字void?Solve(int?x,int?y){????int?i,j,desX,desY;????for?(i=0;i8;++i)????{????????desX?=?x+direction[0][i];//目标位置x坐标????????desY?=?y+direction[1][i];//目标位置y坐标????????if?(desX=0desX4desY=0desY5chess[desX][desY]==0)?
您可能关注的文档
- 选矿厂标准化1.4安全生产责任制汇编.docx
- ACCESS2003(雷)2015-12-14选编.doc
- 远成中心二季度营销推广方案汇编.pptx
- 选矿厂的安全生产管理探讨汇编.docx
- 选矿厂标准化2.1危险源辨识与评价要求汇编.doc
- ABB自控-08_EMS_CN_ABB2014ChannalPartnerConference选编.pptx
- AB门介绍3.20选编.ppt
- 选矿厂仪表施工方案汇编.doc
- 逍遥游新版汇编.pptx
- accesss第7章窗体选编.pptx
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)