• 四边形不等式优化


    在一些动态规划中状态转移方程是这样的:

            $m[i,j]=min_{i < k leq j}left { m[i,k-1]+m[k,j]+c[i,j] ight }$

    显而易见,这种方法的时间复杂度是$O(n^{3})$,如何去优化呢?

    四边形不等式

    通过四边形不等式的优化,可以进一步限定$k$的范围,从而可以将事件复杂度降为 $O(n^{2})$,我们最终的目的是证明决策变量$k$的单调性

    此优化方法由姚期智的夫人储枫(Frances Yao)所写,我看的有点懵

    算法相关论文地址:论文

    价值函数$c[i][j]$

          $c[b,c]leq c[a,d],left { aleq bleq cleq d ight }  dots dotsdots(1)$

    满足公式(1),则说明价值函数$w[i][j]$满足区间单调性

          $c[a,c]+c[b,d]leq c[b,c]+c[a,d],left { aleq bleq cleq d ight }  dots dotsdots(2)$

    满足公式(2),则说明价值函数$w[i][j]$满足四边形不等式

    状态转移函数$m[i][j]$

    假如有$w[i][j]$同时满足公式(1)、(2),我们可以得到这里的$m[i][j]$也满足四边形不等式,即:

          $m[a,c]+m[b,d]leq m[b,c]+m[a,d],left { aleq bleq cleq d ight }  dots dotsdots(3)$

    论文中是用数学归纳法证明的,相关参考证明过程可参考论文

    这里给出我的一种理解,用分析法来思考问题,有可能会不严谨。

    对于$m[i][j]$假如我们每次选最优的$k$不断向下拆解,即$m[i][j]=m[i][k-1]+m[k][j]+c[i][j]$,直到拆解成$m[i][i]$

    那么对于两边的$c$数组我总能用公式(2)得到不等式的关系,而$m[i][i]$为0,这样公式(3)就是满足的

    决策变量的单调性

    我们用$k[i,j]$表示$m[i][j]$取得最小值时的决策值

    当状态转移函数$m[i][j]$满足(3)的时候,我们有:

            $k[i,j-1]leq k[i][j]leq k[i+1,j] dots dotsdots(4)$

    根据对称性只需要证明$k[i,j-1]leq k[i][j]$,假设$x=k[i,j-1]$,对任意$i < yleq xleq j-1<j$:

        $m[y,j-1]+m[x,j] leq m[y,j]+m[x,j-1],left { y leq xleq j-1 < j ight }$

    不等式两侧同时加上:

          $w[i,j-1]+w[i,j]+m[i,x-1]+m[i,y-1]$

    然后有:

          $m_{y}[i,j-1]+m_{x}[i,j] leq m_{y}[i,j]+m_{x}[i,j-1]$

    因为:

            $m_{x}[i,j-1] leq m_{y}[i,j-1]$

    所以:

            $m_{x}[i,j] leq m_{y}[i,j]$

    从而可以确定$k[i][j]$不可能小于$x$,也就是说$k[i,j-1] leq k[i,j]$


     Refence:

    https://www.dazhuanlan.com/2019/12/08/5dece566e5980/ 

    https://www.luogu.com.cn/problemnew/solution/P1880?page=1

  • 相关阅读:
    线性表(List)
    LUA ipairs遍历的问题
    C#预编译的问题
    Resources与StreamingAssets文件夹的区别
    LUA表与函数的深入理解
    LUA 删除元素的问题
    SVN版本回退
    C# MemoryStream先写后读的奇怪现象
    LUA表 pairs, ipairs输出顺序问题
    LUA table.sort的问题,数组与表的区别
  • 原文地址:https://www.cnblogs.com/wizarderror/p/12386548.html
Copyright © 2020-2023  润新知