四边形不等式学习笔记

  四边形不等式是一种动态规划的优化方法,通常利用其来证明决策单调性,以优化动态规划的时间复杂度(减少枚举决策点的时间从而降一个时间维度)。  

  

一,四边形不等式:

前置说明:\(w(l, r)\)是区间\([l,r]\)上的权值函数,可以理解为dp转移边上的边权,即转移一步的花费。

定义:

(1)区间包含单调性:若 \(l \le l' \le r'\le r\) 且 \(w(l',r') \le w(l,r)\),则称函数 \(w(l,r)\) 具备区间包含单调性。

(2)四边形不等式:若对任意的 \(l_1 \le l_2 \le r_1 \le r_2\) 有 \(w(l_1, r_1) + w(l_2,r_2) \le w(l_1, r_2) + w(l_2, r_1)\),则称函数 \(w(l,r)\) 满足四边形不等式。

四边形不等式判定定理:

  • 若对于任意 \(a<b\) 均有\(w(a,b)+w(a+1,b+1)\le w(a,b+1) + w(a+1,b)\),则函数 \(w(l, r)\) 满足四边形不等式。

证明(采用数学归纳法):

(1) 注意定义给出的条件a和a+1,b和b+1,说明:当 \(l_1 + 1 = l_2\) 且 \(r_1 + 1 = r_2\) 成立时,函数 \(w\) 满足四边形不等式关系。

(2) 根据 (1) 来证明,当 \(l_1 + k = l_2\) 且 \(r_1 + 1= r_2\) 成立时,函数 \(w\) 仍满足四边形不等式关系。

 对于任意 \(a+1 < c\) 有 \(w(a,c)+w(a+1,c+1)\le w(a,c+1)+w(a+1,c)\) ①

 同时写出 \( w(a+1, c) + w(a+2, c+1) \le w(a+1, c+1) + w(a+2,c)\) ② 这里\(a+2=c\)都没关系了,一般\(w(i,i)\)都会设置为0或者其它特殊常数。

 ①+②得:\(w(a,c)+w(a+2,c+1)\le w(a,c+1)+w(a+2,c)\) 

 从而通过两个\(l_1+1=l_2\)的式子构建出\(l_1+2=l_2\)的式子,同理对于任意的正整数k,\(l_1+k=l_2\)都满足四边形不等式。

(3) 我们发现在上述构造过程中, \(l_1+k_l=l_2\) 和 \(r_1+k_r=r_2\) 两个条件相互独立。所以通过(2)的证明,\(r_1+k=r_2\)也都满足四边形不等式。

最后,对于任意的 \(l_1\le l_2 \le r_1 \le r_2\) 都满足四边形不等式。

 

下面我们来探讨如何利用上面的四边形不等式来优化一些递推方程。 

 

二,一维线性DP优化

线性递推式:\(dp_i = min_{j<i}\space\{dp_j + w(j, i)\}\) 注意\(w\)函数在\(min\)里面

  • 定理: 当\(w\)函数满足四边形不等式时,\(dp\)函数满足决策单调性。

一些假设:

 设\(p_i\)为\(dp_i\)的决策点,\(p_{i-1}\)是\(dp_{i-1}\)的决策点。

证明(采用反证法):

 \(p_i\)是i的决策点,而\(p_{i-1}\)是i-1的决策点,我们要证明的是:\(p_{i-1} \le p_i\)

 我们现在假设:\(p_i \lt p_{i-1} \lt i-1 \lt i\)。

 ① \(dp_{p_i} + w(p_i, i) \le dp_{p_{i-1}} + w(p_{i-1}, i)\) 因为\(p_i\)是i的最小决策点。

 ② \(w(p_i, i-1) + w(p_{i-1}, i) \le w(p_i, i) + w(p_{i-1}, i-1)\) 这一步是根据\(w\)的四边形不等式。

 ①+②得:\(dp_{p_i} + w(p_i, i-1) \le dp_{p_{i-1}} + w(p_{i}, i-1)\) 这说明 \(p_i\)才是i-1的决策点,与假设相矛盾。

所以证明出如果\(p_{i-1}\)是i-1的决策点,\(p_i\)是i的决策点,那么\(p_i\)一定大于等于\(p_{i-1}\)。

根据决策点的单调性,我们可以使用单调队列+二分快速得出决策点。

(1)例题:CF321E Ciel and Gondolas 使用wqs二分 + \(w\)函数四边形不等式的决策单调性 \(O(n*logn*logW)\),W是值域。

(2)今天刷题刷到了一道:Teamwork LUOGUP5124 本来以为可以四边形不等式优化,结果G了,一开始以为转移一步的函数是满足四边形不等式的,结果写一下发现并不满足。。。就是:\(max[l,r]*(r-l+1)+max[l+1,r+1]*(r-l+1) \ge max[l,r+1]*(r-l+2) + max[l+1,r]*(r-l)\)。在{1,1e9}这个数组里面就无法成立。。。。我是sb,还想了半天是不是笔记写错了。

(3)例题:H-Knapsack_2020ICPC·小米 网络选拔赛第二场 【题解】物品按w分类,分完类按v从大到小排序(假设数组为a),再做前缀和sum。使用多重背包的方式转移dp。然后w函数就是\(w(j,i)=sum[i-j]\),显然有:\(w(j,i)+w(j+1,i+1)=2*sum[i-j]\ge w(j,i+1)+w(j+1,i)=sum[i-j+1]+sum[i-j] \Rightarrow a[i-j]\ge a[i-j+1]\)。满足决策单调性。使用单调队列+二分的方式转移即可(或者使用分治)。【这道题有很多人直接先贪心再小范围01背包搞过去了,但是实际上是不对的-HACK

(4)例题:P5929 [POI1999]地图【这道题虽然可以暴力,但是仍然可以使用wqs二分+决策单调性解决】 提交记录

但是我还是想知道:为什么W(l,r)函数满足四边形不等式。可以想一下证明。 (我是暴力check出来的)

 

三,二维DP优化

类型一:区间递推DP \(F_{l,r} = \min_{l\le k\lt r}\space\{F_{l,k}+F_{{k+1},r}\}+w(l,r)\) 

类型二:序列划分DP \(F_{k,i} = \min_{j < i}\space\{F_{k-1,j} + w(j, i)\} \) k一般代表序列划分成k段 

首先直接给出2个定理:

  • 定理1:如果\(w\)函数满足1.区间包含单调性、2.四边形不等式,那么\(F\)函数满足四边形不等式
  • 定理2:如果\(F\)函数满足了四边形不等式,定义\(P_{l,r}\)为\(F[l][r]\)的决策点,那么有: \(P_{l,r-1} \le P_{l,r} \le P_{l+1,r}\)

类型一的证明可以在OI-WIKI[参考资料(2)]找到,而且较详细,把关注点放在第二类。(参照文章底下[参考资料(1)]的证明过程)

类型二的四边形不等式感觉不如第一类那么直观,因为有一维表示划分了多少段,而另一维是序列[1:i]。(写到这里时,我还是不能直接理解)

先证明定理一:

假设函数\(w\)满足四边形不等式以及区间包含单调性,以及\(P[i][j]\)是\(F[i][j]\)的最优决策点。

(1) 当i==j时,\(0+0=F[i][i]+F[i+1][i+1] \le F[i][i+1] + F[i+1][i] = F[i][i+1] + 0\)(假设f[i][i]=0,且非法状态都是0)

(2) 当i<j时,设\(x=P[i][j+1],y=P[i+1][j]\),且分两种情况:

 第一种:\(i-1\le x \le y \le j\)\begin{align*}F[i][j]+F[i+1][j+1] &\le F[i-1][x]+W(x,j)+F[i][y]+W(y,j+1) \\ &\le F[i-1][x]+W(x,j+1)+F[i][y]+W(y,j) = F[i][j+1]+F[i+1][j]\end{align*}

 第二种:\(i \le y < x < j\)\begin{align*}F[i][j]+F[i+1][j+1] &\le F[i-1][y]+W(y,j)+F[i][x]+W(x,j+1)\\&\le F[i-1][y]+W(y,j+1)+F[i][x]+W(x,j)=F[i][j+1]+F[i+1][j]\end{align*}

 

 

参考资料:

(1)四边形不等式-a1b3c7d9 强推这篇,写得超级好

(2)OI-WIKI - 有较多的证明以及应用

(3)四边形不等式 Pedesis - 有些证明的思路较巧妙

(4)四边形不等式 罗勇军 

(5)四边形不等式学习笔记 - 学会打表验证

(6)赵爽的论文 

(7)四边形不等式讲解 

posted @ 2022-02-18 15:42  PigeonG  阅读(645)  评论(0)    收藏  举报