Skip to content

Fusion Tree

Fusion tree · 融合树

在允许乘法和字级位运算的 Word-RAM 上,把节点内多个整数键的分叉位压成可并行比较的 sketch,从而实现次对数前驱查询。

条目类型
模型

形式陈述

模型、接口与保证

设静态集合 S[0,2w)n 个互异的 w bit 整数。采用 Word-RAM:一个键、地址和若干打包字段能装进常数个 w bit 字,随机访存、加减、布尔运算、移位和字乘法均为最坏 O(1)。若模型不提供乘法或常数次位提取,下面的 fusion node 不能直接按同一时间界实现。

Fusion tree 是分支度

B=w1/5

量级的多路搜索树。每个内部节点保存至多 B1 个分隔键以及一个 fusion node;树高为

O(logBn)=O(lognlogw)=O(logwn).

因此静态前驱查询最坏用 O(logwn) 次字操作,结构占 O(n) 个字。若 w=Θ(logn),这就是 O(logn/loglogn)。这里的结论针对一字整数键;任意比较对象仍受比较模型的对数决策树约束。

重要位与保序 sketch

设一个节点的有序分隔键为

k0<k1<<kt1,t<B.

把这些键放入二进制 trie。每个真正发生分叉的位称为重要位t 个叶的压缩 trie 至多有 t1 个分叉,所以重要位数 b<t<B。若重要位从高到低为 i1>>ib,定义

sketch(x)=x[i1]x[i2]x[ib].

对节点内任意两个键 ka<kc,它们最高的不同位必是压缩 trie 的某个分叉位,而且也出现在 sketch 中。更高重要位相同、这一位上前者为 0 后者为 1,故

ka<kcsketch(ka)<sketch(kc).

这条保序性质是核心不变量。Sketch 不是一般哈希:它可以丢掉大量位,却绝不能打乱当前节点键的相对次序。

一字中的并行比较

把节点键的 sketches 按递增顺序打包为

Wnode=1sketch(k0)1sketch(k1)1sketch(kt1),

每个字段前放一个保护位并留出足够间隔。预处理掩码和乘法常数可以在 O(1) 个字操作内同时抽取全部重要位;另一乘法把查询 sketch 复制到 t 个字段。一次打包减法后,各字段保护位便同时指出

sketch(kj)sketch(x)

是否成立,再由最高置位定位 sketch rank。经典选择 B=w1/5 为抽位、复制、字段间隔和中间乘积预留足够 bit,使所有量仍装在常数个字中;指数 1/5 来自这套打包预算,不是 B 树高度本身要求的神秘常数。

查询 x 可能与某个节点键具有相同 sketch,却在被删除的非重要位上不同。因此 sketch rank 只先给出相邻候选。Fusion node 再比较 x 与该候选的最高不同位,构造把剩余低位全置 0 或全置 1 的修正查询,做第二次并行比较,最终得到真实 predecessor 所在子区间。忽略这一步会把“节点键之间保序”误写成“任意查询也由 sketch 唯一排序”。

直觉

一个多路节点中的键只在少数真正分叉位上需要彼此区分。Fusion node 抽取这些位,把所有分隔键的短 sketch 放进一个机器字,并用带保护位的算术同时比较查询;树高因高分支度下降,而每层仍只花常数字操作。

Fusion Tree 的重要位与并行 sketch 比较
例子与边界

具体例子:四个键的三个分叉位

考虑八位键

00000000,00100000,00101000,10101000.

压缩 trie 只在从高到低的第 7,5,3 位分叉。抽取这三位得到

000,010,011,111,

顺序与原键完全相同。查询 00101100 的 sketch 也是 011,与第三个键碰撞;实际比较发现它大于 00101000。这不是哈希冲突造成的错误,而是候选修正步骤要处理的非重要位差异。

在每个树节点重复同样过程,一次 fusion-node 搜索决定一个多路子树,经过 O(logBn) 层便找到全局前驱。

失败边界与近邻结构

B 树也用高分支度降低树高,但节点内通常仍做比较或块内搜索;Fusion tree 的额外收益来自把多个整数比较压进一个字操作。若键跨越许多机器字、比较器要执行昂贵语义,或 w 小到不能容纳打包字段,这份收益消失。

比较排序的 Ω(nlogn) 下界只允许二元键比较。Fusion tree 每步读取并组合多个键的位,因此没有违反该下界。它也不是 vEB 递归:vEB 以宇宙分解换取 O(logw),fusion tree 则以节点并行比较得到 O(logwn),两者依赖的参数和空间权衡不同。

本页给出经典静态主线。动态 fusion tree 需要维护重要位、打包常数和节点分裂,原论文有更复杂方案;不能仅把普通 B 树插入代码接到静态 fusion node 后便宣称同样的最坏更新界。

推论与应用

Fusion Tree 把多个关键位压入一个机器字并并行比较,核心依赖四俄罗斯方法与字级并行式的表查与字内并行。允许的乘法、移位和字长假设是时间界的一部分。

Fusion tree 给整数 predecessor、整数排序子程序和 Word-RAM 上的次对数搜索提供基本构件,也展示了为何比较模型下界不能直接约束字级并行。动态版本、跨字键和弱操作集需要独立结构,不能从静态 fusion node 的查询界顺推。

参考资料
  • Michael L. Fredman and Dan E. Willard, “Surpassing the Information Theoretic Bound with Fusion Trees,” Journal of Computer and System Sciences 47(3), 1993, 424–436.
  • Erik D. Demaine, MIT 6.851 Advanced Data Structures, integer data structures and fusion trees, accessed 2026.
  • Peter Bro Miltersen, “Cell Probe Complexity—A Survey,” in Advances in Data Structural Query Processing, American Mathematical Society, 2000, pp. 183–217.
关系图谱11 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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