中文

构造线性大小后缀树的在线算法

数据结构与算法 2019-04-11 v3

摘要

后缀树是各类字符串处理的基础数据结构。长度为 nn 的字符串 TT 的后缀树具有 O(n)O(n) 个节点与边,且每条边的字符串标签由 TT 中的一对位置编码。因此,即便树已建好,仍需保存输入文本 TT 并随机访问 TT。Crochemore 等人 [Linear-size suffix tries, TCS 638:171-178, 2016] 提出的线性大小后缀树(LSTs)是后缀树的一种“独立”替代方案。即,长度为 nn 的字符串 TT 的 LST 占用 O(n)O(n) 的总空间,并在与后缀树相同的效率下支持模式匹配及其他任务,而无需存储输入文本 TT。Crochemore 等人提出了一种离线算法,可在 O(nlogσ)O(n \log \sigma) 时间与 O(n)O(n) 空间内将 TT 的后缀树转换为 TT 的 LST,其中 σ\sigma 为字母表大小。本文给出两类在线算法,它们“直接”构造 LST,分别为从右到左与从左到右,且不将后缀树作为中间结构构造。两类算法均在新符号读入时增量构造 LST,且不访问先前读入的符号。从右到左构造算法耗时 O(nlogσ)O(n \log \sigma)、空间 O(n)O(n);从左到右构造算法耗时 O(n(logσ+logn/loglogn))O(n (\log \sigma + \log n / \log \log n))、空间 O(n)O(n)。我们算法的主要特征是无需存储输入文本。

关键词

引用

@article{arxiv.1901.10045,
  title  = {Online Algorithms for Constructing Linear-size Suffix Trie},
  author = {Diptarama Hendrian and Takuya Takagi and Shunsuke Inenaga},
  journal= {arXiv preprint arXiv:1901.10045},
  year   = {2019}
}

备注

20 pages, 9 figures