第6讲-分支界限法分析优秀PPT.ppt
《第6讲-分支界限法分析优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第6讲-分支界限法分析优秀PPT.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1 1页页第第6章章 分支限界法分支限界法1 1广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2 2页页学习要点学习要点理解分支限界法的剪枝搜寻策略。理解分支限界法的剪枝搜寻策略。驾驭分支限界法的算法框架驾驭分支限界法的算法框架(1)队列式)队列式(FIFO)分支限界法分支限界法(2)优先队列式分支限界法)优先队列式分支限界法 2 2广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第3 3页页学习要点学习要点通过应用范例学习分支限界法的设计策略。通过应用范例学习分支限界法的设计策略。(1)单源最短路径问题)单源最短路径问题(2)装载问题;
2、)装载问题;(3)布线问题)布线问题(4)0-1背包问题;背包问题;(5)最大团问题;)最大团问题;(6)旅行售货员问题)旅行售货员问题(7)电路板排列问题)电路板排列问题(8)批处理作业调度问题)批处理作业调度问题3 3广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第4 4页页6.1分支限界法的基本思想分支限界法的基本思想分支限界法与回溯法分支限界法与回溯法(1)求解目标:回溯法的求解目标是找出解空间树)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的全部解,而分支限界法的求解目中满足约束条件的全部解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是
3、在满足约标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。束条件的解中找出在某种意义下的最优解。(2)搜寻方式的不同:回溯法以深度优先的方式)搜寻方式的不同:回溯法以深度优先的方式搜寻解空间树,而分支限界法则以广度优先或以最搜寻解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜寻解空间树。小耗费优先的方式搜寻解空间树。4 4广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第5 5页页6.1分支限界法的基本思想分支限界法的基本思想 分支限界法常以广度优先或以最小耗费(最大分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜寻问
4、题的解空间树。效益)优先的方式搜寻问题的解空间树。此后,从活结点表中取下一结点成为当前扩展此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程始终持结点,并重复上述结点扩展过程。这个过程始终持续到找到所需的解或活结点表为空时为止。续到找到所需的解或活结点表为空时为止。在分支限界法中,每一个活结点只有一次机会成在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产为扩展结点。活结点一旦成为扩展结点,就一次性产生其全部儿子结点。在这些儿子结点中,导致不行行生其全部儿子结点。在这些儿子结点中,导致不行行解或导致非最优解的儿子结点被舍弃,其余
5、儿子结点解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。被加入活结点表中。5 5广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第6 6页页6.1分支限界法的基本思想分支限界法的基本思想常见的两种分支限界法常见的两种分支限界法(1 1)队列式)队列式(FIFO)(FIFO)分支限界法分支限界法 依据队列先进先出(依据队列先进先出(FIFOFIFO)原则选取下一)原则选取下一个节点为扩展节点。个节点为扩展节点。(2 2)优先队列式分支限界法)优先队列式分支限界法 依据优先队列中规定的优先级选取优先级依据优先队列中规定的优先级选取优先级最高的节点成为当前扩展
6、节点。最高的节点成为当前扩展节点。6 6广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第7 7页页6.2单源最短路径问题单源最短路径问题1.问题描述问题描述 下面以一个例子来说明单源最短路径问题:下面以一个例子来说明单源最短路径问题:在在下图所给的有向图下图所给的有向图G G中,每一边都有一个非负边权。中,每一边都有一个非负边权。要求图要求图G G的从源顶点的从源顶点s s到目标顶点到目标顶点t t之间的最短路径。之间的最短路径。7 7广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第8 8页页6.2单源最短路径问题单源最短路径问题1.问题描述
7、问题描述 下图是用优先队列式分支限界法解有向图下图是用优先队列式分支限界法解有向图G G的单的单源最短路径问题产生的解空间树。其中,每一个结点源最短路径问题产生的解空间树。其中,每一个结点旁边的数字表示该结点所对应的当前路长。旁边的数字表示该结点所对应的当前路长。8 8广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第9 9页页2.算法思想算法思想 解单源最短路径问题的优先队列式分支限界法用解单源最短路径问题的优先队列式分支限界法用一微小堆来存储活结点表。其优先级是结点所对应的一微小堆来存储活结点表。其优先级是结点所对应的当前路长。当前路长。算法从图算法从图G G的源顶
8、点的源顶点s s和空优先队列起先。结点和空优先队列起先。结点s s被扩被扩展后,它的儿子结点被依次插入堆中。此后,算法从堆展后,它的儿子结点被依次插入堆中。此后,算法从堆中取出具有最小当前路长的结点作为当前扩展结点,并中取出具有最小当前路长的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的全部顶点。假如从当前依次检查与当前扩展结点相邻的全部顶点。假如从当前扩展结点扩展结点i i到顶点到顶点j j有边可达,且从源动身,途经顶点有边可达,且从源动身,途经顶点i i再再到顶点到顶点j j的所相应的路径的长度小于当前最优路径长度,的所相应的路径的长度小于当前最优路径长度,则将该顶点作为活结点插入到
9、活结点优先队列中。这个则将该顶点作为活结点插入到活结点优先队列中。这个结点的扩展过程一干脆着到活结点优先队列为空时为止。结点的扩展过程一干脆着到活结点优先队列为空时为止。9 9广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1010页页3.剪枝策略剪枝策略 在在算算法法扩扩展展结结点点的的过过程程中中,一一旦旦发发觉觉一一个个结结点点的的下下界界不不小小于于当当前前找找到到的的最最短短路路长长,则则算算法法剪剪去去以以该该结结点为根的子树。点为根的子树。在在算算法法中中,利利用用结结点点间间的的限限制制关关系系进进行行剪剪枝枝。从从源源顶顶点点s动动身身,2条条不不同
10、同路路径径到到达达图图G的的同同一一顶顶点点。由由于于两两条条路路径径的的路路长长不不同同,因因此此可可以以将将路路长长长长的的路路径径所所对对应应的树中的结点为根的子树剪去。的树中的结点为根的子树剪去。1010广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1111页页6.2单源最短路径问题单源最短路径问题 while(true)for(int j=1;j=n;j+)if(cE.ijinf)&(E.length+cE.ijdistj)/顶顶点点i到到顶顶点点j可达,且可达,且满满足限制足限制约约束束 distj=E.length+cE.ij;prevj=E.i;/加
11、入活加入活结结点点优优先先队队列列 MinHeapNode N;N.i=j;N.length=distj;H.Insert(N);try H.DeleteMin(E);/取下一取下一扩扩展展结结点点 catch(OutOfBounds)break;/优优先先队队列空列空 顶点顶点I I和和j j间有边,且间有边,且此路径长小于原先从此路径长小于原先从原点到原点到j j的路径长的路径长 1111广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1212页页6.3 装载问题装载问题1.问题描述有有一一批批共共个个集集装装箱箱要要装装上上2 2艘艘载载重重量量分分别别为为C1
12、C1和和C2C2的的轮轮船船,其中集装箱其中集装箱i i的重量为的重量为WiWi,且且装载问题要求确定是否有一个合理的装载方案可将这装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这个集装箱装上这2 2艘轮船。假如有,找出一种装载方案。艘轮船。假如有,找出一种装载方案。简简洁洁证证明明:假假如如一一个个给给定定装装载载问问题题有有解解,则则接接受受下下面面的策略可得到最优装载方案。的策略可得到最优装载方案。(1)(1)首先将第一艘轮船尽可能装满;首先将第一艘轮船尽可能装满;(2)(2)将剩余的集装箱装上其次艘轮船。将剩余的集装箱装上其次艘轮船。1212广州高校华软软件学院广州高校华软
13、软件学院 算法分析与设计算法分析与设计第第1313页页6.3 装载问题装载问题2.队列式分支限界法队列式分支限界法 在在算算法法的的whilewhile循循环环中中,首首先先检检测测当当前前扩扩展展结结点点的的左左儿儿子子结结点点是是否否为为可可行行结结点点。假假如如是是则则将将其其加加入入到到活活结结点点队队列列中中。然然后后将将其其右右儿儿子子结结点点加加入入到到活活结结点点队队列列中中(右右儿儿子子结结点点确确定定是是可可行行结结点点)。2 2个个儿儿子子结结点点都都产产生生后后,当前扩展结点被舍弃。当前扩展结点被舍弃。活活结结点点队队列列中中的的队队首首元元素素被被取取出出作作为为当当
14、前前扩扩展展结结点点,由由于于队队列列中中每每一一层层结结点点之之后后都都有有一一个个尾尾部部标标记记-1-1,故故在在取取队队首首元元素素时时,活活结结点点队队列列确确定定不不空空。当当取取出出的的元元素素是是-1-1时时,再再推推断断当当前前队队列列是是否否为为空空。假假如如队队列列非非空空,则则将将尾尾部部标标记记-1-1加加入入活活结结点点队队列列,算算法法起起先先处处理理下下一一层层的的活活结点。结点。1313广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1414页页2.队列式分支限界法队列式分支限界法while(true)/检查左儿子结点检查左儿子结点
15、if(Ew+wi=c)/xi=1 EnQueue(Q,Ew+wi,bestw,i,n);/右儿子结点总是可行的右儿子结点总是可行的 EnQueue(Q,Ew,bestw,i,n);/xi=0 Q.Delete(Ew);/取下一扩展结点取下一扩展结点 if(Ew=-1)/同层结点尾部同层结点尾部 if(Q.IsEmpty()return bestw;Q.Add(-1);/同层结点尾部标记同层结点尾部标记 Q.Delete(Ew);/取下一扩展结点取下一扩展结点 i+;/进入下一层进入下一层 1414广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1515页页6.3 装载
16、问题装载问题3.算法的改进算法的改进 节点的左子树表示将此集装箱装上船,右子树表示节点的左子树表示将此集装箱装上船,右子树表示不将此集装箱装上船。设不将此集装箱装上船。设bestwbestw是当前最优解;是当前最优解;ewew是当是当前扩展结点所相应的重量;前扩展结点所相应的重量;r r是剩余集装箱的重量。则是剩余集装箱的重量。则当当ew+rew+r bestwbestw时,可将其右子树剪去,因为此时若要船时,可将其右子树剪去,因为此时若要船装最多集装箱,就应当把此箱装上船。装最多集装箱,就应当把此箱装上船。另外,为了确保右子树成功剪枝,应当在算法每另外,为了确保右子树成功剪枝,应当在算法每一
17、次进入左子树的时候更新一次进入左子树的时候更新bestwbestw的值。的值。1515广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1616页页3.算法的改进算法的改进/检查左儿子结点检查左儿子结点 Type wt=Ew+wi;/左儿子结点的重量左儿子结点的重量 if(wt bestw)bestw=wt;/加入活结点队列加入活结点队列 if(i bestw&i 0;j-)bestxj=bestE-LChild;bestE=bestE-parent;1818广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第1919页页6.3 装载问题装载问题5
18、.优先队列式分支限界法优先队列式分支限界法 解装载问题的优先队列式分支限界法用最大优先队解装载问题的优先队列式分支限界法用最大优先队列存储活结点表。活结点列存储活结点表。活结点x x在优先队列中的优先级定义为在优先队列中的优先级定义为从根结点到结点从根结点到结点x x的路径所相应的载重量再加上剩余集装的路径所相应的载重量再加上剩余集装箱的重量之和。箱的重量之和。优先队列中优先级最大的活结点成为下一个扩展结优先队列中优先级最大的活结点成为下一个扩展结点。以结点点。以结点x x为根的子树中全部结点相应的路径的载重量为根的子树中全部结点相应的路径的载重量不超过它的优先级。子集树中叶结点所相应的载重量
19、与不超过它的优先级。子集树中叶结点所相应的载重量与其优先级相同。其优先级相同。在优先队列式分支限界法中,一旦有一个叶结点成在优先队列式分支限界法中,一旦有一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解即为为当前扩展结点,则可以断言该叶结点所相应的解即为最优解。此时可终止算法。最优解。此时可终止算法。1919广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2020页页6.4 布线问题布线问题1.算法思想算法思想 解解此此问问题题的的队队列列式式分分支支限限界界法法从从起起始始位位置置a a起起先先将将它它作作为为第第一一个个扩扩展展结结点点。与与该该扩扩展展结
20、结点点相相邻邻并并且且可可达达的的方方格格成成为为可可行行结结点点被被加加入入到到活活结结点点队队列列中中,并并且且将将这这些些方方格标记为格标记为1 1,即从起始方格,即从起始方格a a到这些方格的距离为到这些方格的距离为1 1。接接着着,算算法法从从活活结结点点队队列列中中取取出出队队首首结结点点作作为为下下一一个个扩扩展展结结点点,并并将将与与当当前前扩扩展展结结点点相相邻邻且且未未标标记记过过的的方方格格标标记记为为2 2,并并存存入入活活结结点点队队列列。这这个个过过程程一一干干脆脆着着到到算算法法搜搜寻寻到到目目标标方方格格b b或或活活结结点点队队列列为为空空时时为为止止。即即加
21、加入入剪剪枝的广度优先搜寻。枝的广度优先搜寻。2020广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2121页页6.4 布线问题布线问题Position offset4;offset0.row=0;offset0.col=1;/右右 offset1.row=1;offset1.col=0;/下下 offset2.row=0;offset2.col=-1;/左左 offset3.row=-1;offset3.col=0;/上上定义移动方向的定义移动方向的相对位移相对位移 for(int i=0;i=m+1;i+)grid0i=gridn+1i=1;/顶部和底部顶部和底
22、部 for(int i=0;i=n+1;i+)gridi0=gridim+1=1;/左翼和右翼左翼和右翼设置边界的设置边界的围墙围墙2121广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2222页页6.4 布线问题布线问题for(int i=0;i NumOfNbrs;i+)nbr.row=here.row+offseti.row;nbr.col=here.col+offseti.col;if(gridnbr.rownbr.col=0)/该方格未标记该方格未标记 gridnbr.rownbr.col =gridhere.rowhere.col+1;if(nbr.ro
23、w=finish.row)&(nbr.col=finish.col)break;/完成布线完成布线 Q.Add(nbr);找到目标位置找到目标位置后,可以通过后,可以通过回溯方法找到回溯方法找到这条最短路径。这条最短路径。2222广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2323页页6.5 0-1背包问题背包问题算法的思想算法的思想 首先,要对输入数据进行预处理,将各物品依其单首先,要对输入数据进行预处理,将各物品依其单位重量价值从大到小进行排列。节点的优先级由已装袋位重量价值从大到小进行排列。节点的优先级由已装袋的物品价值加上剩下的最大单位重量价值的物品装满剩
24、的物品价值加上剩下的最大单位重量价值的物品装满剩余容量的价值和。余容量的价值和。算法首先检查当前扩展结点的左儿子结点的可行算法首先检查当前扩展结点的左儿子结点的可行性。假如该左儿子结点是可行结点,则将它加入到子性。假如该左儿子结点是可行结点,则将它加入到子集树和活结点优先队列中。当前扩展结点的右儿子结集树和活结点优先队列中。当前扩展结点的右儿子结点确定是可行结点,仅当右儿子结点满足上界约束时点确定是可行结点,仅当右儿子结点满足上界约束时才将它加入子集树和活结点优先队列。当扩展到叶节才将它加入子集树和活结点优先队列。当扩展到叶节点时为问题的最优值。点时为问题的最优值。2323广州高校华软软件学院
25、广州高校华软软件学院 算法分析与设计算法分析与设计第第2424页页6.5 0-1背包问题背包问题上界函数上界函数while(i=n&wi=cleft)/n表示物品总数,表示物品总数,cleft为剩余空间为剩余空间 cleft-=wi;/wi表示表示i所占空间所占空间 b+=pi;/pi表示表示i的价值的价值 i+;if(i=n)b+=pi/wi*cleft;/装填剩余容量装满背包装填剩余容量装满背包return b;/b为上界函数为上界函数2424广州高校华软软件学院广州高校华软软件学院 算法分析与设计算法分析与设计第第2525页页6.5 0-1背包问题背包问题 while(i!=n+1)/非
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 界限 分析 优秀 PPT
限制150内