四边形不等式优化
四边形不等式
1 、 若 对 于 ∀ a , b , c , d ∈ Z a ≤ b ≤ c ≤ d 有 W a , d + W b , c ≥ W a , c + W b , d 1、若对于 \forall a,b,c,d \in Z \quad a \le b \le c \le d 有 \quad W_{a,d} + W_{b,c} \ge W_{a,c} + W_{b,d} 1、若对于∀a,b,c,d∈Za≤b≤c≤d有Wa,d+Wb,c≥Wa,c+Wb,d
2 、 若 对 于 ∀ a , b ∈ Z a < a + 1 ≤ b < b + 1 有 W a , b + W a + 1 , b + 1 ≥ W a , b + 1 + W a + 1 , b 2、若对于 \forall a,b \in Z \quad a \lt a+1 \le b \lt b+1 有 \quad W_{a,b} + W_{a+1,b+1} \ge W_{a,b+1} + W_{a+1,b} 2、若对于∀a,b∈Za<a+1≤b<b+1有Wa,b+Wa+1,b+1≥Wa,b+1+Wa+1,b
- 其中
1
和2
结论等价
一维DP的四边形不等式优化
对于形如
f
i
=
m
i
n
0
≤
j
<
i
{
f
j
+
V
i
,
j
}
f_i = min_{0 \le j \lt i} \{ f_j + V_{i,j}\}
fi=min0≤j<i{fj+Vi,j}
形式的状态转移方程,如果Vi,j
满足四边形不等式,则决策具有单调性,即
0
≤
j
≤
p
<
i
≤
i
′
p
为
决
策
,
j
为
决
策
前
的
任
意
点
0 \le j \le p \lt i \le i' \qquad p为决策,j为决策前的任意点
0≤j≤p<i≤i′p为决策,j为决策前的任意点
f p + V p , i ≤ f j + V j , i f_p + V_{p,i} \le f_j + V_{j,i} fp+Vp,i≤fj+Vj,i
- 因为具有决策单调性,因此我们使用类似于单调队列的方式对决策点进行存储:
使用三元组
(j,l,r)
表示在[l,r]
区间上的最优决策为j
,每次状态转移完之后1、如果队头的右端点刚好越过,则弹出队头,更新队头的左端点
2、将此决策点插入队尾 :如果队尾的决策点的左端点决策不如当前点优,即全部弹出队尾,如果左端点优于当前点但是右端点不优于新插点,二分得到二段性点,修改队尾的区间并将新点插入队尾
二维四边形不等式
对于形如
f
i
,
j
=
m
i
n
i
≤
k
≤
j
{
f
i
,
k
+
f
k
+
1
,
j
+
W
i
,
j
}
f_{i,j} = min_{i \le k\le j}\{f_{i,k} + f_{k+1,j} + W_{i,j}\}
fi,j=mini≤k≤j{fi,k+fk+1,j+Wi,j}
(1)若满足边界f(i,i) = W(i,j) = 0
(2)若W(i,j)
满足四边形不等式
(3)对于任意 a <= b <= c <= d
有W(a,d) >= W(b,c)
若满足上述三个条件,则f(i,j)
也满足四边形不等式
设P(i,j)
为决策点,则决策具有二维单调性,因此在状态转移的时候,x只需要枚举从p(i-1,j)
到p(i,j+1)
即可,时间复杂度由O(n^3)
优化至O(n^2)