计算机算法设计与分析第6章分支限界法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机算法设计与分析第6章分支限界法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 算法 设计 分析 分支 限界 课件
- 资源描述:
-
1、第六章第六章 分支限界法分支限界法第1页,共80页。理解分支限界法的剪枝搜索策略。理解分支限界法的剪枝搜索策略。掌握分支限界法的算法框架掌握分支限界法的算法框架队列式队列式(FIFO)分支限界法分支限界法优先队列式分支限界法优先队列式分支限界法 通过应用范例学习分支限界法的设计策略。通过应用范例学习分支限界法的设计策略。单源最短路径问题单源最短路径问题装载问题;装载问题;布线问题布线问题0-1背包问题;背包问题;最大团问题;最大团问题;旅行售货员问题旅行售货员问题电路板排列问题电路板排列问题批处理作业调度问题批处理作业调度问题学习要点学习要点8/16/20222第2页,共80页。一、分支限界法
2、的基本思想一、分支限界法的基本思想二、单源最短路径问题二、单源最短路径问题三、装载问题三、装载问题四、四、0-1背包问题背包问题五、最大团问题五、最大团问题六、旅行售货员问题六、旅行售货员问题8/16/20223第3页,共80页。一、分支限界法的基本思想一、分支限界法的基本思想二、单源最短路径问题三、装载问题四、0-1背包问题五、最大团问题六、旅行售货员问题8/16/20224第4页,共80页。分支限界法同回溯法类似,它也是在解空间中搜索问题的可行解分支限界法同回溯法类似,它也是在解空间中搜索问题的可行解或最优解,但搜索的方式不同。回溯法采用深度优先的方式,朝或最优解,但搜索的方式不同。回溯法
3、采用深度优先的方式,朝纵深方向搜索,直至达到问题的一个可行解,或经判断沿此路径纵深方向搜索,直至达到问题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优解时,停止向前搜索,并沿原路返不会达到问题的可行解或最优解时,停止向前搜索,并沿原路返回到该路径上最后一个还可扩展的结点。从该结点出发朝新的方回到该路径上最后一个还可扩展的结点。从该结点出发朝新的方向纵深搜索。分支定界法则采用宽度优先的方式搜索解空间树,向纵深搜索。分支定界法则采用宽度优先的方式搜索解空间树,它将活结点存放在一个特殊的表中。其策略是:在扩展结点处,它将活结点存放在一个特殊的表中。其策略是:在扩展结点处,先生成其所有的儿子
4、结点先生成其所有的儿子结点,将那些导致不可行解或导致非最优解的将那些导致不可行解或导致非最优解的儿子舍弃,其余儿子加入活结点表中。此后,从活结点表中取出儿子舍弃,其余儿子加入活结点表中。此后,从活结点表中取出一个结点作为当前扩展结点。并重复上述结点扩展过程。所以,一个结点作为当前扩展结点。并重复上述结点扩展过程。所以,分支限界法与回溯法的本质区别在于搜索方式的不同。回溯法更分支限界法与回溯法的本质区别在于搜索方式的不同。回溯法更适于处理那些求所有可行解的问题,而分支限界法更适于处理那适于处理那些求所有可行解的问题,而分支限界法更适于处理那些只确定一个可行解,特别是最优化问题。些只确定一个可行解
5、,特别是最优化问题。8/16/20225第5页,共80页。l分支限界法类似于回溯法,也是一种在问题的解空间树T中搜索问题解的算法。l分支限界法与回溯法的求解目标(适用范围)不同:n回溯法适用于找出满足约束条件的所有解的情况;n分支限界法发誓找出满足条件的一个解,或某种意义下的最优解。l搜索方式不同n回溯法:深度优先n分支限界法:广度优先8/16/20226第6页,共80页。l分支限界法常以广度优先或以最小耗费(最大效益)分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。优先的方式搜索问题的解空间树。l在分支限界法中,每一个活结点只有一次机会成为在分支限界法中,每一个活
6、结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,生其所有儿子结点。在这些儿子结点中,导致不可导致不可行解或导致非最优解的儿子结点被舍弃行解或导致非最优解的儿子结点被舍弃,其余儿子,其余儿子结点被加入活结点表中。结点被加入活结点表中。l此后,从活结点表中取下一结点成为当前扩展结此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止续到找到所需的解或活结点表为空时为止。8/16/20227第7页,
7、共80页。l从活结点表中选择下一扩展结点的不同方从活结点表中选择下一扩展结点的不同方式导致不同的分支限界法:式导致不同的分支限界法:n队列式队列式(FIFO)分支限界法:将活结点表组织成一分支限界法:将活结点表组织成一个队列,按照队列先进先出(个队列,按照队列先进先出(FIFO)原则选取原则选取下一个节点为扩展节点。下一个节点为扩展节点。n优先队列式分支限界法:将活结点表组织成一个优先队列式分支限界法:将活结点表组织成一个优先队列,按照优先队列中规定的优先级选取优优先队列,按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。先级最高的节点成为当前扩展节点。u最大优先队列:使用最大堆
8、,体现最大效益优先最大优先队列:使用最大堆,体现最大效益优先u最小优先队列:使用最小堆,体现最小费用优先最小优先队列:使用最小堆,体现最小费用优先8/16/20228第8页,共80页。队列式分支限界法的搜索解空间树的方式类似于队列式分支限界法的搜索解空间树的方式类似于解空间树的宽度优先搜索,不同的是队列式分支限界解空间树的宽度优先搜索,不同的是队列式分支限界法不搜索以不可行结点(已经被判定不能导致可行解法不搜索以不可行结点(已经被判定不能导致可行解或不能导致最优解的结点)为根的子树。这是因为,或不能导致最优解的结点)为根的子树。这是因为,按照规则,这样的结点未被列入活结点表。按照规则,这样的结
9、点未被列入活结点表。8/16/20229第9页,共80页。优先队列式分支限界法的搜索方式是根据活结点的优先级确优先队列式分支限界法的搜索方式是根据活结点的优先级确定下一个扩展结点。结点的优先级常用一个与该结点有关的定下一个扩展结点。结点的优先级常用一个与该结点有关的数值数值p p 来表示。来表示。最大优先队列规定最大优先队列规定p p 值较大的结点点的优先级较高。在算法实现时通值较大的结点点的优先级较高。在算法实现时通常用一个最大堆来实现最大优先队列,用最大堆的常用一个最大堆来实现最大优先队列,用最大堆的Deletemax Deletemax 运算抽运算抽取堆中的下一个结点作为当前扩展结点,体
10、现最大效益优先的原则。取堆中的下一个结点作为当前扩展结点,体现最大效益优先的原则。类似地,最小优先队列规定类似地,最小优先队列规定p p 值较小的结点的优先级较高。在值较小的结点的优先级较高。在算法实现时,常用一个最小堆来实现,用最小堆的算法实现时,常用一个最小堆来实现,用最小堆的Deletemin Deletemin 运算抽取堆中下一个结点作为当前扩展结点,体现最小优先的运算抽取堆中下一个结点作为当前扩展结点,体现最小优先的原则。原则。8/16/202210第10页,共80页。采用优先队列式分支定界算法解决具体问题采用优先队列式分支定界算法解决具体问题时,应根据问题的特点选用最大优先或最小优
11、先时,应根据问题的特点选用最大优先或最小优先队列,确定各个结点的队列,确定各个结点的p p 值。值。8/16/202211第11页,共80页。n=3,c=30,w=16,15,15,p=45,25,258/16/202212第12页,共80页。n=3,c=30,w=16,15,15,p=45,25,25l队列式分支限界法:A B,C=B,CB,C D,E=EC,E F,G=F,GE,F,G J,K=K(45)1,0,0F,G L,M=L(50)0,1,1 M(25)G N,0=N(25),O(0)不搜索以不可行结点为根的子树不搜索以不可行结点为根的子树l优先队列式分支限界法:A B,C=B(4
12、5),C(0)B,C D,E=E(45)E,C J,K=K(45)1,0,0C F,G=F(25),G(0)F,G L,M=L(50),0,1,1 M(25)G N,O=N(25),O(0)l可用剪枝函数加速搜索可用剪枝函数加速搜索8/16/202213第13页,共80页。1234206305410ABCDEFGHIJKLMNOPQ1234344342322423问题描述:某售货员要问题描述:某售货员要到若干城市去推销商品,到若干城市去推销商品,一直各城市之间的路程,一直各城市之间的路程,他要选定一条从驻地出他要选定一条从驻地出发,经过每个城市一遍,发,经过每个城市一遍,最后回到住地的路线,最
13、后回到住地的路线,使总的路程最短。使总的路程最短。8/16/202214第14页,共80页。l队列式分支限界法:B C,D,EC,D,E F,GD,E,F,G H,IE,F,G,H,I J,KF,G,H,I,J,K L(59)1,2,3,4,1G,H,I,J,K M(66)H,I,J,K N(25)1,3,2,4,1I,J,K 1-3-4(26)J,K P(25)K Q(59)l优先队列式分支限界法:B C,D,E=C(30),D(6),E(4)E,D,C J,K=J(14),K(24)D,J,K,C H,I=H(11),I(26)H,J,K,I,C N=N(25)1,3,2,4,1J,K,I
14、,C P=P(25)K,I,C Q=Q(59)I,C I,C 被限界掉1234206305410ABCDEFGHIJKLMNOPQ12343443423224238/16/202215第15页,共80页。l如何确定合适的限界函数?l如何组织活结点表?l如何确定最优解中的各个分量?好的限界函数不仅计算简单,还要保证最优解在搜索空间中,更重要的是能好的限界函数不仅计算简单,还要保证最优解在搜索空间中,更重要的是能在搜索的早期对超出目标函数界的结点进行丢弃,减少搜索空间,从而尽快在搜索的早期对超出目标函数界的结点进行丢弃,减少搜索空间,从而尽快找到问题的最优解。找到问题的最优解。通常采用最大堆或最小
15、堆来实现优先队列式分支限界法求解问题。通常采用最大堆或最小堆来实现优先队列式分支限界法求解问题。可以用如下方法求得最优解中的分量:可以用如下方法求得最优解中的分量:1 1)对每个扩展结点保存该结点到)对每个扩展结点保存该结点到根结点的路径;根结点的路径;2 2)在搜索过程中构建搜索经过的树结构,在求得最优解)在搜索过程中构建搜索经过的树结构,在求得最优解时,从叶子结点不断回溯到根结点,以确定最优解中的各个分量。时,从叶子结点不断回溯到根结点,以确定最优解中的各个分量。8/16/202216第16页,共80页。一、分支限界法的基本思想二、单源最短路径问题二、单源最短路径问题三、装载问题四、0-1
16、背包问题五、最大团问题六、旅行售货员问题8/16/202217第17页,共80页。l在有向图G中,每一边都有一个非负边权。求图G的从源顶点s到目标顶点t之间的最短路径。8/16/202218第18页,共80页。l用优先队列式分支限界法解有向图用优先队列式分支限界法解有向图G的单源最短路径的单源最短路径问题问题产生产生的解空间树。其中,每一个结点旁边的数字表示的解空间树。其中,每一个结点旁边的数字表示该结点所对应的当前路长。该结点所对应的当前路长。8/16/202219第19页,共80页。l用一最小堆来存储活结点表。其优先级是结点所对应的当前路优先级是结点所对应的当前路长长。l算法从图算法从图G
17、的源顶点的源顶点s和空优先队列开始。结点和空优先队列开始。结点s被扩展后,它的儿被扩展后,它的儿子结点被依次插入堆中。此后,算法从堆中取出具有最小当前路长子结点被依次插入堆中。此后,算法从堆中取出具有最小当前路长的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的所有的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的所有顶点。如果从当前扩展结点顶点。如果从当前扩展结点i到顶点到顶点j有边可达,且从源出发,途有边可达,且从源出发,途经顶点经顶点i再到顶点再到顶点j的所相应的路径的长度小于当前最优路径长度,的所相应的路径的长度小于当前最优路径长度,则将该顶点作为活结点插入到活结点优先队列中。
18、这个结点的扩展则将该顶点作为活结点插入到活结点优先队列中。这个结点的扩展过程一直继续到活结点优先队列为空时为止。过程一直继续到活结点优先队列为空时为止。8/16/202220第20页,共80页。l在算法扩展结点的过程中,一旦发现一个结点的下界在算法扩展结点的过程中,一旦发现一个结点的下界(即结点所对应的当前路长)不小于当前找到的最短(即结点所对应的当前路长)不小于当前找到的最短路长,则算法剪去以该结点为根的子树。路长,则算法剪去以该结点为根的子树。l在算法中,还可以利用结点间的控制关系进行剪枝。从源顶在算法中,还可以利用结点间的控制关系进行剪枝。从源顶点点s出发,出发,2条不同路径到达图条不同
19、路径到达图G的同一顶点。由于两条路的同一顶点。由于两条路径的路长不同,因此可以将路长长的路径所对应的树中的径的路长不同,因此可以将路长长的路径所对应的树中的结点为根的子树剪去。结点为根的子树剪去。l例如,从源点例如,从源点s s出发,经过边出发,经过边a,e,qa,e,q(路长为(路长为5 5)和经过边)和经过边c,hc,h(路长为(路长为6 6)的)的2 2条路径到达图条路径到达图G G的同一顶点。故可将后一条路的同一顶点。故可将后一条路径剪掉。径剪掉。8/16/202221第21页,共80页。剪枝策略 下图是用优先队列式分支限界法解有向图G的单源最短路径问题产生的解空间树的剪枝情况。BA优
20、于优于B,B可剪枝可剪枝经过不同经过不同的路径到的路径到达相同的达相同的顶点顶点A8/16/202222第22页,共80页。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;/加入活结点优先队列加入活结点优先队列 MinHeapNode N;N.i=j;N.length=distj;H.Insert(N);try H.DeleteMin(E);/取下一扩展结点取下一扩展结点 catch(O
21、utOfBounds)break;/优先队列空优先队列空 顶点顶点i i和和j j间有边,且此间有边,且此路径长小于原先从源点路径长小于原先从源点到到j j的路径长的路径长 8/16/202223第23页,共80页。计算从源顶点计算从源顶点1到其它顶点间最短路径到其它顶点间最短路径8/16/202224第24页,共80页。1230V2V0V1V4V33825420510计算从源顶点计算从源顶点V0 到其它顶点间最短路径到其它顶点间最短路径8/16/202225第25页,共80页。一、分支限界法的基本思想二、单源最短路径问题三、装载问题三、装载问题四、0-1背包问题五、最大团问题六、旅行售货员问
22、题8/16/202226第26页,共80页。l有一批共个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为wi,且wiC1+C2l装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果有,找出一种装载方案。l容易证明:如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案。(1)首先将第一艘轮船尽可能装满;(2)将剩余的集装箱装上第二艘轮船。8/16/202227第27页,共80页。解装载问题的队列式分支限界法只求出所要求的最优值,解装载问题的队列式分支限界法只求出所要求的最优值,稍后将进一步讨论求出最优解。函数稍后将进一步讨论求出最优解。函数MaxL
23、oading具体实施具体实施对解空间的分支限界搜索。其中队列对解空间的分支限界搜索。其中队列Q用于存放活结点表。用于存放活结点表。在队列在队列Q的元素值表示每个活结点所相应的当前载重量。的元素值表示每个活结点所相应的当前载重量。当其值为当其值为1时,表示队列已到达解空间树同一层结点的尾时,表示队列已到达解空间树同一层结点的尾部。部。8/16/202228第28页,共80页。函数函数EnQueue用于将活结点加入到活结点队用于将活结点加入到活结点队列中。该函数首先检查列中。该函数首先检查i是否等于是否等于n。如果。如果in,则表示当前活结点为一个叶结点。由于叶结点不则表示当前活结点为一个叶结点。
24、由于叶结点不会被进一步扩展,因此不必加入到活结点队列中。会被进一步扩展,因此不必加入到活结点队列中。此时只要检查该叶结点表示的可行解是否优于当此时只要检查该叶结点表示的可行解是否优于当前最优解,并适时更新当前最优解。当前最优解,并适时更新当前最优解。当in时,时,当前活结点是一个内部结点,应加入到活结点队当前活结点是一个内部结点,应加入到活结点队列中。列中。8/16/202229第29页,共80页。void EnQueue(&Q,Type wt,Type&bestw,int i,int n)/该函数负责加入活结点该函数负责加入活结点/如果不是叶结点,则将结点权值如果不是叶结点,则将结点权值wt
25、加入队列加入队列Qif(i=n)/可行可行 叶子结点叶子结点 if(wtbestw)bestw=wt;else Q.Add(wt);/不是叶子不是叶子8/16/202230第30页,共80页。函数函数MaxLoading在开始时将在开始时将i初始化为初始化为1,bestw初始化初始化为为0。此时活结点队列为空。将同层结点尾部标志。此时活结点队列为空。将同层结点尾部标志1加入加入到活结点队列中,表示此时位于第到活结点队列中,表示此时位于第1层结点的尾部。层结点的尾部。Ew存存储当前扩展结点所相应的重量。储当前扩展结点所相应的重量。8/16/202231第31页,共80页。在算法的在算法的whil
展开阅读全文