ch7.Branch.pdfVIP

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch7.Branch

USTC Chapter 7 Branch and Bounding 王子磊 (Zilei Wang) Email: zlwang@ / USTC AUTO 学习要点 ? 理解分支限界法的剪枝搜索策略 ? 掌握分支限界法的算法框架 (1)队列式(FIFO)分支限界法 (2)优先队列式分支限界法 ? 通过应用范例学习分支限界法的设计策略 (1)单源最短路径问题 (2)装载问题 (3)布线问题 (4)0-1背包问题 (5)最大团问题 (6)旅行售货员问题 (7)电路板排列问题 (8)批处理作业调度问题 USTC AUTO 分支限界法的基本思想 USTC AUTO 分支限界法和回溯法 ?求解目标 ? 回溯法:找出解空间树中满足约束条件的所有解 ? 分支限界法:找出满足约束条件的一个解,或是在满 足约束条件的解中找出在某种意义下的最优解 ?搜索方式的不同 ? 回溯法:以深度优先的方式搜索解空间树 ? 分支限界法:以广度优先或以最小耗费(最大效益) 优先的方式搜索解空间树 USTC AUTO 分支限界法 ?分支限界法 ? 每一个活结点只有一次机会成为扩展结点,活结点一 旦成为扩展结点,就一次性产生其所有儿子结点 ? 在这些儿子结点中,导致不可行解或导致非最优解的 儿子结点被舍弃,其余儿子结点被加入活结点表中 ? 此后,从活结点表中取下一结点成为当前扩展结点 ? 重复上述结点扩展过程,一直持续到找到所需的解或 活结点表为空时为止 USTC AUTO 常用的两种分支限界法 ?队列式 (FIFO) 分支限界法 ? 按照队列先进先出(FIFO)原则选取下一个节点为扩 展节点 ?优先队列式分支限界法 ? 按照优先队列中规定的优先级选取优先级最高的节点成 为当前扩展节点 ? 在搜索解空间过程中增加了启发式方法,并通过优先级 数值体现 USTC AUTO 单源最短路径问题 USTC AUTO 问题描述 ?以一个例子来说明单源最短路径问题 ? 在下图所给的有向图 G中,每一边都有一个非负边权 ? 要求图 G 的从源顶点 s 到目标顶点 t 之间的最短路径 USTC AUTO 问题描述 ?用优先队列式分支限界法求解 ? 下图为有向图 G的单源最短路径问题产生的解空间树 ? 每一个结点旁边的数字表示该结点所对应的当前路长 USTC AUTO 算法思想 ?解单源最短路径问题的优先队列式分支限界法 ? 用一极小堆来存储活结点表,其优先级是结点所对应的当前路长 ? 算法从图 G的源顶点 s和空优先队列开始,结点 s 被扩展后,它 的儿子结点被依次插入堆中 ? 从堆中取出具有最小当前路长的结点作为当前扩展结点,并依次 检查与当前扩展结点相邻的所有顶点 ? 如果从当前扩展结点 i到顶点 j有边可达 ? 从源出发,途经顶点 i再到顶点 j 的所相应的路径的长度小于 当前最优路径长度 ? 则将该顶点作为活结点插入到活结点优先队列中 ? 结点的扩展过程一直继续到活结点优先队列为空时为止 USTC AUTO 剪枝策略 ?界限函数 ? 在扩展结点的过程中,一旦发现一个结点的下界不小于 当前找到的最短路长,则算法剪去以该结点为根的子树 ?利用结点间的控制关系进行剪枝 ? 从源顶点 s出发,2 条不同路径到达图 G的同一顶点 ? 由于两条路径的路长不同,将路长的路径所对应的树中 的结点为根的子树剪去 USTC AUTO 1. ……. 2. while (true) { 3. for (int j = 1; j = n; j++) 4. if ( (c[E.i][j]inf) (E.length+c[E.i][j]dist[j]) ) { 5. // 顶点i到顶点j可达,且满足控制约束 6. dist[j]=E.length+c[E.i][j]; // 更新节点 j 的最短路径值 7. prev[j]=E.i; // 记录路径 8. // 加入活结点优先队列 9. MinHeapNodeType N; 10. N.i=j; 11. N.length=dist[j]; 12. H.Insert(N); 13. } 14. try { // 取下一扩展结点 15. H.DeleteMin(E); 16. } catch (OutOfBounds) { // 优先队列空,搜索结束 17. break; 18. } 19. } 20. } 21. …… 示例代码 USTC AUTO 装载问题 USTC AUTO 问题描述 有一批共个集装箱要装上 2艘载重量分别为 c1和 c2的轮船, 其中集装箱 i的重量为 wi,且 装载问题要求确定是否有一个合理的装载方案可将这个集 装箱装上这 2 艘轮船;如果有,找出一种装载方案 容易证明:如果一个给定装载问题有解,则采用下面的策 略

您可能关注的文档

文档评论(0)

l215322 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档