【dp决策单调性&四边形不等式优化】

首先声明两个误区:

  1. 代价函数满足四边形不等式是dp具有决策单调性的充分不必要条件,所以通过打表,发现dp具有决策单调性不能说明代价函数满足四边形不等式
  2. 仅有dp的的决策点单调这一个条件是无法用二分+单调队列优化的,因为二分+单调队列优化需要满足一个条件:在新求出一个fi时,考虑i可以作为那些位置的最优决策,需要找到一个位置满足在该位置之前,p数组目前存储的决策都比i优,在这位置之后,p数组存储的决策都比i差,即满足可二分性,但是仅有决策单调这一个条件是不一定满足可二分性的。
    实际上四边形不等式是个比决策单调性更强的条件,他能保证在任意一个时刻存储最优决策点的p数组都是单调的,或者说,对于任意一个决策集合,最优决策数组p都是单调的(换句话说,对于任意一个决策p,如果在x处p优于[1,p-1]的所有决策,那么在任意大于x处,决策p都优于[1,p-1]的所有决策)而决策单调性只能保证在最后时刻p数组是单调的。
  3. 分治做法并非严格弱于二分+单调队列,在代价函数不易计算快速计算,但是可以较快的维护出区间左右端点拓展一个的值时,用分治做法会更优P5574 [CmdOI2019]任务分配问题
    以下默认为求min

四边形不等式

定义:对于二元函数\(w(x,y)\),如果\(\forall a\leq b\leq c\leq d\),都有\(w(a,d)+w(b,c)\geq w(a,c)+w(b,d)\),那么称\(w(x,y)\)满足四边形不等式
记忆方法:交叉优于包含
等价定义:\(\forall a<b\),都有\(w(a,b+1)+w(a+1,b)\geq w(a,b)+w(a+1,b+1)\),注意到这个定义将范围缩小到1,一般更容易证明

决策单调性

对于\(f_i=min_{0\leq j<i}\{g_j+w(j,i)\}\),记\(p_i\)为令\(f_i\)取到最小值的\(j\)的值,即\(p_i\)\(i\)的最优决策点。若\(p\)单调不降,则称\(f\)具有决策单调性
定理:
\(w(x,y)\)满足四边形不等式,那么\(f\)具有决策单调性,用反证法不难证明,而且实际上可以推出上面提到过的“对于任意一个决策集合,最优决策数组p都是单调的”
优化方法:

  1. \(f\neq g\),可以使用分治算法:
    设当前区间为\([l,r]\),决策区间为\([L,R]\),先\(O(R-L+1)\)计算出区间中点的决策点,然后分治为子区间,总复杂度\(O(N\log N)\)
    注意,有些二维dp,是按层转移的,层与层之间可以看做这里的f和g的关系,于是可以把复杂度中一个\(N\)换成\(\log\)
    还有一点,这个分治算法是不需要满足具备四边形不等式的,因此如果它决策点单调,即可使用该算法解决
    当代价函数不好快速计算,但是可以用类似莫队的方法进行维护时,用分治算法,左右端点移动的总距离为\(O(N\log N)\)
  2. 二分+单调队列:
    单调队列维护决策数组\(p[i\cdots n]\),队列中每个元素存储三元组\((j,l,r)\)表示“\(l\cdots r\)的最优决策为\(j\)”。
    队头维护i的最优决策,当加入决策i时,如果队尾存的区间左端点处,i比原先的决策优,就把队尾弹出,否则在队尾的区间上二分找到第一个i比原先决策优的位置,进行更改。
    复杂度也为\((N\log N)\),注意这里允许\(f=g\),即同层转移,但是需要满足四边形不等式。
    例题
    提交记录
    该题的四边形不等式可以写成\(2\sqrt{a}\leq \sqrt{a-1}+\sqrt{a+1}\),两边平方后容易发现其正确性。
    本题还可以用上面的分治算法解决。

二维区间DP的四边形不等式优化

定理1:
对于\(f_{i,j}=min_{i\leq k<j}\{f_{i,k}+f_{k+1,j}\}+w(i,j)\)(特别地,\(f_{i,i}=w(i,i)=0\)),若:

  1. \(w(x,y)\)满足区间包含单调性
  2. \(w(x,y)\)满足四边形不等式
    那么\(f_{i,j}\)也满足四边形不等式。
    注意,这里比1D动态规划多了个条件:区间包含单调性,即\(\forall a\leq b\leq c\leq d\),有\(w(a,d)\geq w(b,c)\)。通俗地讲就是“被包含优于包含”
    定理2:
    \(P_{i,j}\)\(f_{i,j}=min_{i\leq k<j}\{f_{i,k}+f_{k+1,j}\}+w(i,j)\)(特别地,\(f_{i,i}=w(i,i)=0\))中令\(f_{i,j}\)取到最优值的k值,即最优决策点
    如果\(f\)满足四边形不等式,那么对于任意\(i<j\)都有\(P_{i,j-1}\leq P_{i,j}\leq P_{i+1,j}\),如果把P数组写成矩阵的形式,会发现这个性质实际上说明P矩阵每行每列都是单调不降的,区间DP都是按P矩阵的对角线进行转移的,可以发现一个对角线最多枚举\(O(N)\)个,因此总复杂度\(O(N^2)\)
posted @ 2022-08-05 20:01  glq_C  阅读(81)  评论(0)    收藏  举报