网站大量收购独家精品文档,联系QQ:2885784924

lzy动态规划的优化.pptVIP

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

动态规划的优化 动态规划的时间优化 使用动态规划方法解题,对于不少问题之所以具有较高的时间效率,关键在于它减少了“冗余”。所谓“冗余”,就是指不必要的计算或重复计算部分,算法的冗余程度是决定算法效率的关键。动态规划在将问题规模不断缩小的同时,记录已经求解过的子问题的解,充分利用求解结果,避免了反复求解同一子问题的现象,从而减少了冗余。 时间复杂度=状态总数* 每个状态转移的状态数* 每次状态转移的时间 四边形不等式的优化 合并石子问题:在一个操场上摆放着一排n(n≤20)堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试编程求出将n堆石子合并成一堆的最小得分和最大得分以及相应的合并方案 。 状态表示为: m[i,j],1≤i≤j≤n,表示合并d[i..j]所得到的最小得分,则状态转移方程和边界条件为: m[i,j]=0 i=j i<j 令s[i,j]=k ,w[i,j]= 当函数w[i,j]满足 时,称w满足四边形不等式。 当函数w[i,j]满足w[i’,j]≤w[i,j’] 时称w关于区间包含关系单调 令s[i,j]=max{k | m[i,j]=m[i,k-1]+m[k,j]+w[i,j] } 由函数m[i,j]满足四边形不等式可以推出函数s[i,j]的单调性,即 s[i,j]≤s[i,j+1]≤s[i+1,j+1], i≤j 改正后的转移方程 程序实现 S[I,i]:=I; S[I,i+1]:=i+1/I; For L:=3 to n do for i:=1 to n do [ j:=i+L-1; for k:=s[I,j-1] to s[i+1,j] do if m[I,j]m[I,k-1]+m[k,j]+w[I,j] then [ 更新 m[I,j] s[I,j]:=k ] ] 农 田 个 数 你的老家在河北农村。过年时,你回老家去拜年。你家有一片N?M农田,将其看成一个N?M的方格矩阵,有些方格是一片水域。你的农村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总共包含了多少个不存在水域的正方形农田。 两个正方形农田不同必须至少包含下面的两个条件中的一条: 边长不相等 左上角的方格不是同一方格 输入 输入数据第一行为两个由空格分开的正整数N、M(1=mn=1000) 第2行到第N+1行每行有M个数字(0或1),描述了这一片农田。0表示这个方格为水域,否则为农田(注意:数字之间没有空格,而且每行不会出现空格) 输出 满足条件的正方形农田个数。 样例输入 3 3 110 110 000 样例输出 5 样例说明 边长为1的正方形农田有4块 边长为2的正方形农田有1块 合起来就是5块 分析 设F[I,J]表示以方格(I,J)为右下角,可以得到的最大无水正方形边长,那么显然如果(I,J)是水域,F[I,J]=0; 否则F[I,J]=Min{F[I-1,J],F[I,J-1],F[I-1,J-1]}+1 求出了F数组的值后,我们可以用F1[I]表示F数组中,值为I的个数。 显然,假定边长为I的正方形数目为Sum[I],那么有Sum[I]=Sum[I+1]+F1[I] 最后只要算出Sum数组各个值的和为问题的解。 通过分析上面的算法会发现,它的时间复杂度为O(N^2),采用滚动数组的话,空间复杂度为O(N),几乎达到理论的下界了。 火 车 票 由于n最大可以为10000,如果要在规定时间内出解,算法的时间复杂度必须严格控制在n^2以内,这就使我们想到了动态规划。 设f[I]表示从起点站(站A)到站I的最少费用。X表示某一站J与站I的间距离。 F[I] = min{f[j] + cost(I,j)} (a = j I) c1 (0X=L1) Cost(I, j) = c2 (L1X=L2) c3 (L2X=L3) ∞ (

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档