算法设计与分析回溯法教学课件PPT.pptVIP

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析回溯法教学课件PPT

第五章 回溯法 引言 在程序设计中,有很多问题是无法运用某种公式推导或采用循环的方法来求解的。假如完成某一件事需要经过若干步骤,而每一步又都有若干种可能的方案供选择,完成这件事就有许多方法。当需要在其中找出满足条件的最优解时,无法根据某些确定的计算法则,而是利用试探和回溯的搜索策略。具有限界函数的深度优先生成法称为回溯法,用该方法求解问题时会按选优条件向前搜索,即系统搜索一个问题的所有解或任一解,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,既带有系统性又带有跳跃性。 5.1 回溯法基础 5.1.1回溯法的基本思想 先定义问题的解空间,然后在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先的策略进行搜索。这种以深度优先的方式系统地搜索问题解的算法为回溯法,它适用于求解解空间较大的问题。整个试探搜索的过程是由计算机完成的,所以对于搜索试探要避免重复循环,即要对搜索过的结点做标记。 可见,回溯法就是“试探着走”。如果尝试不成 功则退回一步,再换一个办法试试。反复进行 这种试探性选择与返回纠错过程,直到求出问 题的解为止。 5.1.2 回溯法解空间 1.问题的解空间 (1)解空间概念 问题的解向量 问题的解空间 问题的可行解 问题的最优解 显约束 隐约束 5.1.2 回溯法解空间 算法5.1 用回溯法搜索子集树的一般算法框架 void backtrack (int t) { if (tn) output(x); else for (int i=0;i=1;i++) { x[t]=i; if (legal(t)) backtrack(t+1); } } 5.1.2 回溯法解空间 算法5.2 用回溯法搜索排列树的算法框架 void backtrack (int t) { if (tn) output(x); else for (int i=t;i=n;i++) { swap(x[t], x[i]); if (legal(t)) backtrack(t+1); swap(x[t], x[i]); } } 5.1.2 回溯法解空间 2.生成问题解空间的基本状态 扩展结点 活结点 死结点 深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)。 5.1.2 回溯法解空间 3.回溯法搜索 确定了解空间的组织结构后,回溯法就从开始结点(根结点)出发,以深度优先搜索的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前的扩展结点就成为死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法即以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。 剪枝函数 一是用约束函数 二是用限界法 5.1.2 回溯法解空间 例5.2 0-1背包问题的解空间树及其搜索过程。 问题描述:物品种数n=3,背包容量C=20,物品价值(p1,p2,p3)=(20,15,25),物体重量(w1,w2,w3)=(10,5,15),求X=(x1,x2,x3)使背包价值最大? 问题分析: 0-1背包问题的解空间树及其搜索过程如图5-3所示。 5.1.3 回溯算法实现 1.实现回溯法的算法 回溯法是对解空间树的深度优先搜索法,通常有两种实现的算法。 递归回溯:采用递归的

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档