[DP 浅析]四边形不等式优化

下面的证明的思想多数为数学归纳分类讨论反证法

简述

定义 w(i,j) 为一个定义在 Z 上的二元函数,有如下定义:

定义 1:如果对于任意 12r1r2,都有

w(1,r1)+w(2,r2)w(1,r2)+w(2,r1)

成立,那么称 w 满足四边形不等式(即“交叉小于包含”),如果等号始终成立,那么称 w 满足四边形恒等式

定义 2:如果对于任意 rr,都有 w(,r)w(,r) 成立,那么则称 w 对于区间包含关系具有单调性

定理 1:如果对于定义域上任意 <r,都有

w(,r)+w(+1,r+1)w(,r+1)+w(+1,r)

成立,那么 w(,r) 满足四边形不等式。

证明:先来证明对于任意 12r1,都有

(1)w(1,r1)+w(2,r1+1)w(1,r1+1)+w(2,r1).

对于 i=21 进行归纳,显然当 i=0 时上式成立,下面证明对 i[1,r11] 成立。

首先根据归纳假设,有

(2)w(1,r1)+w(1+i1,r1+1)w(1,r1+1)+w(1+i1,r1),

因为 ir11,于是有 1+i1<r1,应当有

(3)w(1+i1,r1)+w(1+i,r1+1)w(i+i,r1)+w(1+i1,r1+1),

(2)(3) 左右两边分别相加,于是有

w(1,r1)+w(1+i,r1+1)w(1+1,r1+1)+w(1+i,r1),

于是对于 1,2,r1Z,12r1(1) 都成立。

在上面的基础上,我们再来证明对于 1,2,r1,r2Z,12r1r2,都有四边形不等式成立。同理,对 j=r2r1 进行归纳,显然当 j=0 时四边形不等式成立,下面对于 j>0 的情况进行证明。

首先根据归纳假设,有

(4)w(1,r1)+w(2,r1+j1)w(1,r1+j1)+w(2,r1),

因为 r1+j121,根据 (1),应当有

(5)w(1,r1+j1)+w(2,r1+j)w(1,r1+j)+w(2,r1+j1)

(4)(5) 左右两边分别相加可得

w(1,r1)+w(2,r1+j)w(1,r1+j)+w(2,r1),

于是假设成立,即四边形不等式成立。

证毕.

应用

优化 2D1D 动态规划

区间型 DP

常见的一种动态规划的状态转移方程为

f,r=mink<r{f,k+fk+1,r}+w(,r),(1<rn)

直接简单实现上面的转移,那么时间复杂度为 O(n3),如果 w(l,r) 满足一些特殊性质,那么我们可以用四边形不等式对其进行优化。

定理 2:如果 w(,r) 满足四边形不等式且对于区间包含关系具有单调性,那么状态 fl,r 满足四边形不等式。

证明:定义 gk,,r=f,k+fk+1,r+w(,r),表示决策点为 k 时的状态值,任取 12r1r2,记 u=argmin1k<r2 gk,1,r2,v=argmin2k<r1 gk,2,r1,分别表示 f1,r2f2,r1 的最小最优决策点。

首先,如果 1=2,那么显然成立,然后考虑对于 r2r1 进行归纳,显然当 r2r1=0 时成立。

  • 1<2=r1<r2w 需要对于区间包含关系具有单调性)

    • u<r1,则 f1,r1f1,u+fu+1,r1+w(1,r1),根据归纳假设,有 fu+1,r1+f2,r2fu+1,r2+f2,r1,两式相加即得

      f1,r1+f2,r2fu+1,r2+f2,r1+f1,u+w(1,r1)f2,r1+f1,r2

    • ur1,则 f2,r2f2,u+fu+1,r2+w(2,r2),根据归纳假设,有 f1,r1+f2,uf1,u+f2,r1,两式相加即得

      f1,r1+f2,uf1,u+f2,r1+fu+1,r2+w(2,r2)f2,r1+f1,r2

  • 1<2<r1<r2w 仅需满足四边形不等式)

    • uv,则 l1u<r1, l2v<r2,因此

      fl1,r1gu,l1,r1=fl1,u+fu+1,r1+w(l1,r1)fl2,r2gv,l2,r2=fl2,v+fv+1,r2+w(l2,r2)

      再由 u+1v+1r1r2 和归纳假设知

      fu+1,r1+fv+1,r2fu+1,r2+fv+1,r1

      将前两个不等式累加,并将第三个不等式代入,可得

      fl1,r1+fl2,r2fl1,u+fl2,v+fu+1,r1+fv+1,r2+w(l1,r1)+w(l2,r2)gu,l1,r2+gv,l2,r1=fl1,r2+fl2,r1

    • v<u,则 l1v<r1,l2u<r2,因此

      fl1,r1gv,l1,r1=fl1,v+fv+1,r1+w(l1,r1)fl2,r2gu,l2,r2=fl2,u+fu+1,r2+w(l2,r2)

      再由 l1l2vu 和归纳假设知

      fl1,v+fl2,ufl1,u+fl2,v

      将前两个不等式累加,并将第三个不等式代入,可得

      fl1,r1+fl2,r2fl1,u+fl2,v+fv+1,r1+fu+1,r2+w(l1,r2)+w(l2,r1)gu,l1,r2+gv,l2,r1=fl1,r2+fl2,r1

综上所述,两种情形均有 fl1,r1+fl2,r2fl1,r2+fl2,r1,即四边形不等式成立。

证毕.

定理 3:若状态 f 满足四边形不等式,记 ml,r=min{k:fl,r=gk,l,r} 表示最优决策点,则有

ml,r1ml,rml+1,r(l+1<r)

证明:记 u=ml,r, k1=ml,r1, k2=ml+1,r,分情况讨论:

  • k1>u,则 u+1k1+1r1r,因此根据四边形不等式有

    fu+1,r1+fk1+1,rfu+1,r+fk1+1,r1

    再根据 u 是状态 fl,r 的最优决策点可知

    fl,u+fu+1,rfl,k1+fk1+1,r

    将以上两个不等式相加,得

    fl,u+fu+1,r1fl,k1+fk1+1,r1

    gu,l,r1gk1,l,r1,但这与 k1 是最小的最优决策点矛盾,因此 k1u

  • u>k2,则 ll+1k2u,根据四边形不等式可得

    fl,k2+fl+1,ufl,u+fl+1,k2

    再根据 k2 是状态 fl+1,r 的最优决策点可知

    fl+1,k2+fk2+1,rfl+1,u+fu+1,r

    将以上两个不等式相加,得

    fl,k2+fk2+1,rfl,u+fu+1,r

    gk2,l,rgu,l,r,但这与 u 是最小的最优决策点矛盾,因此 uk2

证毕.

因此,如果在计算状态 fl,r 的同时将其最优决策点 ml,r 记录下来,那么我们对决策点 k 的总枚举量将降为

1l<rn(ml+1,rml,r1)=i=1n(mi,nm1,i)n2

上式的第一个等号可以通过将两个 Σ 分别展开合并同类项得证。

另一形式

另一种常见的状态转移方程为

fi,j=minkj{fi1,k+w(k,j)},(1in,1jm)

具有与上面同样的结论与性质。

优化 1D1D 动态规划

定理及证明

一种常见的状态转移方程为

fi=min0j<i{fj+w(i,j)}

定理 4:若 w 满足四边形不等式,那么 f 具有决策单调性。

证明:设 pifi 的最优决策点,对于 i[1,n],j[0,pi1],有

(6)fpi+w(pi,i)fj+w(j,i),

i[i+1,n],由于 w 满足四边形不等式,于是有

(7)w(j,i)+w(pi,i)w(j,i)+w(pi,i),

(6)(7) 左右两部分分别相加即得

fpi+w(pi,i)fj+w(j,i),

也就说明了应有 pipi,即决策单调性。

证毕.

实现

由于决策单调性,p 一定是一个非严格递增的序列,我们对 p 进行维护,即对于当前转移完的 i,我们考虑从哪里开始 i 开始作为最优的决策点。

显然一种朴素的做法是直接在 p 上进行二分,找到对应位置 pos,然后 j[pos,n],将 pj 修改为 i

一种更为简洁的做法是,用一个队列维护 p,利用 p 是一个非严格递增的序列的性质,每一段相同的用一个三元组 (tk,lk,rk),表示当前 i[lk,rk],pi=tk.

同时,如果一个三元组的右边界已经小于当前处理的位置,它一定不再有贡献,可以直接丢掉,于是就类似与单调队列,此时第一个合法的队头就是该位置的最优决策点。

考虑用 i 更新决策点的过程,我们按照以下步骤进行:

  1. 取出队尾的三元组 (tk,lk,rk)

  2. fi+w(i,lk)<ftk+w(tk,lk),令 pos=lk,删掉该三元组,回到 1.

  3. fi+w(i,rk)>ftk+w(tk,rk),直接到 5.

  4. [lk,rk] 上二分,找到第一个可行位置,更新为 pos

  5. 在队尾加入 (i,pos,n)

整体时间复杂度为 O(nlogn).

参考资料

[1] 四边形不等式优化 - OI Wiki

[2] 四边形不等式 - Pedesis

posted @   Dfkuaid  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示