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

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

简述

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

定义 1:如果对于任意 \(\ell_1\leq \ell_2\leq r_1\leq r_2\),都有

\[w(\ell_1,r_1)+w(\ell_2,r_2)\leq w(\ell_1,r_2)+w(\ell_2,r_1) \]

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

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

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

\[w(\ell, r)+w(\ell+1,r+1)\leq w(\ell,r+1) + w(\ell+1,r) \]

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

证明:先来证明对于任意 \(\ell_1\leq\ell_2\leq r_1\),都有

\[w(\ell_1,r_1)+w(\ell_2,r_1+1)\leq w(\ell_1,r_1+1)+w(\ell_2,r_1).\tag1 \]

对于 \(i=\ell_2-\ell_1\) 进行归纳,显然当 \(i=0\) 时上式成立,下面证明对 \(i\in[1,r_1-\ell_1]\) 成立。

首先根据归纳假设,有

\[w(\ell_1,r_1)+w(\ell_1+i-1,r_1+1)\leq w(\ell_1,r_1+1)+w(\ell_1+i-1,r_1),\tag2 \]

因为 \(i\leq r_1-\ell_1\),于是有 \(\ell_1+i-1<r_1\),应当有

\[w(\ell_1+i-1,r_1)+w(\ell_1+i,r_1+1)\leq w(\ell_i+i,r_1)+w(\ell_1+i-1,r_1+1),\tag3 \]

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

\[w(\ell_1,r_1)+w(\ell_1+i,r_1+1)\leq w(\ell_1+1,r_1+1)+w(\ell_1+i,r_1), \]

于是对于 \(\forall\ell_1,\ell_2,r_1\in\mathbb Z,\ell_1\leq\ell_2\leq r_1\)\((1)\) 都成立。

在上面的基础上,我们再来证明对于 \(\forall\ell_1,\ell_2,r_1,r_2\in\mathbb Z,\ell_1\leq\ell_2\leq r_1\leq r_2\),都有四边形不等式成立。同理,对 \(j=r_2-r_1\) 进行归纳,显然当 \(j=0\) 时四边形不等式成立,下面对于 \(j>0\) 的情况进行证明。

首先根据归纳假设,有

\[w(\ell_1,r_1)+w(\ell_2,r_1+j-1)\leq w(\ell_1,r_1+j-1)+w(\ell_2,r_1),\tag4 \]

因为 \(r_1+j-1\geq\ell_2\geq\ell_1\),根据 \((1)\),应当有

\[w(\ell_1,r_1+j-1)+w(\ell_2,r_1+j)\leq w(\ell_1,r_1+j)+w(\ell_2,r_1+j-1)\tag5 \]

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

\[w(\ell_1,r_1)+w(\ell_2,r_1+j)\leq w(\ell_1,r_1+j)+w(\ell_2,r_1), \]

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

证毕.

应用

优化 2D1D 动态规划

区间型 DP

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

\[f_{\ell,r}=\min\limits_{\ell\leq k<r}\{f_{\ell,k}+f_{k+1,r}\}+w(\ell, r), \qquad(1\leq\ell<r\leq n) \]

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

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

证明:定义 \(g_{k,\ell,r}=f_{\ell,k}+f_{k+1,r}+w(\ell, r)\),表示决策点为 \(k\) 时的状态值,任取 \(\ell_1\leq\ell_2\leq r_1\leq r_2\),记 \(u=\mathop{\arg\min}\limits_{\ell_1\leq k<r_2}\ g_{k,\ell_1,r_2},v=\mathop{\arg\min}\limits_{\ell_2\leq k<r_1}\ g_{k,\ell_2,r_1}\),分别表示 \(f_{\ell_1,r_2}\)\(f_{\ell_2,r_1}\) 的最小最优决策点。

首先,如果 \(\ell_1=\ell_2\),那么显然成立,然后考虑对于 \(r_2-r_1\) 进行归纳,显然当 \(r_2-r_1=0\) 时成立。

  • \(\ell_1<\ell_2=r_1<r_2\)\(w\) 需要对于区间包含关系具有单调性)

    • \(u<r_1\),则 \(f_{\ell_1,r_1}\leq f_{\ell_1,u}+f_{u+1,r_1}+w(\ell_1,r_1)\),根据归纳假设,有 \(f_{u+1,r_1}+f_{\ell_2,r_2}\leq f_{u+1,r_2}+f_{\ell_2,r_1}\),两式相加即得

      \[f_{\ell_1,r_1}+f_{\ell_2,r_2}\leq f_{u+1,r_2}+f_{\ell_2,r_1}+f_{\ell_1,u}+w(\ell_1,r_1)\leq f_{\ell_2,r_1}+f_{\ell_1,r_2} \]

    • \(u\geq r_1\),则 \(f_{\ell_2,r_2}\leq f_{\ell_2,u}+f_{u+1,r_2}+w(\ell_2,r_2)\),根据归纳假设,有 \(f_{\ell_1,r_1}+f_{\ell_2,u}\leq f_{\ell_1,u}+f_{\ell_2,r_1}\),两式相加即得

      \[f_{\ell_1,r_1}+f_{\ell_2,u}\leq f_{\ell_1,u}+f_{\ell_2,r_1}+f_{u+1,r_2}+w(\ell_2,r_2)\leq f_{\ell_2,r_1}+f_{\ell_1,r_2} \]

  • \(\ell_1<\ell_2<r_1<r_2\)\(w\) 仅需满足四边形不等式)

    • \(u\leq v\),则 \(l_1\leq u< r_1,\ l_2\leq v< r_2\),因此

      \[ \begin{aligned} f_{l_1,r_1} \leq g_{u,l_1,r_1} &= f_{l_1,u} + f_{u+1,r_1} + w(l_1,r_1) \\ f_{l_2,r_2} \leq g_{v,l_2,r_2} &= f_{l_2,v} + f_{v+1,r_2} + w(l_2,r_2) \end{aligned} \]

      再由 \(u+1 \leq v+1 \leq r_1 \leq r_2\) 和归纳假设知

      \[f_{u+1,r_1} + f_{v+1,r_2} \leq f_{u+1,r_2} + f_{v+1,r_1} \]

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

      \[\begin{aligned} f_{l_1,r_1} + f_{l_2,r_2} & \leq f_{l_1,u} + f_{l_2,v} + f_{u+1,r_1} + f_{v+1,r_2} + w(l_1,r_1) + w(l_2,r_2) \\ & \leq g_{u,l_1,r_2} + g_{v,l_2,r_1} = f_{l_1,r_2} + f_{l_2,r_1} \end{aligned} \]

    • \(v< u\),则 \(l_1\leq v<r_1,l_2\leq u<r_2\),因此

      \[\begin{aligned} f_{l_1,r_1} \leq g_{v,l_1,r_1} &= f_{l_1,v} + f_{v+1,r_1} + w(l_1,r_1) \\ f_{l_2,r_2} \leq g_{u,l_2,r_2} &= f_{l_2,u} + f_{u+1,r_2} + w(l_2,r_2) \end{aligned} \]

      再由 \(l_1 \leq l_2 \leq v \leq u\) 和归纳假设知

      \[f_{l_1,v} + f_{l_2,u} \leq f_{l_1,u} + f_{l_2,v} \]

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

      \[\begin{aligned} f_{l_1,r_1} + f_{l_2,r_2} & \leq f_{l_1,u} + f_{l_2,v} + f_{v+1,r_1} + f_{u+1,r_2} + w(l_1,r_2) + w(l_2,r_1) \\ & \leq g_{u,l_1,r_2} + g_{v,l_2,r_1} = f_{l_1,r_2} + f_{l_2,r_1} \end{aligned} \]

综上所述,两种情形均有 \(f_{l_1,r_1} + f_{l_2,r_2} \leq f_{l_1,r_2} + f_{l_2,r_1}\),即四边形不等式成立。

证毕.

定理 3:若状态 \(f\) 满足四边形不等式,记 \(m_{l,r}=\min\{k:f_{l,r} = g_{k,l,r}\}\) 表示最优决策点,则有

\[m_{l,r-1} \leq m_{l,r} \leq m_{l+1,r} \qquad (l + 1 < r) \]

证明:记 \(u = m_{l,r},\ k_1=m_{l,r-1},\ k_2=m_{l+1,r}\),分情况讨论:

  • \(k_1>u\),则 \(u+1 \leq k_1+1 \leq r-1 \leq r\),因此根据四边形不等式有

    \[f_{u+1,r-1} + f_{k_1+1,r} \leq f_{u+1,r} + f_{k_1+1,r-1} \]

    再根据 \(u\) 是状态 \(f_{l,r}\) 的最优决策点可知

    \[f_{l,u} + f_{u+1,r} \leq f_{l,k_1} + f_{k_1+1, r} \]

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

    \[f_{l,u} + f_{u+1,r-1} \leq f_{l,k_1}+f_{k_1+1,r-1} \]

    \(g_{u,l,r-1} \leq g_{k_1,l,r-1}\),但这与 \(k_1\) 是最小的最优决策点矛盾,因此 \(k_1\leq u\)

  • \(u>k_2\),则 \(l\leq l+1 \leq k_2\leq u\),根据四边形不等式可得

    \[f_{l,k_2} + f_{l+1,u} \leq f_{l,u} + f_{l+1, k_2} \]

    再根据 \(k_2\) 是状态 \(f_{l+1, r}\) 的最优决策点可知

    \[f_{l+1,k_2} + f_{k_2+1, r} \leq f_{l+1,u} + f_{u+1,r} \]

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

    \[f_{l,k_2}+f_{k_2+1,r} \leq f_{l,u} + f_{u+1,r} \]

    \(g_{k_2,l,r} \leq g_{u,l,r}\),但这与 \(u\) 是最小的最优决策点矛盾,因此 \(u \leq k_2\)

证毕.

因此,如果在计算状态 \(f_{l,r}\) 的同时将其最优决策点 \(m_{l,r}\) 记录下来,那么我们对决策点 \(k\) 的总枚举量将降为

\[\sum_{1\leq l<r\leq n} (m_{l+1,r} - m_{l,r-1}) = \sum_{i=1}^n (m_{i,n} - m_{1,i})\leq n^2 \]

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

另一形式

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

\[f_{i,j}=\min\limits_{k\leq j}\{f_{i-1,k}+w(k,j)\},\qquad(1\leq i\leq n,1\leq j\leq m) \]

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

优化 1D1D 动态规划

定理及证明

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

\[f_i=\min\limits_{0\leq j<i}\{f_j+w(i,j)\} \]

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

证明:设 \(p_i\)\(f_i\) 的最优决策点,对于 \(\forall i\in[1,n],\forall j\in[0,p_i-1]\),有

\[f_{p_i}+w(p_i,i)\leq f_j+w(j,i),\tag6 \]

\(\forall i'\in[i+1,n]\),由于 \(w\) 满足四边形不等式,于是有

\[w(j,i)+w(p_i,i')\leq w(j,i')+w(p_i,i),\tag7 \]

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

\[f_{p_i}+w(p_i,i')\leq f_j+w(j,i'), \]

也就说明了应有 \(p_{i'}\geq p_i\),即决策单调性。

证毕.

实现

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

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

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

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

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

  1. 取出队尾的三元组 \((t_k,l_k,r_k)\)

  2. \(f_i+w(i,l_k)<f_{t_k}+w(t_k,l_k)\),令 \(pos=l_k\),删掉该三元组,回到 1.

  3. \(f_i+w(i,r_k)>f_{t_k}+w(t_k,r_k)\),直接到 5.

  4. \([l_k,r_k]\) 上二分,找到第一个可行位置,更新为 \(pos\)

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

整体时间复杂度为 \(O(n\log n)\).

参考资料

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

[2] 四边形不等式 - Pedesis

posted @ 2021-12-26 17:00  Dfkuaid  阅读(168)  评论(0编辑  收藏  举报