第07章.限界剪枝法.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文档。上传文档
查看更多
《算法设计与分析》 第07章 限界剪枝法 基本思想 限界剪枝法与回溯法相似,也是对状态空间树进行搜索求解,不同的是限界剪枝法的求解目标是要找到使得某一目标函数极大或极小的一个解结点,即某种意义下的最优解。 在算法设计上,限界剪枝法不仅通过约束条件来控制搜索路径,还通过目标函数的限界来减少搜索规模;限界剪枝法在搜索时,通常先进行广度扩展,将满足约束条件且不越过目标函数的子结点加入到活结点表中等待搜索; 常见的活结点表有队列式(FIFO)、栈式(LIFO)和优先队列式(PQ); 限界剪枝法 最小耗费搜索法 求解以定义在状态空间树T的解结点集A上的耗费函数为目标函数的最优问题,即求解A中耗费最小的解结点。 设A中的结点x所需的耗费为D(x),在T上构造耗费函数: C(x) = min{D(y)|y∈Tx∩A} Tx∩A ≠{} C(x) = ∞ Tx∩A = {} Tx表示以x为根的子树; 易见,子结点的耗费函数值不小于父结点的耗费函数; 理想情况下,以耗费值作为优先级建立优先队列,按优先顺序扩展搜索,就可以很快找到具有最小求解耗费的解结点; 然而在实际情况中,通常是求解过程中才能得到求解的耗费,因此可以采用一个耗费的估计值~C(x)作为C(x)的近似解; 限界剪枝法 最小耗费搜索法 最小耗费搜索法的算法描述 设T为状态空间树的根结点;~C(x)为耗费估计函数;初始化优先队列Q; 计算~C(T),并将T入队; 循环,直到队列Q空(无解): 结点e出队; 若e是回答结点,则 输出解或求解路径,求解结束; 否则 检查e的所有子结点x: 若x满足约束条件,则 计算~C(x),并将x入队; 记录搜索路径; 当~C(x)满足:~C(x)≤C(x),C(x)单调,解结点的~C(x)=C(x)时,上述算法可以正确找到C(x)的最小耗费解; 限界剪枝法 最小耗费搜索法 15迷问题 用布局作为问题状态,用空格的移动来表述状态的演化; 用根结点到解结点的路径长度作为耗费函数; 而用根到当前结点的路径长度加上当前结点与目标解的差异量作为耗费估计函数; 限界剪枝法 最小耗费搜索法 15迷问题 布局结构描述 布局结点不仅包括数字位的分布情况,还包括已经推演的步数和与目标布局的差异,以及指向父结点的指针。 算法描述 初始化集合S={},记录曾经出现过的布局; 初始化优先队列Q,以布局的~C(x)作为权值; 起始布局入队,并记入S; 循环,直至队列空 布局T出队; 若T为目标布局,则从T倒推出移动步骤,求解结束; 将T的所有未处理的可推演布局入队,并记入S; 限界剪枝法 限界与剪枝 在解结点集合上定义目标函数F(x),求解解结点集上的离散最优化问题; 类似最小耗费搜索法,定义耗费函数C(x): C(x) = min{D(y)|y∈Tx∩A} Tx∩A≠{} C(x) = ∞ Tx∩A={} C(x)为单调非减函数; 同样地,由于C(x)无法做即时计算,引入估值函数~C(x),满足条件: ~C(x)≤C(x); 对解结点x,~C(x) = C(x); 限界剪枝法 限界与剪枝 为了进一步避免无效搜索,若能找到最优解的耗费上界U,即对于最优解结点x*,有C(x*)≤U,则: 在进行最小耗费搜索时,对于待展开的状态结点y,若~C(y)U,则由C(x)的单调性和~C(x)是C(x)的下界可知: U~C(y)≤C(y)≤C(x) x为解结点 即,在y的子树中不会包含所要求的最优解结点x*,因而可以放弃对该子树的搜索。 限界剪枝法 限界与剪枝 基于以上思想,引入耗费函数的上界函数u(x),满足:~C(x)≤C(x)≤u(x);和当前最小上界值U; 初始时令U=u(T),T为起始结点; 在符合约束条件的结点x入队前,检查,若~C(x)U,则该结点不入队(不激活); 在结点x入队时,检查,若u(x)U,则用u(x)更新U(使U动态单调下降); 在活动结点x出队后,检查,若~C(x)U,则不须对x进行扩展,避免无效搜索; 限界剪枝法 限界与剪枝 限界剪枝法的算法描述 设T为状态空间树的根结点;~C(x)为耗费估计函数; 初始化优先队列Q ,初始化U=u(T); 计算~C(T),并将T入队; 循环,直到队列Q空(无解): 结点e出队; 若e是回答结点,则 输出解或求解路径,求解结束; 否则,若~C(e)≤U,则 检查e的所有子结点x,若x满足约束条件,则 计算~C(x),若~C(x)≤U,则 将x入队,并计算u(x); 若u(x)U,则令U=u(x)

文档评论(0)

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

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

1亿VIP精品文档

相关文档