Skip to main content
QUICK REVIEW

[论文解读] Dynamic Integer Sets with Optimal Rank, Select, and Predecessor Search

Mihai Pǎtraşcu, Mikkel Thorup|arXiv (Cornell University)|Aug 13, 2014
Algorithms and Data Compression参考文献 22被引用 7
一句话总结

本文提出了一种在字 RAM 模型上的确定性动态整数集合数据结构,支持插入、删除、前驱、后继、秩和选择操作,时间复杂度为最优的 O(log n / log w),与已知的下界一致。其关键创新在于引入了一种动态融合节点,使得在小规模集合(n = w^O(1))上可实现常数时间操作,从而解决了数据结构领域长期存在的开放问题。

ABSTRACT

We present a data structure representing a dynamic set S of w-bit integers on a w-bit word RAM. With |S|=n and w > log n and space O(n), we support the following standard operations in O(log n / log w) time: - insert(x) sets S = S + {x}. - delete(x) sets S = S - {x}. - predecessor(x) returns max{y in S | y< x}. - successor(x) returns min{y in S | y >= x}. - rank(x) returns #{y in S | y< x}. - select(i) returns y in S with rank(y)=i, if any. Our O(log n/log w) bound is optimal for dynamic rank and select, matching a lower bound of Fredman and Saks [STOC'89]. When the word length is large, our time bound is also optimal for dynamic predecessor, matching a static lower bound of Beame and Fich [STOC'99] whenever log n/log w=O(log w/loglog w). Technically, the most interesting aspect of our data structure is that it supports all the above operations in constant time for sets of size n=w^{O(1)}. This resolves a main open problem of Ajtai, Komlos, and Fredman [FOCS'83]. Ajtai et al. presented such a data structure in Yao's abstract cell-probe model with w-bit cells/words, but pointed out that the functions used could not be implemented. As a partial solution to the problem, Fredman and Willard [STOC'90] introduced a fusion node that could handle queries in constant time, but used polynomial time on the updates. We call our small set data structure a dynamic fusion node as it does both queries and updates in constant time.

研究动机与目标

  • 解决动态整数集合中实现最优时间复杂度的动态秩和选择操作这一长期存在的开放问题。
  • 解决在动态整数集合中实现最优时间复杂度的高效前驱查询的挑战。
  • 设计一种数据结构,同时实现最优的查询与更新时间,匹配已知的单元探测下界。
  • 构建一种动态融合节点,使得在小规模集合(n = w^O(1))上所有操作均可在常数时间内完成,从而解决 Ajtai、Komlós 和 Fredman 提出的关键问题。

提出的方法

  • 利用 w 位字的字 RAM 模型,假设 w ≥ log n,以支持索引和常数时间的字操作。
  • 引入一种动态融合节点,使得在大小为 n = w^O(1) 的集合上,插入、删除、秩、选择、前驱和后继操作均可在 O(1) 时间内完成。
  • 将 van Emde Boas 风格的递归结构与底层的动态融合节点结合,以实现对数时间复杂度的查询。
  • 采用多级分层结构:顶层使用改进的基于融合的方法,底层使用经过调优的 van Emde Boas 结构或 Y-fast tries,结合动态融合节点。
  • 基于参数 h 和 q 构建参数化结构,以平衡空间与时间复杂度,子结构使用 O(q^{2h}) 空间,并实现构建成本的非摊销化。
  • 通过动态插入序列模拟静态数据结构,将静态下界结果还原到动态设置中,从而保留下界推论的成立性。

实验结果

研究问题

  • RQ1动态整数集合能否在时间复杂度匹配 Fredman-Saks 下界 O(log n / log w) 的前提下支持秩和选择操作?
  • RQ2当 w 较大时,能否实现动态前驱查找的最优时间复杂度 O(log n / log w),以匹配 Beame 和 Fich 的静态单元探测下界?
  • RQ3能否构建一种动态融合节点,使得在小规模集合(n = w^O(1))上所有操作均可在常数时间内完成,从而解决 Ajtai 等人提出的开放问题?
  • RQ4如何设计分层结构,以在所有层级上保持最优时间复杂度,同时确保线性空间使用?
  • RQ5当键长 ℓ 受限于某个上界时,动态前驱查找的最紧可能时间复杂度是多少?如何通过动态操作实现该复杂度?

主要发现

  • 该数据结构支持所有标准操作——插入、删除、前驱、后继、秩和选择——时间复杂度为 O(log n / log w),这是动态秩和选择操作的最优时间复杂度。
  • 当 log n / log w = O(log w / log log w) 时,时间复杂度 O(log n / log w) 是动态前驱查找的最优解,与 Beame 和 Fich 的静态单元探测下界一致。
  • 对于规模较小的集合(n = w^O(1)),该数据结构通过一种新颖的动态融合节点,实现了所有操作的 O(1) 时间复杂度,从而解决了一个长期存在的重大开放问题。
  • 动态融合节点使得小规模集合上的操作可实现常数时间,提供了一种确定性解法,而此前的构造方法依赖多项式时间或随机化策略。
  • 该构造在所有参数范围内均达到最优时间复杂度,包括键集合几乎填满的情况(2^ℓ - n 较小),通过调节 van Emde Boas 递归深度实现。
  • 空间使用为 O(n),且时间复杂度在同时考虑查询与更新时间时仍为紧致上界,与单元探测模型中已知最强的下界完全一致。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。