第5节 回溯法.pptx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 第5章 回溯法(BackTracking) 回溯法和穷举法 2 穷举法应用:有限离散问题总可以用穷举法求得问题的全部 若取W= (16,15, 15), P= (40,25, 25), C=30 穷举法求解相当于分别计算每个可能解,再求最优解 例如 0-1背包问题:取N=3 , 问题所有可能的解为(解空间): (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1) 时间复杂性: O(2n) 穷举法的改进 3 对于某些组合难题的较大实例,我们可以用穷举法求解,但穷举法的规模较大,所以我们对它进行改进,提出了回溯法和分支限界法两种算法设计技术。 它们每次只构造候选解的一个分量,然后评估这个部分构造解:如果加上剩下的分量也不可能求得一个解,就绝不会生成剩下的分量。 他们是以构造一棵解空间树为基础的,树的结点反映了对一个部分解做出的特定选择,如果可以保证,结点子孙所对应的选择不可能得出问题的一个解,两种技术都会立即停止处理这个结点。 两种技术的区别在于他们能处理的问题类型不同,分支限界法只能应用于最优问题,而回溯法可以搜索任何问题的所有解和任一解。 回溯法 4 有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。 1 问题的解空间 5 用回溯法解问题时,应明确定义问题的解空间。问题的解空间至少应包含问题的一个(最优)解。 问题的解向量:回溯法希望一个问题的解能够表示成一个n元式(x1,x2,…,xn)的形式。 显约束:对分量xi的取值限定。 隐约束:为满足问题的解而对不同分量之间施加的约束。 解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。 注意:同一个问题可以有多种表示,有些表示方法更简单,所需表示的状态空间更小(存储量少,搜索方法简单)。 例: 6 对于有n种可选物品的0-1背包问题,其解空间由长度为n的0-1向量组成。 该解空间包含对变量的所有可能的0-1赋值。 当n=3时,其解空间是: {(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)} 7 定义了问题的解空间后,还应将解空间很好的组织起来,使得能用回溯法方便地搜索整个解空间。 通常将解空间组织成树或图的形式。 例如n=3的0-1背包问题,可用下面的完全二叉树表示其解空间。 2 回溯法的基本思想 8 确定了解空间的组织结构后,回溯法从开始结点(根结点)出发,以深度优先方式搜索整个解空间。 这个开始结点称为活结点,同时也成为当前的扩展结点。 在当前扩展结点处,搜索向纵深方向移至一个新结点。这个新结点成为新的活结点,并成为当前扩展结点。 如果在当前扩展结点处不能再向纵深方向移动,则当前扩展结点就成为死结点。此时,应往回移动(回溯)至最近的活结点处,并使这个活结点成为当前扩展结点。 回溯法以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。 一个自身已生成但其儿子还没有全部生成的结点 一个正在产生儿子的结点 一个所有儿子已经产生的结点 例:0-1背包问题 9 n=3,w=[16,15,15],p=[45,25,25],c=30 A B E K C K 对应一个可行解X={1,0,0} n=3,树高h=4 共有2n=8个叶节点(解向量) 例:旅行售货员问题 10 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最短(或最小)。 11 设G=(V,E )是一个带权图。图中各边的权值为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。旅行售货员问题要在图G中找出费用最小的周游路线。 实例:4个城市 共有6条周游路线: (1,2,4,3,1) 66 (1,2,3,4,1) 59 (1,3,2,4,1) 25 (1,3,4,2,1) 66 (1,4,2,3,1) 25 (1,4,3,2,1) 59 12 旅行售货员问题的解空间可以组织成一棵树,从树的根结点到任一叶结点的路径定义了图G的一条周游路线。 A B D H N

文档评论(0)

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

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

1亿VIP精品文档

相关文档