四边形不等式优化的数学证明
前言
感谢果果让我知道了在没完全看懂一个东西之前不能乱过题。
戒掉狂妄,戒掉浮躁。清楚目标,不要被冲昏头脑。
今天可能写不完,能写多少写多少。
四边形不等式优化的实现
之所以把实现放到前面来,是因为实现是比证明简单得多的。
应用场景
对于某些区间 dp ,常有这样的转移方程:
$$ dp_{i, i} = 0 $$
$$ dp_{i, j} = \min_{i < k \leq j} {dp_{i, k - 1} + dp_{k, j} + w_{i, j}} $$
其中二元函数 $w_{i, j}$ 表示 $[i, j]$ 这个区间的花费,是个定值。
四边形不等式
这样的转移显然是 ${O(n ^ 3)}$ 的,有时候不可接受。
但是只要 $w$ 满足如下性质,我们就可以优化到 $O(n ^ 2)$。
-
单调性
对于任意 $i \leq i' \leq j \leq j'$ ,有:
$$w_{i', j} \leq w_{i, j'}$$
即“包含大于等于被包含”。
-
四边形不等式
对于任意 $i \leq i' \leq j \leq j'$ ,有:
$$w_{i, j} + w_{i', j'} \leq w_{i', j} + w_{i, j'}$$
即“交叉小于等于包含”。
把这四个数按大小在数轴上表示出来,中间两个数向上平移,构成一个四边形。
此时“交叉小于等于包含”就转化成了几何意义:四边形中两条对角线之和小于一对对边之和。
这显然是有违天理的,因此更准确地说,这玩意应该叫“反四边形不等式”。
若满足以上条件:
设 $i$ 到 $j$ 的最优决策点 $k$ 为 $s_{i, j}$ ,则有
$$ s_{i, j - 1} \leq s_{i, j} \leq s_{i + 1, j} $$
这样,每次我们枚举分割点 $k$ 的范围便可以减小。
对于每一个 $i$ ,需执行循环次数为 $s_{i + 1, j} - s_{i, j - 1}$ 。
将所有的 $i$ 对应的循环次数加起来,发现总次数不超过 $n$ 。
因此成功降了一维。
由此引出我们的四边形不等式定理:如果 $w$ 满足四边形不等式。则这样的 dp 可以在平方复杂度内解决。
数学证明
先来看看我们要证明什么。
1) 对于任意的 $i, j$,有 $s_{i, j - 1} \leq s_{i + 1, j}$ 。
2) 对于任意的 $i, j$, 有 $s_{i, j - 1} \leq s_{i, j} \leq s_{i + 1, j} $ 。
Lemma 1
若 $w$ 满足以上两个条件,则 $dp$ 也满足四边形不等式。
证明:
设有 $i \leq i' \leq j \leq j'$ 。
则需证 $dp_{i, j} + dp_{i', j'} \leq dp_{i, j'} + dp_{i', j}$ 。
当 $i' = i$ 或 $j' = j$ ,易证不等式两边相等,满足条件。
接下来分类讨论。
case 1. $i \leq i' = j \leq j'$
这时它在几何上就转变成了一个三角形。
把 $i' = j$ 这个看起来很特殊的玩意代到我们的四边形不等式里面去:
$$dp_{i, j} + dp_{j, j'} \leq dp_{i, j'}$$
转化成几何意义就是,三角形两边之和小于第三边。
所以我说这个玩意是离经叛道有悖祖宗天理不容。
又设 $k$ 为区间 $[i, j']$ 的最优决策点。
分类讨论:
-
$k \leq j$ : 此时 $k$ 在 $[i, j]$ 区间内。
但是, $k$ 不一定是 $[i, j]$ 的最优决策点。
因此有
$$ dp_{i, j} \leq w_{i, j} + dp_{i, k - 1} + dp_{k, j} $$
两边同加 $dp_{j, j'}$ 有
$$ dp_{i, j} + dp_{j, j'} \leq w_{i, j} + dp_{i, k - 1} + dp_{k, j} + dp_{j, j'} $$
此时利用数学归纳法:假定对于 $k$ ,四边形(准确地说,三角形)不等式成立。
因此又有 $dp_{k, j} + dp_{j, j'} \leq dp_{k, j'}$ 。
由单调性,有 $w_{i, j} \leq w_{i, j'}$ 。
结合两者得
$$ w_{i, j} + dp_{i, k - 1} + dp_{k, j} + dp_{j, j'} \leq w_{i, j'} + dp_{i, k - 1} + dp_{k, j'} = dp_{i, j'} $$
即
$$ dp_{i, j} + dp_{j, j'} \leq dp_{i, j'} $$
得证。
-
$k > j$ : 此时 $k$ 在 $[i', j']$ 区间内。
证法相同,不再赘述。
case 2. $i \leq i' < j \leq j'$
此时是一个四边形。个人认为这个证法和三角形的证法是差不多的。都是试图用归纳法构造出包含的两个区间。
由于此时有 $[i, j']$ 和 $[i', j]$ 两个区间,所以需要设两个元表示此时包含/被包含区间的最优决策点。
那么我们设 $k$ 为 $[i, j']$ 最优点, $l$ 为 $[i', j]$ 最优点。
再分类讨论。
-
$k \leq l$
因为 $l \leq j$ ,所以 $k$ 在 $[i, j]$ 内。
又因为 $k$ 不一定是 $[i, j]$ 区间的最优, $l$ 不一定是 $[i', j']$ 的最优:
$$ dp_{i, j} + dp_{i', j'} \leq dp_{i, k - 1} + dp_{k, j} + dp_{i', l - 1} + dp_{l, j'} + w_{i, j} + w_{i', j'} $$
由 $w$ 的四边形不等式性质得
$$ w_{i, j} + w_{i', j'} \leq w_{i', j} + w_{i, j'} $$
再次利用归纳法,假设对于 $k, l$ ,四边形不等式成立。
则有
$$ dp_{k, j} + dp_{l, j'} \leq dp_{k, j'} + dp_{l, j} $$
可以看到,上述变换的目的是将原表示的两个区间的右端点互换,即从“交叉”形态转为“包含”形态。
最终得
$$ dp_{i, k - 1} + dp_{k, j} + dp_{i', l - 1} + dp_{l, j'} + w_{i, j} + w_{i', j'} \leq dp_{k, j'} + dp_{l, j} + w_{i', j} + w_{i, j'} + dp_{i, k - 1} + dp_{i', l - 1} $$
即
$$ dp_{i, j} + dp_{i', j'} \leq dp_{i, j'} + dp_{i', j} $$
得证。
-
$k > l$
证法相同,不再赘述。
综上引理1证毕。
Lemma 2
即最优决策点单调性的证明。
形式化地,证明 $s_{i, j} \leq s_{i, j + 1} \leq s_{i + 1, j + 1}$ 。
先证左半部分, $s_{i, j} \leq s_{i, j + 1}$ 。
我们设最靠右的最优分割点 $s_{i, j} = k'$ ,另有一个分割点 $k < k'$ ,问题转化为证明 $k$ 在 $[i, j + 1]$ 上也并非最优(或是同样优秀而更靠左)。
把式子写出来。
$$ dp_{i, k' - 1} + dp_{k', j + 1} + w_{i, j + 1} \leq dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1} $$
就是要证这个。
首先根据引理 1 有四边形不等式
$$ dp_{k, j} + dp_{k', j + 1} \leq dp_{k, j + 1} + dp_{k', j} $$
两边同加 $w_{i, j} + w_{i, j + 1} + dp_{i, k - 1} + dp_{i, k' - 1}$ 。
可以看出,这个式子是为了将两边分别凑成两个分割点的转移方程之和。
得
$$ (dp_{i, k - 1} + dp_{k, j} + w_{i, j}) + (dp_{i, k' - 1} + dp_{k', j + 1} + w_{i, j + 1}) \leq (dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1}) + (dp_{i, k' - 1} + dp_{k', j} + w_{i, j}) $$
(这里加了括号是为了更清楚地表示出各个分割点的转移方程)
把 $(dp_{i, k - 1} + dp_{k, j} + w_{i, j})$ 移到右边去,得
$$ (dp_{i, k' - 1} + dp_{k', j + 1} + w_{i, j + 1}) \leq (dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1}) + (dp_{i, k' - 1} + dp_{k', j} + w_{i, j}) - (dp_{i, k - 1} + dp_{k, j} + w_{i, j}) $$
此时式子左边就是我们要的那个更优状态。
再来推第二个式子。
因为我们知道
$$ dp_{i, k' - 1} + dp_{k', j} + w_{i, j} \leq dp_{i, k - 1} + dp_{k, j} + w_{i, j} $$
两边同加 $dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1}$ 得
$$ dp_{i, k' - 1} + dp_{k', j} + w_{i, j} + dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1} \leq dp_{i, k - 1} + dp_{k, j} + w_{i, j} + dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1} $$
移项得
$$ (dp_{i, k' - 1} + dp_{k', j} + w_{i, j}) + (dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1}) - ( dp_{i, k - 1} + dp_{k, j} + w_{i, j}) \leq dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1} $$
发现左边这一坨和上面的右边这一坨是一样的。
合并不等式得
$$ dp_{i, k' - 1} + dp_{k', j + 1} + w_{i, j + 1} < dp_{i, k - 1} + dp_{k, j + 1} + w_{i, j + 1} $$
得证。
原不等式的右半部分 $s_{i, j + 1} \leq s_{i + 1, j + 1}$ 也可以以相同方式证出。这部分的证明先咕咕咕一下,近几天补上。
因此我们已经证明了决策点的单调性,这一部分可以直接用优化。
时间复杂度(定理)证明
前面讲过了。对于一个固定的左区间 $i$ ,其需枚举的决策点范围互不相交(除端点外),各个区间长度之和是不超过 $n$ 的,与枚举 $i$ 在同一个数量级。
本文作者:aaaaaaqqqqqq
本文链接:https://www.cnblogs.com/aaaaaaqqqqqq/p/17976949
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步