[工学]chapter 5 动态规划法.ppt

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

算法:Allocate 输入:资源总数m,工程项目数n,以及G(i,j):对工程i投资j的利润 输出:数组X[1..n],其中X[i]是分配给工程i的投资数。M是总利润 方法:F[i,j]记录的是fi(j)的最大利润。P[i,j]记录的是使fi(j)最大时分配的资源数。 5.4 资源分配问题 procedure Allocate begin for i=0 to m do // 资源m,工程n { F[1,i]=G[1,i]; //对工程1投资i时的利润 P[1,i]=i;} //利润最大时的投资数 M[1]=max{F[1,0], F[1,1],…F[1,m]}; Q[1]=k; //k是使M[1]取最大值时的F[1,k]中的下标 for i=2 to n do { F[i,0]=G[i,0]+F[i-1,0]; P[i,0]=0; for j=1 to m do //寻找给第i项工程的投资数 { 设k是使得G[i,k]+F[i-1,j-k]取最大值的下标 F[i,j]=G[i,k]+F[i-1,j-k]; P[i,j]=k; } 5.4 资源分配问题 0 1 2 3 4 5 6 1 0 1.2 1.5 1.85 2.4 2.8 3.3 2 3 x1 0 1 2 3 4 5 6 GA(x1) 0 1.2 1.5 1.85 2.4 2.8 3.3 GB(x1) 0 1.8 2.0 2.25 2.4 2.5 2.6 GC(x1) 0 1.3 1.9 2.2 2.45 2.7 3.0 5.4 资源分配问题 F[i,j] 给前i项工程投资j的最大利润 0 1 2 3 4 5 6 1 0 1 2 3 4 5 6 2 3 P[i,j] 使F[i,j]最大时给第i项工程分配的资源数 1 2 3 3.3 M: 1 2 3 6 Q: 0 1 2 3 4 5 6 1 0 1.2 1.5 1.85 2.4 2.8 3.3 2 0 1.8 3.0 3.3 3.65 4.2 4.6 3 0 1.8 3.1 4.3 4.9 5.2 5.55 x1 0 1 2 3 4 5 6 GA(x1) 0 1.2 1.5 1.85 2.4 2.8 3.3 GB(x1) 0 1.8 2.0 2.25 2.4 2.5 2.6 GC(x1) 0 1.3 1.9 2.2 2.45 2.7 3.0 5.4 资源分配问题 F[i,j] 给前i项工程投资j的最大利润 0 1 2 3 4 5 6 1 0 1 2 3 4 5 6 2 0 1 1 1 1 1 1 3 0 0 1 1,0 2 3,2 2 P[i,j] 使F[i,j]最大时给第i项工程分配的资源数 1 2 3 3.3 4.6 5.55 M: 1 2 3 6 6 6 Q: procedure Allocate (续) begin for i=2 to n do { F[i,0]=G[i,0]+F[i-1,0]; P[i,0]=0; for j=1 to m do //寻找给第i项工程的投资数 { 设k是使得G[i,k]+F[i-1,j-k]取最大值的下标 F[i,j]=G[i,k]+F[i-1,j-k]; P[i,j]=k; } M[i]=max{F[i,0],F[i,1],…F[i,m]}; Q[i]=r; //r是使M[i]取最大值的F[i,r]的下标 } M=max{M[1],M[2]..M[n]}; //最大总利润 5.4 资源分配问题 procedure Allocate (续) begin M=max{M[1],M[2]..M[n]}; //最大总利润 设s是使M取最大值的M[s]的下标 if sn then for i=s+1 to n do x[i]=0 ; //后面的工程分配资源数为0 x[s]=P[s,Q[s]]; //分配给第s项工程的投资数 j=m-x[s]; for i=s-1 to 1 do { x[i]=P[i,j]; j=j-x[i]; } end 5.4 资源分配问题 算法在Θ(m2n)的时间内找到最佳资源分配方案 0 1 2 3 4

文档评论(0)

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

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

1亿VIP精品文档

相关文档