第7章 动态规划222——需要修改.docVIP

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

第7章 动态规划 动态规划是本书介绍的五种算法设计方法中难度最大的一种,它建立在最优原则的基础上。采用动态规划方法,可以优雅而高效地解决许多用贪婪算法或分而治之算法无法解决的问题。在介绍动态规划的原理之后,本章将分别考察动态规划方法在解决装配线调度问题、矩阵连乘、最长公共子序列、凸多边形最优三角剖分、最优二叉查找树、流水作业调度、0-1背包问题等方面的应用。 7.1 装配线调度和矩阵连乘问题 7.1.1 装配线调度 【问题描述】 一个找出通过工厂装配线的最快方式的制造问题。共有两条装配线,每条有n个装配站,装配线i的第j个装配站完成工作需要的时间为a[i][j] 。在通过i装配线的第j个装配站后,产品可以直接进入i装配线的j+1个装配站,当中不需要损耗时间;产品也可以进入另外一条装配线的j+1个装配站,这个过程需要损耗t[i][j]时间。产品从初始站进入装配线分别需要损耗时间为e[0],e[1] ,产品从装配线进入终点站分别需要时间为x[0],x[1]。求一个产品从初始站到达终点站的最快路径。 【分析】 令f0[j]代表从初始站到在0号线上完成第j站操作所需的最少时间。令f1[j]代表从初始站到在1号线上完成第j站操作所需的最少时间。他们存在这样的递推关系。 【源代码】 #include stdio.h #include stdlib.h static int a1[6]={7,9,3,4,8,4}; /*1号装配线的每个装配站装配时间 */ static int a2[6]={8,5,6,4,5,7}; /*2号装配线的每个装配站装配时间 */ static int e1=2,e2=4; /*入装配线消耗 */ static int x1=3,x2=2; /*出装配线消耗 */ static int t1[5]={2,3,1,3,4}; /*从装配线1的装配站到装配线2的下一装配站时间消耗 */ static int t2[5]={2,1,2,2,1}; /*从装配线2的装配站到装配线1的下一装配站时间消耗 */ static int f1[6]; /*到1号装配线的每一个装配站的最小时间消耗*/ static int f2[6]; /*到2号装配线的每一个装配站的最小时间消耗*/ static int f_; /*装配完成时间的最小消耗 */ static int s1[6]; /*到1号装配线的对应装配站前走的装配线号 */ static int s2[6]; /*到2号装配线的对应装配站前走的装配线号 */ static int s_; /*装配完成时走的最后一条装配线号*/ /*装配站调度核心算法之DP代替递归 */ static void assembly() { /*1. 入装配站时间消耗*/ f1[0]=e1+a1[0]; f2[0]=e2+a2[0]; /*初始化第一个装配站的最小时间消耗*/ /*2. 装配线内部最小时间消耗*/ int i; for(i=1;i6;i++){//顺序求解2-5个装配站的最小时间消耗 if(f1[i-1]+a1[i] f2[i-1]+t2[i-1]+a1[i]){ /*处理1号装配线第i号装配站*/ f1[i]=f1[i-1]+a1[i]; s1[i]=1; }else{ f1[i]=f2[i-1]+t2[i-1]+a1[i]; s1[i]=2; } if(f2[i-1]+a2[i] f1[i-1]+t1[i-1]+a2[i]){ /*处理2号装配线第i号装配站*/ f2[i]=f2[i-1]+a2[i]; s2[i]=2; }else{ f2[i]=f1[i-1]+t1[i-1]+a2[i]; s2[i]=1; } } /*3. 出装配线时间消耗*/ if(f1[5]+x1 f2[5]+x2){ /*处理出装配线的情况*/ f_=f1[5]+x1; s_=1; }else{ f_=f2[5

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档