第五章 回溯法1.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 回溯法1

第五章 回溯法 主讲:田小霞 学习要点 理解回溯法的深度优先搜索策略。 掌握用回溯法解题的算法框架 (1)递归回溯最优子结构性质 (2)迭代回溯贪心选择性质 (3)子集树算法框架 (4)排列树算法框架 通过应用范例学习回溯法的设计策略。 (1)装载问题; (2)批处理作业调度; (3)符号三角形问题 (4)n后问题; (5)0-1背包问题; (6)最大团问题; (7)图的m着色问题 (8)旅行售货员问题 (9)圆排列问题 (10)电路板排列问题 (11)连续邮资问题 问题的解空间 回溯法的基本步骤: (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 常用剪枝函数: 用约束函数在扩展结点处剪去不满足约束的子树; 用限界函数剪去得不到最优解的子树。 关于复杂性: 用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为O(h(n))。而显式地存储整个解空间则需要O(2h(n))或O(h(n)!)内存空间。 0-1背包问题 n=3, C=30, w={16, 15, 15}, v={45, 25, 25} 开始时,Cr=C=30,V=0,A为唯一活结点,也是当前扩展结点 扩展A,先到达B结点 Cr=Cr-w1=14,V=V+v1=45 此时A、B为活结点,B成为当前扩展结点 扩展B,先到达D Crw2,D导致一个不可行解,回溯到B 再扩展B到达E 扩展A,先到达B结点 再扩展B到达E(续) E可行,此时A、B、E是活结点,E成为新的扩展结点 扩展E,先到达J Crw3,J导致一个不可行解,回溯到E 再次扩展E到达K 由于K是叶结点,即得到一个可行解x=(1,0,0),V=45 K不可扩展,成为死结点,返回到E E没有可扩展结点,成为死结点,返回到B B没有可扩展结点,成为死结点,返回到A A再次成为扩展结点,扩展A到达C Cr=30,V=0,活结点为A、C,C为当前扩展结点 扩展C,先到达F Cr=Cr-w2=15,V=V+v2=25,此时活结点为A、C、F,F成为当前扩展结点 扩展F,先到达L Cr=Cr-w3=0,V=V+v3=50 L是叶结点,且5045,皆得到一个可行解x=(0,1,1),V=50 L不可扩展,成为死结点,返回到F A再次成为扩展结点,扩展A到达C(续1) 扩展C,先到达F(续) 再扩展F到达M M是叶结点,且2550,不是最优解 M不可扩展,成为死结点,返回到F F没有可扩展结点,成为死结点,返回到C A再次成为扩展结点,扩展A到达C(续2) 再扩展C到达G Cr=30,V=0,活结点为A、C、G,o为当前扩展结点 扩展G,先到达N,N是叶结点,且2550,不是最优解,又N不可扩展,返回到G 再扩展G到达O,O是叶结点,且050,不是最优解,又O不可扩展,返回到G G没有可扩展结点,成为死结点,返回到C C没有可扩展结点,成为死结点,返回到A A没有可扩展结点,成为死结点,算法结束,最优解X=(0,1,1),最优值V=50 旅行售货员问题 问题描述:某售货员要到若干城市去推销商品,一直各城市之间的路程,他要选定一条从驻地出发,经过每个城市一遍,最后回到住地的路线,使总的路程最短 该问题是一个NP完全问题, 有(n-1)!条可选路线 最优解(1,3,2,4,1),最优值25 回溯法的基本思想 1、确定问题的解空间 子集树问题:装载问题、符号三角形问题、0-1背包问题、最大团问题 排列树问题:批处理作业调度、n后问题、旅行售货员问题、圆排列问题、电路板排列问题 其他:图的m着色问题 2、找出适当的剪枝函数 约束函数 限界函数 3、以深度优先的方式搜索解空间 递归回溯 迭代回溯 装载问题 有一批共n个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量为wi,且 算法设计 解空间:子集树 可行性约束函数:剪去不满足约束条件 3.上界函数 Z是子集树第i层的当前扩展结点。Cw是当前载重量,bestw是当前最优载重量,r是剩余集装箱的重量。若cw+rbestw时,剪去Z的右子树。 4.构造最优的解 作业 用回溯法求解0-1背包问题的空间树(n=5,c=6,w={2,2,6,5,4}.v={6,3,5,4,6}),并简单分析其复杂性。 写出用回溯法搜索子集树的一般算法。 * 有许多问题,当需要找出它的解集或者要求回答什

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档