算法设计与分析第5章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 重排原理 对于许多问题而言,在搜索试探时选取x[i]的值顺序是任意的。在其它条件相当的前提下,让可取值最少的x[i]优先。从图中关于同一问题的2棵不同解空间树,可以体会到这种策略的潜力。 图(a)中,从第1层剪去1棵子树,则从所有应当考虑的3元组中一次消去12个3元组。对于图(b),虽然同样从第1层剪去1棵子树,却只从应当考虑的3元组中消去8个3元组。前者的效果明显比后者好。 (a) (b) 课后作业 习题 5-14,5-16,5-18,5-27,5-29 * * * 欢迎辞 * 举例背包问题就可以用回溯法。 * 这里描述深度优先的搜索方式,先具体化搜索顺序,再以递归的方法给出,然后细化为最具体的顺序。由于该空间不是事先存在的,而是我们设想的,因此要生成这个空间,由于这个空间的规模是2的n次方,太大,所以最好的方式是用到这个结点再生成这个结点,如果还有用,就保留着,如果没用了,就删除。接下来用活结点,扩展结点来描述搜索顺序。给出深度优先方法与广度优先方法的定义。并突出内存的分配。 * 两种顺序的本质区别就是是否一下子把儿子结点都扩展出来。还是一个一个解决。这导致了内存中保存的内容不一样。 (递归回溯的难度在于:这个回溯算法是如何实现回溯的。) 理解深度优先的搜索过程就是逐个子树的深度优先搜索过程! 如果学生仍然不能理解,方法是分析递归过程,观察如何回溯。 * 难点:为什么递归可以实现回溯?为什么进入右子树做一个上界判断,进入左子树不需要?为什么做了上界判断后,到达一个叶节点时,就是当前找到的最好解。为什么一个数组的存储空间就够了? 第一次课已经讲明了回溯法的基本思想,但是程序框架学生难以理解。所以第二节课重点是程序,只做递归回溯的理解。本节课只讲装载问题的递归回溯程序。步骤如下: 1、回顾回溯法基本过程; 2、分析深度优先的搜索就是递归深度优先搜索?; 3、看理解子集树的算法框架; 4、装载问题的递归回溯解法,注意不断改进的细节,包含往左走和往右走限制条件的不同。 5、注意存储结构,只需要一个数组,递归到哪个子树的根节点,数组中的值就扩展到这个元素。 如果有时间,就将perm程序,为下节课做准备。 课后注释:深度优先的搜索过程,把树旋转90度,画出深度优先的扩展过程,学生容易接受:先生成一个解(页节点),再下一个解(叶节点),这个过程如何变成递归呢?实际上,从第一个叶节点来看,输出后就是其兄弟节点,这就是先左子树,后右子树,当第二个叶节点输出后,以D为根的子树搜索完毕,即B的左子树访问完毕,接下来就是其右子树了,因此,这个过程就是先左子树,后右子树,如果写成递归程序,其访问过程就是深度优先的访问过程。 问题:学生从递归程序,难以理解这个深度优先的过程,回溯过程难以理解: 答:分析递归的程序执行过程,就能弄明白这个回溯过程。 问:能否一下就能把这个深度优先的搜索过程用递归的思路来梳理? 答: 问:为什么进入右子树之前判断上界是否太小,而进入左子树之前不需要? 答:如果都没进入右子树,则每个物品都取,如果进入过左子树,则已经做过判断。因此,进入到每一个节点,都已经做过上界判断了。 问:为什么到达一个叶节点的时候就是当前找到的最好解? 答:答案与前面相同,因为做过上界判断,到达每个节点,都做过上界判断。 * * 在每个节点处分为两种情况: 1)是叶节点,则返回; 2)深度优先访问儿子节点 逐个访问子树 例如,访问B的第二个子树,如图, 1,3,(2,4,5),因此,只需2,3对调,就剩下(2,4,5),继续对(2,4,5)递归排列 课后积累:存储结构只用一个数组实现的细节。因为内存中始终只需要保留从根节点到当前节点的取值,这条路径是唯一的。 可以写一个递归框架,再展开,观察数组取值变化。 * 延续子集树的递归框架,在分治中,巧妙处理分支个数。 * 第5章 回溯法 * 学习要点 理解回溯法的深度优先搜索策略。 掌握用回溯法解题的算法框架 (1)递归回溯最优子结构性质 (2)迭代回溯贪心选择性质 (3)子集树算法框架 (4)排列树算法框架 * 通过应用范例学习回溯法的设计策略。 (1)装载问题; (2)批处理作业调度; (3)符号三角形问题 (4)n后问题; (5)0-1背包问题; (6)最大团问题; (7)图的m着色问题 (8)旅行售货员问题 (9)圆排列问题 (10)电路板排列问题 (11)连续邮资问题 * * 有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算

文档评论(0)

today-is-pqsczlx + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档