算法设计和分析-第8章-回溯法.pptxVIP

  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文档。上传文档
查看更多
第8章 回溯法;8.1 概 述 ; 复杂问题常常有很多的可能解,这些可能解构成了问题的解空间。 解空间也就是进行穷举的搜索空间,所以,解空间中应该包括所有的可能解。 确定正确的解空间很重要,如果没有确定正确的解空间就开始搜索,可能会增加搜索很多无用解,或者根本就搜索不到正确的解。;; 对于任何一个问题,可能解的表示方式和它相应的解释隐含了解空间及其大小。 例如,对于有n个物品的0/1背包问题,其可能解的表示方式可以有以下两种: (1)可能解由一个???等长向量组成,当物品i(1≤i≤n)装入背包时,解向量中包含分量i,否则,解向量中不包含分量i,当n=3时,其解空间是: { ( ), (1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3) } (2)可能解由一个等长向量{x1, x2, …, xn}组成,其中xi=1(1≤i≤n)表示物品i装入背包,xi=0表示物品i没有装入背包,当n=3时,其解空间是: {(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }; 为了用回溯法求解一个具有n个输入的问题,一般情况下,将其可能解表示为满足某个约束条件的等长向量X=(x1, x2, …, xn),其中分量xi (1≤i≤n)的取值范围是某个有限集合Si={ai1, ai2, …, aimi},所有可能的解向量构成了问题的解空间。 ;8.1.1 问题的解空间 ; 例 8皇后问题 。; 问题的解空间一般用解空间树(Solution Space Trees,也称状态空间树)的方式组织,树的根结点位于第1层,表示搜索的初始状态,第2层的结点表示对解向量的第一个分量做出选择后到达的状态,第1层到第2层的边上标出对第一个分量选择的结果,依此类推,从树的根结点到叶子结点的路径(也可能是根节点到任何一个树中结点,但不含搜索失败的结点),就构成了解空间的一个可能解。;对于n=3的0/1背包问题,其解空间树如图8.1.1-2所示,树中的8个叶子结点分别代表该问题的8个可能解。 ;解向量:由根结点到叶结点的路径所定义 ; 对于n=4的TSP问题,其解空间树如图8.1.1-4所示,树中的24个叶子结点分别代表该问题的24个可能解,例如结点5代表一个可能解,路径为1→2→3→4→1,长度为各边代价之和。 ; 树中的结点:求解过程的一个状态;8.1.2 回溯法的设计思想;例如,对于n=3的0/1背包问题,三个物品的重量为{20, 15, 10},价值为{20, 30, 25},背包容量为25,从图8.1.2所示的解空间树的根结点开始搜索,搜索过程如下: ---应用约束条件剪枝; 再如,对于n=4的TSP问题,其代价矩阵如图所示, ;2; 回溯法的搜索过程涉及的结点(称为搜索空间)只是整个解空间树的一部分,在搜索过程中,通常采用两种策略避免无效搜索: (1)用约束条件剪去得不到可行解的子树; (2)用目标函数剪去得不到最优解的子树。 这两类函数统称为剪枝函数(Pruning Function)。 需要注意的是,问题的解空间树是虚拟的,并不需要在算法运行时构造一棵真正的树结构,只需要存储从根结点到当前结点的路径。;针对所给问题,定义问题的解空间: 首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优或最终)解。 确定易于搜索的解空间结构: 问题的解空间结构通常以树的形式表示,常用的两类典型的解空间树是子集树和排列树。 以深度优先方式搜索解空间树,并在搜索过程中采用剪枝函数来避免无效搜索。;8.1.3 回溯法的求解过程 ;(1)如果X=(x1, x2, …, xi+1)是问题答案解,则输出这个解。如果问题只希望得到一个解,则结束搜索,否则继续搜索其他解; (2)如果X=(x1, x2, …, xi+1)是问题的部分解,则继续构造解向量的下一个分量; (3)如果X=(x1, x2, …, xi+1)既不是问题的部分解也不是问题的答案解,则存在下面两种情况: ① 如果xi+1= ai+1k不是集合Si+1的最后一个元素,则令xi+1= ai+1k+1,即选择Si+1的下一个元素作为解向量X的第i+1个分量; ② 如果xi+1= ai+1k是集合Si+1的最后一个元素,就回溯到X=(x1, x2, …, xi),选择Si的下一个元素作为解向量X的第i个分量,假设xi= aik,如果aik不是集合Si的最后一个元素,则令xi= aik+1;否则,就继续回

文档评论(0)

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

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

1亿VIP精品文档

相关文档