形式陈述
区间动态规划公理库动态规划Dynamic programming在有限或良基的状态依赖上复用已计算结果的算法设计范式。常有 个状态,每个状态再枚举 个分割点。Knuth 优化利用比单向决策单调更强的双边界,把总枚举量降到 。
本页使用半开区间 和“选一个根后去掉根”的递推:
是与根 无关的区间增量,假定每项可在常数时间求值,数值加法与比较也按单位操作计费。以下设 ;没有键时直接返回费用为零的空树。假定 、 非负,并对 满足
以及区间包含单调性 。前者是区间版本的四点交换不等式公理库Monge 数组与交叉交换不等式Monge array · Monge matrix用任意四个有序格子的交换不等式控制行极小值的位置,并把平方分段费用转化成可证明的候选单调性。;后者是另一个条件,不能被前者替代。
令 为最小的最优根下标,则
长度一的区间直接设 ;长度至少二时,只枚举上述闭区间内的根。按区间长度递增求解,两个边界根和所有候选子区间都已经算出。
直觉
右端增加一个元素时,最佳根不会被迫向左越过原来的最左最优根;左端删掉一个元素时,最佳根也不会向左移动。这两条方向约束合在一起,把当前根夹在两个较短区间的根之间。
为什么需要增量条件?证明分两层。第一层是 Yao 的继承引理:上述 的四点不等式和包含单调性,使最优值 也满足同向的区间四点不等式。按外层区间长度归纳,取右侧两个最优区间的根;按两根的先后次序,把它们交叉用于左侧两区间。子区间的四点差由归纳假设控制,新增的 项由四点条件控制;两区间只在端点相接的基例则要用包含单调性。这也是不能遗漏第二个条件的原因。
第二层从 的四点性质推出根边界。看左边界,若 比 小,那么在旧区间里,较小的 必须严格劣于 ,否则违反最左规则。四点不等式给出
加上相同的左子树差 ,说明延长右端后 相对 更不可能变好,矛盾。右边界的证明对称地比较左子树;若出现平局,较小根仍由最左规则获胜。因此这份实现虽然与原论文常用的最右平局约定不同,仍保持相同方向的边界。
相邻区间夹住最优根
例子与边界
成功查找频率为 3、1、4、2
给四个有序键 ,成功查找频率为 。要构造一棵二叉搜索树公理库二叉搜索树Binary search tree · BST每个结点左子树键小于、右子树键大于该结点键的二叉树。,最小化“频率乘访问比较次数”的总和,根上的键算一次比较。
选根 后,左右子树中每次查找都会多比较一次,所以增量是
非负频率保证包含单调性;四点不等式在这里恰为等式。长度一的代价为 ;长度二的代价与最左根为
算 时,左右边界 ,只检查根 ,得到 。算 得到最优根 、代价 。于是整个 又被两个根 夹住,只检查
重建的树以 为根,左孩子 的右孩子为 ,右孩子为 。实际加权比较次数为 ,与表值吻合。完整枚举所有区间共检查 个根,本例的边界优化检查 个;小例子的节省有限,但增长阶不同。
区间递推的外形不够
矩阵链乘法也在区间中枚举切点,却含有依赖切点的乘法代价,不能直接归入这里的 。取矩阵维数 :前三个矩阵的最佳顶层切点在第二个矩阵后,四个矩阵的最佳顶层切点却在第一个矩阵后。根向左倒退,正好破坏需要的单调性。
零频率不会破坏条件,但会产生大量平局;统一最左规则后边界仍成立。负频率则不再是查找概率或访问次数,并且可能破坏包含单调性。对新问题应逐项验证增量与边界,而不是根据几个小表的根刚好有序就套用优化。
推论与应用
固定长度 ,区间 扫描的根数为
沿 求和,前一项与下一段的后一项来自同一条长度 的根对角线,内部差望远镜相消,只留下两个端点和 个常数。因此每个长度总共 次枚举,全部长度总共 。这不是声称每个区间只看常数个根;某个区间仍可很宽,只是同一长度的总宽度受控。
前缀和让 常数时间可得,表值与根表占 空间。根表还能递归输出整棵最优树。若只保留部分对角线却仍要任意访问左右子树费用,需另做存储分析,不能像普通分层 DP 那样直接压成两行。
分治 DP 优化公理库决策单调的分治 DP 优化Divide-and-conquer DP optimization在已证明最优切点单调的分层递推中,先求中间状态,再用它收紧左右候选区间,逐层安全省去转移。依靠一层内的单向切点次序;本页依靠两个重叠区间给出的双边界,并以区间长度调度计算。辨认递推依赖的形状,才能知道该使用哪一种单调性。
参考资料
- Donald E. Knuth, “Optimum Binary Search Trees”, Acta Informatica 1, 1971, pp. 14–25,关于最优根单调性的定理、推论与二次时间算法:论文副本。
- F. Frances Yao, Efficient Dynamic Programming Using Quadrangle Inequalities, Xerox PARC CSL-80-4, 1980, §2 Lemmas 2.1–2.2, §3, §6:原技术报告。继承引理、根单调性、最优搜索树与矩阵链反例。