通常需要排除一些不可能的决策点或者排序,以满足最优子结构或决策单调性。这通常在常数优化时被 oier 考虑到。
-
区间包含单调性:如果对于任意
$l \leq l' \leq r' \leq r$ ,均有$w(l',r') \leq w(l,r)$ 成立,则称函数$w$ 关于区间包含关系具有单调性。 -
四边形不等式:如果对于任意
$l_1\leq l_2 \leq r_1 \leq r_2$ ,均有$w(l_1,r_1)+w(l_2,r_2) \leq w(l_1,r_2) + w(l_2,r_1)$ 成立,则称函数$w$ 满足四边形不等式(简记为“交叉小于包含”)。若等号永远成立,则称函数$w$ 满足四边形恒等式 。
我们常有方程
$$
f_{r} = \min_{l=1}^{r-1}{f_{l}+w(l,r)}\qquad\left(1 \leq r \leq n\right)
$$
定理 若函数
区间类动态规划中,常常遇到形如下面的转移方程:
$$ f_{l,r} = \min_{k=l}^{r-1}{f_{l,k\pm 1,0}+f_{k\pm 1,0,r}} + w(l,r)\qquad\left(1 \leq l \leq r \leq n\right) $$ 对于不同的问题,$f_{i,j}$ 的边界取值可能不同。这对我们讨论的问题没有影响(源于华中师大一附中赵爽)。考试时请打表。
定理 若函数
定理 若
即若函数
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)的定义在国内教材中有分歧,本文指(可微的)下凸函数,即一阶导数单调增加的函数。
若两函数
若存在函数
设