Skip to main content
QUICK REVIEW

[论文解读] Efficiently computing runs on a trie

Ryo Sugahara, Yuto Nakashima|arXiv (Cornell University)|Jan 29, 2019
Algorithms and Data Compression被引用 4
一句话总结

本文引入了字典树上的运行(runs on tries)概念——即从根到节点路径上的最大周期子串,并提出了一种时间复杂度为 O(n log log n)、空间复杂度为 O(n) 的算法,用于在具有 n 条边的字典树中计算所有此类运行。研究证明,运行的最大数量被严格限制在 n 以内,并给出了紧致的渐近下界 0.993238n,表明字典树中运行的密度接近线性。

ABSTRACT

A maximal repetition, or run, in a string, is a maximal periodic substring whose smallest period is at most half the length of the substring. In this paper, we consider runs that correspond to a path on a trie, or in other words, on a rooted edge-labeled tree where the endpoints of the path must be a descendant/ancestor of the other. For a trie with $n$ edges, we show that the number of runs is less than $n$. We also show an asymptotic lower bound on the maximum density of runs in tries: $\\lim_{n\ ightarrow\\infty}\ ho_\\mathcal{T}(n)/n \\geq 0.993238$ where $\ ho_{\\mathcal{T}}(n)$ is the maximum number of runs in a trie with $n$ edges. Furthermore, we also show an $O(n\\log \\log n)$ time and $O(n)$ space algorithm for finding all runs.

研究动机与目标

  • 将字符串运行的概念扩展到有根、边带标签的树(字典树)中,其中运行是根到节点路径上的最大周期子串。
  • 分析具有 n 条边的字典树中可能存在的最大运行数量,建立上下界。
  • 设计一种高效算法以计算字典树中的所有运行,优于先前 O(n(log log n)^2) 的解决方案。
  • 探索运行、Lyndon 单词以及字典树环境中最长公共扩展(LCE)查询之间的联系。

提出的方法

  • 利用每个运行都包含一个 Lyndon 单词(L-root)作为子串的性质,以此指导字典树中运行的检测。
  • 通过在间隔为 b^{4/5} 的位置设置标记节点,对字典树进行分层分解,以支持长度为 b^{4/5} 的子串的高效 LCE 查询。
  • 使用后缀树对长度为 x^2 = b^{4/5} 的规范路径进行重命名和排序,以实现线性时间排序和通过范围最小值查询计算 LCE。
  • 采用两级 LCE 策略:首先在重命名的路径段(长度为 b^{4/5})上计算 LCE,然后通过常数时间 LCE 查询在原始路径上解决剩余的短前缀。
  • 使用基数排序和范围最小值查询结构,在 O(n) 时间内计算字典序相邻的重命名规范路径之间的 LCE。
  • 结合上述技术,以 O(n log log n) 的总时间复杂度回答 O(n) 个树路径 LCE 查询批次,构成运行查找算法的核心。

实验结果

研究问题

  • RQ1在具有 n 条边的字典树中,最多可以存在多少个运行?其与边数相比如何?
  • RQ2字符串中的运行概念能否有意义地推广到有根、边带标签的树(字典树)中?此类运行具有何种结构特性?
  • RQ3是否存在一种高效算法来计算字典树中的所有运行?可达到的最佳时间复杂度是什么?
  • RQ4字典树中运行的渐近密度是多少?当 n 增大时,其与 n 的接近程度如何?
  • RQ5字符串运行计算中的技术——如 Lyndon 单词性质和 LCE 数据结构——能否被适配到字典树环境中?

主要发现

  • 具有 n 条边的字典树中,运行的最大数量严格小于 n,即上界为 ρ(n) ≤ n。
  • 运行密度的渐近下界至少为 0.993238,即 lim_{n→∞} ρ_T(n)/n ≥ 0.993238。
  • 提出了一种时间复杂度为 O(n log log n)、空间复杂度为 O(n) 的算法,用于在整数字母表上计算字典树中所有运行。
  • 该算法依赖于分层路径分解、规范路径的重命名,以及通过范围最小值查询实现的高效 LCE 计算。
  • 该方法可在 O(n log n) 时间内输出所有原根平方(primitively rooted squares),该复杂度是紧致的,因为某些字典树中存在 Θ(n log n) 个此类平方。
  • 研究结果表明,字典树中的运行不仅数量众多,而且可高效计算,其时间复杂度相比字符串运行仅略有增加。

更好的研究,从现在开始

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

无需绑定信用卡

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