Skip to main content
QUICK REVIEW

[论文解读] Faster Longest Common Extension Queries in Strings over General Alphabets

Paweł Gawrychowski, Tomasz Kociumaka|arXiv (Cornell University)|Feb 1, 2016
Algorithms and Data Compression参考文献 12被引用 3
一句话总结

本文提出了一种针对一般有序字母表上字符串的LCE(最长公共扩展)查询的更快算法,实现了在 q 个查询下总时间为 O(q log log n + n log* n),符号比较次数为 O(q + n)。该方法通过使用带有差分覆盖的递归短LCE查询以及高效的并查集结构,改进了先前的工作,实现了 O(n log log n) 时间复杂度来计算字符串中的所有运行(runs),这是迈向线性时间LCE计算的重要一步。

ABSTRACT

Longest common extension queries (often called longest common prefix queries) constitute a fundamental building block in multiple string algorithms, for example computing runs and approximate pattern matching. We show that a sequence of $q$ LCE queries for a string of size $n$ over a general ordered alphabet can be realized in $O(q \log \log n+n\log^*n)$ time making only $O(q+n)$ symbol comparisons. Consequently, all runs in a string over a general ordered alphabet can be computed in $O(n \log \log n)$ time making $O(n)$ symbol comparisons. Our results improve upon a solution by Kosolobov (Information Processing Letters, 2016), who gave an algorithm with $O(n \log^{2/3} n)$ running time and conjectured that $O(n)$ time is possible. We make a significant progress towards resolving this conjecture. Our techniques extend to the case of general unordered alphabets, when the time increases to $O(q\log n + n\log^*n)$. The main tools are difference covers and the disjoint-sets data structure.

研究动机与目标

  • 改进在一般有序字母表上字符串的LCE查询序列的时间复杂度。
  • 减少计算字符串中所有运行这一基础串行处理任务的总时间。
  • 解决Kosolobov提出的开放问题:在比较模型下,O(n)时间是否可实现O(n)个LCE查询。
  • 将该方法扩展至一般无序字母表,此时仅允许使用相等性比较。

提出的方法

  • 通过递归方法计算 min(LCE(i,j), t)(其中 t = polylog n),利用高效的并查集数据结构管理字符比较。
  • 使用差分覆盖对字符串中的关键位置进行采样,以支持高效的后缀数组稀疏构建,从而实现高效的LCE计算。
  • 引入多级差分覆盖,利用其特定的结构特性,控制并查集操作的摊还成本。
  • 针对查询数量较少的情况(q < n),通过调整差分覆盖的层级结构和查询解析策略,对算法进行优化。
  • 通过将比较操作替换为相等性检查,将算法适配至无序字母表,同时保持相同的渐近时间复杂度。
  • 通过在采样位置上进行稀疏LCE查询,采用两阶段策略(先短查询,后粗粒度查询)来回答任意LCE查询。

实验结果

研究问题

  • RQ1在比较模型下,对于一般有序字母表,是否可实现O(n)时间复杂度来处理O(n)个LCE查询?
  • RQ2当仅允许字符比较(不允许排序)时,LCE问题应如何高效求解?
  • RQ3该算法能否有效扩展至仅支持相等性检查的无序字母表?
  • RQ4差分覆盖与并查集结构在减少总符号比较次数方面起到何种作用?
  • RQ5是否可能仅使用O(n)次符号比较,实现O(n log log n)时间复杂度来计算字符串中的所有运行?

主要发现

  • 在长度为 n 的一般有序字母表字符串上,q 个 LCE 查询可在 O(q log log n + n log* n) 的总时间内完成,仅使用 O(q + n) 次符号比较。
  • 该算法在 O(n log log n) 时间内计算出一般有序字母表字符串中的所有运行,且仅进行 O(n) 次符号比较。
  • 对于一般无序字母表,相同查询序列可在 O(q log n + n log* n) 时间内处理,仅使用 O(q + n) 次相等性测试。
  • 与 Kosolobov 的 O(n log^{2/3} n) 解决方案相比,本方法通过递归短LCE查询和多级差分覆盖实现性能提升。
  • 使用带路径压缩和按秩合并的并查集,确保比较操作的摊还成本保持在所述界限内。
  • 该算法在保持线性比较次数的同时,显著降低了总时间复杂度,朝着LCE查询的O(n)时间复杂度猜想迈出了关键一步。

更好的研究,从现在开始

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

无需绑定信用卡

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