- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]08回溯
第8章 回 溯
寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用这种方法,
因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用最快的计算机也只能解决规模很小的问题。
对候选解进行系统检查的方法有多种,其中回溯和分枝定界法是比较常用的两种方法。按照这两种方法对候选解进行系统检查通常会使问题的求解时间大大减少(无论对于最坏情形还是对于一般情形)。事实上,这些方法可以使我们避免对很大的候选解集合进行检查,同时能够保证算法运行结束时可以找到所需要的解。因此,这些方法通常能够用来求解规模很大的问题。
本章集中阐述回溯方法,这种方法被用来设计货箱装船、背包、最大完备子图、旅行商和电路板排列问题的求解算法。
1算法思想
回溯(back tracking)是一种系统地搜索问题解答的方法。为了实现回溯,首先需要为问题定义一个解空间(solution space),这个空间必须至少包含问题的一个解(可能是最优的)。在迷宫老鼠问题中,我们可以定义一个包含从入口到出口的所有路径的解空间;在具有n个对象的0/1背包问题中,解空间的一个合理选择是2n个长度为n的0/1向量的集合,这个集合表示了将0或1分配给x的所有可能方法。当n=3时,解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)}。
下一步是组织解空间以便它能被容易地搜索。典型的组织方法是图或树。图8-1用图的形式给出了一个3×3迷宫的解空间。从(1,1)点到(3,3)点的每一条路径都定义了3×3迷宫解空间中的一个元素,但由于障碍的设置,有些路径是不可行的。
图8-1 3×3迷宫的解空间
图8-2用树形结构给出了含三个对象的0/1背包问题的解空间。从i层节点到i+1层节点的一条边上的数字给出了向量x中第i个分量的值xi,从根节点到叶节点的每一条路径定义了解空间中的一个元素。从根节点A到叶节点H的路径定义了解x =[1,1,1]。
根据w和c的值,从根到叶的路径中的一些解或全部解可能是不可行的。
图8-2三个对象的背包问题的解空间
一旦定义了解空间的组织方法,这个空间即可按深度优先的方法从开始节点进行搜索。
在迷宫老鼠问题中,开始节点为入口节点(1,1);在0/1背包问题中,开始节点为根节点A。开始节点既是一个活节点又是一个E-节点(expansion node)。从E-节点可移动到一个新节点。如果能从当前的E-节点移动到一个新节点,那么这个新节点将变成一个活节点和新的E-节点,旧的E-节点仍是一个活节点。如果不能移到一个新节点,当前的E-节点就“死”了(即不再是一个活节点),那么便只能返回到最近被考察的活节点(回溯),这个活节点变成了新的E-节点。当我们已经找到了答案或者回溯尽了所有的活节点时,搜索过程结束。
例8-1[迷宫老鼠]考察图8-3a的矩阵中给出的3×3的“迷宫老鼠”问题。我们将利用图8-1给出的解空间图来搜索迷宫。
从迷宫的入口到出口的每一条路径都与图8-1中从(1,1)到(3,3)的一条路径相对应。然而,图8-1中有些从(1,1)到(3,3)的路径却不是迷宫中从入口到出口的路径。
搜索从点(1,1)开始,该点是目前唯一的活节点,它也是一个E-节点。为避免再次走过这个位置,置maze(1,1)为1。从这个位置,能移动到(1,2)或(2,1)两个位置。对于本例,两种移动都是可行的,因为在每一个位置都有一个值0。假定选择移动到(1,2),maze(1,2)被置为1以避免再次经过该点。迷宫当前状态如图8-3b所示。这时有两个活节点(1,1)(1,2)。(1,2)成为E-节点。
图8-3迷宫
在图8-1中从当前E-节点开始有3个可能的移动,其中两个是不可行的,因为迷宫在这些位置上的值为1。唯一可行的移动是(1,3)。移动到这个位置,并置maze(1,3)为1以避免再次经过该点,此时迷宫状态为8-3c。
图8-1中,从(1,3)出发有两个可能的移动,但没有一个是可行的。所以E-节点(1,3)死亡,回溯到最近被检查的活节点(1,2)。在这个位置也没有可行的移动,故这个节点也死亡了。唯一留下的活节点是(1,1)。这个节点再次变为E-节点,它可移动到(2,1)。现在活节点为(1,1),(2,1)。继续下去,能到达点(3,3)。此时,活节点表为(1,1),(2,1),(3,1),(3,2),(3,3),这即是到达出口的路径。
下列程序是一个在迷宫中寻找路径的回溯算法。
bool FindPath( )
{// 寻找
您可能关注的文档
- [计算机]C 调试与异常处理.ppt
- [计算机]CRM二期设计.doc
- [计算机]Cisco NAC配置手册.pdf
- [计算机]DreamweaverCS5 官方教程 part 0004.pdf
- [计算机]ARTCAM_培训教材.pdf
- [计算机]Linux目录结构及文件.ppt
- [计算机]LINUX历史、现状、未来.ppt
- [计算机]GPU内部构架全解析号外篇.doc
- [计算机]OA办公自动化系统之公文流转分系统简介.pdf
- [计算机]After Effects特效及应用.doc
- 2024-2025学年小学科学大象版(2001)三年级下册教学设计合集.docx
- 2024-2025学年小学科学大象版(2017)二年级下册教学设计合集.docx
- 2024-2025学年小学科学大象版(2017)五年级上册教学设计合集.docx
- 2024-2025学年小学科学冀人版(2001)三年级上册教学设计合集.docx
- 2024-2025学年小学科学沪科技版(五四制)(2024)一年级上册教学设计合集.docx
- 2024-2025学年小学科学北京课改版(2005)四年级上册教学设计合集.docx
- 2024-2025学年小学科学冀人版(2001)三年级下册教学设计合集.docx
- 初中英语:风向标与风力等级的英语词汇应用报告论文.docx
- 2024-2025学年小学科学冀人版(2001)四年级下册教学设计合集.docx
- 2024-2025学年小学科学冀人版(2017)二年级下册教学设计合集.docx
最近下载
- 年产8万吨聚甲醛工艺的初步设计.docx
- 3D3S 基本操作手册.pdf
- 2019新疆生产建设兵团中考化学真题.doc VIP
- 8.铁路工程预算定额 路基工程宣贯讲义.ppt
- 房地产市场报告 -天朗2024年报【在时代洪流的弄潮中 尽显从容-把脉逆周期调解下大的北京房地产市场】.docx
- 【人教部编版】二年级上册语文课件:4《田家四季歌》第一课时(共27张PPT).pptx
- 年产25万吨合成氨合成工段工艺设计.docx
- 2023徐州市八年级下册期末物理试卷含答案 .pdf
- 毕业设计(论文)-反铲式挖掘机工作装置结构设计.doc
- 工程训练(广东工业大学)智慧树知到期末考试答案章节答案2024年广东工业大学.docx
文档评论(0)