Skip to main content
QUICK REVIEW

[论文解读] On-line Indexing for General Alphabets via Predecessor Queries on Subsets of an Ordered List

Tsvi Kopelowitz|arXiv (Cornell University)|Aug 19, 2012
Algorithms and Data Compression参考文献 15被引用 4
一句话总结

本文提出了一种用于在线后缀树构造的新数据结构,通过将问题简化为一种新型的顺序维护问题变体——有序列表中动态子集的前驱查找问题(POLP),实现了在一般字母表下每个字符的最坏情况期望时间复杂度为 $O(\log\log n + \log\log|\Sigma|)$。该解决方案利用了统一的 y-fast 常数分裂机制,并通过在块和桶更新之间高效调度,维持了最优的渐近界。

ABSTRACT

The problem of Text Indexing is a fundamental algorithmic problem in which one wishes to preprocess a text in order to quickly locate pattern queries within the text. In the ever evolving world of dynamic and on-line data, there is also a need for developing solutions to index texts which arrive on-line, i.e. a character at a time, and still be able to quickly locate said patterns. In this paper, a new solution for on-line indexing is presented by providing an on-line suffix tree construction in $O(\log \log n + \log\log |Σ|)$ worst-case expected time per character, where $n$ is the size of the string, and $Σ$ is the alphabet. This improves upon all previously known on-line suffix tree constructions for general alphabets, at the cost of having the run time in expectation. The main idea is to reduce the problem of constructing a suffix tree on-line to an interesting variant of the order maintenance problem, which may be of independent interest. In the famous order maintenance problem, one wishes to maintain a dynamic list $L$ of size $n$ under insertions, deletions, and order queries. In an order query, one is given two nodes from $L$ and must determine which node precedes the other in $L$. In the Predecessor search on Dynamic Subsets of an Ordered Dynamic List problem (POLP) it is also necessary to maintain dynamic subsets of $L$ such that given some $u\in L$ it will be possible to quickly locate the predecessor of $u$ in any subset. This paper provides an efficient data structure capable of solving the POLP with worst-case expected bounds that match the currently best known bounds for predecessor search in the RAM model, improving over a solution which may be implicitly obtained from Dietz [Die89]. Furthermore, this paper improves or simplifies bounds for several additional applications, including fully-persistent arrays and the Order-Maintenance Problem.

研究动机与目标

  • 解决在文本逐字符到达时实时构造后缀树的挑战,尤其针对大字母表或一般字母表的情况。
  • 改进现有在线后缀树构造方法在一般字母表下更高的摊还时间或最坏情况时间复杂度。
  • 设计一种支持在有序列表的多个动态子集上高效执行前驱查询的动态数据结构,以实现更快的在线索引。
  • 统一并优化 y-fast 常数分裂机制与顺序维护结构中的分裂过程,避免相互干扰,同时保持最坏情况下的期望性能。

提出的方法

  • 将在线后缀树构造问题归约为有序列表中动态子集的前驱查找问题(POLP)。
  • 使用一种结合 y-fast 常数和 x-fast 常数的混合数据结构,以 $O(\log\log n)$ 时间支持前驱查询。
  • 提出一种统一的分裂机制,确保在所有 y-fast 常数结构中每 $\log^2 n$ 次插入触发一次分裂,以防止干扰。
  • 通过分配时间资源,在顺序维护结构与 y-fast 常数更新之间调度工作,确保每次插入的期望时间为 $O(1)$。
  • 调整块和桶的大小以及树的深度,以减少标签更新频率,将 $O(\log n)$ 的工作量分散到 $\log n$ 的时间资源中。
  • 采用双重工作调度策略,处理 y-fast 常数与顺序维护结构中块分裂与桶分裂之间的干扰,维持每次时间资源的期望工作量为 $O(1)$。

实验结果

研究问题

  • RQ1能否在一般字母表下实现每个字符 $O(\log\log n + \log\log|\Sigma|)$ 的最坏情况期望时间复杂度,完成在线后缀树构造?
  • RQ2能否在保持低更新成本的前提下,高效解决有序列表中动态子集上的前驱查询问题?
  • RQ3是否可能在不降低性能的前提下,统一 y-fast 常数与顺序维护结构中的分裂过程?
  • RQ4能否以最小的开销解决 y-fast 常数与顺序维护结构中并发分裂操作之间的干扰问题?

主要发现

  • 所提出的结构支持 $O(1)$ 最坏情况时间的顺序查询,实现了该操作的最优性能。
  • 将节点插入有序列表 $L$ 的时间复杂度为 $O(\log\log n)$ 最坏情况期望时间,优于以往的摊还时间界限。
  • 将元素插入任意动态子集 $S_i$ 的时间复杂度为 $O(\log\log n)$ 最坏情况期望时间,与 RAM 模型中前驱查找的最佳已知界限一致。
  • 在任意子集 $S_i$ 中查找节点 $u$ 的前驱,可在 $O(\log\log n)$ 最坏情况时间内完成,确保在线索引中模式查找的高效性。
  • 总空间使用量保持线性,所有 y-fast 常数结构中总桶数为 $O(n/\log n)$,保证了可扩展性。
  • 该解决方案改进或简化了相关问题的界限,包括完全持久化数组和单调列表标签问题。

更好的研究,从现在开始

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

无需绑定信用卡

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