废话
这大概是跟斜率优化一样神的东西qwq,但是证明复杂一点,以及似乎用到的题目也少一点,毕竟使用条件有点苛刻。
正题
它用来加速类似这样的 d p dp dp: f [ i ] [ j ] = min k = i j − 1 { f [ i ] [ k ] + f [ k + 1 ] [ j ] + w ( i , j ) } f[i][j]=\min_{k=i}^{j-1}\{f[i][k]+f[k+1][j]+w(i,j)\} f[i][j]=mink=ij−1{ f[i][k]+f[k+1][j]+w(i,j)}。
每道题 d p dp dp 不一样,不一定都是这种形式,这里只是以这种可能比较经典的作为例子。其中, w ( i , j ) w(i,j) w(i,j) 表示这一步操作的代价(贡献)。
特别的,设 f [ i ] [ i ] = w ( i , i ) = 0 f[i][i]=w(i,i)=0 f[i][i]=w(i,i)=0。
以及,虽然这个例子看起来很像区间 d p dp dp,但是四边形不等式优化的使用是不局限于区间 d p dp dp 的。
优化需要经过多步证明,都满足了就可以将这样的 O ( n 3 ) O(n^3) O(n3) 枚举优化到 O ( n 2 ) O(n^2) O(n2),实质上是优化了 k k k 的枚举。
使用步骤
- 证明 w w w 满足四边形不等式
- 证明 w w w 满足 w ( a , d ) ≥ w ( b , c ) ( a ≤ b ≤ c ≤ d ) w(a,d)\geq w(b,c)~(a\leq b\leq c\leq d) w(a,d)≥w(b,c) (a≤b≤c≤d)
- 利用 1 , 2 1,2 1,2 证明 f f f 满足四边形不等式
- 设 p ( i , j ) p(i,j) p(i,j) 表示 f [ i ] [ j ] f[i][j] f[i][j] 的最优决策点(也就是最优的 k k k),证明 p ( i , j − 1 ) ≤ p ( i , j ) ≤ p ( i + 1 , j ) p(i,j-1)\leq p(i,j)\leq p(i+1,j) p(i,j−1)≤p(i,j)≤p(i+1,j)
做完这四步后,根据最后证明出来的这个柿子,对于当前的 i , j i,j i,j,枚举 k k k 时只需要在 p ( i , j − 1 ) p(i,j-1) p(i,j−1) 到 p ( i + 1 , j ) p(i+1,j) p(i+1,j) 之间枚举就好,可以证明这样的时间复杂度为 O ( n 2 ) O(n^2) O(n2)(证明最后有)。
由于对于每一题的证明都不一样,所以下面只能讲一些用来帮助证明的定理和推论。
四边形不等式
假如对于任意 a ≤ b ≤ c ≤ d a\leq b\leq c\leq d a≤b≤c≤d,满足 w ( a , c ) + w ( b , d ) ≤ w ( b , c ) + w ( a , d ) w(a,c)+w(b,d)\leq w(b,c)+w(a,d) w(a,c)+w(b,d)≤w(b,c)+w(a,d),那么称 w w w 满足四边形不等式。(务必背下这个柿子qwq)
推论: 假如对于任意 a < c a<c a<c,满足 w ( a , c ) + w ( a + 1 , c + 1 ) ≤ w ( a + 1 , c ) + w ( a , c + 1 ) w(a,c)+w(a+1,c+1)\leq w(a+1,c)+w(a,c+1) w(a,c)+w(a+1,c+1)≤w(a+1,c)+w(a,c+1),那么 w w w 满足四边形不等式。
证明:
设 a + 1 < c a+1<c a+1<c,那么有 a < c a<c a<c,则有:
w ( a , c ) + w ( a + 1 , c + 1 ) ≤ w ( a + 1 , c ) + w ( a , c + 1 ) ( 1 ) w(a,c)+w(a+1,c+1)\leq w(a+1,c)+w(a,c+1)~~(1) w(a,c)+w(a+1,c+1)≤w(a+1,c)+w(a,c+1) (1)
因为 a + 1 < c a+1<c a+1<c,所以有:
w ( a + 1 , c ) + w ( a + 2 , c + 1 ) ≤ w ( a + 2 , c ) + w ( a + 1 , c + 1 ) ( 2 ) w(a+1,c)+w(a+2,c+1)\leq w(a+2,c)+w(a+1,c+1)~~(2) w(a+1,c)+w(a+2,c+1)≤w(a+2,c)+w(a+1,c+1) (2)
( 1 ) ( 2 ) (1)(2) (1)(2)两式相加,消去左右相同的项,得到:
w ( a , c ) + w ( a + 2 , c + 1 ) ≤ w ( a + 2 , c ) + w ( a , c + 1 ) ( 3 ) w(a,c)+w(a+2,c+1)\leq w(a+2,c)+w(a,c+1)~~(3) w(a,c)+w(a+2,c+1)≤w(a+2,c)+w(a,c+1) (3)
( 3 ) (3) (3) 式相比 ( 1 ) (1) (1) 式,就是 a + 1 a+1 a+1 都变成了 a + 2 a+2 a+2,以此类推下去,就可以变成任意 a + k a+k a+k,设 b = a + k b=a+k b=a+k,于是有:
w ( a , c ) + w ( b , c + 1 ) ≤ w ( b , c ) + w ( a , c + 1 ) w(a,c)+w(b,c+1)\leq w(b,c)+w(a,c+1) w(a,c)+w(b,c+1)≤w(b,c)+w(a,c+1)
同理,可以将 c + 1 c+1 c

本文介绍了一种称为四边形不等式优化的技术,用于加速特定类型的动态规划问题,将其时间复杂度从O(n^3)降低到O(n^2)。通过证明四边形不等式满足条件,可以优化动态规划中k的枚举,适用于各种区间DP问题。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



