动态规划2讲解.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * 可以随时的开空间 与释放空间 * ???????? * * * * * * * * * * * * * * * * * * * * * * * * 减少策略总数 减少状态总数 减少决策变量的总数 * * * * F[i,j]{前I个公司分配j台机器所得的最大盈利} f[I,j]=max{ f[i-1,j-k]+a[i,j-k] } 0=k=j; 初始状态 f[i,0]=0; * * * * * * * * * * * F[I,J]=Min{F[I,K]+F[K,J]+S[I]*S[J]*S[K] * * * * * * * * * * * * * * * 在循环变化不能省略的情况下是不是能 把维数降下来 是不是能把决策的变化范围减少 来提高DP的效率 * * * 改进一下状态的表示方式,设F[I,j]表示前i个箱子叠放j个箱子时可承受的最小重量。 F[i,j]:=Min{F[i-1,j],F[i-1,j-1]+Weight[i] } Ans:=Max(J |F[i,j] )(F[i,j]〈=support[i]〉) 上述算法的状态总数为O(n*n),每个状态转移的状态数为O(1),每次状态转移的时间为O(1),所以总的时间复杂度 =1000*1000=1*10^6。 算法优化 改进后的算法的时间复杂度是改进前的1/3。但如果在Tot-Weight的值很小,而n的值相当大,前面一种方法更好。对于不同的题目,要从多方面分析,选择适合的最优方法。 2、选择适当的规划方向 规划方向的选择主要有两种:顺推和逆推。若初始状态确定,目标状态不确定,则应考虑采用顺推,反之,若目标状态确定,而初始状态不确定,就应该考虑采用逆推。那么,若是初始状态和目标状态都已确定,可以选用双向规划。 动态规划时间效率的优化 双向规划与双向搜索的主要思想类似:在状态空间十分庞大,而初始状态和目标状态又都已确定,为了减少状态的规模,分别从初始状态和目标状态两个方向进行扩展,并在两者的交汇处得到问题的解。 例题4:Divide (Merc`2000) 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值和相等,问是否可以实现。其中大理石的总数不超过20000。 动态规划时间效率的优化 令S=∑(i*a[i]),若S为奇数,则不可能实现,否则令Mid=S/2, 问题转化为能否从给定的数中中选取部分数,使其和为Mid。 设m[i, j]表示能否从价值为1..i的大理石中选出部分大理石, 使其价值和为j,若能,则用true表示,否则用false表示。 则状态转移方程为: m[i, j]=m[i, j] OR m[i-1,j-i*k] (0≤k≤a[i]) 规划的边界条件为:m[i,0]=true; 0≤i≤6 若m[i, Mid]=true,0≤i≤6,则可以实现题目要求,否则不可 能实现。 算法分析 上述算法每个状态转移的状态数为a[i],每次状态转移的时间为O(1),状态总数是所有值为true的状态的总数。 本题在i较小时,值为true的状态也较少,但随着i的增大, 值为true的状态也急剧增多,影响了算法的时间效率。 我们分别求出从价值为1..3的大理石中选出部分大理石所能 获得的所有价值和,和从价值为4..6的大理石中选出部分大 理石所能获得的所有价值和。再判断是否存在和为Mid的价 值和,从而得出问题的解。 算法优化 状态转移方程改进为: 当i≤3时:m[i, j]=m[i, j] OR m[i-1,j-i*k] (1≤k≤a[i]) 当i3时:m[i, j]=m[i, j] OR m[i+1,j-i*k] (1≤k≤a[i]) 规划的边界条件为:m[i,0]=true; 0≤i≤7 1到3 4到6 若存在k,使得m[3,k]=true, m[4,Mid-k]=true,则 可以实现题目要求,否则无法实现。 回顾本题的优化过程可以发现:本题的实际背景与双向搜 索的背景十分相似,同样有庞大的状态空间,有确定的初始 状态和目标状态,状态量都迅速增长,而且可以实现交汇的 判断。 从本题的优化过程,我们认识到,双向扩展以减少状态 量的方法不仅适用于搜索,同样适用于动态规划。这种在不 同解题方法中,寻找共通的属性,从而借用相同的优化思想, 可以使我们不断创造出新的方法。 动态规划时间效率的优化 二、减少每个状态转移的状

文档评论(0)

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

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

1亿VIP精品文档

相关文档