- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划模型建立与优化方法
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [问题描述] 现有n首由Raucous Rockers 演唱组录制的歌曲,计划从中选择一些歌曲来发行m张唱片,每张唱片至多包含t分钟的音乐,唱片中的歌曲不能重叠。按下面的标准进行选择: ?? (1) 这组唱片中的歌曲必须按照它们创作的顺序排序; (2) 包含歌曲的总数尽可能多。 输入n,m,t,和n首歌曲的长度,它们按照创作顺序排序,没有一首歌超出一张唱片的长度,而且不可能将所有歌曲的放在唱片中。输出所能包含的最多的歌曲数目。 Raucous Rockers 演唱组 设n首歌曲按照创作顺序排序后的长度为long[1..n],则动态规划的状态表示描述为: g[i, j, k],(0≤i≤n,0≤j≤m,0≤kt), 表示前i首歌曲,用j张唱片另加k分钟来录制,最多可以录制的歌曲数目。 规划的边界条件为: 当0≤j≤m, 0≤kt时:g[0,j,k]=0; 问题的最优解为:g[n,m,0]。 状态转移方程为: 当k≥long[i],i≥1时: g[i, j, k]=max{g[i-1,j,k-long[i]]+1,g[i-1,j,k]} 当klong[i],i≥1时: g[i, j, k]=max{g[i-1,j-1,t-long[i]]+1,g[i-1,j,k]} 改进的状态表示描述为: g[i,j]=(a, b),0≤i≤n,0≤j≤i,0≤a≤m,0≤b≤t,表示在前i首歌曲中选取j首录制所需的最少唱片为:a张唱片另加b分钟。 状态转移方程为: g[i, j]=min{g[i-1,j],g[i-1,j-1]+long[i]} 其中(a, b)+long[i]=(a’, b’)的计算方法为: 当b+long[i] ≤t时: a’=a; b’=b+long[i]; 当b+long[i] >t时: a’=a+1; b’=long[i]; 算法的时间复杂度为:O(n2)。 规划的边界条件: 当0≤i≤n时,g[i,0]=(0,0) 题目所求的最大值是: answer=max{k| g[n, k]≤(m-1,t)} 在使用动态规划方法解题时,对当前状态 的计算都是进行一些决策并引用相应的已经计算过 的状态,这个过程称为“状态转移”。因此,每个状 态可能转移的状态数是决定动态规划算法时间复杂度 的一个重要因素。 时间效率的优化(减少每个状态转移的状态数) 例题:股票收入 假设你有非凡的能力,能预测出今后D天中每天的股价(设每天股价不变,第i天的为vi)。第一天前,你有1元。以后每一天你可以用现有的资金购买股票,或将现有的股票抛出换资金,当然也可什么都不干。求D天后你能获得的最大收入。 输入的第一行为D(1=D=100000)。下面有D个实数,依次为今后D天的股票价格。 输出仅为一个精确到0.0001的实数,即D天后的理想收入。 输入与输出样例: 输入 输出 4 4.0000 4.2 2.6 5.6 10.4 转移方程一 设f(i)为第I天收盘时能达到的最高收入,则有状态转移方程: f(i)=max{f(j)*vt/vk} (0=jkt=i) f(0)=1 其含义为:第I天收盘时能达到的最高收入来源于第j天收盘后的收入,全部用于购入第k天的股票,再在第t天将所得的股票全部抛出所得的收入。F(D)就是问题的答案。 改正分析 如果第I天的收入是由第t天的抛出所得的,这就意味着从第t天后直到第I天一直在休息,f(I)=f(t)成立。 如果我们让f(I-1)的值能传给f(i),那么f(t)的值就能传给f(i)。 转移方程二 f(i)=max{f(I-1),f(j)*vi/vk} (0=jk=I ) f(0)=1 其含义为:如果第I天休息,则前I天所能获得的最大收入f(i)就是前I-1天所能获得的最大收入f(I-1),否则第I天不休息,那么为了尽量增加收入,必然将股票全部抛出,就是将前j天所得的收入在第k天全
文档评论(0)