第10章-搜索策略.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文档。上传文档
查看更多
第十章 搜索策略搜索策略是从问题的解空间中搜索问题解的方法,本章将介绍两种常见的搜索算法:回溯法和分支界限法。回溯法回溯法的应用分支界限法分支界限法的应用回溯法回溯法一种既带有系统性又带有跳跃性的搜索算法,它在包含问题所有解的空间树中按照深度优先的策略从根结点出发搜索解空间树。算法思想对解空间中任意一个结点,判断该结点是否不包含问题的解:不包含,则跳过以该结点为根的子树系统搜索,逐层向其祖先结点回溯;包含,则进入该子树并继续按深度优先的策略进行搜索。回溯法在求问题所有的解时,需要回溯到树根,且在解空间树中的所有结点全部搜索完成后结束。当仅求问题的任意一个解时,只需要搜索到问题的一个解就可以结束。问题的解空间问题的解空间与解空间树解空间由长度为n的0-1向量组成,该解空间包含了对变量的所有可能的0-1赋值。树根代表了在查找解之前的初始状态。树的第一层节点代表了对解的第二个分量所做的选择,以此类推。如果一个部分构造树(子树)仍然有可能导致一个完全解,我们说这个部分分解在树中的相应节点是有希望的,否则说是没希望的。叶子要么代表没希望的,要么代表算法找到完全解。 问题的解空间0-1背包问题(n种物品)【例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) }从根到叶路径上编码即解空间元素0-1背包问题的解空间树若取W=(16,15,15),P=(40,25,25),C=30 时间复杂度:O(2n)回溯策略的基本思想基本思想从开始结点(根结点)出发,以深度优先的方式搜索整个解空间:(1) 当前结点成为活结点及扩展结点;(2) 从当前扩展结点向纵深方向搜索并移至一个新结点,这个新结点就成为一个新的活结点及当前的扩展结点;(3) 若当前扩展结点不能向纵深移动则成死结点,回溯至最近的活结点—成为当前扩展结点;(4) 递归搜索,直至找到所要求的解或解空间中已无活结点时为止。 回溯策略的基本思想【例2】n?=?3的0-1背包问题。 设w={16, 15, 15}, v={45, 25, 25},c=30分析:(1) 从根结点A开始搜索(唯一的活结点及当前扩展结点)。(2) 从结点A沿纵深方向先移至结点B或结点C(以先选结点B为例),此时A和B是活结点,结点B成为当前的扩展结点。由于选取了w0,因此在结点B处剩余背包容量r?=?14,获取的价值为45。(3) 从结点B可移至结点D或结点E,由于移至结点D至少需要的背包容量为w1?=?15,而当前仅有的剩余容量r?=?14,因此移到结点D将导致一个不可行解;而移到结点E不需要背包容量,因而是可行的,此时结点E成为新的扩展结点,在结点E处,r?=?14,获取的价值为45。(4) 这时结点A、B和E是活结点。从结点E可移到结点J或结点K,类似地,移到结点J导致一个不可行的解,而移到结点K是可行的,于是结点K成为新的扩展结点。(5) 由于K是叶子结点,因此得到一个可行的解,即x?=?(1, 0, 0),获得的价值为45。 同理可获得其他可行解,从其中选择一个最优解作为问题最终解。回溯策略的基本思想运用回溯法解题的关键要素有以下三点(1) 针对给定的问题,定义问题的解空间;(2) 确定易于搜索的解空间结构;(3) 以深度优先方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。递归和迭代回溯可用递归函数实现回溯法,递归函数模板如下:void BackTrace(int t) { if(tn) Output(x); else for(int i = f (n, t); i = g (n, t); i++ ){ x[t] = h(i); if(Constraint(t) Bound (t)) BackTrace(t+1); }} //BackTrace说明:t表示递归深度,即当前扩展结点在解空间树的深度;n控制递归深度,即解空间树的高度。当t>n时,算法已搜索到一个叶子结点,此时函数Output(x)对得到的可行解x进行记录或输出处理。用f(n, t)和g(n, t)分别表示在当前扩展结点处未搜索过的子树的起始编号和终止编号;h(i)表示在当前扩展结点处x[t]?的第i个可选值;函数Constraint(t)和Bound(t)分别表示当前扩展结点处的约束函数和限界函数。递归和迭代回溯迭代回溯算法模板如下:void IterativeBackTrace(void) { int t = 1; while(t0) { if(f(n, t) = g( n, t)) for(int i = f(n, t); i = g(n, t); i

文档评论(0)

你找对了 + 关注
实名认证
文档贡献者

正版课件均可编辑 注意:其它人很多盗版P P T都是图片形式,买到请直接投诉退款!

1亿VIP精品文档

相关文档