zoukankan      html  css  js  c++  java
  • 四边形不等式优化DP

    用法

    如果有状态方程$f(i,j)=min(f(i,k)+f(k+1,j))+w(i,j)$

    且w满足区间包含的单调性和四边形不等式,

    则f(i,j)的决策s(i,j)单调,即$s(i,j)le s(i,j+1)le s(i+1,j+1)$

    证明

    首先介绍区间包含的单调性和四边形不等式

    区间包含的单调性:

    如果对于$forall i_1le i_2le j_2le j_1$(即$[i_2,j_2]subset [i_1,j_1]$),都有$w(i_2,j_2)le w(i_1,j_1)$
    则称w具有区间包含的单调性

    四边形不等式:

    如果对于$forall i_1le i_2le j_2le j_1$,都有$w(i_1,j_2)+w(i_2,j_1)le w(i_1,j_1)+w(i_2,j_2)$
    (即将一个大区间+一个小区间分成两个相交的区间会更优)
    则称w满足四边形不等式

    下面是证明需要的两个定理

    1. 如果上述的w函数同时满足区间包含单调性和四边形不等式性质,那么f也满足四边形不等式性质

      证明:

      1. 如果$i_1=i_2$或$j_1=j_2$,则$f(i_1,j_2)+f(i_2,j_1)=f(i_1,j_1)+f(i_2,j_2)$,不等式显然成立
      2. 如果$i_1lt i_2=j_2lt j_1$,则只需证$f(i_1,i_2)+f(i_2,j_1)le f(i_1,j_1)+f(j_2,j_2)$
        设k为$f(i_1,j_1)$的一个决策,即$f(i_1,j_1)=f(i_1,k)+f(k+1,j_1)+w(i_1,j_1)$
        一.如果$kle i_2$
        则$f(i_1,i_2)+f(i_2,j_1)le f(i_1,k)+f(k+1,i_2)+w(i_1,i_2)+f(i_2,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1,k)+f(k+1,i_2)+w(i_1,j_1)+f(i_2,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1,k)+f(k+1,j_1)+w(i_1,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1,j_1)$
        二.如果$kle i_2$
        ​则$f(i_1,i_2)+f(i_2,j_1)le f(i_1,i_2)+f(i_2,k)+f(k+1,j_1)+w(i_2,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1,i_2)+f(i_2,k)+f(k+1,j_1)+w(i_1,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1k)+f(k+1,j_1)+w(i_1,j_1)$
        $f(i_1,i_2)+f(i_2,j_1)le f(i_1,j_1)$
      3. 如果$i_1lt i_2lt j_2lt j_1$
        设x为$f(i_1,j_1)$的一个决策,y为$f(i_2,j_2)$的一个决策
        一.如果$xle y$
        则$f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,j_2)+w(i_1,j_2)+f(i_2,y)+f(y+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,y)+f(y+1,j_2)+w(x+1,j_2)+w(i_1,j_2)+f(i_2,y)+f(y+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,y)+f(y+1,j_2)+w(x+1,j_1)+w(i_1,j_2)+f(i_2,y)+f(y+1,j_1)+w(i_2,j_1)​$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,j_1)+f(y+1,j_2)+w(i_1,j_2)+f(i_2,y)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,j_1)+f(y+1,j_2)+w(i_2,j_2)+f(i_2,y)+w(i_1,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,j_1)+f(i_2,j_2)$
        二.如果$xgt y$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,y)+f(y+1,j_2)+w(i_1,j_2)+f(i_2,x)+f(x+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,y)+f(y+1,j_2)+w(i_1,j_2)+f(i_2,y)+f(y+1,x)+w(i_2,x)+f(x+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,y)+f(y+1,j_2)+w(i_1,j_2)+f(i_2,y)+f(y+1,x)+w(i_1,x)+f(x+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(y+1,j_2)+w(i_1,j_2)+f(i_2,y)+f(x+1,j_1)+w(i_2,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,x)+f(x+1,j_1)+f(y+1,j_2)+w(i_2,j_2)+f(i_2,y)+w(i_1,j_1)$
        $f(i_1,j_2)+f(i_2,j_1)le f(i_1,j_1)+f(i_2,j_2)$
    2. 如果f满足四边形不等式,则f的决策s单调($s(i,j)le s(i,j+1)le s(i+1,j+1)$)

      证明:

      1. 如果$ige j$,则显然成立
      2. 如果$ilt j$
        设$f_k(i,j)=f(i,k)+f(k+1,j)+w(i,j)$
        由于f 满足四边形不等式,因此对于任意的$kle k^{'}$ ,有$f(k,j)+f(k^{'},j+1)le f(k^{'},j)+f(k,j+1)$
        将等式两边同时加上$w(i,j)+f(i,k-1)+w(i,j+1)+f(i,k^{'}-1)$
        $f_k(i,j)+f_{k^{'}}(i,j+1)le f_{k^{'}}(i,j)+f_k(i,j+1)$
        若$f_{k^{'}}(i,j)le f_k(i,j)$则$f_{k^{'}}(i,j+1)le f_k(i,j+1)$
        对于所有的$tlt s(i,j)$,都有$f_t(i,j)ge f_{s(i,j)}(i,j)$
        也就有$f_t(i,j+1)ge f_{s(i,j)}(i,j+1)$
        所以$s(i,j)le s(i,j+1)$,同理可证出$s(i,j)le s(i+1,j)$
        所以$s(i,j)le s(i,j+1)le s(i+1,j+1)$

    结合上面两个定理,于是就有如果w满足区间包含的单调性和四边形不等式,则s单调

    复杂度证明

    在没有优化之前,复杂度无疑是$O(n^3)$的

    有了优化后,我们可以按照$j-i$从小到大枚举状态

    于是在计算f(i,j)之前已经计算出了f(i,j-1)和f(i+1,j)

    因为有$s(i,j-1)le s(i,j)le s(i+1,j)$

    复杂度变为$sumlimits_{i=1}^{n}sumlimits_{j=i}^{n}s(i+1,j)-s(i,j-1)$

    等于$sumlimits_{i=1}^{n}s(i+1,n)-s(1,i-1)$(因为除了这些,其他的s都是一加一减被削掉了)

    于是就是$O(n^2)$的了

    一些应用及变形

    POJ 1160         思路

    HDU3480         思路

    本文证明过程复杂且数量较多,如有错误欢迎指出

    参考资料:

    《动态规划加速原理之四边形不等式》——赵爽

  • 相关阅读:
    设计模式_享元设计模式(flyweight)
    eclipse的使用
    Bank项目
    反射练习
    反射接口
    反射
    32-一笔画(欧拉图)
    67-蓝桥省赛-2014
    13-STL-二分查找
    31-最长公共子序列
  • 原文地址:https://www.cnblogs.com/bennettz/p/8962936.html
Copyright © 2011-2022 走看看