浅析1D1D动态规划的优化.pptVIP

  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文档。上传文档
查看更多
* * * * * * 浅析1D1D动态规划的优化 所谓1D/1D动态规划,指的是状态数为O(n),每一个状态决策量为O(n)的动态规划方程。直接求解的时间复杂度为O(n^,但是,绝大多数这样的方程通过合理的组织与优化都是可以优化到O(nlogn)乃至O(n)的时间复杂度的。 浅析1D1D动态规划的优化 经典模型一: (b[x]随x不降) 相信大家一定对这个模型不陌生。 这就是利用单调队列优化的经典模型。 我们注意到这样一个性质:如果存在两个数j, k,使得j = k,而且g(k) = g(j),则决策j是毫无用处的。因为根据b[x]单调的特性,如果j可以作为合法决策,那么k一定可以作为合法决策,又因为k比j要优,所以说,如果把待决策表中的决策g(i)按照i排序的话,则g(i)必然是不降的。 这样,就引导我们使用一个单调队列来维护决策表。对于每一个状态f(x)来说,计算过程分为以下几步: 1、队首元素出队,直到队首元素在给定的范围中(=b[i])。 2、此时,队首元素就是状态f(x)的最优决策, 3、计算g(x),并将其插入到单调队列的尾部,同时维持队列的单调性(不断地出队,直到队列单调为止)。 不难证明,算法复杂度为O(n)。 下面看一道例题。 例题1:Sliding Window(poj2823) 题目大意: 给定一个长度为n的序列(n=10^6),从左往右依次输出长度为m的子序列中的最小值和最大值。 例如: input output 8 3 -1 -3 -3 -3 3 3 1 3 -1 -3 5 3 6 7 3 3 5 5 6 7 以求最小值为例: f(x)表示以x-m+1到x这段的最小值。 f(x)=min{a(k)} (x-m+1=k=x) 显然这个方程是满足经典模型一的,直接套用上述算法进行优化。 复杂度为O(n)。 用s(x,i)表示当前状态为x,决策为i时的函数值。 即s(x,i)=f(x)+w[i,x] 记t为状态x的最优决策,即t=k(x)。 现在已知:s(x,t)=s(x,t) (tt) ① 即求满足什么条件时有: s(x,t)=s(x,t)。(xx) ② 我们可以将①式左边+w[t,x]-w[t,x],右边+w[t,x]-w[t,x],即可得到②式,而要不等式成立,就需要: w[t,x]-w[t,x]=w[t,x]-w[t,x] 最后我们得到: w[t,x]+w[t,x]=w[t,x]+w[t,x] (ttxx) 这就是四边形不等式。对于满足四边形不等式的函数,我们称它为凸函数。 结论:f(x)决策单调等价于w[i,x]为凸函数。 从实战的角度来看,我们甚至都不需要验证w函数的这个性质,最经济的方法是写一个朴素算法打出决策表来观察(反正你总还是要check的)。 另外,大家在做题过程中肯定也会自己发现一些验证决策单调性的好方法(个人认为上述方法较为繁琐),这里就不再赘述。 那么,我们如何验证w函数为凸函数,或者说如何判断f(x)决策单调呢? 实际上: w为凸当且仅当w[i,j]+w[i+1,j+1]=w[i+1,j]+w[i,j+1] 因为我们容易证明w[i,j+k]-w[i,j] (k0) 随i的递增而单调不增,也可以证明w[i+k,j]-w[i,j] (k0) 随j的递增而单调不增,进而可以证明:对于任意abcd,有w[a,c]+w[b,d]=w[b,c]+w[a,d]。 我们得到了一个验证w函数为凸函数的方法: 固定j算出w[i,j+1]-w[i][j]关于i的表达式,w是凸的必要条件是表达式随i不增。 固定i算出w[i+1,j]-w[i][j]关于j的表达式,w是凸的必要条件是表达式随j不增。 如果条件都符合,则说明w为凸函数。 这类模型的优化和决策单调性密切相关。 什么是决策单调性呢? 假如用k(x)表示状态x取到最优值时的决策,则决策单调性表述为: 显然,不可能所有的这类方程都能满足决策单调性,我们可以试着推导一下满足方程决策单调性的条件。 经典模型二: 跳过 经典模型二: 有了决策单调性,怎样高效地实现它呢?很容易想到在枚举决策的时候,不需要从1开始,只要从k(x-1)开始就可以了,但这只能降低常数,不可能起到实质性的优化。 另一种想法是从k(x-1)开始枚举决策更新f(x),一旦发现决策u+1不如决策u好,就停止决策过程,选取决策u作为f(x)的最终决策。这样时间是很大提高了,但可惜是不正确的。决策单调性并没有保证f

文档评论(0)

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

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

1亿VIP精品文档

相关文档