快来踩爆这个蒟蒻吧|

Little_corn

园龄:1年1个月粉丝:10关注:17

2024-05-21 17:30阅读: 214评论: 0推荐: 0

决策单调性

一些定义:

  • 四边形不等式

若函数 f 对于任意 1iijj,都有 f(i,j)+f(i,j)f(i,j)+f(i,j),则称 f 满足四边形不等式。

(可以看成是四边形的两条对边和对角线的关系,可以简记为 "交叉小于包含"。)

性质 1.1:

对于任意 1ij,满足 f(i,j)+f(i+1,j+1)f(i,j+1)+f(i+1,j)f 满足四边形不等式的充要条件。

证明: 必要性是显然的。我们将 f(i,j)+f(i+1,j+1)f(i+1,j)+f(i,j+1)

f(i+1,j+2)+f(i,j+1)f(i+1,j+1)+f(i,j+2)

两边分别相加起来,即可达到一个拓展的效果。反复地做充分性即可得证。

  • 区间包含单调性

若有函数 f,对于任意 1iijj,都有 f(l,r)f(l,r), 则称 f 满足区间包含单调性。

  • 决策单调性

在最优化 dp 中,我们称使某个状态取到最优值的决策称为最优化决策。若这个最优化决策随着转移顺序的推进,随着一个方向单调递增或递减的移动,我们称这个 dp 具有决策单调性。

常见判定性质:

性质 2.1:

f,g 函数均满足决策单调性(或区间包含单调性),则对于 a,b>0af+bg 也满足决策单调性(或区间包含单调性)。

这一点容易证明。

性质 2.2:

若函数 f(l,r)=g(r)h(l),则 f 满足四边形不等式,若 g,h 有单调性,则 f 满足区间包含单调性。

证明: 使用性质 1.1 可以发现两边事实上是相等的。

性质 2.3:

若函数 f 是单调递增的下凸函数,w 满足四边形不等式,则 f(w(l,r))

证明:

我们令 w1=w(l,r),w2=w(l,r+1),w3=w(l+1,r),w4=w(l+1,r+1)。考虑证明:f(w2)+f(w3)f(w1)+f(w4)

我们现在有 w2+w3w1+w4,注意到 w1,w4 中一定有一个大于等于 w2,w3 的其中一个。不妨设 w4w2

对待证式和关于 w 的四边形不等式分别做一个变形:

w2w1w4w3

f(w2)f(w1)f(w4)f(w3)

注意到 f 的性质:对于式子 f(x)f(xδ)

  • delta 不变时,x 越大时,该式值越大。

  • x 不变时,delta 越大,该式值越大。

观察待证式发现,等式右边相对于等式左边满足两个条件,从而 f(w(l,r)) 满足四边形不等式。


经典优化套路

(以下我们认为 w 函数可在 O(1) 时间内求出)

1D:

离线决策:

形式: fi=minj<igj1+w(i,j)

性质:此时假如 w 函数满足四边形不等式,则 f 满足决策单调性。

证明:

考虑反证法,记 pi,pj 分别为 fi,fj 的最优决策,若 i,j 是不满足决策单调性的反例(即 pipjji),则我们有:

fpi+w(pi+1,i)fpj+w(pj+1,i)

fpj+w(pj+1,j)fpi+w(pi+1,j)

将两式左右分别相加,整理后发现与 w 满足四边形不等式的性质矛盾。

优化方式:分治

我们考虑递归解决该问题:

solve(l,r,lk,rk):表示要计算 [l,r] 中所有 f 值,并且该区间内的所有点的最优决策点都在 [lk,rk] 这个区间中。

我们先考虑计算 [l,r] 的中点 midf 值。直接暴力遍历 [lk,rk] 即可。同时求出 mid 的最优决策点 pos。那么由决策单调性, [l,mid1] 中的点的最优决策点一定在 [lk,pos] 中。同理 [mid+1,r] 中的点的最优决策点在 [pos,rk] 中。于是我们递归 solve(l,mid1,lk,pos)solve(mid+1,r,pos,rk)

不难发现该算法的递归层数为 O(logn),每层中的每个遍历区域都是紧密排列的,从而该算法的时间复杂度为 O(nlogn)

在线决策:

形式: fi=minj<ifj1+w(i,j)

性质:w 函数满足四边形不等式,则 f 满足决策单调性。

证明: 同上。

优化方式:二分队列

此时发现分治的做法不管用了,因为我们不能先决策 mid

我们令 Pifi 的最优决策位置。考虑一个个遍历每个决策位置并维护 P 数组。

容易观察到 P 的形态会变成紧密排列的相等值段。于是我们用一个队列维护三元组 (id,l,r),其中 id 是决策位置,且 Pi=id(lir).

当我们加入一个决策 (id,l,r) 时,我们这样操作:

1. 取出队头 (idh,lh,rh),若 rh<id 则弹出队头,令 Pi=idh(lhirh),并重复执行 1,否则来到 2

2. 取出队尾 (idt,lt,rt):

  • (a).id 对于 fltidt 更优,弹出队尾,重复执行 2(a).

  • (b).id 对于 frtidt 更劣,我们令 l=rt+1,r=n,执行 3.

  • (c). 若不满足 2(a).2(b).,在区间 [lt,rt] 二分找出最小的 pos,使得 id 对于 fposidt 更优,并令 rt=pos1l=posr=n。执行 3.

3. 加入决策 (id,l,r)

2D:

分层决策:

形式: fi,k=minj<ifj1,k1+w(i,j)

优化方法: 我们令 gi=fi,k1,按 1D 方式转移即可。

合并决策:

形式: fi,j=minik<jf(i,k)+f(k+1,j)+w(i,j)(特殊的,令 fi,i=0

性质:

(1)

结论:w 满足四边形不等式,则 f 也满足四边形不等式。

证明: 发现转移顺序是按区间长度从小到大的,于是我们尝试使用数学归纳法证明。

加入我们已经证明了区间长度小于等于 len1 的情况,显然 len=1 时成立。证明 len 的情况很容易由性质 2.1 推出。

(2)

结论:posi,jf 的最优决策。若 w 满足四边形不等式,则有 posi1,jposi,jposi,j+1

证明: 我们考虑反证法,若有一对 (i,j) 的最优决策 posi,j>posi+1,j,同时我们令 s1=posi,j,s2=posi+1,j。其中 is2<s1<j

由条件我们有:

fi,s1+fs1+1,jfi,s2+fs2+1,j

fi+1,s2+fs2+1,jfi+1,s1+fs1+1,j

两式左右分别相加可知:

fi,s1+fi+1,s2fi+1,s1+fi,s2

注意到 f 是满足四边形不等式的,于是就导出了矛盾。

优化方式:

通过上面的性质 (2),我们可以让 k 只遍历区间 [posi1,j,posi,j+1]。此时的转移均摊下来就是 O(1) 的了。可以把时间复杂度从 O(n3) 优化到 O(n2)

本文作者:Little_corn

本文链接:https://www.cnblogs.com/little-corn/p/18199719

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Little_corn  阅读(214)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起