资源描述:
《分支限界法基本思想》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.1分支限界法的基本思想1.分支限界法与回溯法的不同(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。(2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。6.1分支限界法的基本思想2.分支限界法基本思想分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致
2、不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。6.1分支限界法的基本思想3.常见的两种分支限界法(1)队列式(FIFO)分支限界法按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。(2)优先队列式分支限界法按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。分支限界法(BranchandBound)在问题的边带权的解空间树中进行广度优先搜索.找一个回答结点使其对应路径的权最小(最大)。当搜索到达一个扩展结点时,一次性扩展它的所
3、有儿子,将那些满足约束条件且最小耗费函数目标函数限界的儿子,插入活动结点表中,再从活动结点表中取下一结点同样扩展.直到找到所需的解或活动结点表为空为止。6.1基本思想算法设计与分析>分支限界法用于求解最优化问题通常采用优先队列方式组织,c(x)小者优先。结点x的最小耗费函数c(x):以x为根的子树所包含的回答结点中,路权最小者。若x是回答结点,则c(x)即为该点的目标函数值;若x是根结点,则c(x)即为最优解值。c(x)为单增函数。若x*是任一回答结点,且c(x*)U时,x将不必扩展(剪枝)。目标函数限界U的调整:初始U可取,随回答结点值的求出逐步更
4、新为U=c(x*),x*为已知回答结点中值最小者。活动结点表:算法设计与分析>分支限界法1.取U=U(T).2.扩展根结点的所有儿子.对每一子结点x判定其是否满足约束条件,对满足约束条件的x计算,将U的x加入活动结点表.3.x为叶结点时,检查是否c(x)
5、用广度优先搜索策略的目的是:尽早发现剪枝点.分支限界法与回溯法的差别:问题陈述设有n个物体和一个背包,物体i的重量为wi价值为pi,背包的载荷为M,若将物体i(1in,)装入背包,则有价值为pi.目标是找到一个方案,使得能放入背包的物体总价值最高.算法设计与分析>分枝限界法设N=3,W=(20,15,15),P=(40,25,25),M=30算法思路:问题的解可表示为n元向量{x1,x2,...xn},xi{0,1}则可用排序树表示解空间,在树中做广度优先搜索,约束条件:6、50-1背包问题(0-1KnapsackProblem)C=40C=0C=40C=25C=50C=0活动结点表:{B,C},{E,C,},{K,C,},{C},U=40.{F,G,},{L,M,G,},C=406.3装载问题1.问题描述有一批共个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为Wi,且装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果有,找出一种装载方案。容易证明:如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案。(1)首先将第一艘轮船尽可能装满;(2)将剩余的集装箱装上第二艘轮船。6.3装载问题2.队列式分支限界法在算
7、法的while循环中,首先检测当前扩展结点的左儿子结点是否为可行结点。如果是则将其加入到活结点队列中。然后将其右儿子结点加入到活结点队列中(右儿子结点一定是可行结点)。2个儿子结点都产生后,当前扩展结点被舍弃。活结点队列中的队首元素被取出作为当前扩展结点,由于队列中每一层结点之后都有一个尾部标记-1,故在取队首元素时,活结点队列一定不空。当取出的元素是-1时,再判断当前队列是否为空。如果队列非空,则将尾部标记-1加入活结