首页 > 其他分享 >【学习笔记】决策单调性与四边形不等式

【学习笔记】决策单调性与四边形不等式

时间:2023-11-02 17:45:34浏览次数:47  
标签:le 不等式 min 矩阵 mid 决策 四边形 单调

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 问题也存在决策单调性,如经典题目“石子合并”,而这类问题实际上都相当于要建立一棵搜索树,我们把这列问题称为“最优搜索树”问题,其形如:

\[f_{i, j} = \begin{cases} 0 & i \ge j\\ w_{i, j} + \min_{i \le k < j} f_{i, k} + f_{k + 1, j} & i < j \end{cases} \]

有定理:若 \(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}\),另一维的决策单调性证法相同。

构造以下矩阵:

\[A_{p, q} = \begin{cases} w_{i, q} + f_{i, p} + f_{p + 1, q} & i \le p < q\\ \infty & \text{otherwise} \end{cases} \]

\(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}\)。

img

发现,只需要对 \(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\)

咕了。

标签:le,不等式,min,矩阵,mid,决策,四边形,单调
From: https://www.cnblogs.com/apjifengc/p/17804772.html

相关文章

  • 单调栈0
    通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。栈中存放什么?......
  • css 背景样式 梯形/平行四边形
    绘制这种不规则的背景图形,目前我的思路是使用伪元素伪元素的优点在于不用添加新的元素实现平行效果使用了css transform:skew();具体代码如下{position:relative;padding-left:12px;color:#2187FF;background:#14395c;border-im......
  • [最优化DP]决策单调性
    决策单调性的概念&证明工具:决策单调性,是在最优化dp中的可能出现的一种性质,利用它我们可以降低转移的复杂度。首先dp中会有转移,每个状态都由若干个状态转移而来,最优化dp比较特殊,只能由一个最优的状态转移而来。我们称之为某个状态的最优转移点。然后,dp会有一个转移顺序,......
  • 动态规划——决策单调性优化DP 学习笔记
    动态规划——决策单调性优化DP学习笔记决策单调性对于最优性问题,常有状态转移方程:\(f_i=\min/\max\{f_j\dots\}\),形象的:如果\(i\)的最优转移点是\(j\),\(i'\)的最优转移点是\(j'\),当\(i<i'\)时,有\(j\lej'\),则称该DP问题具有决策单调性。即:\(i\)单增,其最优转移点......
  • 告别单调的列表页,探索JVS低代码列表页设计的新思路
    列表页是什么?列表页是管理平台中的基础页面,核心的逻辑是实现数据的增删改查(CRUD),列表页核心的几个要素:页面内容的数据展示、查询条件、页面按钮及按钮触发的逻辑。列表页配置具备应用配置权限的用户,可以在列表页目录上,鼠标悬空,系统会弹出列表页设计的菜单,如下图所示:点击“设计页面”......
  • 二次函数、方程和不等式思维导图 | 高一新教材
    前言使用方法:如果想得到更好的显示效果,可以点击全屏按钮,已经实现电脑端、手机端的适配,效果很好;电视端没有实现适配,Ipad端的适配没有测试;思维导图[全屏/Esc]......
  • Slime Escape (CF D) (贪心, 双指针最大有效权值单调增长)
     补充:每次操作可以往左或者右走一步 思路:性质:以一边为重点使劲走,然后利用另外一边来给自己权值变大当这边要死了,就把这边回退到最大值,在走另一边,看另一边能到哪,这样每次都可以扩展最大值,于是利用双指针?也不是双指针,就是l,r分别贪心地向左和......
  • 【单调栈】总结
    单调栈有什么用?栈为容器,特性是后入先出。经典栈的应用场景大概为:浏览器的后退按钮实现等。即:栈的一个应用场景就是状态保持。单调栈和经典栈的区别是,栈是一股脑的存,单调栈是让栈内的元素(或者是栈内元素的对应元素)具有单调的特性。那这个单调的特性有啥用呢?我们不考虑其他的,只......
  • SDU Open 2023-H、几何、积分、单调栈维护上凸壳
    SDUOpen2023-H、几何、积分、单调栈维护上凸壳题目:https://codeforces.com/gym/104324/problem/H题意:有\(n\)个信号基站,你在边玩手机边走路,手机会自动连接到最近的基站。单位时间花费的流量是到基站距离的平方,现在从起点沿着直线走到终点,并且走的都是横平竖直的直线,单位时间......
  • note 糖水不等式
    什么是糖水不等式?\[\frac{a}{b}\lt\frac{a+m}{b+m}\\\(m>0)\]凭直觉这个不等式当然是成立的,但数学这么严谨的东西你直觉算个姬直觉是不可靠的,那我们证明一下:我们用改变后的浓度减去初始浓度:\[\frac{a+m}{b+m}-\frac{a}{b}=\frac{a(b+m)-b(a+m)}{a(a+m)}=\frac{(ab+am)-(a......