算法设计与-5-15讲述.ppt

  1. 1、本文档共128页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与-5-15讲述

* 复杂度分析 1)计算可行性约束需要O(n)时间 2)在最坏情况下有 O(2n)个结点需要计算可行性约束 3)计算时间为 O(n2n)。 回溯法效率分析 通过前面具体实例的讨论容易看出,回溯算法的效率在很大程度上依赖于以下因素: (1)产生x[k]的时间; (2)满足显约束的x[k]值的个数; (3)计算约束函数constraint的时间; (4)计算上界函数bound的时间; (5)满足约束函数和上界函数约束的所有x[k]的个数。 好的约束函数能显著地减少所生成的结点数。但这样的约束函数往往计算量较大。因此,在选择约束函数时通常存在生成结点数与约束函数计算量之间的折衷。 * 欢迎辞 9. for j=i to n do //考察x[i]的各个可能取值 10. if w(x[i-1], x[j]) ≠∞ and cw + w(x[i-1], x[j]) bestw // 向当前部分路径加入新城市x[j]后, x[j]与x[i-1]相 连,且扩展后的部分路径1, x[2],…, x[i-1], x[j], …, ? 的成本小于当前最优回路的长度 11. then //继续扩展、搜索次路径 { 12. x[i] = x[j] //加入第i个城市 13. cw = cw + w(x[i-1], x[i]) //更新扩展后的路径的代价 14. BacktrackTSP(i+1) //递归搜索以x[i]为根的 后续子树 15. cw = cw — w(x[i-1], x[i]) //搜索失败,回溯,回到 第9步,为搜索x[i]的另一个取值x[j+1]准备 16. x[i] = x[j] } * 5.3 批处理作业调度 问题: 1)给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需(1≤i ≤n)要机器j (1≤j≤2)的处理时间为tji。 2)对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。 所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和: 要求对于给定的n个作业,制定 最佳作业调度方案,使其完成时间 和达到最小。 tji 机器1 机器2 作业1 2 1 作业2 3 1 作业3 2 3 * Fji 机器1 机器2 作业1 2 1 作业2 3 1 作业3 2 3 3个作业有3!=6种可能调度方案, 最佳调度方案是1,3,2,其完成时间和为8。 方案 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 完成时间(有错!!) 19 88 20 21 19 19 * 解空间为排列树,有n!=3!=6个叶结点 算法设计:P151-152 调用递归过程,从第一层开始Backtrack(1) A B E K 1 2 3 3 3 F L 2 C G M 1 3 3 H N 1 D I O 1 2 2 J P 1 2 i=1 i=2 i=3 * X=[1,2,…,n]所给n个作业 class Flowshop { friend Flow(int**, int, int []); private: void Backtrack(int i); n; // 作业数 int **M, // 2维数组,各作业所需的处理时间 *x, // 当前作业调度,e.g. 最优调度1,3,2 *bestx, // 当前最优作业调度 bestf, // 当前最优值,e.g. 18 *f2, // 机器2完成处理时间 f1, // 机器1完成处

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档