(精品)第五章2 图的搜索算法.ppt
《(精品)第五章2 图的搜索算法.ppt》由会员分享,可在线阅读,更多相关《(精品)第五章2 图的搜索算法.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章图的搜索算法图的搜索算法5 55 5 分支限界法分支限界法 5 55 51 1 分枝搜索算法分枝搜索算法 5 55 52 2 分枝分枝-限界搜索算法限界搜索算法 5 55 53 3 算法框架算法框架5 56 6 图的搜索算法小结图的搜索算法小结 5 55 51 1 分枝搜索算法分枝搜索算法 1 1基本思想基本思想 分支搜索法也是一种在问题解空间上进行尝试搜索算法。所谓分支搜索法也是一种在问题解空间上进行尝试搜索算法。所谓“分支分支”是采用广度优先的策略,依次生成是采用广度优先的策略,依次生成E-结点所有分支,也就结点所有分支,也就是所有的儿子结点。和回溯法一样,在生成的节点中,抛弃
2、那些不是所有的儿子结点。和回溯法一样,在生成的节点中,抛弃那些不满足约束条件(或者说不可能导出最优可行解)的结点,其余节点满足约束条件(或者说不可能导出最优可行解)的结点,其余节点加入活节点表。然后从表中选择一个节点作为下一个加入活节点表。然后从表中选择一个节点作为下一个E-节点。选择节点。选择下一个下一个E-节点的方式不同导致几种不同的分支搜索方式:节点的方式不同导致几种不同的分支搜索方式:1FIFO搜索 2LIFO搜索 3优先队列式搜索 上一页 下一页 返回首页 5.5.2 5.5.3 5.6552分枝分枝-限界搜索算限界搜索算法法 【例【例2】有两艘船,有两艘船,n n 个货箱。第一艘船
3、的载重量是个货箱。第一艘船的载重量是c1c1,第二艘第二艘船的载重量是船的载重量是c2c2,wi wi 是货箱是货箱i i 的重量的重量,且且 w 1+w2+wnc1+c2c1+c2。我们希望确定是否有一种可将所有我们希望确定是否有一种可将所有n n 个货箱全部装船的方法。若有个货箱全部装船的方法。若有的话,找出该方法的话,找出该方法 FIFO限界搜索算法限界搜索算法优先队列式分支限界法优先队列式分支限界法上一页 下一页 返回首页 5.5.1 5.5.3 5.6MaxLoadingMaxLoading(c1);(c1);if(s-if(s-bestw bestw=c2);=c2);print(
4、print(“The first ship loadingThe first ship loading”,bestw bestw,“chosechose:”););for(i=1;i=n;i+)for(i=1;i=n;i+)if(if(bestxbestxi=1i=1)print(i print(i,“,”););print(print(“换换行符行符 The second ship loadingThe second ship loading”,s-,s-bestwbestw,“chosechose”););for(i=1;i=n;i+)for(i=1;i 30+50=80 bestwbes
5、tw,也入队;也入队;3 3)结点结点B B变为变为E-E-结点扩充结点扩充D D入队,入队,bestwbestw=40=40;结点结点E E的装载上界为的装载上界为60 60 bestwbestw,也入队;也入队;4 4)结点结点C C变为变为E-E-结点扩充结点扩充F F入队,入队,bestwbestw仍为仍为4040;结点结点G G的装载上界为的装载上界为50 50 bestwbestw,也入队;也入队;5 5)结点结点D D变为变为E-E-结点,叶结点结点,叶结点H H超过容量,超过容量,叶结点叶结点I I的装载为的装载为4040,bestwbestw仍为仍为4040;6 6)结点结点
6、E E变为变为E-E-结点,叶结点结点,叶结点J J装载量为装载量为6060,bestwbestw为为6060;叶结点叶结点K K被剪掉;被剪掉;7 7)结点结点F F变为变为E-E-结点,叶结点结点,叶结点L L超过容量,超过容量,bestwbestw为为6060;叶结点叶结点M M被剪掉;被剪掉;8 8)结点结点G G变为变为E-E-结点,叶结点结点,叶结点N N、O O都被剪掉;都被剪掉;此时队列空算法结束。此时队列空算法结束。LC-LC-搜索的过程如下:搜索的过程如下:1 1)初始队列中只有结点初始队列中只有结点A A;2 2)结点结点A A变为变为E-E-结点扩充结点扩充B B入堆,
7、入堆,bestwbestw=10=10;结点结点C C的装载上界为的装载上界为30+50=80 30+50=80 bestwbestw,也入堆;堆中也入堆;堆中B B上界为上界为9090在优先队列首。在优先队列首。3 3)结点结点B B变为变为E-E-结点扩充结点扩充D D入堆,入堆,bestwbestw=40=40;结点结点E E的装载上界为的装载上界为60 60 bestwbestw,也入堆;此时堆中也入堆;此时堆中D D上界为上界为9090为优先队列首。为优先队列首。4 4)结点结点D D变为变为E-E-结点,叶结点结点,叶结点H H超过容量,叶结点超过容量,叶结点I I的装载为的装载为
8、4040入堆,入堆,bestw bestw仍为仍为4040;此时堆中;此时堆中C C上界为上界为8080为优先队列首。为优先队列首。5 5)结点结点C C变为变为E-E-结点扩充结点扩充F F入堆,入堆,bestwbestw仍为仍为4040;结点结点G G的装载上界为的装载上界为50 50 bestwbestw,也入堆;此时堆中也入堆;此时堆中E E上界为上界为6060为优先队列首。为优先队列首。6 6)结点结点E E变为变为E-E-结点,叶结点结点,叶结点J J装载量为装载量为6060入堆,入堆,bestwbestw变为变为6060;叶结点叶结点K K上界为上界为1010bestwbestw
9、被剪掉;此时堆中被剪掉;此时堆中J J上界为上界为6060为优先队列首。为优先队列首。7 7)结点结点J J变为变为E-E-结点,扩展的层次为结点,扩展的层次为4 4算法结束。算法结束。虽然此时堆并不空,但可以确定已找到了最优解。虽然此时堆并不空,但可以确定已找到了最优解。上一页 下一页 返回首页 5.5.1 5.5.3 5.6FIFO限限界界算算法法搜搜索索解解空空间间的的过过程程是是按按图图5-26子子集集树树中中字字母母序序进进行的,而行的,而优优先先队队列限界搜索解空列限界搜索解空间间的的过过程是:程是:A-B-D-C-E-J看看了了上上面面的的例例子子大大家家会会发发现现,优优先先队
10、队列列法法扩扩展展结结点点的的过过程程,一开始一开始实际实际是在是在进进行行类类似似“深度深度优优先先”的搜索。的搜索。553算法框架算法框架 上上一一小小节节的的例例子子是是求求最最大大值值的的最最优优化化问问题题,下下面面我我们们以以求求找找最小成本的最优化问题,给出最小成本的最优化问题,给出FIFO分支搜索算法框架。分支搜索算法框架。假假定定问问题题解解空空间间树树为为T,T至至少少包包含含一一个个解解结结点点(即即答答案案结结点点)。u为为当当前前的的最最优优解解,初初值值为为一一个个较较大大的的数数;E表表示示当当前前扩扩展展的的活活结结点点,x为为E的的儿儿子子,s(x)为为结结点
11、点x下下界界函函数数,当当其其值值比比u大大时时,不不可可能能为为最最优优解解,不不继继续续搜搜索索此此分分支支,该该结结点点不不入入队队;当当其其值值比比u小小时时,可可能能达达到到最最优优解解,继继续续搜搜索索此此分分支支,该该结结点点入入队队;cost(X)为当前叶结点所在分支的解。为当前叶结点所在分支的解。算法框架如下:算法框架如下:上一页上一页 下一页下一页 返回首页返回首页 5.5.15.5.1 5.5.25.5.2 5.65.62 2):):上一页 下一页 返回首页 5.5.1 5.5.2 5.6search(T)/为找出最小成本答案结点检索为找出最小成本答案结点检索T。leaf
12、=0;初始化队;初始化队;ADDQ(T););/根结点入队根结点入队 parent(E)=0;/记录扩展路径,当前结点的父结点记录扩展路径,当前结点的父结点while(队不空)队不空)DELETEQ(E)/队首结点出队为新的队首结点出队为新的E结点;结点;for(E的每个儿子的每个儿子X)if(s(X)u)/当是可能的最优解时入队当是可能的最优解时入队ADDQ(X););parent(X)=E;if(X是解结点是解结点)/x为叶结点为叶结点U=min(cost(X),),u);leaf=x;/方案的叶结点存储在方案的叶结点存储在leaf中中3 3):):上一页 下一页 返回首页 5.5.1 5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品第五章2 图的搜索算法 精品 第五 搜索 算法
限制150内