四边形不等式笔记
说明
设 \(w(x,y)\) 是定义在整数集合上的二元函数。
下文所有数都在默认的定义域上。
下文的四边形不等式定义是对于决策单调性函数中决策函数为 \(\min\) 而言的。如果要求考虑决策函数为 \(\max\) ,则需要将下文中的关于 \(w\) 的不等式符号全部取反,即所有值(不是下标、大小、位置)变为相反数。
请耐心学习,式子看起来多,其实很多是一样的。
所有例题都没有代码(悲)。
定义
若:
则称 \(w\) 满足四边形不等式。即“包含大于等于交叉”。
定理[1]
若:
则 \(w\) 一定满足四边形不等式。
证
由 \((2)\) 得:
\((3) + (4)\) 得:
由 \((2)\) 得:
\((5) + (6)\) 得
归纳可知:
由 \((8)\) 得:
\((9) + (10)\) 得:
根据 \((8)\) 的归纳方法可知:
证毕。
一维动态规划的四边形不等式及决策单调性优化
对于形如 \(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\) 作为最优决策点的特性得:
由 \(w\) 满足四边形不等式得:
\((14)\) 变形得:
\((13)+(15)\) 得:
由 \((16)\) 可知:
故 \(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})\) 的做法。
例题
鸽,不写了,反正有题解。
二维区间动态规划的四边形不等式及二维决策单调性优化
在区间动态规划中常能遇到这样的状态转移方程:
特别地,\(\forall i \ge j : w_{i,j} = f_{i,j} = 0\)。
区间包含单调性
若:
则称 \(w\) 满足区间包含单调性。
定理[3]
对于 \((18)\) 的方程,若 \(w\) 同时满足区间包含单调性和四边形不等式,则 \(f\) 也满足四边形不等式。
证
考虑归纳证明。
当 \(j-i = 1\):
若 \(f_{i,i+2}\) 的最优决策点为 \(i\):
因为 \(w\) 有区间包含单调性,即:
否则 \(f_{i,i+2}\) 的最优决策点为 \(i+1\):
因为 \(w\) 有区间包含单调性,即
综上,当 \(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\)。
所以有:
因为 \(w\) 满足四边形不等式,所以有:
若 \(x\le y\),由假设可知:
\((22)+(23)\) 得:
综上,当 \(x\le y\) 时,\(j-i\le k\) 时四边形不等式对 \(f_{i,j}\) 成立。
若 \(x>y\),由假设可知:
\((22) + (24)\) 得:
综上,当 \(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\) 满足四边形不等式,所以:
因为 \(p\) 为最优决策点,所以有:
由此:
故 \(\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}\)。
时间复杂度:
例题
请使用 \(O(n^2)\) 做法。
但似乎有 \(O(n\log_2 n)\) 的做法吊打动态规划。。
代码太简单就不写了。
本文作者:saubguiu
本文链接:https://www.cnblogs.com/imcaigou/p/17884361.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步