四边形不等式笔记

发布时间 2023-12-08 07:44:15作者: Imcaigou

说明

\(w(x,y)\) 是定义在整数集合上的二元函数。

下文所有数都在默认的定义域上。

下文的四边形不等式定义是对于决策单调性函数中决策函数为 \(\min\) 而言的。如果要求考虑决策函数为 \(\max\) ,则需要将下文中的关于 \(w\) 的不等式符号全部取反,即所有值(不是下标、大小、位置)变为相反数。

请耐心学习,式子看起来多,其实很多是一样的。

所有例题都没有代码(悲)。

定义

若:

\[\forall a\le b\le c\le d : w(a,d)+w(b,c) \ge w(a,c) + w(b,d) \tag{1} \]

则称 \(w\) 满足四边形不等式。即“包含大于等于交叉”。

定理[1]

若:

\[\forall a<b:w(a,b+1)+w(a+1,b)\le w(a,b) + w(a + 1,b + 1) \tag{2} \]

\(w\) 一定满足四边形不等式。

\((2)\) 得:

\[\forall a < c: w(a,c + 1) + w(a + 1, c) \ge w(a, c) + w(a + 1, c + 1) \tag{3} \]

\[\forall a + 1 < c: w(a + 1, c + 1) + w(a + 2, c) \ge w(a + 1, c) + w(a + 2, c + 1) \tag{4} \]

\((3) + (4)\) 得:

\[\forall a + 1 < c: w(a, c + 1) + w(a + 2, c) \ge w(a, c) + w(a + 2, c + 1) \tag{5} \]

\((2)\) 得:

\[\forall a + 2 < c: w(a + 2, c + 1) + w(a + 3, c) \ge w(a + 1, c) + w(a + 2, c + 1) \tag{6} \]

\((5) + (6)\)

\[\forall a + 2 < c: w(a, c + 1) + w(a + 3, c) \ge w (a, c) + w(a + 3, c + 1) \tag{7} \]

归纳可知:

\[\forall a \le b \le c: w(a, c + 1) + w(b, c) \ge w(a, c) + w(b,c+1) \tag{8} \]

\((8)\) 得:

\[\forall a \le b \le c: w(a,c+1) + w(b, c) \ge w(a,c)+w(b,c + 1) \tag{9} \]

\[\forall a \le b \le c+1: w(a,c+2) + w(b, c+1) \ge w(a,c+1)+w(b,c + 2) \tag{10} \]

\((9) + (10)\) 得:

\[\forall a \le b \le c + 1: w(a,c + 2) + w(b,c) \ge w(a,c) + w(b,c+2) \tag{11} \]

根据 \((8)\) 的归纳方法可知:

\[\forall a\le b\le c\le d : w(a,d)+w(b,c) \ge w(a,c) + w(b,d) \tag{12} \]

证毕。

一维动态规划的四边形不等式及决策单调性优化

对于形如 \(f_i = \min_{L_i \le j \le R_i}\{f_j+w(j,i)\}\) 的状态转移方程(\(L,R\) 单调不减),记 \(p_i\) 为使 \(f_i\) 取到最小值的 \(j\) 的值,称 \(p_i\)\(f_i\) 的最优决策点。

\(\forall L_i \le j \le R_i,j \ne p_i: f_{p_i} + w(p_i,i) \le f_j + w(j,i)\)

\(p\) 单调不减,则称 \(f\) 具有决策单调性。

注意这里的 \(p_i\) 如果有多个,则决策单调性满足 \(\forall 1 < i < n,\forall p_i,p_{i-1},p_{i+1} : p_{i-1}\le p_i\le p_{i+1}\)

定理[2]

在状态转移方程 \(f_i = \min_{0 \le j < i}\{f_j+w(j,i)\}\) 中,若 \(w\) 满足四边形不等式,则 \(f\) 具有决策单调性。

这里 \(j\) 的范围与上文不同,但由于 \(L,R\) 单调不减,所以 \(f_i\) 若在没有 \(L,R\) 限制的前提下具有决策单调性,则在有 \(L,R\) 限制的前提下一定具有决策单调性。

$\forall i \in [1,n],j \in [0,p_i), i' \in (i,n]: $

\(p_i\) 作为最优决策点的特性得:

\[f_{p_i} + w(p_i,i) \le f_j + w(j,i) \tag{13} \]

\(w\) 满足四边形不等式得:

\[w(j,i) + w(p_i,i') \le w(j,i')+w(p_i,i) \tag{14} \]

\((14)\) 变形得:

\[w(p_i,i') - w(p_i,i) \le w(j,i) - w(j,i') \tag{15} \]

\((13)+(15)\) 得:

\[f_{p_i} + w(p_i,i') \le f_j + w(j,i') \tag{16} \]

\((16)\) 可知:

\[p_{i'} \ne j \Rightarrow p_{i'} \notin \{j\} \Rightarrow p_{i'} \notin [0,p_i) \Rightarrow p_{i'} \ge p_i \Rightarrow \forall i < i':p_i \le p_{i'} \tag{17} \]

\(f\) 具有决策单调性。

证毕。

优化方式

单调队列/单调栈+二分。

考虑动态维护整个 \(p\) 数组。相当于我们每次新算出来一个 \(f_i\) ,就考虑如何把 \(i\) 放入 \(p\) 数组中,动态更新。因为 \(f\) 具有决策单调性,所以可知我们会找到一个位置 \(j\) 使得 \((j,n)\) 中的最优决策点 \(p_k \ge i\),而我们则把 \(p\) 中的这些位置(暂时)全部赋值为 \(i\)

为了更高效地更新和计算,我们引入单调队列进行优化。

具体地,建立一个队列代替 \(p\) 数组,队列中保存若干个元组 \((j, l, r)\)\(j\) 表示决策, \(l,r\) 表示 \(\forall k \in [l,r]: p_k = j\) ,且有且仅有 \(k \in [l,r]\) 满足 \(f_k\) 的最优决策点为 \(j\)。(注意这里的 \(j\) 是来自 \(p\) 数组的最优决策点,而 \(l,r\) 是本身数组的位置下标,两者性质不同,思考和理解时请区分开,且 \(j \le l \le r\)

这个队列有性质。首先我们先令其中元组元素为 \(c\)。那么 \(\forall k < SIZE_{queue}: c_{k,first} < c_{k+1,first}\) ,且 \(\bigcap_{k \in queue} [c_{k,second}, c_{k,third}] = \emptyset,\bigcup_{k \in queue} [c_{k,second}, c_{k,third}] = [1,n]\)

考虑如何更新这个队列。我们使用单调队列的思想对这个队列进行维护,每次求出 \(f_i\) 后,从后往前替代这些区间。

对于单调队列中当前的最后一个元素 \(c_{k}\) 一直执行操作:

  • \(c_{k,first} \to c_{k,second}\) 的转移不如 \(i \to c_{k,second}\) 则直接将 \(c_k\) 从队列中删除。
  • 否则在 \([c_{k,second},c_{k,third}]\) 中二分,找到第一个 \(i \to pos\) 转移比 \(c_{k,first} \to pos\) 更优,把 \(c_k = (c_{k,first}, c_{k, second}, c_{k,third})\) 变成 \(c_k = (c_{k,first}, c_{k,second}, pos - 1)\) ,再在队尾加入 \((i, pos, n)\),并退出。

然后我们就得到了一个时间复杂度 \(O(n\log_2{n})\) 的做法。

例题

[NOI2009] 诗人小G

鸽,不写了,反正有题解。

二维区间动态规划的四边形不等式及二维决策单调性优化

在区间动态规划中常能遇到这样的状态转移方程:

\[f_{i,j} = \min_{i\le k < j} \{f_{i,k} + f_{k+1,j} + w(i,j) \} \tag{18} \]

特别地,\(\forall i \ge j : w_{i,j} = f_{i,j} = 0\)

区间包含单调性

若:

\[\forall a\le b\le c\le d : w(a,d) \ge w(b,c) \]

则称 \(w\) 满足区间包含单调性。

定理[3]

对于 \((18)\) 的方程,若 \(w\) 同时满足区间包含单调性和四边形不等式,则 \(f\) 也满足四边形不等式。

考虑归纳证明。

\(j-i = 1\)

\[f_{i,j + 1} + f_{i+1,j} = f_{i,i+2} + f_{i+1,i+1} = f_{i,i+2} \]

\(f_{i,i+2}\) 的最优决策点为 \(i\)

\[\begin{aligned} f_{i,i+2} & = f_{i,i} + f_{i+1,i+2} + w(i,i+2) \\ & = w(i+1,i+2)+w(i,i+2) \\ \end{aligned} \]

因为 \(w\) 有区间包含单调性,即:

\[w(i,i+2) \ge w(i,i+1) \\ \Downarrow \\ f_{i,i+2} \ge w(i+1,i+2) + w(i,i+1) \\ \Downarrow \\ f_{i,j+1} + f_{i+1,j} \ge w(i + 1,i+2) + w(i,i+1) \\ \Downarrow \\ \begin{equation} f_{i,j+1} + f_{i+1,j} \ge f_{i + 1,j + 1} + f_{i,j} \end{equation} \]

否则 \(f_{i,i+2}\) 的最优决策点为 \(i+1\)

\[\begin{aligned} f_{i,i+2} & = f_{i,i+1} + f_{i+2,i+2} + w(i,i+2) \\ & = w(i,i+1)+w(i,i+2) \\ \end{aligned} \]

因为 \(w\) 有区间包含单调性,即

\[w(i,i+2) \ge w(i+1,i+2) \\ \Downarrow \\ f_{i,i+2} \ge w(i+1,i+2) + w(i,i+1) \\ \Downarrow \\ f_{i,j+1} + f_{i+1,j} \ge w(i + 1,i+2) + w(i,i+1) \\ \Downarrow \\ f_{i,j+1} + f_{i+1,j} \ge f_{i + 1,j + 1} + f_{i,j} \]

综上,当 \(j-i = 1\) 时四边形不等式对 \(f_{i,j}\) 成立。

假设当 \(j-i < k\) 时四边形不等式对 \(f_{i,j}\) 成立。

\(j-i = k\)

\(f_{i,j+1}\) 的最优决策点为 \(x\)\(f_{i+1,j}\) 的最优决策点为 \(y\)

所以有:

\[\begin{align} f_{i,j+1} + f_{i+1,j} = f_{i,x} + f_{x+1,j+1} + f_{i+1,y} + f_{y+1,j} + w(i,j+1) + w(i + 1,j) \tag{19} \\ f_{i,j} + f_{i+1,j+1} \le f_{i,x} + f_{x+1,j} + f_{i+1,y} + f_{y+1,j+1} + w(i,j) + w(i+1,j+1) \tag{20} \\ f_{i,j} + f_{i+1,j+1} \le f_{i,y} + f_{y+1,j} + f_{i+1,x} + f_{x+1,j+1} + w(i,j) + w(i+1,j+1) \tag{21} \\ \end{align} \]

因为 \(w\) 满足四边形不等式,所以有:

\[w(i,j+1) + w(i+1,j) \ge w(i,j) + w(i+1,j+1) \tag{22} \]

\(x\le y\),由假设可知:

\[f_{x+1,j+1} + f_{y+1,j} \ge f_{x+1,j} + f_{y+1,j+1} \tag{23} \]

\((22)+(23)\) 得:

\[f_{x+1,j+1} + f_{y+1,j} + w(i,j+1) + w(i+1,j) \ge f_{x+1,j} + f_{y+1,j+1} + w(i,j) + w(i+1,j+1) \\ \Downarrow \\ f_{i,x} + f_{x+1,j+1} + f_{i+1,y} + f_{y+1,j} + w(i,j+1) + w(i + 1,j) \ge f_{i,x} + f_{x+1,j} + f_{i+1,y} + f_{y+1,j+1} + w(i,j) + w(i+1,j+1) \\ \Downarrow \\ f_{i+1,j} + f_{i,j+1} \ge f_{i,j} + f_{i + 1,j + 1} \]

综上,当 \(x\le y\) 时,\(j-i\le k\) 时四边形不等式对 \(f_{i,j}\) 成立。

\(x>y\),由假设可知:

\[f_{i,x} + f_{i+1,y} \ge f_{i,y} + f_{i+1,x} \tag{24} \]

\((22) + (24)\) 得:

\[f_{i,x}+f_{i+1,y} + w(i,j+1) + w(i+1,j) \ge f_{i,y} + f_{i+1,x} + w(i,j) + w(i + 1,j + 1) \\ \Downarrow \\ f_{i,x} + f_{x+1,j+1} + f_{i+1,y} + f_{y+1,j} + w(i,j+1) + w(i + 1,j) \ge f_{i,x} + f_{x+1,j} + f_{i+1,y} + f_{y+1,j+1} + w(i,j) + w(i+1,j+1) \\ \Downarrow \\ f_{i+1,j} + f_{i,j+1} \ge f_{i,j} + f_{i + 1,j + 1} \]

综上,当 \(x > y\) 时,\(j-i\le k\) 时四边形不等式对 \(f_{i,j}\) 成立。

因为当 \(j-i=1\) 时四边形不等式对 \(f_{i,j}\) 成立,且若 \(j-i < k\) 时四边形不等式对 \(f_{i,j}\) 成立,则 \(j-i \le k\) 时四边形不等式对 \(f_{i,j}\) 成立,所以对于 \((18)\) 的方程若若 \(w\) 同时满足区间包含单调性和四边形不等式,则 \(f\) 也满足四边形不等式。

证毕。

定理[4]

\(P\) 为最优决策点。

对于 \((18)\) 中的方程,若果 \(f\) 满足四边形不等式,则 \(\forall i < j: P_{i,j-1} \le P_{i,j} \le P_{i+1,j}\) ,即最优决策点随左右端点的增加而单调不减。

\(p = P_{i,j}\)

$\forall i < k \le p: $

因为 \(f\) 满足四边形不等式,所以:

\[f_{i,p} + f_{i+1,k} \ge f_{i,k} + f_{i+1,p} \notag\\ \Downarrow \notag \\ \begin{align} f_{i+1,k} - f_{i+1,p} \ge f_{i,k} - f_{i,p} \tag{25} \end{align} \]

因为 \(p\) 为最优决策点,所以有:

\[f_{i,k} + f_{k + 1,j} \ge f_{i,p} + f_{p+1,j} \]

由此:

\[\begin{align} & (f_{i+1,k} + f_{k+1,j} + w(i+1,j)) - (f_{i+1,p} + f_{p+1,j} + w(i+1,j)) \\ & = (f_{i+1,k} - f_{i+1,p}) + (f_{k+1,j} - f_{p+1,j}) \\ & \ge (f_{i,k} - f_{i,p}) + (f_{k+1,j} - f_{p+1,j}) \\ & = (f_{i,k} + f_{k+1,j}) - (f_{i,p} + f_{p+1,j}) \\ & \ge 0 \end{align} \]

\(\forall i < k \le p\)\(p\) 一定不劣于选 \(k\) ,即 \(P_{i+1,j} \ge p\),即 \(P_{i+1,j} \ge P_{i,j}\)

同理可证 \(P_{i,j + 1} \ge P_{i,j}\)

综上有 \(\forall i < j: P_{i,j-1} \le P_{i,j} \le P_{i+1,j}\)

证毕。

优化方式

根据定理[3]和定理[4],我们知道若 \(w\) 满足四边形不等式,则在状态转移时对于 \(f_{l,r}\) 只需要枚举 \(P_{l,r - 1} \le k \le P_{l + 1,r}\) 就可以得到 \(P_{l,r}\) 进而得到 \(f_{l,r}\)

时间复杂度:

\[\begin{aligned} & O(\sum_{l=1}^{n-1}\sum_{r=l + 1}^n (P_{l+1,r} - P_{l,r-1} + 1)) \\ & =O(\sum_{l=1}^{n-1}( P_{l+1,n} - P_{1,n-l} + n-l)) \\ & =O(n^2) \end{aligned} \]

例题

石子合并

请使用 \(O(n^2)\) 做法。

但似乎有 \(O(n\log_2 n)\) 的做法吊打动态规划。。

代码太简单就不写了。