分支限界法-ppt课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《分支限界法-ppt课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分支 限界 ppt 课件
- 资源描述:
-
1、分支限界法分支限界法第六章学习要点理解分支限界法的剪枝搜索策略掌握分支限界法的算法框架队列式(FIFO)分支限界法优先队列式分支限界法通过应用范例学习分支限界法的设计策略0-1背包问题图的广度优先遍历对于图G=(V,E), 从任意一点r开始,依次检查所有与r有关联的边(r,a1),(r, a2),(r,ak),当上面k条边检查完毕后,再依次检查所有与a1,a2,ak相关联的(a1,a11),(a1,a12),(a1,a1m),(a2,a21),(a2,a22),(a2,a2m),(ak,ak1),(ak,ak2),(ak,akm)。依次类推,直到所有的边被检查,即所有顶点均被访问为止。图的广度
2、优先遍历 广度优先搜索过程广度优先搜索过程 广度优先生成树广度优先生成树 广度优先遍历序列:ABCDEFGHI图的广度优先遍历 广度优先搜索是一种广度优先搜索是一种分层分层的搜索过程,每向前走一步可能访问的搜索过程,每向前走一步可能访问一批顶点。因此,广度优先搜索不是一个递归的过程,其算法一批顶点。因此,广度优先搜索不是一个递归的过程,其算法也不是递归的。也不是递归的。 为了实现逐层访问,算法中使用了一个队列,以记忆正在访问为了实现逐层访问,算法中使用了一个队列,以记忆正在访问的这一层和上一层的顶点,以便于向下一层访问。的这一层和上一层的顶点,以便于向下一层访问。 为避免重复访问,需要一个辅助
3、数组为避免重复访问,需要一个辅助数组 visited ,给被访问过的,给被访问过的顶点加标记。顶点加标记。分支限界法引言分支限界法与回溯法的不同求解目标: 回溯法的求解目标:找出解空间树中满足约束条件的所有解; 分支限界法的求解目标:找出满足约束条件的一个解,或是在满足约束条件的解中找出使用某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 分支限界法引言分支限界法与回溯法的不同搜索方式: 回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。 分支限界法的搜索策略:在扩展结点处,先生成其所有的儿子结点(分支),然后再从当前的活结点表中选择下一
4、个扩展对点。为了有效地选择下一扩展结点,以加速搜索的进程,在每一活结点处,计算一个函数值(限界),并根据这些已计算出的函数值,从当前活结点表中选择一个最有利的结点作为扩展结点,使搜索朝着解空间树上有最优解的分支推进,以便尽快地找出一个最优解。分支限界法的基本思想 分支限界法通常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。 问题的解空间树是表示问题解空间的一棵有序树,常见的有子集树和排列树。分支限界法的基本思想两种典型的解空间树: 子集树(子集树(Subset Trees):):当所给问题是从当所给问题是从n个元素的集合中找出满足某种性个元素的集合中找出满足某种性质的子集时,
5、相应的解空间树称为子集树。在子集树中,质的子集时,相应的解空间树称为子集树。在子集树中,|S0|=|S1|=|Sn-1|=c,即每个结点有相同数目的子树,通常情况下,即每个结点有相同数目的子树,通常情况下c=2,所以,子集树中共有,所以,子集树中共有2n个叶子结点,因此,遍历子集树需要个叶子结点,因此,遍历子集树需要O(2n)时间。时间。 排列树(排列树(Permutation Trees):):当所给问题是确定当所给问题是确定n个元素满足某种性质的排个元素满足某种性质的排列时,相应的解空间树称为排列树。在排列树中,通常情况下,列时,相应的解空间树称为排列树。在排列树中,通常情况下,|S0|=
6、n,|S1|=n-1,|Sn-1|=1,所以,排列树中共有,所以,排列树中共有n!个叶子结点,因此,遍历排个叶子结点,因此,遍历排列树需要列树需要O(n!)时间。时间。分支限界法的基本思想 在分支限界法中,每一个活结点只有一次机会成为扩展结点。 活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。 从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程 这个过程一直持续到找到所求的解或活结点表为空时为止。活结点表:具有先进先出的性质,是队列。两个重要机制:产生分支(解空间树)两个重要机制:产生分
7、支(解空间树) 产生一个界限,能够终止许多分支(剪枝)产生一个界限,能够终止许多分支(剪枝) 分支限界法的基本思想分支限界法的适用范围: 分支限界法类似于回溯法,有一些问题其实无论用回溯法还是分支限界法都分支限界法类似于回溯法,有一些问题其实无论用回溯法还是分支限界法都可以得到很好的解决,但是另外一些则不然。可以得到很好的解决,但是另外一些则不然。 下表列出了回溯法和分支限界法的一些区别:下表列出了回溯法和分支限界法的一些区别:方法方法对解空间树的对解空间树的搜索方式搜索方式存储结点的常用存储结点的常用数据结构数据结构结点存储特性结点存储特性常用应用常用应用回溯法回溯法深度优先搜索深度优先搜索
8、栈栈活结点的所有可行子活结点的所有可行子结点被遍历后才被从结点被遍历后才被从栈中弹出栈中弹出找出满足约束条件的所找出满足约束条件的所有解有解分支限分支限界法界法广度优先或最广度优先或最小消耗优先搜小消耗优先搜索索队列、优先队列队列、优先队列每个结点只有一每个结点只有一次成次成为扩展结点为扩展结点的机会的机会找出满足约束条件的一找出满足约束条件的一个解或特定意义下的最个解或特定意义下的最优解优解分支限界法的基本思想适合采用回溯法解决的问题 n后问题 问题定义:问题定义:在在nn的国际象棋棋盘上摆下的国际象棋棋盘上摆下n个皇后,使所有的皇后都不能攻击个皇后,使所有的皇后都不能攻击到对方,找出所有符
9、合要求的情况。到对方,找出所有符合要求的情况。 分析:分析:n后问题的解空间树是一棵后问题的解空间树是一棵排列树排列树,解与解之间不存在优劣的分别。直到搜,解与解之间不存在优劣的分别。直到搜索到叶结点时才能确定出一组解。索到叶结点时才能确定出一组解。采用回溯法可以系统地搜索问题的全部解。采用回溯法可以系统地搜索问题的全部解。考虑使用分支限界法?考虑使用分支限界法?分支限界法的基本思想既可以采用回溯法也可以采用分支限界法解决的问题 0-1背包问题 问题定义:问题定义:给定若干物品的重量和价值,以及一个背包的容量给定若干物品的重量和价值,以及一个背包的容量上限。求出一种方案使得背包中存放物品的价值
10、最高。上限。求出一种方案使得背包中存放物品的价值最高。 分析:分析:0-1背包问题的解空间树是一棵子集树,所要求的解具有背包问题的解空间树是一棵子集树,所要求的解具有最优性质最优性质。分支限界法的基本思想采用回溯法解决0-1背包问题的搜索策略 只要一个结点的左孩子结点是一个可行结点就搜索其只要一个结点的左孩子结点是一个可行结点就搜索其左子树左子树; 而对于而对于右子树右子树,需要构造一个,需要构造一个上界函数上界函数,只在这个上界函数的值超过当前最,只在这个上界函数的值超过当前最优解时才进入搜索。优解时才进入搜索。 随着搜索进程的推进,最优解不断得到加强,对搜索的限制就越来越严格。随着搜索进程
11、的推进,最优解不断得到加强,对搜索的限制就越来越严格。ABCDEFGHIJKLMNO11100100110010分支限界法的基本思想分支限界法两种方式: 从活结点表中选择下一扩展结点的不同方式导致不同的分支限界法。从活结点表中选择下一扩展结点的不同方式导致不同的分支限界法。 最常见的有以下两种方式:最常见的有以下两种方式:队列式(队列式(FIFO)分支限界法:)分支限界法:队列式分支限界法将活结点表组织成一个队列式分支限界法将活结点表组织成一个队列,并按队列的队列,并按队列的先进先出原则先进先出原则选取下一个结点为当前扩展结点。选取下一个结点为当前扩展结点。优先队列式分支限界法:优先队列式分支
12、限界法:优先队列式分支限界法将活结点表组织成一个优先队列式分支限界法将活结点表组织成一个优先队列优先队列,按优先队列中规定的结点优先级选取优先级最高的下一个结,按优先队列中规定的结点优先级选取优先级最高的下一个结点成为当前扩展结点。点成为当前扩展结点。常用堆来实现优先队列常用堆来实现优先队列分支限界法的基本思想 算法实现时,通常用极大(小)堆来实现最大(小)优先队列 极大堆满足一个节点必定不小于其子节点,极小堆正好相反。 极大堆中最大的元素必定是其根节点,堆排序算法正是根据这个特性而产生的:对一个序列,将其构造为极大堆,然后将根节点(数组首元素)和数组的尾元素交换,之后对除了尾元素之外的序列继
13、续以上过程,直到排序完成。 举例:0-1背包问题n=3时0-1背包问题的一个实例:w=16, 15, 15,p=45, 25, 25,c=30,其解空间是子集树。ABCDEFGHIJKLMNO11100100110010 用队列式分支限界法解此问题时,用一个队列来存储活结点表。 算法从根结点A开始。初始时活结点队列为空,结点A是当前扩展结点。结点A的2个儿子结点B和C均为可行结点,所以将这2个儿子结点按从左到右的顺序加入活结点队列,并且舍弃当前扩展结点A。ABCDEFGHIJKLMNO11100100110010活结点队列:ABC 依先进先出原则,下一个扩展结点是活结点队列的队首结点B。扩展结
14、点B得到其儿子结点D和E。 由于D是不可行结点,被舍去。 E是可行结点,被加入活结点队列。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30活结点队列:BCE 接下来,C成为当前扩展结点,它的2个儿子结点F和G均为可行结点,因此被加入到活结点队列中。 扩展下一个结点E得到结点J和K。J是不可行结点,被舍去。K是一个可行的叶结点,表示所求问题的一个可行解可行解,其价值为45。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30活结点队列:FEG活结点队列:FG 当
15、前活结点队列的队首结点F成为下一个扩展结点。它的2个儿子结点L和M均为叶结点。 L表示获得价值为50的可行解;M表示获得价值为25的可行解。 G是最后的一个扩展结点,其儿子结点N和O均为可行叶结点。最后,活结点队列已空,算法终止。 算法搜索得到最优值为50。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 优先队列式分支限界法也是从根结点A开始搜索解空间树的。 用一个极大堆极大堆来表示活结点表的优先队列,该优先队列的优先级定义为活结活结点所拥有的点所拥有的价值价值。ABCDEFGHIJKLMNO11100100110010w
16、=16, 15, 15,p=45, 25, 25,c=30ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 初始时堆为空,扩展结点A得到它的2个儿子结点B和C。 这2个结点均为可行结点,因此被加入到堆中,结点A被舍弃。结点B获得的当前价值是45,而结点C的当前价值为0。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 由于结点B的价值大于结点C的价值,所以结点B是堆中最大元素,从而成为下一个扩展结点。 扩展结点B得到结点D和E。D不是可行结点,被舍去。E是
17、可行结点被加入到堆中。E的价值为45,成为当前堆中最大元素,从而成为下一个扩展结点。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 扩展结点E得到2个叶结点J和K。J是不可行结点,被舍弃。K是一个可行叶结点,表示所求问题的一个可行解,其价值为45。 此时,堆中仅剩下一个活结点C。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 此时,堆中仅剩下一个活结点C,它成为当前扩展结点。它的2个儿子结点F和G均为可行结点,因此被插入到当前堆中。 结点F的价值为25
18、,是堆中最大元素,成为下一个扩展结点。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 结点F的2个儿子结点L和M均为叶结点。叶结点L相应于价值为50的可行解。 叶结点M相应于价值为25的可行解。叶结点L所相应的解成为当前最优解。ABCDEFGHIJKLMNO11100100110010w=16, 15, 15,p=45, 25, 25,c=30 最后,结点G成为扩展结点,其儿子结点N和O均为叶结点,它们的价值分别为25和0。 接下来,存储活结点的堆已空,算法终止。算法搜索得到最优值为50。相应的最优解是从根结点A到结点L的
19、路径(0,1,1)。 当要寻求问题的一个最优解时,与回溯法时类似地可以用剪枝函数剪枝函数来加速搜索。该函数给出每一个可行结点相应的子树可能获得的最大价值的最大价值的上界上界。 如果这个上界不会比当前最优值更大,则说明相应的子树中不含问题的最优解,因而可以剪去。 另一方面,也可以将上界函数确定的每个结点的上界值作为优先级,以该优以该优先级的先级的非增序非增序抽取当前扩展结点抽取当前扩展结点。这种策略有时可以更迅速地找到最优解。分析解空间树的动态搜索过程(最小消耗优先) 分支限界法首先确定一个合理的限界函数,并根据限界函数确定目标函数的界down, up。 然后,按照广度优先策略遍历问题的解空间树
20、,在分支结点上,依次搜索该结点的所有孩子结点,分别估算这些孩子结点的目标函数的可能取值,如果某孩子结点的目标函数可能取得的值超出目标函数的界,则将其丢弃,因为从这个结点生成的解不会比目前已经得到的解更好;否则,将其加入待处理结点表(表PT)中。 依次从表PT中选取使目标函数的值取得极值的结点成为当前扩展结点,重复上述过程,直到找到最优解。解空间树的动态搜索过程(最小消耗优先) 随着这个遍历过程的不断深入,表PT中所估算的目标函数的界越来越接近问题的最优解。 当搜索到一个叶结点时:如果该结点的目标函数值是表PT中的极值,则该叶子结点对应的解就是问题的最优解。否则,根据这个叶结点调整目标函数的界,
展开阅读全文