Skip to main content
QUICK REVIEW

[论文解读] Dynamic index, LZ factorization, and LCE queries in compressed space

Takaaki Nishimoto, I Tomohiro|arXiv (Cornell University)|Apr 27, 2015
Algorithms and Data Compression参考文献 27被引用 16
一句话总结

本文提出一种基于LZ77分块分解和签名编码的动态压缩索引,支持在压缩空间内高效进行模式搜索、子串更新和LCE查询。通过利用局部一致解析的特性,该方法在$O(w)$空间内实现$w = O(z\log N\log^* M)$,相比先前工作实现了更快的搜索与更新速度,其中$z$为LZ77分块分解的大小。

ABSTRACT

In this paper, we present the following results: (1) We propose a new \emph{dynamic compressed index} of $O(w)$ space, that supports searching for a pattern $P$ in the current text in $O(|P| f(M,w) + \log w \log |P| \log^* M (\log N + \log |P| \log^* M) + \mathit{occ} \log N)$ time and insertion/deletion of a substring of length $y$ in $O((y+ \log N\log^* M)\log w \log N \log^* M)$ time, where $N$ is the length of the current text, $M$ is the maximum length of the dynamic text, $z$ is the size of the Lempel-Ziv77 (LZ77) factorization of the current text, $f(a,b) = O(\min \{ \frac{\log\log a \log\log b}{\log\log\log a}, \sqrt{\frac{\log b}{\log\log b}} \})$ and $w = O(z \log N \log^*M)$. (2) We propose a new space-efficient LZ77 factorization algorithm for a given text of length $N$, which runs in $O(N f(N,w') + z \log w' \log^3 N (\log^* N)^2)$ time with $O(w')$ working space, where $w' =O(z \log N \log^* N)$. (3) We propose a data structure of $O(w)$ space which supports longest common extension (LCE) queries on the text in $O(\log N + \log \ell \log^* N)$ time, where $\ell$ is the output LCE length. On top of the above contributions, we show several applications of our data structures which improve previous best known results on grammar-compressed string processing.

研究动机与目标

  • 设计一种支持在压缩空间内高效进行模式搜索和子串更新的动态压缩文本索引。
  • 开发一种仅使用$O(w')$工作空间的、空间效率更高的LZ77分块分解计算算法。
  • 构建一种支持在压缩空间内快速查询LCE(最长公共扩展)的数据结构。
  • 通过应用所提出的索引结构,改进现有语法压缩串处理中的结果。
  • 证明所提出的索引在搜索与更新效率方面优于以往的动态压缩索引。

提出的方法

  • 利用Mehlhorn等人提出的局部一致解析方法,以及Alstrup等人提出的快速串连接/分裂算法,实现动态串管理。
  • 使用串的签名编码来支持高效的相等性测试与无需锚点的动态更新。
  • 提出签名编码的一个新性质(引理12),使得模式搜索时间与实际出现次数$\mathit{occ}$成正比,而非与超集成正比。
  • 采用基于LZ77分块分解的压缩数据结构,支持在$O(\log N + \log\ell\log^* N)$时间内完成LCE查询。
  • 构建一个空间复杂度为$O(w)$的动态索引,其中$w = O(z\log N\log^* M)$,支持高效的更新与搜索操作。
  • 将该索引应用于语法压缩串处理任务(如回文检测与Lyndon分块),通过高效LCE与LCP查询实现加速。

实验结果

研究问题

  • RQ1能否构建一种支持在压缩空间内高效进行模式搜索与子串更新的动态压缩索引?
  • RQ2能否在$O(w')$工作空间内,以优于先前方法的时间复杂度计算LZ77分块分解?
  • RQ3能否设计一种压缩数据结构,使其在$O(w)$空间内支持$O(\log N + \log\ell\log^* N)$时间的LCE查询?
  • RQ4所提出的索引与数据结构能否用于改进现有语法压缩串处理任务的算法?
  • RQ5所提出的索引在搜索与更新时间方面与现有动态压缩索引相比表现如何?

主要发现

  • 该动态压缩索引在$O(|P|f(M,w) + \log w\log|P|\log^* M(\log N + \log|P|\log^* M) + \mathit{occ}\log N)$时间内支持模式搜索,空间复杂度为$O(w)$,其中$f(M,w) = O(\min\{\frac{\log\log M\log\log w}{\log\log\log M}, \sqrt{\frac{\log w}{\log\log w}}\})$。
  • 子串插入/删除操作的摊还时间复杂度为$O((y + \log N\log^* M)\log w\log N\log^* M)$,当$\sqrt{N}$占主导时,优于先前工作的$O((y + \sqrt{N})\log^{2+\epsilon}N)$。
  • LZ77分块分解算法的时间复杂度为$O(Nf(N,w') + z\log w'\log^3 N(\log^* N)^2)$,工作空间为$O(w')$,其中$w' = O(z\log N\log^* N)$。
  • 大小为$O(w)$的LCE数据结构可在$O(\log N + \log\ell\log^* N)$时间内支持查询,优于先前的$O(h\log N)$时间结构。
  • 用于检测SLP压缩串中所有回文的算法时间复杂度为$O(n\log^2 N\log^* N)$,空间复杂度为$O(n\log^* N + w)$,优于先前的$O(n^2 h)$时间复杂度。
  • Lyndon分块算法的时间复杂度为$O(n(n + \log n\log N\log^* N))$,空间复杂度为$O(n^2 + z\log N\log^* N)$,当$h$较大时,优于先前的$O(nh(n + \log n\log N))$时间复杂度方法。

更好的研究,从现在开始

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

无需绑定信用卡

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