四边形不等式优化

本文介绍了四边形不等式在算法优化中的重要性,详细讲解了不同形式的四边形不等式如何应用于动态规划问题。通过定理证明和实例解析,阐述了如何利用四边形不等式来简化问题,提高算法的时间复杂度,如石子合并、Lightning Conductor问题等。此外,文章还探讨了决策单调性和单调队列在优化过程中的作用。
摘要由CSDN通过智能技术生成

形式 1 1 1

转移形如 f ( i , j ) = { min ⁡ i < k ≤ j f ( i , k − 1 ) + f ( k , j ) + w ( i , j ) , i < j 0 , i = j ∞ , i > j f(i,j)=\left\{ \begin{aligned} \min_{i<k\le j} f(i,k-1)+f(k,j)+w(i,j),i<j\\ 0,i=j\\ \infty,i>j \end{aligned} \right. f(i,j)= i<kjminf(i,k1)+f(k,j)+w(i,j),i<j0,i=j,i>j
给出一些定义
若函数 g ( i , j ) g(i,j) g(i,j)满足 a ≤ b ≤ c ≤ d , g ( a , c ) + g ( b , d ) ≤ g ( a , d ) + g ( b , c ) a\le b\le c\le d,g(a,c)+g(b,d)\le g(a,d)+g(b,c) abcd,g(a,c)+g(b,d)g(a,d)+g(b,c)(可简记为交叉小于等于包含),那么称函数 g g g满足四边形不等式
若函数 g ( i , j ) g(i,j) g(i,j)满足 a ≤ b ≤ c ≤ d , g ( b , c ) ≤ g ( a , d ) a\le b\le c\le d,g(b,c)\le g(a,d) abcd,g(b,c)g(a,d),那么称函数 g g g满足区间单调性

定理1 若 w w w满足四边形不等式和区间单调性,那么 f f f满足四边形不等式

证明: a = b a=b a=b或者 c = d c=d c=d时显然成立
对区间长度 d − a d-a da进行归纳证明

  • a < b = c < d a<b=c<d a<b=c<d
    k = min ⁡ { k ∣ f ( a , k − 1 ) + f ( k , d ) + w ( a , d ) } k=\min \{k|f(a,k-1)+f(k,d)+w(a,d)\} k=min{kf(a,k1)+f(k,d)+w(a,d)},即 k k k f ( a , d ) f(a,d) f(a,d)的最优决策点
    k ≤ b k\le b kb,则有
    f ( a , b ) + f ( b , d ) ≤ w ( a , b ) + f ( a , k − 1 ) + f ( k , b ) + f ( b , d ) f(a,b)+f(b,d)\le w(a,b)+f(a,k-1)+f(k,b)+f(b,d) f(a,b)+f(b,d)w(a,b)+f(a,k1)+f(k,b)+f(b,d)
    ≤ w ( a , d ) + f ( a , k − 1 ) + f ( k , d ) = f ( a , d ) \le w(a,d)+f(a,k-1)+f(k,d)=f(a,d) w(a,d)+f(a,k1)+f(k,d)=f(a,d)
    k > b k>b k>b同理
  • a < b < c < d a<b<c<d a<b<c<d
    y = min ⁡ { y ∣ f ( a , y − 1 ) + f ( y , d ) + w ( a , d ) } , z = min ⁡ { z ∣ f ( b , z − 1 ) + f ( z , c ) + w ( b , c ) } y=\min \{y|f(a,y-1)+f(y,d)+w(a,d)\},z=\min \{z|f(b,z-1)+f(z,c)+w(b,c)\} y=min{yf(a,y1)+f(y,d)+w(a,d)},z=min{zf(b,z1)+f(z,c)+w(b,c)},即 y y y f ( a , d ) f(a,d) f(a,d)的最优决策点, z z z f ( b , c ) f(b,c) f(b,c)的最优决策点
    y ≤ z y\le z yz,则有
    f ( a , c ) + f ( b , d ) f(a,c)+f(b,d) f(a,c)+f(b,d)
    ≤ w ( a , c ) + f ( a , y − 1 ) + f ( y , c ) + w ( b , d ) + f ( b , z − 1 ) + f ( z , d ) \le w(a,c)+f(a,y-1)+f(y,c)+w(b,d)+f(b,z-1)+f(z,d) w(a,c)+f(a,y1)+f(y,c)+w(b,d)+f(b,z1)+f(z,d)
    ≤ w ( a , c ) + w ( b , d ) + f ( a , y − 1 ) + f ( b , z − 1 ) + f ( y , c ) + f ( z , d ) \le w(a,c)+w(b,d)+f(a,y-1)+f(b,z-1)+f(y,c)+f(z,d) w(a,c)+w(b,d)+f(a,y1)+f(b,z1)+f(y,c)+f(z,d)
    ≤ w ( a , d ) + w ( b , c ) + f ( a , y − 1 ) + f ( b , z − 1 ) + f ( y , d ) + f ( c , z ) \le w(a,d)+w(b,c)+f(a,y-1)+f(b,z-1)+f(y,d)+f(c,z) w(a,d)+w(b,c)+f(a,y1)+f(b,z1)+f(y,d)+f(c,z)
    = f ( a , d ) + f ( b , c ) =f(a,d)+f(b,c) =f(a,d)+f(b,c)
    y > z y>z y>z时,同理
定理2 设 p ( i , j ) p(i,j) p(i,j) f ( i , j ) f(i,j) f(i,j)的最小最优决策点,若 f f f满足四边形不等式,则有 p ( l , r − 1 ) ≤ p ( l , r ) ≤ p ( l + 1 , r ) p(l,r-1)\le p(l,r) \le p(l+1,r) p(l,r1)p(l,r)p(l+1,r)

由于 p ( l , r − 1 ) ≤ p ( l , r ) p(l,r-1)\le p(l,r) p(l,r1)p(l,r)的证明和 p ( l , r ) ≤ p ( l + 1 , r ) p(l,r)\le p(l+1,r) p(l,r)p(l+1,r)类似,所以我们只证明 p ( l , r − 1 ) ≤ p ( l , r ) p(l,r-1)\le p(l,r) p(l,r1)p(l,r)
证明:设 a = p ( l , r − 1 ) , b = p ( l , r ) a=p(l,r-1),b=p(l,r) a=p(l,r1),b=p(l,r)
假设 a > b a>b a>b,则有 b ≤ a ≤ r − 1 ≤ r b\le a\le r-1\le r bar1r,由四边形不等式可得
f ( b , r − 1 ) + f ( a , r ) ≤ f ( b , r ) + f ( a , r − 1 ) f(b,r-1)+f(a,r)\le f(b,r)+f(a,r-1) f(b,r1)+f(a,r)f(b,r)+f(a,r1)
因为 b b b f ( l , r ) f(l,r) f(l,r)的最优决策点,所以 f ( l , b − 1 ) + f ( b , r ) ≤ f ( l , a − 1 ) + f ( a , r ) f(l,b-1)+f(b,r)\le f(l,a-1)+f(a,r) f(l,b1)+f(b,r)f(l,a1)+f(a,r)
两式相加得
f ( l , b − 1 ) + f ( b , r − 1 ) ≤ f ( l , a − 1 ) + f ( a , r − 1 ) f(l,b-1)+f(b,r-1)\le f(l,a-1)+f(a,r-1) f(l,b1)+f(b,r1)f(l,a1)+f(a,r1)
这与 a a a f ( l , r − 1 ) f(l,r-1) f(l,r1)的最小最优决策点矛盾,故 a ≤ b a\le b ab,即 p ( l , r − 1 ) ≤ p ( l , r ) p(l,r-1)\le p(l,r) p(l,r1)p(l,r)

因此,时间复杂度变为
∑ l = 1 n ∑ r = l n p ( l + 1 , r ) − p ( l , r − 1 ) = ∑ i = 1 n p ( n − i + 1 , n ) − p ( 1 , i ) ≤ n 2 \sum_{l=1}^n\sum_{r=l}^np(l+1,r)-p(l,r-1)=\sum_{i=1}^np(n-i+1,n)-p(1,i)\le n^2 l=1nr=lnp(l+1,r)p(l,r1)=i=1np(ni+1,n)p(1,i)n2

例1 石子合并

设有 N N N个堆石子排成一排,其编号为 1 , 2 ⋯ N 1,2\cdots N 1,2N,每堆石子有质量 m i m_i mi,每次可以将相邻两个石堆合并,合并的代价为两个石堆的质量和,问将 N N N个石堆合并成一堆的最小代价
N ≤ 1000 , m i ≤ 1000 N\le1000,m_i\le1000 N1000,mi1000

s o l u t i o n : solution: solution:

w ( i , j ) = s j − s i − 1 w(i,j)=s_j-s_{i-1} w(i,j)=sjsi1,显然这个函数满足四边形不等式,时间复杂度即为 O ( n 2 ) O(n^2) O(n2)

形式2

转移形如 f ( i , j ) = min ⁡ k ≤ j f ( i − 1 , k ) + w ( k , j ) ( i ≤ n , j ≤ m ) f(i,j)=\min_{k\le j}f(i-1,k)+w(k,j)(i\le n,j\le m) f(i,j)=kjminf(i1,k)+w(k,j)(in,jm)
p ( i , j ) p(i,j) p(i,j) f ( i , j ) f(i,j) f(i,j)的最小的最优决策点
若函数 w w w满足四边形不等式,则有类似的结论 p ( i , j − 1 ) ≤ p ( i , j ) ≤ p ( i , j + 1 ) p(i,j-1)\le p(i,j)\le p(i,j+1) p(i,j1)p(i,j)p(i,j+1)
证明类似
考虑使用分治解决,具体地,设一个递归函数 s o l v e ( l , r , L , R ) solve(l,r,L,R) solve(l,r,L,R)表示要求出 p ( i , l ∼ r ) p(i,l\sim r) p(i,lr),而且 p p p的范围在 L ∼ R L\sim R LR,每次先算出 p ( i , l + r 2 ) p(i,\frac{l+r}{2}) p(i,2l+r),然后递归到两边,时间复杂度为 O ( n m log ⁡ m ) O(nm\log m) O(nmlogm)

例2 「POI2011」Lightning Conductor

给定一个长度为 n n n的序列 a 1 ⋯ a n a_1\cdots a_n a1an,要求对每个 1 ≤ r ≤ n 1\le r\le n 1rn,找到最小的非负整数 f r f_r fr,满足
∀ l ∈ [ 1 , n ] , a l ≤ a r + f r − ∣ r − l ∣ \forall l\in[1,n],a_l\le a_r+f_r-\sqrt{|r-l|} l[1,n],alar+frrl

s o l u t i o n : solution: solution:

易知, f r = max ⁡ l = 1 n { a l + ∣ r − l ∣ } − a r f_r=\max_{l=1}^n\{a_l+\sqrt{|r-l|}\}-a_r fr=maxl=1n{al+rl }ar
不妨设 l < r , f r = max ⁡ l = 1 n { a l + ∣ r − l ∣ } − a r , w ( i , j ) = a i + ∣ i − j ∣ l<r,f_r=\max_{l=1}^n\{a_l+\sqrt{|r-l|}\}-a_r,w(i,j)=a_i+\sqrt{|i-j|} l<r,fr=maxl=1n{al+rl }ar,w(i,j)=ai+ij
不难证明 w ( i , j ) w(i,j) w(i,j)满足四边形不等式,故具有决策单调性,使用上述分治算法就能做到 O ( n log ⁡ n ) O(n\log n) O(nlogn)

形式3

转移形如 f ( i ) = min ⁡ j < i f ( j ) + w ( j + 1 , i ) ( i ≤ n ) f(i)=\min_{j<i}f(j)+w(j+1,i)(i\le n) f(i)=j<iminf(j)+w(j+1,i)(in)

定理3 若 w ( i , j ) w(i,j) w(i,j)满足四边形不等式,则 f ( i ) f(i) f(i)具有决策单调性

可以像定理 2 2 2那样用反证法证明

此类问题可以用单调队列加二分解决,具体地,每个决策点可以影响一个区间的答案,队列中的元素形如 [ l , r , p ] [l,r,p] [l,r,p]表示目前 [ l , r ] [l,r] [l,r]的最优决策为 p p p,每次新加入一个决策时,从队尾开始比较,看看当前决策是否可以覆盖队尾决策,若可以,弹掉队尾,否则判断二分判断分界点在哪里,如果队首的已经不能影响到当前点时就弹掉队首,时间复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)

例4 P1912 [NOI2009] 诗人小G

n n n个物品,每个物品价值为 a i a_i ai,你现在要把它们分成若干个连续段。设一个段内的物品价值和为 S S S,那么代价就是 ∣ S − L ∣ p |S−L|^p SLp,求最小代价

n ≤ 1 e 5    a , L ≤ 3 e 6    P ≤ 10 n\le 1e5\ \ a,L\le3e6\ \ P\le10 n1e5  a,L3e6  P10

s o l u t i o n : solution: solution:

f [ i ] = min ⁡ j < i { f [ j ] + w ( j + 1 , i ) } , w ( i , j ) = ∣ S ( j ) − S ( i − 1 ) − L ∣ p f[i]=\min_{j<i}\{f[j]+w(j+1,i)\},w(i,j)=|S(j)−S(i-1)−L|^p f[i]=j<imin{f[j]+w(j+1,i)},w(i,j)=S(j)S(i1)Lp
可以证明 w ( i , j ) w(i,j) w(i,j)满足四边形不等式,即可 O ( n log ⁡ n ) O(n\log n) O(nlogn)解决问题

定理4 w w w满足四边形不等式当且仅当, w ( i , j ) + w ( i + 1 , j + 1 ) ≤ w ( i + 1 , j ) + w ( i , j + 1 ) w(i,j)+w(i+1,j+1)≤w(i+1,j)+w(i,j+1) w(i,j)+w(i+1,j+1)w(i+1,j)+w(i,j+1)

必要性显然,下面证明充分性
证明:
转换一下形式:
w ( i , j ) − w ( i + 1 , j ) ≤ w ( i , j + 1 ) − w ( i + 1 , j + 1 ) w(i,j)-w(i+1,j)≤w(i,j+1)-w(i+1,j+1) w(i,j)w(i+1,j)w(i,j+1)w(i+1,j+1)
考虑从 i + 1 i+1 i+1推广到 i + k i+k i+k
假设有 w ( i , j ) − w ( i + k , j ) ≤ w ( i , j + 1 ) − w ( i + k , j + 1 ) w(i,j)-w(i+k,j)≤w(i,j+1)-w(i+k,j+1) w(i,j)w(i+k,j)w(i,j+1)w(i+k,j+1)
并且有 w ( i + k , j ) − w ( i + k + 1 , j ) ≤ w ( i + k , j + 1 ) − w ( i + k + 1 , j + 1 ) w(i+k,j)-w(i+k+1,j)≤w(i+k,j+1)-w(i+k+1,j+1) w(i+k,j)w(i+k+1,j)w(i+k,j+1)w(i+k+1,j+1)
两式相加有 w ( i , j ) − w ( i + k + 1 , j ) ≤ w ( i , j + 1 ) − w ( i + k + 1 , j + 1 ) w(i,j)-w(i+k+1,j)≤w(i,j+1)-w(i+k+1,j+1) w(i,j)w(i+k+1,j)w(i,j+1)w(i+k+1,j+1)
我们把 i + k i+k i+k推广到了 i + k + 1 i+k+1 i+k+1,所以可以从 i + 1 i+1 i+1推广到所有情况
j j j的情况类似

四边形不等式一般解题过程

  • 1.列出dp式
  • 2.证明 w w w函数满足四边形不等式
  • 3.证明 d p dp dp函数满足四边形不等式
  • 4.用决策单调性优化 d p dp dp

四边形不等式实际解题过程

  • 1.列出dp式
  • 2.猜想或打表发现 w w w函数满足四边形不等式
  • 3.猜想或打表发现 d p dp dp函数满足四边形不等式
  • 4.用决策单调性优化 d p dp dp

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值