定义
1.原始定义
假设有一个二元函数 w ( x , y ) w(x,y) w(x,y),如果对于任意 a ≤ b ≤ c ≤ d a \leq b \leq c \leq d a≤b≤c≤d,有
w ( a , d ) + w ( b , c ) ≥ w ( a , c ) + w ( b , d ) w(a, d) + w(b, c) \geq w(a, c) + w(b, d) w(a,d)+w(b,c)≥w(a,c)+w(b,d)
就说函数 w w w满足四边形不等式
2.等价定义
还有一个等价的定义:如果对于任意 a ≤ b a\leq b a≤b,有:
w ( a , b + 1 ) + w ( a + 1 , b ) ≥ w ( a , b ) + w ( a + 1 , b + 1 ) w(a, b + 1) + w(a + 1, b) \geq w(a, b) + w(a + 1, b + 1) w(a,b+1)+w(a+1,b)≥w(a,b)+w(a+1,b+1)
就说函数 w w w满足四边形不等式、
证明 2 -> 1
对于任意 a < c a < c a<c, 有 ( 1 ) (1) (1)式:
w ( a , c + 1 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 1 ) w(a, c + 1) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 1) w(a,c+1)+w(a+1,c)≥w(a,c)+w(a+1,c+1)
对于任意 a + 1 , c a+1, c a+1,c,有 ( 2 ) (2) (2)式:
w ( a + 1 , c + 1 ) + w ( a + 2 , c ) > = w ( a + 1 , c ) + w ( a + 2 , c + 1 ) w(a + 1, c + 1) + w(a + 2, c) >= w(a + 1, c) + w(a + 2, c + 1) w(a+1,c+1)+w(a+2,c)>=w(a+1,c)+w(a+2,c+1)
两式相加得到 ( 3 ) (3) (3)式:
w ( a , c + 1 ) + w ( a + 2 , c ) ≥ w ( a , c ) + w ( a + 2 , c + 1 ) w(a, c + 1) + w(a + 2, c) \geq w(a, c) + w(a + 2, c + 1) w(a,c+1)+w(a+2,c)≥w(a,c)+w(a+2,c+1)
对比 ( 1 ) (1) (1)式和 ( 3 ) (3) (3)式,发现 a + 1 a + 1 a+1可以扩成 a + 2 a + 2 a+2,同理 a + 2 a+2 a+2可以扩成 a + 3 a+3 a+3, a + 3 a+3 a+3可以扩成 a + 4 a+4 a+4……可以一直扩大直至 b ≤ c b\leq c b≤c( b b b是在 a a a和 c c c之间的一个数),从而得到:
w ( a , c + 1 ) + w ( b , c ) ≥ w ( a , c ) + w ( b , c + 1 ) w(a, c + 1) + w(b, c) \geq w(a, c) + w(b, c + 1) w(a,c+1)+w(b,c)≥w(a,c)+w(b,c+1)
同理,对于任意 a < c + 1 a<c+1 a<c+1,有 ( 4 ) (4) (4)式:
w ( a , c + 2 ) + w ( a + 1 , c + 1 ) ≥ w ( a , c + 1 ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c + 1) \geq w(a, c + 1) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c+1)≥w(a,c+1)+w(a+1,c+2)
( 1 ) (1) (1)式与 ( 4 ) (4) (4)式相加得到 ( 5 ) (5) (5)式:
w ( a , c + 2 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c)≥w(a,c)+w(a+1,c+2)
与 ( 1 ) (1) (1)式进行一下直观对比:
( 1 ) (1) (1)式: w ( a , c + 1 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 1 ) w(a, c + 1) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 1) w(a,c+1)+w(a+1,c)≥w(a,c)+w(a+1,c+1)
( 5 ) (5) (5)式: w ( a , c + 2 ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , c + 2 ) w(a, c + 2) + w(a + 1, c) \geq w(a, c) + w(a + 1, c + 2) w(a,c+2)+w(a+1,c)≥w(a,c)+w(a+1,c+2)
可以发现 c + 1 c+1 c+1可以扩成 c + 2 c+2 c+2,同理 c + 2 c+2 c+2可以扩成 c + 3 c+3 c+3, c + 3 c+3 c+3可以扩成 c + 4 c+4 c+4……可以一直扩大一直到 d ( c ≤ d ) d(c\leq d) d(c≤d),从而得到:
w ( a , d ) + w ( a + 1 , c ) ≥ w ( a , c ) + w ( a + 1 , d ) w(a,d) + w(a + 1, c) \geq w(a, c) + w(a + 1, d) w(a,d)+w(a+1,c)≥w(a,c)+w(a+1,d)
再把上式 a + 1 a+1 a+1扩大到 b b b,保证 a ≤ b ≤ c ≤ d a\leq b \leq c \leq d a≤b≤c≤d,就可以得到 1 1 1,即
w ( a , d ) + w ( b , c ) ≥ w ( a , c ) + w ( b , d ) w(a,d) + w(b, c) \geq w(a, c) + w(b, d) w(a,d)+w(b,c)≥w(a,c)+w(b,d)
由此原始定义得证。
所以,证了这么久有啥用呢?
决策单调性
我们在做 D P DP DP时经常会遇见这样的 D P DP DP方程
d p [ i ] = min / max { d p [ j ] + c o s t ( j , i ) } dp[i] = \min/\max\{dp[j] + cost(j, i)\} dp[i]=min/max{dp[j]+cost(j,i)}
这样的 D P DP DP方程被称作 1 D / 1 D 1D/1D 1D/1D动态规划, c o s t ( i , j ) cost(i,j) cost(i,j)决定着优化策略选择
决策单调性定理
如果函数 c o s t ( i , j ) cost(i,j) cost(i,j)满足四边形不等式,则 d p [ i ] dp[i] dp[i]有决策单调性(充分条件)
证明:
注:假设此时已经满足四边形不等式
假设此时的 D P DP DP方程为 d p [ i ] = min { d p [ j ] + c o s t ( j , i ) } dp[i] = \min\{dp[j] + cost(j, i)\} dp[i]=min{dp[j]+cost(j,i)}, d p [ i ] dp[i] dp[i]的决策点是 p [ i ] p[i] p[i],对于 j < p [ i ] − 1 ( j < i ) j < p[i] - 1(j < i) j<p[i]−1(j<i),根据最优性:
d p [ p [ i ] ] + c o s t ( p [ i ] , i ) ≤ d p [ j ] + c o s t ( j , i ) dp[p[i]] + cost(p[i], i) \leq dp[j] + cost(j, i) dp[p[i]]+cost(p[i],i)≤dp[j]+cost(j,i)
假设 i ′ > i i' > i i′>i,此时 j ≤ p [ i ] ≤ i ≤ i ′ j \leq p[i] \leq i \leq i' j≤p[i]≤i≤i′,根据四边形不等式:
c o s t ( j , i ′ ) + c o s t ( p [ i ] , i ) ≥ c o s t ( j , i ) + c o s t ( p [ i ] , i ′ ) cost(j, i') + cost(p[i], i) \geq cost(j, i) + cost(p[i], i') cost(j,i′)+cost(p[i],i)≥cost(j,i)+cost(p[i],i′)
对这个式子进行移项,得到
c o s t ( p [ i ] , i ′ ) − c o s t ( p [ i ] , i ) ≤ c o s t ( j , i ′ ) − c o s t ( j , i ) cost(p[i], i') - cost(p[i], i) \leq cost(j, i') - cost(j, i) cost(p[i],i′)−cost(p[i],i)≤cost(j,i′)−cost(j,i)
将此式和 D P DP DP式(根据最优性得出的式子)相加得:
d p [ p [ i ] ] + c o s t ( p [ i ] , i ′ ) ≤ d p [ j ] + c o s t ( j , i ′ ) dp[p[i]] + cost(p[i], i') \leq dp[j] + cost(j, i') dp[p[i]]+cost(p[i],i′)≤dp[j]+cost(j,i′)
由此可得,对于 i ′ i' i′来说, p [ i ] p[i] p[i]比 j j j优,得证。
小小结
在上面的证明中我们可以知道,等价定义可以推出原始定义,而原始定义又可以推出决策单调性定理,其实在日常做题中,如果满足了等价定义,我们就可以直接用决策单调性来解决问题(就是说 2 2 2可以推出 1 1 1, 1 1 1可以推出 3 3 3,那么 2 2 2可以推出 3 3 3)
下面就来看一道例题吧
例题
链接:洛谷P3515 [POI2011]Lightning Conductor
题目很简洁,就是为了找这么一个数 p p p满足题目中给出的式子
那么我们不妨先移项,得到如下的式子
p ≥ a [ j ] − a [ i ] + ∣ i − j ∣ p\geq a[j] - a[i] + \sqrt{|i - j|} p≥a[j]−a[i]+∣i−j∣
而此时我们又要找到满足条件的最小的 p p p
所以此时的 p p p只要等于后面这个式子的最大值即可,即
p = max ( a [ j ] − a [ i ] + ∣ i − j ∣ ) , 1 ≤ j ≤ n p = \max(a[j] - a[i] + \sqrt{|i - j|}), 1\leq j \leq n p=max(a[j]−a[i]+∣i−j∣),1≤j≤n
先考虑一种比较好的情况,假设 j < i j<i j<i,那么绝对值就可以去掉了,即
p = max ( a [ j ] + i − j ) − a [ i ] p = \max(a[j] + \sqrt{i - j}) - a[i] p=max(a[j]+i−j)−a[i]
上式中 max \max max里的式子取到最大值,相当于负的这个式子取到最小值
所以我们可以定义 d p [ i ] = min ( − a [ j ] − i − j ) dp[i] = \min(-a[j] - \sqrt{i - j}) dp[i]=min(−a[j]−i−j)
为什么要用 min \min min呢,因为在上面的证明中我们使用的都是 min \min min,所以这里是用 min \min min,如果是 max \max max的话可以换成负数取个 min \min min就好了,这是一样的,反正 d p [ i ] dp[i] dp[i]是自己定义的,定义成正负都一样
但是这样直接做是 n 2 n^2 n2的,这不能达到我们的要求,所以现在我们来进行优化
观察一下这个 D P DP DP方程的二元函数,那么此时的 w ( j , i ) w(j,i) w(j,i)就等于 − a [ j ] − i − j -a[j] - \sqrt{i - j} −a[j]−i−j
为了进行优化,下一步我们证明一下这个 D P DP DP能不能满足决策单调性
求证: w ( j , i + 1 ) + w ( j + 1 , i ) ≥ w ( j , i ) + w ( j + 1 , i + 1 ) w(j, i+ 1) + w(j + 1, i) \geq w(j, i) + w(j + 1, i + 1) w(j,i+1)+w(j+1,i)≥w(j,i)+w(j+1,i+1)
证明:
把式子展开得
− a [ j ] − i + 1 − j − a [ j + 1 ] − i − j − 1 ≥ − a [ j ] − i − j − a [ j + 1 ] − i − j -a[j] - \sqrt{i + 1 - j} - a[j + 1] - \sqrt{i - j - 1} \geq -a[j] - \sqrt{i - j} - a[j + 1] - \sqrt{i - j} −a[j]−i+1−j−a[j+1]−i−j−1≥−a[j]−i−j−a[j+1]−i−j
发现可以去掉带有 a a a数组的部分,然后式子就变成了这样
− i + 1 − j − i − j − 1 ≥ − i − j − i − j -\sqrt{i + 1 - j} - \sqrt{i - j - 1} \geq -\sqrt{i - j} - \sqrt{i - j} −i+1−j−i−j−1≥−i−j−i−j
移一下项得
i − j − i − j − 1 ≥ i + 1 − j − i − j \sqrt{i - j} - \sqrt{i - j - 1} \geq \sqrt{i + 1 - j} - \sqrt{i - j} i−j−i−j−1≥i+1−j−i−j
令 x = i − j x = i - j x=i−j,因为 i > j i > j i>j ,所以 x > 0 x>0 x>0,于是一开始那个繁琐的问题就变成了证明 x − x − 1 ≥ x + 1 − x \sqrt{x} - \sqrt{x - 1} \geq \sqrt{x + 1} - \sqrt{x} x−x−1≥x+1−x
定义函数 f ( x ) = x − x − 1 f(x)=\sqrt{x} - \sqrt{x - 1} f(x)=x−x−1,问题又转化成了证明 f ( x ) ≥ f ( x + 1 ) f(x) \geq f(x + 1) f(x)≥f(x+1),那么就是要证明 f ( x ) f(x) f(x)是单调非递增的函数即可
懒得证单调性……自己搜吧 q w q qwq qwq
因为是个单调递减函数,所以证明成功
j > i j>i j>i时可以把序列翻转,得到的结果是一样的,做题的时候将序列翻转反向再做一遍上述操作即可,就不证明了
代码鸽了
总结
因为我很辣鸡,所以只能写这么一点点了 q w q qwq qwq
下面几个参考都可以去看一下,我大部分的思路全来自这里
另外给大家推荐几道题8
决策单调性优化模板题,但是会卡精度
可以用四边形不等式优化来做,也有一些很 n p np np的做法
上面那道题的加强版