算法设计与分析 报告 一.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文档。上传文档
查看更多
算法设计与分析 报告 一

算法设计与分析 报告 一 贪心算法解最优装载问题 问题描述: 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定,在装载体积不受限制的情况下,应如何装载才尽可能多的集装箱装上轮船。该问题可形式化描述为: max(x1+x2+….xn) w1*x1+…….wn*xn=c xi=0或xi=1; 其中,变量xi=0,表示不装入集装箱i,xi=1表示装入集装箱i。 二、算法设计 1.算法描述: 最优装载问题可用贪心算法求解。我们采用重量最轻者先装的贪心选择策略,由此产生最优装载问题的最优解。具体算法描述如下: # includeiostream.h int sort (int a[],int n) { int i,j,t; for(i=0;in-1;i++) for(j=i+1;jn;j++) if(a[i]a[j]) { t=a[i];a[i]=a[j];a[j]=t; } return a[n]; } int Loading(int x[],int w[],int c,int n) { sort(w,n); for(int i=0;in;i++) x[i]=0; for(i=0;inw[i]=c;i++) { x[i]=1; c=c-w[i]; } return i; } void main() { int x[10];int w[10]; int i,n,c; cout输入物品数量 n 装载重质量 cendl; cinn; cinc; cout输入物品i的质量endl; for( i=0;in;i++) cinw[i]; int m=Loading(x,w,c,n); cout装载的物品数为:mendl; cout物品质量分别为:; for(i=0;im;i++) coutw[i] ; coutendl; } 2.贪心选择性质 设集装箱已依其重量大小从小到大排序,(x1,x2,x3,……xn)是最优装载问题的一个最优解。又设k=min{i|xi=1}。易知,如果给定的最优装载问题有解,则1=k=n。 当k=1时,(x1,x2,……xn)是一个满足贪心选择性质的最优解。 当k1时,取y1=1;yk=0;yi=xi;1i=n,i!=k,则 wi*yi=c; 因此,(y1,y2,…..yn)是所给最优装载问题的一个可行解。 3.最优子结构性质 设(x1,x2,…..xn)是最优装载问题的一个满足贪心选择性质的最优解,则易知,x1=1,(x2….xn)是轮船总量为c-x1的一个最优解。也就是说,最优装载问题具有最优子结构性构。 由最优装载问题的贪心选择性质和最优子结构性质,容易证明算法的正确性

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档