简单四边形不等式优化dp(上)

这里只讨论简单的二维四边形不等式优化dp,和简单的广义决策单调性板子。
*下文中“优于”一般指的是“不劣于”,请自行分辨。

四边形不等式

四边形不等式定义为:
位于整数集合上的二元函数 f ( x , y ) f(x,y) f(x,y),对于 a ≤ b ≤ c ≤ d a\leq b\leq c\leq d abcd,若满足: f ( a , c ) + f ( b , d ) ≤ f ( a , d ) + f ( b , c ) f(a,c)+f(b,d)\leq f(a,d)+f(b,c) f(a,c)+f(b,d)f(a,d)+f(b,c),即相交和小于包含和,则称函数 f f f满足四边形不等式。
在这里插入图片描述

函数 f f f若满足 f ( a , c ) + f ( b , d ) ≤ f ( a , d ) + f ( b , c ) f(a,c)+f(b,d)\leq f(a,d)+f(b,c) f(a,c)+f(b,d)f(a,d)+f(b,c),即相交和大于包含和,则亦称函数 f f f满足四边形不等式。

在动态规划问题中,四边形不等式指的是相交优于包含(可能是大于,也可能是小于),因为相交优于包含能够推出决策单调性。接下来讨论相交小于包含。

四边形不等式具有两种等价的定义:

  1. a ≤ b ≤ c ≤ d : f ( a , c ) + f ( b , d ) ≤ f ( a , d ) + f ( b , c ) a\leq b\leq c\leq d:f(a,c)+f(b,d)\leq f(a,d)+f(b,c) abcd:f(a,c)+f(b,d)f(a,d)+f(b,c)
  2. f ( i , j ) + f ( i + 1 , j + 1 ) ≤ f ( i , j + 1 ) + f ( i + 1 , j ) f(i,j)+f(i+1,j+1)\leq f(i,j+1)+f(i+1,j) f(i,j)+f(i+1,j+1)f(i,j+1)+f(i+1,j)

下面是证明。

还原不等式

接下来展示一种用来推式子的方法。主要思想就是根据条件列出一个不等式,然后把结论写成另一个不等式。通过对比发现从条件到结论差了什么,然后把差的那部分还原出来。

我们证明一下从2推出1,记 f ( x , y ) = f x , y f(x,y)=f_{x,y} f(x,y)=fx,y

首先我们归纳,假设对于所有的长度小于 j − i + 2 j-i+2 ji+2的区间都满足“从2可以推出1”的结论:

我们已知 f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j    ① f_{i,j}+f_{i+1,j+1}\leq f_{i,j+1}+f_{i+1,j}\;① fi,j+fi+1,j+1fi,j+1+fi+1,j

要证明 f i , c + f b , j + 1 ≤ f i , j + 1 + f b , c ( i ≤ b ≤ c ≤ j + 1 ) f_{i,c}+f_{b,j+1}\leq f_{i,j+1}+f_{b,c}(i\leq b\leq c\leq j+1) fi,c+fb,j+1fi,j+1+fb,c(ibcj+1)
在这里插入图片描述

现在我们设法让式子中的 i + 1 i+1 i+1变为 i + 2 i+2 i+2
f i , j + f i + 2 , j + 1 ≤ f i , j + 1 + f i + 2 , j    ② f_{i,j}+f_{i+2,j+1}\leq f_{i,j+1}+f_{i+2,j}\;② fi,j+fi+2,j+1fi,j+1+fi+2,j

然后我们对比一下条件①和要证明的式子②:
① : f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j ①:f_{i,j}+\textcolor{red}{f_{i+1,j+1}}\leq f_{i,j+1}+\textcolor{red}{f_{i+1,j}} :fi,j+fi+1,j+1fi,j+1+fi+1,j
② : f i , j + f i + 2 , j + 1 ≤ f i , j + 1 + f i + 2 , j ②:f_{i,j}+\textcolor{blue}{f_{i+2,j+1}}\leq f_{i,j+1}+\textcolor{blue}{f_{i+2,j}} :fi,j+fi+2,j+1fi,j+1+fi+2,j

两式有一些项是相同的,有一些项是不同的,不同的项用颜色标出来了。我们假设有一个不等式 T T T,使得 ① + T = ② ①+T=② +T=,现在我们试图还原出 T T T来:
① : f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j ①:f_{i,j}+\textcolor{red}{f_{i+1,j+1}}\leq f_{i,j+1}+\textcolor{red}{f_{i+1,j}} :fi,j+fi+1,j+1fi,j+1+fi+1,j
T    : ? ≤    ? T\;:\hspace{2cm}?\leq \;? T:??
② : f i , j + f i + 2 , j + 1 ≤ f i , j + 1 + f i + 2 , j ②:f_{i,j}+\textcolor{blue}{f_{i+2,j+1}}\leq f_{i,j+1}+\textcolor{blue}{f_{i+2,j}} :fi,j+fi+2,j+1fi,j+1+fi+2,j

可以看到相同的项同时在①、②式中出现,因此在 T T T中不需要管他们。
蓝色的项在②式中出现,而在①式中没有,因此应该在 T T T中被加上去,所以我们把蓝色的项写到 T T T不等号的对应侧:

① : f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j ①:f_{i,j}+\textcolor{red}{f_{i+1,j+1}}\leq f_{i,j+1}+\textcolor{red}{f_{i+1,j}} :fi,j+fi+1,j+1fi,j+1+fi+1,j
T    : ? + f i + 2 , j + 1 ≤ ? + f i + 2 , j T\;:\hspace{0.45cm}?+\textcolor{blue}{f_{i+2,j+1}}\leq \hspace{0.725cm}?+\textcolor{blue}{f_{i+2,j}} T:?+fi+2,j+1?+fi+2,j
② : f i , j + f i + 2 , j + 1 ≤ f i , j + 1 + f i + 2 , j ②:f_{i,j}+\textcolor{blue}{f_{i+2,j+1}}\leq f_{i,j+1}+\textcolor{blue}{f_{i+2,j}} :fi,j+fi+2,j+1fi,j+1+fi+2,j

可以看到红色的项原来在①中出现了,但是在②中消失了,这说明它们在 T T T中被减去了一次,也就是说带有负一的系数:

① : f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j ①:f_{i,j}\hspace{0.895cm}+\textcolor{red}{f_{i+1,j+1}}\leq f_{i,j+1}+\textcolor{red}{f_{i+1,j}} :fi,j+fi+1,j+1fi,j+1+fi+1,j
T    : − f i + 1 , j + 1 + f i + 2 , j + 1 ≤ − f i + 1 , j + f i + 2 , j T\;:\textcolor{red}{-f_{i+1,j+1}}+\textcolor{blue}{f_{i+2,j+1}}\leq \textcolor{red}{-f_{i+1,j}}+\textcolor{blue}{f_{i+2,j}} T:fi+1,j+1+fi+2,j+1fi+1,j+fi+2,j
② : f i , j + f i + 2 , j + 1 ≤ f i , j + 1 + f i + 2 , j ②:f_{i,j}\hspace{0.895cm}+\textcolor{blue}{f_{i+2,j+1}}\leq f_{i,j+1}+\textcolor{blue}{f_{i+2,j}} :fi,j+fi+2,j+1fi,j+1+fi+2,j

整理一下 T T T
T : f i + 2 , j + 1 + f i + 1 , j ≤ f i + 2 , j + f i + 1 , j + 1 T:f_{i+2,j+1}+f_{i+1,j}\leq f_{i+2,j}+f_{i+1,j+1} T:fi+2,j+1+fi+1,jfi+2,j+fi+1,j+1

这恰好就是区间长度为 j − i + 1 j-i+1 ji+1的四边形不等式,因此 ① + T = ② ①+T=② +T=,则②式得证。

至此,我们已经可以仿照刚才的证明,将四边形不等式内部的两个端点向内移动1的长度任意次,因此我们已经证明了 f i , c + f b , j + 1 ≤ f i , j + 1 + f b , c ( i ≤ b ≤ c ≤ j + 1 ) f_{i,c}+f_{b,j+1}\leq f_{i,j+1}+f_{b,c}(i\leq b\leq c\leq j+1) fi,c+fb,j+1fi,j+1+fb,c(ibcj+1)

QED.

石子合并

这篇文章只涉及简单四边形不等式优化dp,因此最优决策点都是枚举的。

石子合并求最小值

a i a_i ai表示第 i i i堆石子的大小。

首先破环为链,然后区间dp:

设状态函数 f i , j f_{i,j} fi,j为区间 [ i , j ] [i,j] [i,j]对应的石子合并成一堆的最小贡献, s s s表示石子的前缀和。

则: f i , j = min ⁡ k = i j { f i , k + f k + 1 , j } + s j − s i − 1 f_{i,j}=\overset{j}{\underset{k=i}{\min}}\left\{f_{i,k}+f_{k+1,j}\right\}+s_j-s_{i-1} fi,j=k=iminj{fi,k+fk+1,j}+sjsi1

这里其实 k k k应该枚举到 j − 1 j-1 j1就停止的,那我们拓展一下状态,令 f x + 1 , x = − ∞ f_{x+1,x}=-\infty fx+1,x=

暴力区间dp是 O ( n 3 ) O(n^3) O(n3)的:

  for(int len=2;len<=n;len++){            区间长度
    for(int i=1,j;(j=i+len-1)<=2*n;i++){  区间端点
      for(int k=i;k<j;k++){               区间分割点
        f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+s[j]-s[i-1]);
      }
    }
  }

可以优化到 O ( n 2 ) O(n^2) O(n2)

  for(int len=2; len<=n; len++){               区间长度
    for(int i=1,j; (j=i+len-1)<=2*n; i++){     区间端点
      for(int k=p[i][j-1]; k<=p[i+1][j]; k++){ 区间分割点
        if(f[i][j]>f[i][k]+f[k+1][j]+s[j]-s[i-1]) 决策单调性优化dp
          f[i][j]=f[i][k]+f[k+1][j]+s[j]-s[i-1], p[i][j]=k;
      }
    }
  }

大概的意思是说设 p i , j p_{i,j} pi,j表示 f i , j f_{i,j} fi,j的最优决策点,则 p i , j − 1 ≤ p i , j ≤ p i + 1 , j p_{i,j-1}\leq p_{i,j}\leq p_{i+1,j} pi,j1pi,jpi+1,j,我们通过把枚举决策点的区间缩小,减小了复杂度。

接下来用四步我们来看看这个过程:

  1. 证明贡献函数 w i , j w_{i,j} wi,j满足四边形不等式
  2. 证明状态函数 f i , j f_{i,j} fi,j满足四边形不等式
  3. 证明决策单调性。
  4. 证明时间复杂度 O ( n 2 ) O(n^2) O(n2)

1.证明贡献函数满足四边形不等式

四边形不等式

对于: f i , j = min ⁡ k = i j { f i , k + f k + 1 , j } + s j − s i − 1 f_{i,j}=\overset{j}{\underset{k=i}{\min}}\left\{f_{i,k}+f_{k+1,j}\right\}+s_j-s_{i-1} fi,j=k=iminj{fi,k+fk+1,j}+sjsi1

我们定义贡献函数 w i , j = s j − s i − 1 ( w i , i 除外 ) w_{i,j}=s_j-s_{i-1}(w_{i,i}除外) wi,j=sjsi1(wi,i除外),也就是说:
f i , j = min ⁡ k = i j { f i , k + f k + 1 , j } + w i , j f_{i,j}=\overset{j}{\underset{k=i}{\min}}\left\{f_{i,k}+f_{k+1,j}\right\}+w_{i,j} fi,j=k=iminj{fi,k+fk+1,j}+wi,j

其中 f i , i = 0 , w i , i = 0 f_{i,i}=0,w_{i,i}=0 fi,i=0,wi,i=0

接下来证明 w w w满足四边形不等式:
w i , j + w i + 1 , j + 1 ≤ w i , j + 1 + w i + 1 , j w_{i,j}+w_{i+1,j+1}\leq w_{i,j+1}+w_{i+1,j} wi,j+wi+1,j+1wi,j+1+wi+1,j
即: s j − s i − 1 + s j + 1 − s i ≤ s j + 1 − s i − 1 + s j − s i s_j-s_{i-1}+s_{j+1}-s_i\leq s_{j+1}-s_{i-1}+s_j-s_i sjsi1+sj+1sisj+1si1+sjsi

左右两边直接相等了,所以肯定满足四边形不等式…

区间包含单调性

事实上,显然贡献函数还满足区间包含单调性:
w x , y ≤ w i , j ( [ x , y ] ⊆ [ i , j ] ) w_{x,y}\leq w_{i,j} ([x,y]\subseteq[i,j]) wx,ywi,j([x,y][i,j])

贡献数量

f i , j = ∑ k = 1 j − i w x k , y k f_{i,j}=\overset{j-i}{\underset{k=1}\sum}w_{x_k,y_k} fi,j=k=1jiwxk,yk,则满足 [ x k , y k ] ⊆ [ i , j ] [x_k,y_k]\subseteq[i,j] [xk,yk][i,j]

证明:
初始状态中,区间 [ i , j ] [i,j] [i,j]中有 j − i + 1 j-i+1 ji+1堆石子,每进行一次操作就会减少一堆石子,同时给 f i , j f_{i,j} fi,j增加一个 w x , y w_{x,y} wx,y,其中 [ x , y ] ⊆ [ i , j ] [x,y]\subseteq[i,j] [x,y][i,j],总共最后合并到只有一堆石子,总共合并了 j − i j-i ji次,因此状态函数贡献了 j − i j-i ji个,证毕。

上界

f i , j ≤ ( j − i ) ⋅ w i , j f_{i,j}\leq (j-i)\cdot w_{i,j} fi,j(ji)wi,j

证明:
因为: w x k , y k ≤ w i , j w_{x_k,y_k}\leq w_{i,j} wxk,ykwi,j
所以: f i , j = ∑ k = 1 j − i w x k , y k ≤ ( j − i ) ⋅ w i , j f_{i,j}=\overset{j-i}{\underset{k=1}\sum}w_{x_k,y_k}\leq (j-i)\cdot w_{i,j} fi,j=k=1jiwxk,yk(ji)wi,j

2.证明状态函数满足四边形不等式

证明 f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j f_{i,j}+f_{i+1,j+1}\leq f_{i,j+1}+f_{i+1,j} fi,j+fi+1,j+1fi,j+1+fi+1,j

首先归纳一下,假设对于所有区间长度小于 j − i + 2 j-i+2 ji+2的区间都满足状态函数上的四边形不等式。

然后我们设 f i , j + 1 f_{i,j+1} fi,j+1的最优决策点为 x x x
f i , j + 1 = f i , x + f x + 1 , j + 1 + w i , j + 1 \textcolor{blue}{f_{i,j+1}}=f_{i,x}+f_{x+1,j+1}+w_{i,j+1} fi,j+1=fi,x+fx+1,j+1+wi,j+1

我们知道 f i , j f_{i,j} fi,j的最优决策点不一定为 x x x,因此有不等式:
f i , j ≤ f i , x + f x + 1 , j + w i , j \textcolor{red}{f_{i,j}}\leq f_{i,x}+f_{x+1,j}+w_{i,j} fi,jfi,x+fx+1,j+wi,j

同理,我们设 f i + 1 , j f_{i+1,j} fi+1,j y y y,则: f i + 1 , j = f i + 1 , y + f y + 1 , j + w i + 1 , j \textcolor{blue}{f_{i+1,j}}=f_{i+1,y}+f_{y+1,j}+w_{i+1,j} fi+1,j=fi+1,y+fy+1,j+wi+1,j
考虑 f i + 1 , j + 1 f_{i+1,j+1} fi+1,j+1的最优决策点不一定为 y y y,就得到: f i + 1 , j + 1 ≤ f i + 1 , y + f y + 1 , j + 1 + w i + 1 , j + 1 \textcolor{red}{f_{i+1,j+1}}\leq f_{i+1,y}+f_{y+1,j+1}+w_{i+1,j+1} fi+1,j+1fi+1,y+fy+1,j+1+wi+1,j+1

为了凑出 f i , j + f i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j {\color{red}f_{i,j}+f_{i+1,j+1}}\leq \color{blue}f_{i,j+1}+f_{i+1,j} fi,j+fi+1,j+1fi,j+1+fi+1,j,我们需要把刚才的四个式子加起来(注意等式相加的方向):
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j + w i , j + 1 + w i + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 + w i , j + w i + 1 , j + 1 \textcolor{red}{f_{i,j}+f_{i+1,j+1}}+f_{x+1,j+1}+f_{y+1,j}+w_{i,j+1}+w_{i+1,j}\leq \textcolor{blue}{f_{i,j+1}+f_{i+1,j}}+f_{x+1,j}+f_{y+1,j+1}+w_{i,j}+w_{i+1,j+1} fi,j+fi+1,j+1+fx+1,j+1+fy+1,j+wi,j+1+wi+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1+wi,j+wi+1,j+1

因此现在距离要证明的结论已经相当接近了,要想办法约掉剩余的几项。

先看到贡献函数 w w w
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j + w i , j + 1 + w i + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 + w i , j + w i + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+f_{y+1,j}+\textcolor{red}{w_{i,j+1}+w_{i+1,j}}\leq f_{i,j+1}+f_{i+1,j}+f_{x+1,j}+f_{y+1,j+1}+\textcolor{green}{w_{i,j}+w_{i+1,j+1}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,j+wi,j+1+wi+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1+wi,j+wi+1,j+1

可以对左边用四边形不等式 w i , j + w i + 1 , j + 1 ≤ w i , j + 1 + w i + 1 , j \textcolor{blue}{w_{i,j}+w_{i+1,j+1}}\leq \textcolor{red}{w_{i,j+1}+w_{i+1,j}} wi,j+wi+1,j+1wi,j+1+wi+1,j(也可以对右边用):
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j + w i , j + w i + 1 , j + 1 ≤ f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j + w i , j + 1 + w i + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 + w i , j + w i + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+f_{y+1,j}+\textcolor{blue}{w_{i,j}+w_{i+1,j+1}}\leq f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+f_{y+1,j}+\textcolor{red}{w_{i,j+1}+w_{i+1,j}}\leq\\ f_{i,j+1}+f_{i+1,j}+f_{x+1,j}+f_{y+1,j+1}+\textcolor{green}{w_{i,j}+w_{i+1,j+1}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,j+wi,j+wi+1,j+1fi,j+fi+1,j+1+fx+1,j+1+fy+1,j+wi,j+1+wi+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1+wi,j+wi+1,j+1

然后我们研究左右那两项:
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j + w i , j + w i + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 + w i , j + w i + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+f_{y+1,j}+\textcolor{blue}{w_{i,j}+w_{i+1,j+1}}\leq f_{i,j+1}+f_{i+1,j}+f_{x+1,j}+f_{y+1,j+1}+\textcolor{green}{w_{i,j}+w_{i+1,j+1}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,j+wi,j+wi+1,j+1fi,j+1+fi+1,j+fx+1,j+fy+1,j+1+wi,j+wi+1,j+1

就把贡献函数约掉了:
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+f_{x+1,j+1}+f_{y+1,j}\leq f_{i,j+1}+f_{i+1,j}+f_{x+1,j}+f_{y+1,j+1} fi,j+fi+1,j+1+fx+1,j+1+fy+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1

现在我们来研究多余的那四项状态函数:
f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j+1}+f_{y+1,j}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j}+f_{y+1,j+1}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1

  • x ≤ y x\leq y xy,则红色两项不交,蓝色的两项则是包含关系,就会有 f x + 1 , j + f y + 1 , j + 1 ≤ f x + 1 , j + 1 + f y + 1 , j \color{blue} f_{x+1,j}+f_{y+1,j+1}\leq f_{x+1,j+1}+f_{y+1,j} fx+1,j+fy+1,j+1fx+1,j+1+fy+1,j,因此就会有:
    f i , j + f i + 1 , j + 1 + f x + 1 , j + f y + 1 , j + 1 ≤ f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j}+f_{y+1,j+1}}\leq f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j+1}+f_{y+1,j}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j}+f_{y+1,j+1}} fi,j+fi+1,j+1+fx+1,j+fy+1,j+1fi,j+fi+1,j+1+fx+1,j+1+fy+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1
    去掉中间那个式子: f i , j + f i + 1 , j + 1 + f x + 1 , j + f y + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j}+f_{y+1,j+1}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j}+f_{y+1,j+1}} fi,j+fi+1,j+1+fx+1,j+fy+1,j+1fi,j+1+fi+1,j+fx+1,j+fy+1,j+1

  • x > y x>y x>y,则蓝色两项不交,红色两项则是相交关系,就会有 f x + 1 , j + f y + 1 , j + 1 ≤ f x + 1 , j + 1 + f y + 1 , j \color{red}f_{x+1,j}+f_{y+1,j+1}\leq f_{x+1,j+1}+f_{y+1,j} fx+1,j+fy+1,j+1fx+1,j+1+fy+1,j,因此就会有:
    f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + f y + 1 , j + 1 ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + 1 + f y + 1 , j f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j+1}+f_{y+1,j}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j}+f_{y+1,j+1}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j+1}+f_{y+1,j}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,jfi,j+1+fi+1,j+fx+1,j+fy+1,j+1fi,j+1+fi+1,j+fx+1,j+1+fy+1,j
    去掉中间那个式子:
    f i , j + f i + 1 , j + 1 + f x + 1 , j + 1 + f y + 1 , j ≤ f i , j + 1 + f i + 1 , j + f x + 1 , j + 1 + f y + 1 , j f_{i,j}+f_{i+1,j+1}+\textcolor{blue}{f_{x+1,j+1}+f_{y+1,j}}\leq f_{i,j+1}+f_{i+1,j}+\textcolor{red}{f_{x+1,j+1}+f_{y+1,j}} fi,j+fi+1,j+1+fx+1,j+1+fy+1,jfi,j+1+fi+1,j+fx+1,j+1+fy+1,j

可以看出无论那种情况,红蓝两项都抵消了,因此得证。
(一些什么边界情况就不考虑的了,反正显然)

后记:

  • 至于是把 x , y x,y x,y是应该带入 f i , j , f i + 1 , j + 1 f_{i,j},f_{i+1,j+1} fi,j,fi+1,j+1还是应该带入 f i + 1 , j + 1 , f i , j f_{i+1,j+1},f_{i,j} fi+1,j+1,fi,j,没有区别,很明显这两种情况是对称的。
  • 至于如果有人问如果 x , y x,y x,y不表示 f i , j + 1 , f i + 1 , j f_{i,j+1},f_{i+1,j} fi,j+1,fi+1,j的最优决策点,表示 f i , j , f i + 1 , j + 1 f_{i,j},f_{i+1,j+1} fi,j,fi+1,j+1的最优决策点行不行,答案是不行,因为不等号方向反了。
  • 感觉这种推导还是应该从条件和结论的联系上找线索。还是双向奔赴会比较容易…其实这种证明过程一般情况下结论比条件好确定…

3.证明决策单调性

p i , j p_{i,j} pi,j表示 f i , j f_{i,j} fi,j其中一个最优决策点。

决策单调性指的是, ∀ p i , j − 1 , p i + 1 , j : ∃ p i , j 满足 p i , j − 1 ≤ p i , j ≤ p i + 1 , j \forall p_{i,j-1},p_{i+1,j}:\exists p_{i,j}满足 p_{i,j-1}\leq p_{i,j}\leq p_{i+1,j} pi,j1,pi+1,j:pi,j满足pi,j1pi,jpi+1,j

左边

先证明左半部分:
p i , j − 1 ≤ p i , j p_{i,j-1}\leq p_{i,j} pi,j1pi,j,设 k = p i , j − 1 , p = p i , j k=p_{i,j-1},p=p_{i,j} k=pi,j1,p=pi,j,则我们反证,设 p < k p<k p<k

一开始可以认为我们的条件有四个式子:
{ ① : f i , j = f i , p + f p + 1 , j + w i , j ② : f i , j − 1 = f i , k + f k + 1 , j − 1 + w i , j − 1 ③ : f i , j ≤ f i , k + f k + 1 , j + w i , j ④ : f i , j − 1 ≤ f i , p + f p + 1 , j − 1 + w i , j − 1 \left\{\begin{matrix} ①:f_{i,j}=f_{i,p}+f_{p+1,j}+w_{i,j}\hspace{1cm}\\ ②:f_{i,j-1}=f_{i,k}+f_{k+1,j-1}+w_{i,j-1}\\ ③:f_{i,j}\leq f_{i,k}+f_{k+1,j}+w_{i,j}\hspace{0.9cm}\\ ④:f_{i,j-1}\leq f_{i,p}+f_{p+1,j-1}+w_{i,j-1}\hspace{0.0cm} \end{matrix}\right. :fi,j=fi,p+fp+1,j+wi,j:fi,j1=fi,k+fk+1,j1+wi,j1:fi,jfi,k+fk+1,j+wi,j:fi,j1fi,p+fp+1,j1+wi,j1

然后我们为了导出矛盾,可能会有两个式子:
{ A : f i , j − 1 > f i , p + f p + 1 , j − 1 + w i , j − 1 B : f i , j ≥ f i , k + f k + 1 , j + w i , j \left\{\begin{matrix} A:f_{i,j-1}> f_{i,p}+f_{p+1,j-1}+w_{i,j-1}\\ B:f_{i,j}\geq f_{i,k}+f_{k+1,j}+w_{i,j}\hspace{0.9cm} \end{matrix}\right. {A:fi,j1>fi,p+fp+1,j1+wi,j1B:fi,jfi,k+fk+1,j+wi,j
其中 A A A矛盾叫做:“ k k k不是 f i , j − 1 f_{i,j-1} fi,j1的最优决策点”。(注意,这里如果证明 p p p k k k对于 f i , j − 1 f_{i,j-1} fi,j1一样优并不能导出矛盾,因为最优决策点并不一定唯一)
其中 B B B矛盾叫做:“ k k k也是 f i , j f_{i,j} fi,j的最优决策点”。(因为综合条件③和 B B B能够知道, f i , j = f i , k + f k + 1 , j + w i , j f_{i,j}=f_{i,k}+f_{k+1,j}+w_{i,j} fi,j=fi,k+fk+1,j+wi,j,说明 k k k也是 f i , j f_{i,j} fi,j的最优决策点)

条件中没有大于号,很显然结论 B B B更容易推导。

证法1

一种平凡的证法:

已知: { ① : f i , j = f i , p + f p + 1 , j + w i , j ② : f i , j − 1 = f i , k + f k + 1 , j − 1 + w i , j − 1 ③ : f i , j ≤ f i , k + f k + 1 , j + w i , j ④ : f i , j − 1 ≤ f i , p + f p + 1 , j − 1 + w i , j − 1 \left\{\begin{matrix} ①:f_{i,j}=f_{i,p}+f_{p+1,j}+w_{i,j}\hspace{1cm}\\ ②:f_{i,j-1}=f_{i,k}+f_{k+1,j-1}+w_{i,j-1}\\ ③:f_{i,j}\leq f_{i,k}+f_{k+1,j}+w_{i,j}\hspace{0.9cm}\\ ④:f_{i,j-1}\leq f_{i,p}+f_{p+1,j-1}+w_{i,j-1}\hspace{0.0cm} \end{matrix}\right. :fi,j=fi,p+fp+1,j+wi,j:fi,j1=fi,k+fk+1,j1+wi,j1:fi,jfi,k+fk+1,j+wi,j:fi,j1fi,p+fp+1,j1+wi,j1

要证: f i , j ≥ f i , k + f k + 1 , j + w i , j f_{i,j}\geq f_{i,k}+f_{k+1,j}+w_{i,j} fi,jfi,k+fk+1,j+wi,j

首先是一番的推理:
首先因为最后一步已经用到了式③来证明 f i , j = f i , k + f k + 1 , j + w i , j f_{i,j}=f_{i,k}+f_{k+1,j}+w_{i,j} fi,j=fi,k+fk+1,j+wi,j,可以假设之间没有用到式③…然后因为带有不等号,所以必定含有式④:
f i , j − 1 ≤ f i , p + f p + 1 , j − 1 + w i , j − 1 f_{i,j-1}\leq f_{i,p}+f_{p+1,j-1}+w_{i,j-1} fi,j1fi,p+fp+1,j1+wi,j1

然后因为还少了 f i , j , w i , j f_{i,j},w_{i,j} fi,j,wi,j,我们可以把①的右边加④的左边,把左边加到右边,这样 f i , j f_{i,j} fi,j w i , j w_{i,j} wi,j的方向就对了,就得到:
f i , j − 1 + f i , p + f p + 1 , j + w i , j ≤ f i , j + f i , p + f p + 1 , j − 1 + w i , j − 1 f_{i,j-1}+f_{i,p}+f_{p+1,j}+\textcolor{blue}{w_{i,j}}\leq \textcolor{blue}{f_{i,j}}+f_{i,p}+f_{p+1,j-1}+w_{i,j-1} fi,j1+fi,p+fp+1,j+wi,jfi,j+fi,p+fp+1,j1+wi,j1
还约掉一项 f i , p f_{i,p} fi,p f i , j − 1 + f p + 1 , j + w i , j ≤ f i , j + f p + 1 , j − 1 + w i , j − 1 f_{i,j-1}+f_{p+1,j}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1}+w_{i,j-1} fi,j1+fp+1,j+wi,jfi,j+fp+1,j1+wi,j1

没什么想法,先把②带入进去:
f i , k + f k + 1 , j − 1 + w i , j − 1 + f p + 1 , j + w i , j ≤ f i , j + f p + 1 , j − 1 + w i , j − 1 f_{i,k}+f_{k+1,j-1}+w_{i,j-1}+f_{p+1,j}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1}+w_{i,j-1} fi,k+fk+1,j1+wi,j1+fp+1,j+wi,jfi,j+fp+1,j1+wi,j1
又约掉一项 w i , j − 1 w_{i,j-1} wi,j1 f i , k + f k + 1 , j − 1 + f p + 1 , j + w i , j ≤ f i , j + f p + 1 , j − 1 f_{i,k}+f_{k+1,j-1}+f_{p+1,j}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1} fi,k+fk+1,j1+fp+1,j+wi,jfi,j+fp+1,j1

现在要想办法把右侧的 f p + 1 , j − 1 f_{p+1,j-1} fp+1,j1约掉,发现可以对左边用四边形不等式:
f i , k + f k + 1 , j − 1 + f p + 1 , j + w i , j ≤ f i , j + f p + 1 , j − 1 f_{i,k}+\textcolor{blue}{f_{k+1,j-1}+f_{p+1,j}}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1} fi,k+fk+1,j1+fp+1,j+wi,jfi,j+fp+1,j1
f i , k + f k + 1 , j + f p + 1 , j − 1 + w i , j ≤ f i , k + f k + 1 , j − 1 + f p + 1 , j + w i , j ≤ f i , j + f p + 1 , j − 1 f_{i,k}+\textcolor{blue}{f_{k+1,j}+f_{p+1,j-1}}+w_{i,j}\leq f_{i,k}+\textcolor{blue}{f_{k+1,j-1}+f_{p+1,j}}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1} fi,k+fk+1,j+fp+1,j1+wi,jfi,k+fk+1,j1+fp+1,j+wi,jfi,j+fp+1,j1
f i , k + f k + 1 , j + f p + 1 , j − 1 + w i , j ≤ f i , j + f p + 1 , j − 1 f_{i,k}+\textcolor{blue}{f_{k+1,j}+f_{p+1,j-1}}+w_{i,j}\leq f_{i,j}+f_{p+1,j-1} fi,k+fk+1,j+fp+1,j1+wi,jfi,j+fp+1,j1

现在可以约掉 f p + 1 , j − 1 f_{p+1,j-1} fp+1,j1了:
f i , k + f k + 1 , j + w i , j ≤ f i , j f_{i,k}+f_{k+1,j}+w_{i,j}\leq f_{i,j} fi,k+fk+1,j+wi,jfi,j

QED.

证法2

一种更有技巧性的证法:
已知: { ① : f i , j = f i , p + f p + 1 , j + w i , j ② : f i , j − 1 = f i , k + f k + 1 , j − 1 + w i , j − 1 ③ : f i , j ≤ f i , k + f k + 1 , j + w i , j ④ : f i , j − 1 ≤ f i , p + f p + 1 , j − 1 + w i , j − 1 \left\{\begin{matrix} ①:f_{i,j}=f_{i,p}+f_{p+1,j}+w_{i,j}\hspace{1cm}\\ ②:f_{i,j-1}=f_{i,k}+f_{k+1,j-1}+w_{i,j-1}\\ ③:f_{i,j}\leq f_{i,k}+f_{k+1,j}+w_{i,j}\hspace{0.9cm}\\ ④:f_{i,j-1}\leq f_{i,p}+f_{p+1,j-1}+w_{i,j-1}\hspace{0.0cm} \end{matrix}\right. :fi,j=fi,p+fp+1,j+wi,j:fi,j1=fi,k+fk+1,j1+wi,j1:fi,jfi,k+fk+1,j+wi,j:fi,j1fi,p+fp+1,j1+wi,j1

要证: f i , j ≥ f i , k + f k + 1 , j + w i , j f_{i,j}\geq f_{i,k}+f_{k+1,j}+w_{i,j} fi,jfi,k+fk+1,j+wi,j

因为不等号方向不对,所以不能有③,因为式中有 w i , j w_{i,j} wi,j,所以必须把①带进去,消掉 w i , j w_{i,j} wi,j
f i , p + f p + 1 , j ≥ f i , k + f k + 1 , j f_{i,p}+f_{p+1,j}\geq f_{i,k}+f_{k+1,j} fi,p+fp+1,jfi,k+fk+1,j
f i , k + f k + 1 , j ≤ f i , p + f p + 1 , j f_{i,k}+f_{k+1,j}\leq f_{i,p}+f_{p+1,j} fi,k+fk+1,jfi,p+fp+1,j
(这是要证明的式子)
这个式子的意思就是在 f i , j f_{i,j} fi,j意义下 k k k p p p优。

而我们知道在 f i , j − 1 f_{i,j-1} fi,j1意义下 k k k p p p优: f i , k + f k + 1 , j − 1 ≤ f i , p + f p + 1 , j − 1 f_{i,k}+f_{k+1,j-1}\leq f_{i,p}+f_{p+1,j-1} fi,k+fk+1,j1fi,p+fp+1,j1

我们可以比较一下这两个式子:
条件: f i , k + f k + 1 , j − 1 ≤ f i , p + f p + 1 , j − 1 条件:f_{i,k}+\textcolor{blue}{f_{k+1,j-1}}\leq f_{i,p}+\textcolor{blue}{f_{p+1,j-1}} 条件:fi,k+fk+1,j1fi,p+fp+1,j1
结论: f i , k + f k + 1 , j ≤ f i , p + f p + 1 , j 结论:f_{i,k}+\textcolor{red}{f_{k+1,j}}\leq f_{i,p}+\textcolor{red}{f_{p+1,j}} 结论:fi,k+fk+1,jfi,p+fp+1,j

若有: 条件 + T = 结论 条件+T=结论 条件+T=结论,则 T : f p + 1 , j − 1 + f k + 1 , j ≤ f k + 1 , j − 1 + f p + 1 , j T:\textcolor{blue}{f_{p+1,j-1}}+\textcolor{red}{f_{k+1,j}}\leq \textcolor{blue}{f_{k+1,j-1}}+\textcolor{red}{f_{p+1,j}} T:fp+1,j1+fk+1,jfk+1,j1+fp+1,j,恰为四边形不等式,证毕。

因此我们知道 f i , j ≥ f i , k + f k + 1 , j + w i , j f_{i,j}\geq f_{i,k}+f_{k+1,j}+w_{i,j} fi,jfi,k+fk+1,j+wi,j,而我们又知道 f i , j ≤ f i , k + f k + 1 , j + w i , j f_{i,j}\leq f_{i,k}+f_{k+1,j}+w_{i,j} fi,jfi,k+fk+1,j+wi,j,因此 f i , j = f i , k + f k + 1 , j + w i , j f_{i,j}= f_{i,k}+f_{k+1,j}+w_{i,j} fi,j=fi,k+fk+1,j+wi,j
这说明如果存在一个 p > k p>k p>k,则 k k k必然也是 f i , j f_{i,j} fi,j的最优决策点,因此只需要枚举到 k k k

右边

接下来证明右边:

要证 p i , j ≤ p i + 1 , j p_{i,j}\leq p_{i+1,j} pi,jpi+1,j,设 p = p i , j , k = p i + 1 , j p=p_{i,j},k=p_{i+1,j} p=pi,j,k=pi+1,j,就假设 p > k p>k p>k

我们仿照左边的思路,想要从“ f i + 1 , j f_{i+1,j} fi+1,j意义下 k k k更优”推出“ f i , j f_{i,j} fi,j意义下 k k k更优”。

想要证明 f i , j ≥ f i , k + f k + 1 , j + w i , j f_{i,j}\geq f_{i,k}+f_{k+1,j}+w_{i,j} fi,jfi,k+fk+1,j+wi,j,即:
结论 : f i , k + f k + 1 , j ≤ f i , p + f p + 1 , j 结论:f_{i,k}+f_{k+1,j} \leq f_{i,p}+f_{p+1,j} 结论:fi,k+fk+1,jfi,p+fp+1,j

我们知道对于 f i + 1 , j f_{i+1,j} fi+1,j来说, k k k优于 p p p
条件 : f i + 1 , k + f k + 1 , j ≤ f i + 1 , p + f p + 1 , j 条件:f_{i+1,k}+f_{k+1,j}\leq f_{i+1,p}+f_{p+1,j } 条件:fi+1,k+fk+1,jfi+1,p+fp+1,j

设: 条件 + T = 结论 条件+T=结论 条件+T=结论,用还原不等式的方法求出 T T T T T T恰是四边形不等式。

4.证明时间复杂度

枚举决策点的总次数约为:
∑ l e n = 1 n ∑ i = 1 2 n − l e n + 1 p i + 1 , i + l e n − 1 − p i , i + l e n − 2 + 1 {\overset{n}{\underset{len=1}\sum}}{\overset{2n-len+1}{\underset{i=1}\sum}}p_{i+1,i+len-1}-p_{i,i+len-2}+1 len=1ni=12nlen+1pi+1,i+len1pi,i+len2+1
≤ ∑ l e n = 1 n ∑ i = 1 2 n p i + 1 , i + l e n − 1 − p i , i + l e n − 2 + 1 \leq {\overset{n}{\underset{len=1}\sum}}{\overset{2n}{\underset{i=1}\sum}}p_{i+1,i+len-1}-p_{i,i+len-2}+1 len=1ni=12npi+1,i+len1pi,i+len2+1
= ∑ l e n = 1 n ( ∑ i = 1 2 n p i + 1 , i + l e n − 1 − ∑ i = 1 2 n p i , i + l e n − 2 ) + n = {\overset{n}{\underset{len=1}\sum}}\left({\overset{2n}{\underset{i=1}\sum}}p_{i+1,i+len-1}-{\overset{2n}{\underset{i=1}\sum}}p_{i,i+len-2}\right)+n =len=1n(i=12npi+1,i+len1i=12npi,i+len2)+n
= ∑ l e n = 1 n ( ∑ i = 2 2 n + 1 p i , i + l e n − 2 − ∑ i = 1 2 n p i , i + l e n − 2 ) + n = {\overset{n}{\underset{len=1}\sum}}\left({\overset{2n+1}{\underset{i=2}\sum}}p_{i,i+len-2}-{\overset{2n}{\underset{i=1}\sum}}p_{i,i+len-2}\right)+n =len=1n(i=22n+1pi,i+len2i=12npi,i+len2)+n
= ∑ l e n = 1 n p 2 n + 1 , 2 n + l e n − 1 − p 1 , l e n − 1 + n = {\overset{n}{\underset{len=1}\sum}}p_{2n+1,2n+len-1}-p_{1,len-1}+n =len=1np2n+1,2n+len1p1,len1+n
= ∑ l e n = 1 n O ( n ) = {\overset{n}{\underset{len=1}\sum}}O(n) =len=1nO(n)
= O ( n 2 ) =O(n^2) =O(n2)

转移复杂度为 O ( 1 ) O(1) O(1),因此证完。

石子合并求最大值

原来的代码:

 for(int len=2;len<=n;len++){             区间长度
    for(int i=1,j;(j=i+len-1)<=2*n;i++){  区间端点
      for(int k=i;k<j;k++){               区间分割点
        g[i][j]=max(g[i][j],g[i][k]+g[k+1][j]+s[j]-s[i-1]);
      }
    }
  }

新的代码:

  for(int len=2; len<=n; len++){               区间长度
    for(int i=1,j; (j=i+len-1)<=2*n; i++){     区间端点
      g[i][j]=max(g[i][j-1],g[i+1][j])+s[j]-s[i-1];
    }
  }

因为最大值的最优决策一定能在两端取得,也即:
g i , j = max ⁡ { g i , j − 1 , g i + 1 , j } + w i , j g_{i,j}=\max\{g_{i,j-1},g_{i+1,j}\}+w_{i,j} gi,j=max{gi,j1,gi+1,j}+wi,j

证明

*请注意接下来证明中“左”和“左”的区别,对于区间 [ i , j ] = [ i , k ] + [ k + 1 , j ] [i,j]=[i,k]+[k+1,j] [i,j]=[i,k]+[k+1,j],左端指的是 [ i , i ] [i,i] [i,i],而左侧指的是 [ i , k ] [i,k] [i,k]

要证明最大值的最优决策一定会在两端取得,可以考虑 g i , j g_{i,j} gi,j的最优决策,因此归纳所有区间长度小于 j − i + 1 j-i+1 ji+1的区间全都符合假设:

反证,假设端点不是最优决策点(反论题),设最优决策点为 k ( i < k < j − 1 ) k(i<k<j-1) k(i<k<j1),则:
g i , j = g i , k + g k + 1 , j + w i , j g_{i,j}=g_{i,k}+g_{k+1,j}+w_{i,j} gi,j=gi,k+gk+1,j+wi,j

现在考虑区间 g i , k g_{i,k} gi,k,我们知道 g i , k g_{i,k} gi,k的最优决策一定在其两端取得。假设在左取得,则 g i , j = g i + 1 , k + w i , k + g k + 1 , j + w i , j g_{i,j}=g_{i+1,k}+w_{i,k}+g_{k+1,j}+w_{i ,j} gi,j=gi+1,k+wi,k+gk+1,j+wi,j

我们可以构造一种方案,先把 [ i + 1 , k ] [i+1,k] [i+1,k] [ k + 1 , j ] [k+1,j] [k+1,j]合并,再把 [ i + 1 , j ] [i+1,j] [i+1,j] [ i , i ] [i,i] [i,i]合并,贡献就是:
g i , j ′ = g i + 1 , k + g k + 1 , j + w i + 1 , j + w i , j g'_{i,j}=g_{i+1,k}+g_{k+1,j}+w_{i+1,j}+w_{i,j} gi,j=gi+1,k+gk+1,j+wi+1,j+wi,j

对比 g i , j g_{i,j} gi,j和这个式子:
g i , j = g i + 1 , k + w i , k + g k + 1 , j + w i , j g_{i,j}=g_{i+1,k}+\textcolor{blue}{w_{i,k}}+g_{k+1,j}+w_{i ,j} gi,j=gi+1,k+wi,k+gk+1,j+wi,j
g i , j ′ = g i + 1 , k + w i + 1 , j + g k + 1 , j + w i , j g'_{i,j}=g_{i+1,k}+\textcolor{red}{w_{i+1,j}}+g_{k+1,j}+w_{i,j} gi,j=gi+1,k+wi+1,j+gk+1,j+wi,j

w i , k ≤ w i + 1 , j \textcolor{blue}{w_{i,k}}\leq \textcolor{red}{w_{i+1,j}} wi,kwi+1,j
则显然, g i , j ≥ g i , j ′ g_{i,j}\geq g'_{i,j} gi,jgi,j,则说明 i i i也是最优决策点(由于假设 g i , j g_{i,j} gi,j),与反论题矛盾.

否则: w i , k > w i + 1 , j \textcolor{blue}{w_{i,k}}>\textcolor{red}{w_{i+1,j}} wi,k>wi+1,j
即: a i > w k + 1 , j \textcolor{blue}{a_i}>\textcolor{red}{w_{k+1,j}} ai>wk+1,j

(说明右侧所有石子的大小加起来还没有 a i a_i ai大)
此时我们构造一种方案:

先把 [ i , k ] [i,k] [i,k]合并好, [ k + 1 , j ] [k+1,j] [k+1,j]区间保留原始的样子,然后把右侧的石子依次逐个加入左边的堆中,这种方案的总贡献为:
g i , j ′ ′ = g i , k + ( ∑ t = k + 1 j − 1 w i , t ) + w i , j ≥ g i , k + ( j − k − 1 ) ⋅ a i + w i , j > g i , k + ( j − k − 1 ) ⋅ w k + 1 , j + w i , j g''_{i,j}=g_{i,k}+\left(\overset{j-1}{\underset{t=k+1}\sum}w_{i,t}\right)+w_{i,j}\geq g_{i,k}+(j-k-1)\cdot \textcolor{blue}{a_i}+w_{i,j}\textcolor{black}> g_{i,k}+(j-k-1)\cdot \textcolor{red}{w_{k+1,j}}+w_{i,j} gi,j′′=gi,k+(t=k+1j1wi,t)+wi,jgi,k+(jk1)ai+wi,j>gi,k+(jk1)wk+1,j+wi,j

而我们知道 g g g函数也像 f f f一样具有上界:
g k + 1 , j ≤ ( j − k − 1 ) ⋅ w k + 1 , j \color{red}g_{k+1,j}\leq (j-k-1)\cdot w_{k+1,j} gk+1,j(jk1)wk+1,j

因此:
g i , j ′ ′ > g i , k + ( j − k − 1 ) ⋅ w k + 1 , j + w i , j ≥ g i , k + g k + 1 , j + w i , j = g i , j g''_{i,j}> g_{i,k}+\textcolor{red}{(j-k-1)\cdot w_{k+1,j}}+w_{i,j}\textcolor{red}{\geq} g_{i,k}+\textcolor{red}{g_{k+1,j}}+w_{i,j}=g_{i,j} gi,j′′>gi,k+(jk1)wk+1,j+wi,jgi,k+gk+1,j+wi,j=gi,j

此时, g i , j ′ ′ > g i , j g''_{i,j}>g_{i,j} gi,j′′>gi,j,证明新方案严格优于原方案,说明 k k k不是最优决策点,矛盾。

大概意思就是说,对于区间 [ i , k ] [i,k] [i,k]的最优决策点在其左的情况,假如说 w i , k ≤ w i + 1 , j w_{i,k}\leq w_{i+1,j} wi,kwi+1,j,则 [ i , j ] [i,j] [i,j]的左端点必然为最优决策点,矛盾。否则, [ i , j ] [i,j] [i,j]的右端点比 k k k更优, k k k不为最优决策点,矛盾。

同理可证明,当区间 [ k + 1 , j ] [k+1,j] [k+1,j]的最优决策点在其右端取得时,也会产生矛盾。

因此,根据现在的证明,在反论题成立的情况下,区间 [ i , k ] [i,k] [i,k]的最优决策点为其右端点,而区间 [ k + 1 , j ] [k+1,j] [k+1,j]的最优决策点为其左端点。

接下来证明这种情况不存在。

我们讨论区间 [ i , k ] \color{blue}[i,k] [i,k]和区间 [ k + 1 , j ] \color{red}[k+1,j] [k+1,j]
我们已经知道了 [ i , k ] \color{blue}[i,k] [i,k]的最优决策点是 k k k
g i , k = g i , k − 1 + w i , k \color{blue} g_{i,k}=g_{i,k-1}+w_{i,k} gi,k=gi,k1+wi,k
同理我们知道 [ k + 1 , j ] \color{red}[k+1,j] [k+1,j]的最优决策点是 k + 1 k+1 k+1
g k + 1 , j = g k + 2 , j + w k + 1 , j \color{red} g_{k+1,j}=g_{k+2,j}+w_{k+1,j} gk+1,j=gk+2,j+wk+1,j

总的贡献是:
g i , j = g i , k + g k + 1 , j + w i , j = g i , k − 1 + w i , k + g k + 2 , j + w k + 1 , j + w i , j g_{i,j}=\textcolor{blue}{g_{i,k}}+\textcolor{red}{g_{k+1,j}}+w_{i,j}=\textcolor{blue}{g_{i,k-1}+w_{i,k}}+\textcolor{red}{g_{k+2,j}+w_{k+1,j}}+w_{i,j} gi,j=gi,k+gk+1,j+wi,j=gi,k1+wi,k+gk+2,j+wk+1,j+wi,j

这时候我们再构造另一种方案,先把 [ k , k ] [k,k] [k,k]合并到 [ i , k − 1 ] \color{blue}[i,k-1] [i,k1]中,然后再把 [ k + 1 , k + 1 ] [k+1,k+1] [k+1,k+1]加入到 [ i , k ] \color{blue}[i,k] [i,k]中,最后再把 [ i , k + 1 ] \color{blue}[i,k+1] [i,k+1] [ k + 2 , j ] \color{red}[k+2,j] [k+2,j]合并,这样做的贡献是:
g i , j ′ = 2 ⋅ g i , k − 1 + w i , k + w i , k + 1 + g k + 2 , j + w k + 2 , j + w i , j = 2 ⋅ g i , k − 1 + 2 ⋅ w i , k + g k + 2 , j + w k + 1 , j + w i , j ≥ g i , j g'_{i,j}=\textcolor{blue}{2\cdot g_{i,k-1}+w_{i,k}+w_{i,k+1}}+\textcolor{red}{g_{k+2,j}+w_{k+2,j}}+w_{i,j}=\textcolor{blue}{2\cdot g_{i,k-1}+2\cdot w_{i,k}}+\textcolor{red}{g_{k+2,j}+w_{k+1,j}}+w_{i,j}\geq g_{i,j} gi,j=2gi,k1+wi,k+wi,k+1+gk+2,j+wk+2,j+wi,j=2gi,k1+2wi,k+gk+2,j+wk+1,j+wi,jgi,j

因为有假设最优决策点是 k k k,就会有 g i , j ≥ g i , j ′ g_{i,j}\geq g'_{i,j} gi,jgi,j,因此 g i , j = g i , j ′ g_{i,j}=g'_{i,j} gi,j=gi,j
这样就说明 k − 1 k-1 k1这个位置也是最优决策点。
同理说明 k − 2 k-2 k2也是最优决策点…说明 k − 3 k-3 k3也是最优决策点…因此说明 i i i是区间 [ i , j ] [i,j] [i,j]最优决策点。与假设矛盾。

*注意这里证明左端点是最优决策点是为了导出矛盾,是在说明在反论题成立的情况下,这种情况不存在,而不是真的说明左端点永远是最优决策点。
(其实这时候甚至能证明出区间中的每一个点都是最优决策点。但是我们的假设是“假定两端不是最优决策点”,因此只要证出来两端是最优决策点就矛盾了)

因此反论题为假命题。

QED.

一种说法是 g i , j g_{i,j} gi,j的最优决策点一定取自 a i , a j a_i,a_j ai,aj中较小的那一端,这种说法是错误的。

题解视频

简单四边形不等式优化dp(下)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值