【学习笔记】决策单调性与四边形不等式
Itst - 决策单调性与四边形不等式 学习笔记。
这方面是真的一点不会啊。学点东西吧 apj。
约定
对于 \(n \times m\) 的矩阵 \(A\),定义:
- 子矩阵 \(A_{[i_1, i_2, \cdots, i_k],[j_1, j_2, \cdots, j_l]}\) 为矩阵 \(A\) 中第 \(i_1, i_2, \cdots, i_k\) 行和第 \(j_1, j_2, \cdots, j_l\) 列的交形成的矩阵;
- 连续子矩阵 就是选取下标连续的子矩阵,记作 \(A_{[l_1 \sim r_1],[l_2 \sim r_2]}\);
- \(\min_i(A)\) 为最大的整数 \(k\) 满足 \(A_{i,k} = \min_{1\le j\le m} A_{i,j}\),即一行内最小值的最靠后的出现位置。
默认 \(A_{i, j}\) 可以快速单次计算。
单调矩阵、蒙日阵与四边形不等式
- 若 \(\forall 1 \le i < j \le n, \min_i(A) \le \min_j(A)\),则称该矩阵为 单调矩阵;
- 若对于一个矩阵 \(A\) 的所有子矩阵均为单调矩阵,则称该矩阵为 完全单调矩阵。
可以发现,常说的决策单调性问题即为单调矩阵上求解一行的最小值的问题。而决策单调性有一个常见的判定方法为 四边形不等式,即:
- 若 \(\forall 1 \le i_1 < i_2 \le n, 1 \le j_1 < j_2 \le m\),均有 \(A_{i_1,j_1} + A_{i_2, j_2} \le A_{i_1, j_2} + A_{i_2, j_1}\),则称 \(A\) 满足 四边形不等式,同时称这样的矩阵为 蒙日阵。
存在判定定理:
- \(A\) 满足四边形不等式当且仅当 \(\forall 1 \le i < n, 1 \le j < m\),均有 \(A_{i,j} + A_{i+1, j+1} \le A_{i, j+1} + A_{i+1, j}\)。
证明是容易的,发现将四边形不等式变形后,实际上等价于 \(A_{i_2, j_2} - A_{i_1, j_2} - A_{i_2, j_1} + A_{i_1,j_1} \le 0\),而发现这与矩阵二维前缀和差分是等价的,也就是说上述式子的意思为对矩阵 \(A\) 二维差分后, \((1,n],(1,m]\) 内的任意矩形和都是 \(\le 0\) 的,那么显然只需要保证每个数都 \(\le 0\) 就能符合条件,也就是上述的判定定理。
有重要结论:
- 蒙日阵均为完全单调矩阵。
这意味着,如果一个矩阵满足四边形不等式,那么它就具有决策单调性。
同时,蒙日阵还有如下性质:假设 \(A, B\) 为蒙日阵,那么有:
- \(A^T\) 为蒙日阵;
- \(A + B\) 为蒙日阵;
- \(\lambda A, \lambda \ge 0\) 为蒙日阵;
由此我们也可以得出一个重要结论:对 \(A\) 的某一行或某一列加上任意常数 \(c\) 为蒙日阵。这使得蒙日阵的拓展性大大增强。
一些蒙日阵的例子:
- \(A_{x,y} = \min(x, y)\);
- \(A_{x,y} = \max(x, y)\);
- \(A_{x,y} = xy\);
- \(A_{x,y} = |x-y|^p, p \ge 1\);
- \(A_{x,y} = \sum_{i=1}^x \sum_{j=y}^m d_{i, j}\),其中 \(\{d_{i, j}\}\) 为非负矩阵;
- \(A_{x,y} = [x=k] v_k\);
- \(A_{x,y} = f(x-y)\),其中 \(f(x)\) 是下凸函数。
决策单调性 DP
那么我们常见的一些决策单调性 DP 问题就可以用蒙日阵来刻画:
- 考虑 \(n \times m\) 的 DP \(f_{i,j} = \min_{1 \le k < j} f_{i - 1, k} + w_{k, j}\),其用 \(f_{i-1}\) 转移到 \(f_{i}\) 时可以用一个 \(m \times m\) 的矩阵 \(A\) 来表示:\[A_{x,y} = \begin{cases} f_{i-1, y} + w_{y, x} & x > y\\ \infty & x \le y \end{cases} \]容易发现这个矩阵相当于将矩阵 \(W^T\) 加上了若干列 \(f_{i-1, y}\) 得到的,若矩阵 \(W\) 满足四边形不等式时,就可以得到 \(A\) 也为蒙日阵,即存在决策单调性。
- 考虑 DP \(f_{i} = \min_{1 \le j < i} f_{j} + w_{j, i}\),其转移仍然可以用一个 \(n \times n\) 的矩阵 \(A\) 来表示:\[A_{x,y} = \begin{cases} f_{y} + w_{y, x} & x > y\\ \infty & x \le y \end{cases} \]当矩阵 \(W\) 满足四边形不等式时仍然存在决策单调性,但是计算 \(f_i\) 前必须先计算出 \(f_{1 \sim i-1}\),导致做起来相对困难。
我们称前者的情况为离线决策单调性,后者为在线决策单调性。
下面来介绍两种解决决策单调性的常见方法:
分治
定义分治过程 \(\text{solve}(l, r, L, R)\) 为计算第 \(l\) 到 \(r\) 行的 \(\min_i(A)\),且已知 \(L \le \min_i(A) \le R\),那么有以下分治过程:
- 若 \(l > r\) 则结束;
- 取中点 \(mid=\lfloor\frac{l+r}{2}\rfloor\),枚举 \(i \in [L, R]\) 计算 \(A_{mid, i}\),求出 \(\min_{mid}(A)\);
- 递归处理 \(\text{solve}(l, mid - 1, L, \min_{mid}(A))\) 与 \(\text{solve}(mid + 1, r, \min_{mid}(A), R)\)。
在假设 \(A_{i, j}\) 能 \(O(1)\) 计算的情况下,可以发现一共会递归 \(O(\log n)\) 层,且每层枚举点数为 \(O(m)\),于是总复杂度为 \(O(m \log n)\)。
分治最显然的缺点就是无法解决在线问题,但其有一个优秀的性质:当 \(A_{i,j}\) 并不容易计算,但是容易由 \(A_{i, j}\) 推得 \(A_{i,j+1},A_{i,j-1},A_{i+1,j},A_{i-1,j}\) 时,可以使用分治通过暴力跳指针计算答案。注意到,跳转指针时,计算 \(\min_{mid}(A)\) 仅需要将左指针跳转到 \(mid\),右指针扫一遍,向左右递归时,将左右指针定位到其第一次询问位置,这些操作都是仅与当前区间长度与可能决策点长度有关的,于是其跳转次数为 \(O((n + m) \log n)\)。
二分栈
- 完全单调矩阵等价于,\(\forall 1 \le k < n, 1 \le i<j \le m\),有 \(A_{k, i} \ge A_{k, j} \Rightarrow A_{k+1, i} \ge A_{k+1,j}\),证明根据完全单调矩阵定义容易得出;
- 若 \(j \ne \min_i(A)\),则定义 \(A_{i,j}\) 为冗余的,若一列内所有值都是冗余的,则称这一列是冗余的。
二分栈是一个增量算法,我们每次加入蒙日阵中的一列数,并维护出加入后所有的 \(\min_i(A)\)。由于 \(\min_i(A)\) 为单调的,则每一列作为 \(\min_i(A)\) 的行一定是一个区间,且区间单调递增,那么我们考虑用栈维护所有非冗余列 \(j\) 与其对应的非冗余的行的左端点与右端点 \([l_i, r_i]\),具体流程如下:
将列 \(i \in [1, m]\) 依次插入:
- 若栈不为空,则取栈顶列 \(j\),如果有 \(A_{l_j, i} \le A_{l_j, j}\),那么说明列 \(j\) 冗余,弹栈,并重复这步操作;
- 若栈为空,那么所有行的 \(\min_j(A) = i\),加入 \(l_i = 1, r_i = n\);
- 否则,取栈顶列 \(j\),二分找到最大的行 \(k\) 满足 \(A_{k, j} < A_{k, i}\),令 \(r_j \gets k\),若 \(r_j \ne n\),则加入 \(l_i = k + 1, r_i = n\)。
显然有时间复杂度 \(O(m \log n)\)。
通过二分栈算法,我们就可以在 \(O(n \log n)\) 的时间复杂度内解决在线决策单调性问题了。
实际上,上述问题均存在线性解决的算法,有 SMAWK 算法可线性解决离线决策单调性问题,还有 Wilber 算法可线性解决在线决策单调性问题,我感觉实在用不太到就都咕了。
二维决策单调性
实际上一些区间 DP 问题也存在决策单调性,如经典题目“石子合并”,而这类问题实际上都相当于要建立一棵搜索树,我们把这列问题称为“最优搜索树”问题,其形如:
有定理:若 \(w_{i, j}\) 满足四边形不等式,且 \(\forall 1 \le i' \le i \le j \le j' \le n, w_{i', j'} \ge w_{i, j}\)(称这种性质为区间单调性),那么 \(f_{i, j}\) 也满足四边形不等式,即对于 \(\forall 1 \le i_1 \le i_2 \le j_1 \le j_2\) 有 \(f_{i_1, j_1} + f_{i_2, j_2} \le f_{i_1, j_2} + f_{i_2, j_1}\)。
考虑归纳证明上述定理,对 \(j_2 - i_1\) 归纳证明,当 \(j_2 - i_1 \le 1\) 时显然成立。
设 \(f_{i, j, y} = w_{i, j} + f_{i, y} + f_{y+1, j}\),即区间 \([i, j]\) 选择 \(y\) 为决策点的权值。
讨论 \(i_2\) 与 \(j_1\) 的相等关系:
-
若 \(i_2 = j_1\),需要证明 \(f_{i_1, j_1} + f_{j_1, j_2} \le f_{i_1, j_2}\),称其为三角形不等式。假设 \(f_{i_1, j_2}\) 的最优决策点为 \(y\),且 \(y \le j_1\),则:
\[\begin{aligned} f_{i_1,j_1} + f_{j_1, j_2} &\le f_{i_1,j_1, y} + f_{j_1, j_2}\\ &= w_{i_1,j_1} + f_{i_1, y} + f_{y + 1, j_1} + f_{j_1, j_2}\\ &\le w_{i_1, j_2} + f_{i_1, y} + f_{y + 1, j_2}\\ &=f_{i_1, j_2} \end{aligned} \]最后一步放缩前一部分由区间单调性得出,后一部分由归纳条件得出。
当 \(y > j_1\) 的时候拆 \(f_{j_1, j_2}\) 同理可证。
-
若 \(i_2 \ne j_1\),设 \(f_{i_1, j_2}\) 与 \(f_{i_2, j_1}\) 的最优决策点分别为 \(y \le z\),且 \(y \le z\),那么有:
\[\begin{aligned} f_{i_1, j_1} + f_{i_2, j_2} &\le f_{i_1, j_1, y} + f_{i_2, j_2, z}\\ &=(w_{i_1,j_1} + w_{i_2, j_2}) + (f_{i_1, y} + f_{i_2, z}) + (f_{y + 1, j_1} + f_{z + 1, j_2})\\ &\le (w_{i_1, j_2} + f_{i_2, j_1}) + (f_{i_1, y} + f_{i_2, z}) + (f_{y + 1, j_2} + f_{z + 1, j_1})\\ &= f_{i_1, j_2} + f_{i_2, j_1} \end{aligned} \]\(y < z\) 时证明类似。
据此,我们就可以得出最优搜索树的决策单调性:设 \(f_{i, j}\) 的最优决策点为 \(K_{i, j}\),则有 \(K_{i - 1,j} \le K_{i, j} \le K_{i, j + 1}\)。考虑证明 \(K_{i, j} \le K_{i, j + 1}\),另一维的决策单调性证法相同。
构造以下矩阵:
\(f_{i, j}\) 就是 \(A\) 中第 \(j\) 列的最小值,而容易得出上述矩阵为蒙日阵,所以可以证明具有决策单调性。
那么我们就可以对每个长度做一遍,对于每一个长度,其决策点的数量之和为 \(O(n)\),于是总复杂度就是 \(O(n^2)\),常数较小。
决策单调性最短路问题
考察 DP \(f_{i,j} = \min_{1 \le k < j} f_{i - 1, k} + w_{k, j}\),其相当于选择 \(i\) 条边的 DAG 上最短路问题,于是我们称这类 DP 为 最短路问题。前面我们已经提到过,若矩阵 \(W\) 为蒙日阵,那么该问题已经可以直接 \(O(nk)\) 的时间复杂度内解决,下面我们进一步探讨这类 DP 的拓展与优化。
答案凸性
有结论:
- 设 \(f(k) = f_{k, n}\),那么 \(f(k)\) 在定义域内是下凸函数,即 \(\forall k \in [2, n], f(k) - f(k-1) \le f(k+1) - f(k)\)。
于是单次查询 \(f(k)\) 就可以使用 wqs 二分了,通过二分一个斜率 \(mid\),并找出斜率 \(mid\) 切到的最小值,比较其与 \(k\) 的大小关系来调整即可,而斜率 \(mid\) 下的最小值相当于将矩阵整体减去 \(mid\),显然减后仍然满足四边形不等式,那么问题就转化成了一维的在线决策单调性 DP 问题,可以通过二分栈或 Wilber 算法解决,于是求解单个 \(f(k)\) 就可以在 \(O(n \log V)\) 或 \(O(n \log V \log n)\) 的时间复杂度内解决。
考虑证明以下引理,则上述结论就容易得证:
- \(\forall 1 \le s \le r \le t \le n - 1, f(s) + f(t) \ge f(r) + f(s + t - r)\)。
若该引理成立,带入 \(s=k-1,r=k,t=k+1\) 即可得到上述结论。
设 \(f(s)\) 的一个最优方案为 \(p_1, p_2, \cdots, p_{s+1}\),\(f(t)\) 的一个最优方案为 \(q_1, q_2, \cdots, q_{t+1}\)。
设 \(v=r-s\),那么如果能找到 \(i\in [1,s]\) 满足 \(p_i \le q_{i+v} < q_{i+v+1} \le p_{i+1}\),则可构造路径 \(p_1, \cdots, p_i, q_{i+v+1},\cdots, q_{t+1}\) 和 \(q_1, \cdots, q_{i+v},p_{i+1},\cdots,p_{t+1}\),容易发现两条路径的长度分别为 \(s+t-r\) 与 \(r\),而根据四边形不等式,可以得到交换后路径和一定减少,于是就可以得到上述引理了。
那么如何找到这样的 \(i\) 呢?考虑用 \(p_1, \cdots, p_{s+1}\) 将 \((1,n]\) 划分成 \(s\) 个区间,第 \(i\) 个区间为 \((p_i, p_{i+1}]\),并设 \(a_i\) 表示 \(q_{i+v}\) 所在的区间是哪一个,令 \(b_i = a_i - i\),那么容易得到 \(b_1 \ge 0, b_{s+1} \le 0, b_{i+1} - b_{i} \ge -1\),这意味着一定可以找到一个位置 \(b_i = -1\),取最靠前的 \(-1\) 设为 \(b_{i+1}\),那么有 \(a_{i} = a_{i+1} = i\),根据 \(a_i\) 的定义即可得到 \(p_i \le q_{i+v} < q_{i+v+1} \le p_{i+1}\)。
考虑如果上述做法要求构造方案怎么办?如果斜率 \(mid\) 仅能切到一个点当然可以直接通过 DP 构造方案,但是当 \(mid\) 切到的不止一个点就不能直接构造方案了。考虑设 \(mid - \epsilon\) 切到的点为 \((p,f(p))\),\(mid + \epsilon\) 切到的点为 \((q, f(q))\),要求 \(f(k)\),肯定有 \(p \le k \le q\),那么对于 \(i = [p, q)\) 都有 \(f(i+1) - f(i) = mid\),也就是说有 \(f(i+v) = f(i) + v\cdot mid\)。那么考虑先找出 \(f(p), f(q)\) 的最优方案,再通过上述方法构造出长为 \(k, p+q-k\) 的两条路径,设这两条路径的权值为 \(f'(k), f'(p+q-k)\)。可以证明,这样构造出的路径一定是最优的,即 \(f(k) = f'(k), f(p+q-k) = f'(p+q-k)\),因为:
- 根据引理,有 \(f'(k) + f'(p+q-k) \le f(p) + f(q)\);
- 有 \(f'(k) \ge f(k), f'(p+q-k) \ge f(p+q-k)\);
- 由于 \(f(k) = f(p) + (k-p) mid, f(p+q-k) = f(p) + (q-k) mid\),那么 \(f(k) + f(p+q-k) = 2f(p) + (q-p) mid = f(p) + f(q)\),即可得 \(f'(k) + f'(p+q-k)\ge f(k) + f(p+q-k) = f(p) + f(q)\),所以有 \(f'(k) + f'(p+q-k) = f(k) + f(p+q-k)\),即可得 \(f'(k) = f(k), f'(p+q-k) = f(p+q-k)\)。
路径单调性与不交性
- 路径单调性:对于具有决策单调性的最短路问题,设 \(p_1 \to q_1\) 的长为 \(k\) 的字典序最小的最短路为 \(x_1, x_2, \cdots, x_{k+1}\),\(p_2 \to q_2\) 的长为 \(k\) 的字典序最小的最短路为 \(y_1, y_2, \cdots, y_{k+1}\),且 \(p_1 \le p_2, q_1 \le q_2\),那么有 \(x_i \le y_i\)。
考虑反证,假设不满足,找到最小的 \(x_i > y_i\) 的位置 \(i\),并找到 \((i, k +1]\) 中找到最小的 \(x_j \le y_j\),那么考虑将两段最短路中 \([i, j]\) 部分交换,根据四边形不等式容易得到权值和不增,而其中一条最短路的字典序变小。
- 路径不交性:设 \(x_1, x_2, \cdots, x_{p+1}\) 为 \(1 \to n\) 的长度为 \(p\) 的字典序最小的最短路,\(y_1, y_2, \cdots, y_{p+2}\) 为 \(1 \to n\) 的长度为 \(p + 1\) 的字典序最小的最短路,那么有 \(x_1 = y_1 < y_2 \le x_2 \le y_3 \le x_3 \le \cdots \le y_{p+1} \le x_{p+1} = y_{p+2}\)。
发现,只需要对 \(y_1 \to y_{p+1}\), \(y_2 \to y_{p+2}\) 与 \(x_1 \to x_{p+1}\) 分别应用路径单调性即可得证。
环形邮局
XIX Open Cup Grand Prix of Zhejiang I. 环上邮局
在一个长度为 \(L\) 的环上给定 \(n\) 个点,你需要将环恰好分为 \(k\) 段,每段的代价为该段中所有点到这些点中位数的距离和,要求最小化所有段的代价和。
\(n \le 2\times 10^5\)
咕了。