决策单调性与四边形不等式
决策单调性与四边形不等式
本文抄写自 itst 21 年 apio 讲课课件。
其实主体是环上邮局。
前置定义
对于两种不同的决策单调性问题,我们有不太一样的做法。
-
离线问题
考虑一个规模为 的 dp。
从 转移到 是一个离线的问题。
-
在线问题
考虑一个规模为 的 DP。
解决决策单调性问题一般方法
分治和二分栈在 OI 中应该已经够用了,它们的复杂度均为 。
存在 的 SMAWK 算法(离线情况),线性的 Wilber 算法(部分在线问题)和 Eppstein 算法(运用情景比肩二分栈)。
这里简单回顾一下二分栈算法。
增量加入每个决策点 ,维护出每个决策点作为最优决策点的管理 区间,由于决策单调性,这是一个栈的结构。
的 DP 值容易计算,考虑加入决策 对栈的影响:
- 若 比栈顶的决策对于栈顶管辖的左端点来说更好,那么栈顶没用了,可以 pop 掉。
- 若 比栈顶的决策对于栈顶管辖的右端点来说更差,那么 的管辖区间我们已经得到了,加入栈就行了。
- 否则,我们需要二分栈顶的管辖区间,找到 比栈顶好的最靠前的位置。
故复杂度 。
决策单调性最短路问题
这里指离线问题的那个 DP。我们以一个较为复杂的例子来探讨这个问题:
环上邮局
在一个长度为 的环上有 个村庄,修建 个邮局,要求只能修在整点,最小化每个村庄到其最近的邮局的距离和。输出方案。
一个基本的转化是枚举一个位置断环为链,转化成链上问题,即前文提及的离线问题,使用分治法,时间复杂度 。
我们介绍 三种优化。
如果会写 SMAWK 和 Wilber 可以做到少一个 。
答案凸性
定理:
记 表示从 到 ,经过 条边的最短路, 在定义域内下凸,即 。
那么我们可以使用 wqs 二分,结合二分栈完成这个问题,时间复杂度 。
这部分的证明给出了构造方案的方法。
引理:
。
显然引理成立代值即可得到上述定理。
记 的一个最优方案是 。
的一个最优方案是 。
记 ,找到 ,满足 。可构造路径 和 。长度分别为 与 。(这样的 一定存在,证明考虑按 分段后一定有两个 落在一段。)
路径交错后改变量的式子形如一个四边形不等式(交叉小于等于包含),故引理成立。
我们考虑 wqs 二分结束后,我们不一定能恰好得到长度为 的路径方案,也有可能得到两组 的方案。
这里 是 DP 出来的最小分段方案, 是最多。我们通过上述构造得到一组 的方案,我们可以说明其就是最优的。
路径单调性与不交性
定理:
对于有决策单调性的最短路问题,记 是 的长为 的字典序最小的最短路, 是 的。
如果 ,那么 。
证明考虑反正,交错一下权值和不变大,而有一边字典序变小。
定理:
对于有决策单调性的最短路问题和 ,记 是 的一个方案, 是 的一个方案。
那么,。话说这个为啥叫不交性啊,不是很懂。
证明考虑对 和 使用路径单调性即得。
回到环上邮局,我们考虑断环为链后将链复制一遍,先跑出 的长为 的字典序最小最短路 。
假设全局字典序最小的最短路是 ,。那么显然 也是一个 的最短路。
对这两条最短路分别与 运用路径单调性,。也就是存在最优解在每一段中恰好一个点,我们可以随便选一段元素进行枚举断环成链,显然最短的一段一定不超过 ,每次运行分治法 ,复杂度 。
我们加大力度,注意到路径单调性,我们扩展原本的分治算法, 个区间一起分治,每次枚举第一个区间的中点,计算出后面每个断点的最优选择(使用分治法),那么我们得到的复杂度是 。但是这个算法的复杂度真的是 吗?
由于每次递归会将中点递归往两边,每个分支区间至少要 的操作,最多可能有 个分治区间,所以上述算法的瓶颈是 的。
解决方案也很容易,把最短的那个区间拿过来当第一个区间,就只会有 个分治区间了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix