DP优化 - 四边形不等式优化

若对于 \(i\leq i'\leq j \leq j'\),二维数组 \(a\) 满足如下性质:

\[a_{i,j} + a_{i',j'} \leq a_{i,j'} + a_{i', j} \]

则称数组 \(a\) 满足四边形不等式。

若对于 \(i\leq i'\leq j \leq j'\),二维数组 \(a\) 满足如下性质:

\[a_{i',j} \leq a_{i,j'} \]

则称数组 \(a\) 满足关于区间包含的单调性。

动态规划中有一种常见的转移方程(一般见于区间 DP):

\[f_{i,j}=\begin{cases} \min\limits_{i\leq k< j}\{x|x=w_{i,j}+f_{i,k}+f_{k+1,j}\}&i<j\\ 0&i=j\\ \infty&i>j\end{cases}\]

如果这时 \(w_{i,j}\) 同时满足四边形不等式和区间包含单调性,则可以使用四边形不等式优化。

推导过程:

首先可以证明二维数组 \(f\) 也满足四边形不等式,即

\[f_{i,j} + f_{i',j'} \leq f_{i,j'} + f_{i', j} \]

分类讨论:

① 若 \(i = i'\leq j \leq j'\)

\[\begin{aligned} f_{i,j} + f_{i',j'} &= f_{i',j} + f_{i,j'}\end{aligned} \]

② 若 \(i < i'\leq j = j'\)

\[\begin{aligned} f_{i,j} + f_{i',j'} &= f_{i,j'} + f_{i',j}\end{aligned} \]

③ 若 \(i < i' =j < j'\)

原不等式则转换为:

\[\begin{aligned} f_{i,j} + f_{j,j'} &\leq f_{i,j'} + f_{j, j} \end{aligned} \]

\(f_{j,j} =0\),又转化为:

\[\begin{aligned} f_{i,j} + f_{j,j'} &\leq f_{i,j'} \end{aligned} \]

对于所有 \(i\),都有:

\[\begin{aligned} f_{i,i+1} + f_{i+1,i+2} &= w_{i,i+1} + w_{i+1,i+2} + f_{i,i} + f_{i+1,i+1} + f_{i+1,i+1} + f_{i+2,i+2}\\&= w_{i,i+1} + w_{i+1,i+2}\\&\leq w_{i,i+2}\\&\leq f_{i, i+2}\end{aligned} \]

\(k=\max\limits_{i\leq x\leq j}\{x|f_{i,j} = w_{i,j} + f_{i,x} + f_{x+1,j}\}\)

此时,若 \(k\leq i' = j\)

假设 \(f_{k+1,j} + f_{i'j'} \leq f_{k+1,j'}\) 成立,则有

\[\begin{aligned} f_{i,j} + f_{j,j'} &\leq w_{i,j} + f_{i,k} + f_{k+1,j} + f_{j,j'}\\&\leq w_{i,j'} + f_{i,k} + f_{k+1,j} + f_{j,j'}\\ &\leq w_{i,j}+f_{i,k}+f_{k+1,j'}\\&\leq f_{i,j'}\end{aligned} \]

\(k > i' = j\)

假设 \(f_{k+1,j} + f_{i'j'} \leq f_{k+1,j'}\) 成立,则有

\[\begin{aligned} f_{i,j} + f_{j,j'} &\leq f_{i,j} + w_{j,j'} + f_{j,k} + f_{k+1,j'}\\&\leq w_{i,j'} + f_{i,j} + f_{i',k} + f_{k+1,j'} \\ &\leq w_{i,j}+f_{i,k}+f_{k+1,j'}\\&\leq f_{i,j'}\end{aligned} \]

综述,通过数学归纳法可知:

\[\begin{aligned} f_{i,j} + f_{j,j'} &\leq f_{i,j'} \end{aligned} \]

④ 若 \(i < i' <j < j'\)

\(k_1=\max\limits_{i\leq x\leq j'}\{x|f_{i',j} = w_{i',j} + f_{i',x} + f_{x+1,j}\}\)
\(k_2=\max\limits_{i'\leq x\leq j}\{x|f_{i,j'} = w_{i,j'} + f_{i,x} + f_{x+1,j'}\}\)

\(k_1\leq k_2\),因为 \(i \leq k_1 \leq j', i' \leq k_2\leq j\),所以 \(i\leq k_1\leq k_2 \leq j\)

所以 \(i\leq k_1\leq j, i'\leq k_2 \leq j'\)

此时,

\[\begin{aligned} f_{i,j}+f_{i',j'} &\leq w_{i,j} + w_{i',j'} + f_{i,k_2} + f_{k_2+1,j} + f_{i',k_1} + f_{k_1+1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_2} + f_{k_2+1,j} + f_{i',k_1} + f_{k_1 + 1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_2} + f_{i',k_1} + f_{k_2+1,j} + f_{k_1 + 1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_2} + f_{i',k_1} + f_{k_1 + 1,j} + f_{k_2+1,j'}\\ &\leq (w_{i,j'} + f_{i,k_2} + f_{k_2+1,j'}) + (w_{i',j} + f_{i',k_1} + f_{k_1 + 1,j})\\ &\leq f_{i,j'}+f_{i',j} \end{aligned}\]

\(k_1> k_2\),因为 \(i \leq k_1 \leq j', i' \leq k_2\leq j\),所以 \(i'\leq k_2 < k_1 \leq j'\)

所以 \(i'\leq k_1\leq j', i\leq k_2 \leq j\)

此时,

\[\begin{aligned} f_{i,j}+f_{i',j'} &\leq w_{i,j} + w_{i',j'} + f_{i,k_1} + f_{k_1+1,j} + f_{i',k_2} + f_{k_2+1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_1} + f_{k_1+1,j} + f_{i',k_2} + f_{k_2 + 1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_1} + f_{i',k_2} + f_{k_1+1,j} + f_{k_2 + 1,j'}\\ &\leq w_{i,j'} +w_{i',j} + f_{i,k_1} + f_{i',k_2} + f_{k_2 + 1,j} + f_{k_1 + 1,j'}\\ &\leq (w_{i,j'} + f_{i,k_1} + f_{k_1+1,j'}) + (w_{i',j} + f_{i',k_2} + f_{k_2 + 1,j})\\ &\leq f_{i,j'}+f_{i',j} \end{aligned}\]

综述,由数学归纳法可知,\(f_{i,j}+f_{i',j'}\leq f_{i,j'} + f_{i',j}\)

根据 ①②③④,得,当 \(i\leq i' \leq j \leq j'\) 时,\(f_{i,j}+f_{i',j'}\leq f_{i,j'} + f_{i',j}\)

假设 \(k_{i,j} = \max\limits_{i\leq x\leq j}\{x|f_{i,j}=w_{i,j}+f_{i,x}+f_{x+1,j}\}\)

则可以推出 \(k_{i,j}\) 单调

\[k_{i-1,j} \leq k_{i,j} \leq k_{i,j+1} \]

证明:

\(i > j\)

\[k_{i-1,j} = k_{i, j} = k_{i, j+1} = \infty \]

\(i = j\)

\[k_{i,j} = 0 < \infty = k_{i, j+1}\\k_{i,j}= 0<\infty = k_{i+1,j} \]

\(i < j\)

我们假设 \(f_{i,j,k} = w_{i,j} + f_{i,k} + f_{k + 1, j}\)

\(f_{i,j,k_{i,j}} = f_{i,j}\)

对于任意 \(k\leq k' < j\),有

\[f_{k + 1, j} + f_{k' + 1,j+1} \leq f_{k + 1, j+1} + f_{k' + 1, j} \]

等式两边增加 \(w_{i,j} + f_{i,k} + w_{i,j + 1} + f_{i,k'}\),得

\[\begin{aligned} w_{i,j} + f_{i,k} + w_{i,j + 1} + f_{i,k'} + f_{k + 1, j} + f_{k' + 1,j+1} &\leq w_{i,j} + f_{i,k} + w_{i,j + 1} + f_{i,k'} + f_{k + 1, j+1} + f_{k' + 1, j}\\ w_{i,j} + f_{i,k} + f_{k + 1, j} + w_{i,j + 1} + f_{i,k'} + f_{k' + 1,j+1} &\leq w_{i,j + 1} + f_{i,k} + f_{k + 1, j+1} + w_{i,j} + f_{i,k'} + f_{k' + 1, j}\\ f_{i,j,k} + f_{i,j+1,k'} &\leq f_{i,j + 1,k} + f_{i,j,k'}\\ f_{i,j,k} - f_{i,j,k'} &\leq f_{i,j+1,k} - f_{i,j+1,k'}\end{aligned}\]

所以,\(f_{i,j,k'} \leq f_{i,j,k}\) 可以推出 \(f_{i,j+1,k'} \leq f_{i,j+1,k}\),即:

\[f_{i,j,k'} \leq f_{i,j,k} \to f_{i,j+1,k'} \leq f_{i,j+1,k} \]

对于所有 \(k < k_{i,j}\),都有 \(f_{i,j,k_{i,j}} = f_{i,j} \leq f_{i,j,k}\)

则对于所有 \(k< k_{i,j}\),有 \(f_{i,j+1,k_{i,j}} \leq f_{i,j+1,k}\)

所以 \(k_{i,j} \leq k_{i,j+1}\)

对于任意 \(i < k\leq k'\),有

\[f_{i, k} + f_{i + 1, k'} \leq f_{i, k'} + f_{i + 1, k} \]

等式两边增加 \(w_{i,j} + f_{k+1,j} + w_{i+1,j} + f_{k' + 1, j}\),得

\[\begin{aligned} w_{i,j} + f_{k+1,j} + w_{i+1,j} + f_{k' + 1, j} + f_{i, k} + f_{i + 1, k'} &\leq w_{i,j} + f_{k+1,j} + w_{i+1,j} + f_{k' + 1, j} + f_{i, k'} + f_{i + 1, k}\\ w_{i,j} + f_{i, k} + f_{k+1,j} + w_{i+1,j} + f_{i + 1, k'} + f_{k' + 1, j} &\leq w_{i,j} + f_{i, k'} + f_{k' + 1, j} + w_{i+1,j} + f_{i + 1, k} + f_{k+1,j}\\ f_{i,j,k} + f_{i+1,j,k'} &\leq f_{i,j,k'} + f_{i+1,j,k}\\ f_{i,j,k} - f_{i,j,k'} &\leq f_{i+1,j,k} - f_{i+1,j,k'}\end{aligned}\]

所以,\(f_{i,j,k'} \leq f_{i,j,k}\) 可以推出 \(f_{i+1,j,k'} \leq f_{i+1,j,k}\),即:

\[f_{i,j,k'} \leq f_{i,j,k} \to f_{i+1,j,k'} \leq f_{i+1,j,k} \]

对于所有 \(k < k_{i,j}\),都有 \(f_{i,j,s_{i,j}} = f_{i,j} \leq f_{i,j,k}\)

则对于所有 \(k< k_{i,j}\),有 \(f_{i,j+1,s_{i,j}} \leq f_{i+1,j,k}\)

所以 \(k_{i,j} \leq k_{i+1,j}\)

综述,\(k_{i-1,j} \leq k_{i,j} \leq k_{i,j+1}\)

所以,\(k_{i,j-1} \leq k_{i,j} \leq k_{i+1,j}\)

所以 \(f_{i,j}\) 转移方程可以转换为

\[f_{i,j}=\begin{cases} \min\limits_{k_{i,j-1}\leq k< k_{i+1,j}}\{x|x=w_{i,j}+f_{i,k}+f_{k+1,j}\}&i<j\\ 0&i=j\\ \infty&i>j\end{cases}\]

我们缩小了 \(k\) 的范围,从而缩小的计算量。

最终时间复杂度为 \(O(n^2)\)(原时间复杂度为 \(O(n^3)\)

posted on 2023-02-14 17:42  Evan_song  阅读(42)  评论(0)    收藏  举报