Archipelago

Lec 6动态最优性:Wilber 下界与 Tango 树

讲义完成更新于 2026-09-17

Lec 6 动态最优性:Wilber 下界与 Tango 树(Dynamic Optimality: Wilber Bounds and Tango Trees)

对应 MIT 6.851 Lecture 6 · 讲师:Erik Demaine · 核心文献:Wilber (1989), Demaine et al. (FOCS 2004 / SICOMP 2007)

TL;DR

  • 本讲聚焦在线二叉搜索树(BST)的动态最优性猜想:是否存在一个在线算法,其对任意访问序列的总代价与离线最优 BST(OPT\text{OPT})相比仅差常数因子。
  • 介绍几何视角下的独立矩形下界(Independent Rectangle Bounds)与 Wilber 提出的两个核心下界:基于固定参考树的交错下界(Wilber 1 / Interleave Bound)与漏斗下界(Wilber 2)。
  • 详述 Tango 树的构造:利用参考树将所有节点剖分为互不相交的偏好路径(Preferred Paths),并用辅助平衡树维护每条路径,实现首个 O(log⁡log⁡n)O(\log\log n)-竞争比的在线 BST。

一、动态最优性背景与核心猜想

在第五讲中,我们从几何视角审视了二叉搜索树的访问序列。若将键值映射到水平轴,时间映射到垂直轴,任意 BST 的合法访问过程都对应几何平面上一个满足特定空矩形约束的点集。

二叉搜索树模型允许的操作包括:沿当前根节点向下访问、旋转(单旋左/右)以及指针移动,每次操作计为单位代价。

动态最优性猜想(Dynamic Optimality Conjecture, Sleator & Tarjan 1985)

是否存在一个在线二叉搜索树算法 AA,使得对于任意长度为 mm 的访问序列 XX,其总操作代价满足:

CostA(X)≤O(1)⋅OPT(X)+O(n)\text{Cost}_A(X) \le O(1) \cdot \text{OPT}(X) + O(n)

其中 OPT(X)\text{OPT}(X) 表示知道整个未来序列的离线最优 BST 的最小代价。Sleator 和 Tarjan 猜想伸展树(Splay Tree)即具备该动态最优性。

证明动态最优性的关键瓶颈在于:我们很难直接计算 OPT(X)\text{OPT}(X)。为了衡量一个在线算法的性能,必须找到计算复杂度低、数学性质优良的 OPT\text{OPT} 下界。

二、几何视角与独立矩形下界

在几何模型中,输入访问序列被表示为点集 X={(xi,i)}X = \{(x_i, i)\}。若算法在时刻 ii 触摸了节点 yy,则在平面上对应点 (y,i)(y, i)。点集必须满足满足性条件(Satisfaction Property):任意两点构成的轴对齐矩形若不在同一水平线或垂直线上,其闭矩形内部(或边界特定位置)必须包含第三个点。

独立矩形(Independent Rectangles)

对于点集中的任意两点 p=(x1,y1)p = (x_1, y_1) 与 q=(x2,y2)q = (x_2, y_2)(假设 x1<x2x_1 < x_2 且 y1<y2y_1 < y_2),它们确定的轴对齐闭矩形 R(p,q)=[x1,x2]×[y1,y2]R(p, q) = [x_1, x_2] \times [y_1, y_2] 称为独立矩形,若该矩形的其他两个对角顶点 (x1,y2)(x_1, y_2) 与 (x2,y1)(x_2, y_1) 严格不在点集内,且矩形内部没有任何点。 两个独立矩形若在平面上投影互不冲突(不能严格共享冲突约束),则称它们是互相独立的。

独立矩形下界(Demaine, Harmon, Iacono, Kane, Pătrașcu 2009)

对于任意访问序列 XX,设 MAXIND(X)\text{MAXIND}(X) 为 XX 中最大互不相交独立矩形集合的大小,则离线最优 BST 代价满足:

OPT(X)≥∣X∣+12MAXIND(X)\text{OPT}(X) \ge |X| + \frac{1}{2} \text{MAXIND}(X)

该定理建立了点集几何特征与离线最优操作步数之间的直接桥梁。

三、Wilber 核心下界

Robert Wilber 在 1989 年给出了两个著名的下界构造,至今仍是分析 BST 在线竞争比的黄金基准。

3.1 Wilber 1:交错下界(Interleave Bound)

固定一棵包含所有 nn 个键值的完全平衡二叉搜索树 PP 作为参考树(Reference Tree)。注意:参考树仅仅用于分析,算法本身并不必须直接以 PP 的形式存储。

对于参考树 PP 中的任意内部节点 vv:

  • 设 vv 的左子树包含的键集合为 L(v)L(v),右子树包含的键集合为 R(v)R(v)。
  • 考察访问序列 X=(x1,x2,…,xm)X = (x_1, x_2, \dots, x_m) 中所有落在 L(v)∪R(v)L(v) \cup R(v) 的子序列。
  • 当子序列中的相邻两个元素分别交替来自 L(v)L(v) 与 R(v)R(v)(即前一个来自左子树,后一个来自右子树,或反之)时,记发生了一次交错(interleave / alternation)。
  • 设 alt(v,X)\text{alt}(v, X) 为访问序列在节点 vv 处发生的总交错次数。

Wilber 1 下界(Wilber 1989)

对任意固定的参考树 PP 和任意访问序列 XX:

OPT(X)≥12∑v∈Palt(v,X)−O(n)\text{OPT}(X) \ge \frac{1}{2} \sum_{v \in P} \text{alt}(v, X) - O(n)

直观理解:无论离线最优 BST 采取何种形态,每当访问在 vv 的左右子树之间切换时,BST 内部代表两棵子树的连通块拓扑都必须被切断并重新连接,或者访问指针必须穿过分割键 vv。由于每个节点处的交错事件在时间上可以正交累加,各节点的交错数之和构成了总代价的严格线性下界。

3.2 Wilber 2:漏斗下界(Funnel Bound)

Wilber 提出的第二个下界不再固定静态完全树,而是考察反转时间轴下的几何凸包/漏斗结构。

在访问序列上,从当前点向上回溯,找出所有能够“无遮挡”看到的历史点构成的极值集合。Wilber 2 在处理特定复杂非均匀访问分布时比 Wilber 1 更紧致,二者互不严格包含。

四、Tango 树的设计与分析

在 2004 年之前,所有在线 BST 算法(包括伸展树)已知的最好竞争比仅为平凡的 O(log⁡n)O(\log n)。Demaine、Harmon、Iacono 和 Pătrașcu 提出了 Tango 树,首次突破了这一壁垒,将竞争比压到 O(log⁡log⁡n)O(\log\log n)。

4.1 偏好路径与辅助树

Tango 树基于完全平衡参考树 PP(高度为 ⌊log⁡2n⌋\lfloor \log_2 n \rfloor):

  1. 偏好孩子(Preferred Child):
    • 对于 PP 中的每个节点 vv,记录其最后一次被访问的后代位于左子树还是右子树。
    • 若最后一次访问在左子树,则左孩子为偏好孩子;若在右子树,则右孩子为偏好孩子。初始时默认左孩子。
  2. 偏好路径(Preferred Path):
    • 从根节点出发,沿着偏好孩子指针向下走,直到叶子,形成一条偏好路径。
    • 对所有非偏好边指向的子树递归定义偏好路径。
    • 这样,PP 的所有 nn 个节点被划分为若干条顶点不相交的偏好路径。
  3. 辅助树(Auxiliary Tree):
    • 每一条偏好路径中的节点按照键值大小,组织成一棵平衡红黑树(或 AVL 树)。
    • 因为参考树 PP 的深度至多为 log⁡n\log n,一条偏好路径上的节点数至多为 log⁡n\log n。
    • 因此,每一棵辅助树的大小至多为 log⁡n\log n,其树高至多为 O(log⁡log⁡n)O(\log\log n)。
  4. 辅助树之间的连接:
    • 每棵辅助树的根节点,通过一个特殊父指针指向其偏好路径顶端节点在 PP 中的父节点(该父节点位于另一棵辅助树中)。

4.2 查询与路径切换

当在 Tango 树中查找键 xx 时:

  1. 从包含参考树根节点的顶层辅助树开始搜索。
  2. 在当前辅助树中找到 xx 或者距离 xx 最近的偏好路径前驱/后继。
  3. 若 xx 不在当前偏好路径中,说明访问需要离开当前偏好路径,进入下一层子树:
    • 这意味着在参考树 PP 中发生了一次偏好孩子变更(从原先的偏好分支切换到包含 xx 的分支)。
    • 切断原偏好路径:通过辅助树的 split 操作,将离开点之后的节点从当前辅助树中分离。
    • 连接新偏好路径:通过辅助树的 concatenate 操作,将 xx 所在子树的新偏好路径合并上来。
  4. 重复此过程,直到在某棵辅助树中找到 xx。

4.3 复杂度与竞争比证明

Tango 树性能界

Tango 树对任意访问序列 XX 的均摊操作代价为 O((1+alt(X))log⁡log⁡n)O((1 + \text{alt}(X)) \log\log n),因此其竞争比为:

CostTango(X)OPT(X)=O(log⁡log⁡n)\frac{\text{Cost}_{\text{Tango}}(X)}{\text{OPT}(X)} = O(\log\log n)

证明关键:

  • 每次在辅助树内部的搜索、切分(split)和拼接(concatenate)均在大小 ≤log⁡n\le \log n 的红黑树上进行,单次耗时 O(log⁡log⁡n)O(\log\log n)。
  • 辅助树之间的切换次数,严格等于参考树 PP 中偏好孩子改变的次数。
  • 每次偏好孩子改变,恰好对应一次 Wilber 1 定义下的左右子树交错事件!
  • 设总切换次数为 KK,则 K≤∑v∈Palt(v,X)≤2⋅OPT(X)K \le \sum_{v \in P} \text{alt}(v, X) \le 2 \cdot \text{OPT}(X)。
  • 总代价为 O(K⋅log⁡log⁡n)=O(OPT(X)⋅log⁡log⁡n)O(K \cdot \log\log n) = O(\text{OPT}(X) \cdot \log\log n)。

五、签名贪心算法与最新进展

在几何模型下,离线计算最优点集是 NP 难问题仍未被证实。在线版本中,**签名贪心算法(Signed Greedy Algorithm)**展现出优异的几何直觉:

  • 在每个时间步,贪心地添加最少数量的点以满足当前的空矩形约束。
  • 理论上证明了在离线状态下贪心算法与离线最优仅差常数因子。

而在在线 BST 领域,自 Tango 树之后:

  • Multi-splay 树(Wang et al. 2006)在保持 O(log⁡log⁡n)O(\log\log n) 竞争比的同时支持了更自然的伸展操作。
  • 动态最优性猜想至今仍未完全解决,常数竞争比的在线 BST 是否存在依然是理论计算机科学最迷人的公开问题之一。

六、我的理解

动态最优性的本质是对称性与信息不对称的博弈

Wilber 1 之所以强大,在于它通过固定一棵静态完全树,把看似杂乱无章的动态树旋转操作映射成了静态拓扑上的“正交方向交替”。Tango 树最精彩之处在于它不是凭空构造某种精巧的旋转规则,而是将 Wilber 1 下界的证明过程直接实体化为数据结构:既然下界由交错次数决定,那我就把没有交错的连续段绑成偏好路径,并给每条路径套上深度为 O(log⁡log⁡n)O(\log\log n) 的微型平衡树。

这种“用下界指导上界设计”的范式是高级数据结构中最深刻的思想之一:当面对未知的 OPT\text{OPT} 时,找到下界的代数结构,往往就找到了通往接近最优算法的钥匙。