Skip to content

定理Theorem

RMQ 与 LCA 的等价归约

施工中 · 内容逐步修订

RMQ-LCA equivalence · RMQ to LCA reduction

用 Euler 深度序列与 Cartesian tree 建立静态 RMQ 和 LCA 的双向线性归约。

形式陈述 ​

LCA 到 ±1 RMQ ​

把LCA 归约到RMQ时,对根树做完整树上 Euler 序:进入或返回一个顶点都记录该顶点与深度,得到顶点序列 E 和深度数组 D,相邻深度恰差 ±1。令 first(v) 为 v 的零基首次出现位置,取 s=min{first(u),first(v)}、t=max{first(u),first(v)}。沿用 RMQ 的半开端点约定,则

LCA(u,v)=E[RMQD(s,t+1)].

因为从 u 的首次位置走到 v 的首次位置,tour 必须先回升到两者最低公共祖先,且区间内不会到更浅的祖先。构造长度 2n−1,故预处理和空间线性。

RMQ 到 LCA ​

给数组 A,构造稳定 tie-breaking 的最小Cartesian tree:中序次序等于数组下标,父键不大于子键。对合法非空半开区间 0≤l<r≤n,

RMQA(l,r)=LCACT(A)(l,r−1).

区间最小位置必须是端点在 Cartesian tree 中的最低共同祖先;否则中序区间或堆序会矛盾。Cartesian tree 可用单调栈在线性时间构造。

直觉

Euler walk 把树上两点之间必须回到共同祖先的过程画成深度曲线,最低点就是 LCA;反向的笛卡尔树又把数组最小值变成覆盖区间两端的最低祖先。两条线性归约保留查询接口,使任一方向的最优结构都能转移到另一问题。

图中把深度位置2至5写成闭区间 [2,5];调用本页采用的半开 RMQ 接口时,应写作 RMQD(2,6),返回位置4,再由 E[4]=r 还原祖先。

例子与边界

小树图像与约定 ​

根 r 有孩子 a,b,a 又有孩子 c。完整 tour 是 r,a,c,a,r,b,r,深度为 0,1,2,1,0,1,0;c 与 b 首次位置之间的最小深度在 r,所以 LCA 为 r。事实上,任取两顶点各一次出现,也能对两位置之间的最小深度使用同一结论;本页统一保存首次位置,并先排序两个端点。首次出现是一种固定代表选择,而非唯一正确选择。

边界与消歧 ​

两问题不是定义相同,而是在静态模型中线性互归约。LCA 方向产生特殊的 ±1 RMQ,Four Russians 可利用这一点;反方向则用一般数组的 Cartesian tree。重复最小值必须固定选最左或最右,且全链保持一致。点更新会改变 Cartesian tree,静态等价不直接给动态 O(1) 查询。

推论与应用

线性构建细节 ​

Euler tour 必须记录每次沿边下行和返回,若只记录 preorder,两个节点首次出现区间的最低深度未必经过 LCA。first 数组在首次写入后不再覆盖;查询先取两次首次位置的最小、最大值,再把右端加一,才能交给半开 RMQ。

Cartesian tree 用单调递增栈扫描数组:弹出所有比当前值大的位置,最后弹出者成为当前左子,当前成为栈顶右子。每位置进出栈一次,构建 O(n);相等值是否弹出决定最左/最右最小 tie-breaking。

端点与重复最小值 ​

设 Euler 深度片段为 [2,1,2,1,2],区间内最小深度 1 出现两次。任取其一都映到同一个 LCA 时结论不受影响,但从一般数组构造 Cartesian tree 时,必须固定“相等取左”或“相等取右”,并在 RMQ 与 LCA 两端使用同一规则,否则重复最小值会选到不同节点。

归约的成本也要分开记:Euler 序把 n 节点树变为长度 2n−1 的 ±1 数组;若使用 Four Russians 的 ±1 RMQ,可在线性预处理、O(1) 查询。只套普通 sparse table 则预处理和空间为 O(nlog⁡n),等价性本身不会自动带来线性空间。

参考资料
  • Michael Bender, Martin Farach-Colton, The LCA Problem Revisited, LATIN, 2000.
  • Dov Harel, Robert Tarjan, Fast Algorithms for Finding Nearest Common Ancestors, SIAM J. Comput., 1984.
关系图谱11 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系