- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析教案 第07章.限界剪枝法
第 07 章 限 界 剪 枝 法 《算法设计与分析》第07章 限界剪枝法 基本思想 2、启发式搜索 3、提前剪去不含最优解的分枝 1、以回溯为基础,求最优解 最小耗费搜索法 x x y2 y1 D(y2) C(x) = min{D(y)|y∈Tx∩A} D(y1) C(x) = ∞ 最小耗费搜索法 10 5 12 7 14 9 17 最小耗费搜索法 10 5 12 7 14 9 17 5 5 ∞ 14 9 9 ∞ 14 5 ∞ 10 10 ∞ ∞ 5 ∞ ∞ ∞ 最小耗费搜索法 下界估值函数~C(x) ~C(x)是C(x)的下界估值 ~C(x)可即时计算 当x为解结点时,~C(x)=C(x)=D(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)的最小耗费解; 对活结点表中的任一结点x,有~C(e)≤~C(x), 对x分枝中的任一解结点y,有~C(x)≤C(y)=D(y), 又知:~C(e)=C(e)=D(e),则D(e)≤D(y)。 最小耗费搜索法 最小耗费搜索法 15迷问题 用布局作为问题状态,用空格的移动来表述状态的演化; 用根结点到解结点的路径长度作为耗费函数; 而用根到当前结点的路径长度加上当前结点与目标解的差异量作为耗费估计函数; 13 10 9 8 14 11 6 7 12 5 2 15 4 3 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 最小耗费搜索法 最小耗费搜索法 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)