1D1D动态规划优化初步37257.pdfVIP

  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文档。上传文档
查看更多
1D/1D 动态规划优化初步 所谓 1D/1D动态规划,指的是状态数为O(n),每一个状态决策量为O(n) 的动态规划方程。 直接求解的时间复杂度为O(n2) ,但是,绝大多数这样的方程通过合理的组织与优化都是可 以优化到O(nlogn)乃至O(n) 的时间复杂度的。这里就想讲一讲我对一些比较初步的经典的优 化方法的认识。 本文中使用两种方式表示一个函数:f(x)与 f[x],用方括号表示的函数值可以在规划之前 全部算出(常量),而用圆括号表示的函数值必须在规划过程中计算得到(变量)。无论是什 么函数值一经确定,在以后的计算中就不会更改。 x −1 经典模型一:f (x ) min{ f (i ) =+w[i , x ]} i 1 相信这个方程大家一定是不陌生的。另外,肯定也知道一个关于决策单调性的性质: 假如用 k(x)表示状态 x 取到最优值时的决策,则决策单调性表述为: ∀i ≤ j, k (i) ≤k ( j) ,当且仅当: ∀i ≤ j, w[i, j] +w[i +1, j +1] ≤w[i +1, j] +w[i, j +1] ,对于这个性质的证明读者可以在 任意一篇讲述四边形不等式的文章中找到,所以这里不再重复。而且,从实战的角度来看, 我们甚至都不需要验证 w 函数的这个性质,最经济也是最可靠的方法是写一个朴素算法打 出决策表来观察(反正你总还是要对拍)。当然,有的时候题目要求你做一点准备工作,去 掉一些明显不可能的决策,然后在应用决策单调性。这是上述性质也许会有点用处。 正如前文中所述,我们关注的重点是怎样实现决策单调性。有了决策单调性,怎样高效地 实现它呢?很容易想到在枚举决策的时候,不需要从 1 开始,只要从 k(x-1)开始就可以了, 但这只能降低常数,不可能起到实质性的优化。 另一种想法是从 k(x-1)开始枚举决策更新 f(x),一旦发现决策u 不如决策 u+1 来得好,就 停止决策过程,选取决策 u 作为 f(x)的最终决策。这样时间是很大提高了,但可惜是不正确 的。决策单调性并没有保证 f(j)+w[j,x]有什么好的性质,所以这样做肯定是不对的。 刚才我们总是沿着“f(x)的最优决策是什么”这个思路进行思考,下面我们换一个角度, 思考对于一个已经计算出来的状态 f(j),“f(j)能够更新的状态有哪些”。这样,每一步过程中 某些状态的决策可能不是最优的,但是当算法结束的时候所有状态对应的决策一定是最优 的。 一开始,只有 f(1)的函数值被计算出来,于是所有状态的当前最优决策都是 1。 111111111111111111111111111111111111111111111111111111111111111 现在,显然 f(2)的值已经确定了:它的最有决策只能是 1。我们用决策2 来更新这个决策 表。由于决策单调性,我们知道新的决策表只能有这样的形式: 111111111111111111111111111111222222222222222222222222222222 这意味着我们可以使用二分法来查找“转折点”,因为如果在一个点 x 上,如果决策 2 更 好,则所有比 x 大的状态都是决策 2 更好;如果 x 上决策 1 更好,则所有比 x 小的状态都是 决策 1 更好。 现在决策 1 和决策 2 都已经更新完毕,则 f(3)业已确定,现在用决策 3 来更新所有状态。 根据决策单调性,现在的决策表只能有以下 2 种类型: 11111111111111111111111111111111122222222222222222233333333333 1111111111111111111111111333333333333333333333333333333333333 而这样的决策表示绝对不会出现的: 111111111111333333333333333333322222222222222222222222222222 ,不可能。 那么,我们的更新算法就是: 1、考察决策 2 的区间[b,e]的b 点上是否决策 3 更优,如果是,则全部抛弃决策 2 ,将此 区间划归决策 3 ;如果否,则在决策2 的区间[b,e]中二分查找转折点。 2 、如果第 1 问的回答是“是”,则用同样的方法考察决策 1。 推演到这一步

文档评论(0)

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

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

1亿VIP精品文档

相关文档