若对于 \(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)\))