动态规划相关
通常需要排除一些不可能的决策点或者排序,以满足最优子结构。这通常在常数优化时被 oier 考虑到。
四边形不等式
- 区间包含单调性:如果对于任意 ,均有 成立,则称函数 关于区间包含关系具有单调性。
- 四边形不等式:如果对于任意 ,均有 成立,则称函数 满足四边形不等式(简记为“交叉小于包含”)。若等号永远成立,则称函数 满足四边形恒等式 。
1D/1D的优化
我们常有方程
定理 若函数 满足四边形不等式,则 满足决策单调性,即:记 表示从 转移过来的状态 , 表示最优决策点,有 。
2D/1D的优化
区间类动态规划中,常常遇到形如下面的转移方程:
对于不同的问题, 的边界取值可能不同。这对我们讨论的问题没有影响(源于华中师大一附中赵爽)。考试时请打表。
定理 若函数 满足四边形不等式(且满足区间包含单调性?),则 也满足四边形不等式。(用数学归纳法证明)
定理 若 满足四边形不等式,则 满足决策单调性,即:记 表示最优决策点,则有 。
即若函数 满足四边形不等式,则 满足决策单调性。只需枚举决策
k in c[i][j-1] to c[i+1][j]
核心代码
for(int bias=1; bias<n; bias++) // bias=j-i, where[i,j]
{
for(int i=1,j; (j=i+k)<=n; i++)
{
f[i][j]=1e18;
for(k=c[i][j-1]; k<=c[i+1][j]; k++)
if(..<..) update f and c;
f[i][j]+=x[j]-x[i-1];
}
}
满足四边形不等式的函数类
摘自oi wiki。
为了更方便地证明一个函数满足四边形不等式,我们有以下几条性质:
性质 1. 若函数 均满足四边形不等式(或区间包含单调性),则对于任意 ,函数 也满足四边形不等式(或区间包含单调性)。
性质 2. 若存在函数 使得 ,则函数 满足四边形恒等式。当函数 单调增加时,函数 还满足区间包含单调性。
性质 3. 设 是一个凸函数,若函数 满足四边形恒等式并且对区间包含关系具有单调性,则复合函数 也满足四边形不等式。
性质 4. 设 是一个单调增加的凸函数,若函数 满足四边形不等式并且对区间包含关系具有单调性,则复合函数 也满足四边形不等式和区间包含单调性。
凸函数(Convex Function)的定义在国内教材中有分歧,本文指(可微的)下凸函数,即一阶导数单调增加的函数。
更高更妙的记忆与性质
若两函数 均满足四边形不等式(或区间包含单调性),则其(正系数)线性组合也满足四边形不等式(或区间包含单调性)。
若存在函数 使得 ,则 满足四边形恒等式。当函数 单调增加时,函数 还满足区间包含单调性。
设 是一个凸函数,若函数 满足四边形恒等式并且对区间包含关系具有单调性,则其复合函数 也满足四边形不等式。若 还单调增加,复合函数 也满足区间包含单调性。
目前已经见过的式子
为凸函数
,其中 单调性互异:满足四边形不等式