线性时间构建覆盖后缀树及应用

摘要:长度为$n$的字符串$T$的覆盖后缀树(CST)是$T$的后缀树,其中包含了$T$的平方子串一半的显式结点。在CST中,与$T$的子串$C$对应的显式结点被注释为两个数字:$C$的非重叠连续出现次数以及$T$中被$C$的出现所覆盖的位置总数。Kociumaka等人(Algorithmica, 2015)已经展示了如何在$O(n\log n)$的时间内计算长度为$n$的字符串的CST。我们展示了如何在假设$T$是一个整数字母表上的字符串时,在$O(n)$时间内计算CST。 Kociumaka等人(Algorithmica, 2015;Theor. Comput. Sci., 2018)已经展示了知道长度为$n$的字符串$T$的CST后,如何在$O(n)$的时间内计算$T$的所有种子(linear-sized representation)以及给定$alpha$的所有最短$alpha$-partial covers和种子。因此,我们的结果意味着可以以线性时间计算这些准周期性的概念的算法。计算种子的算法与之前的算法(Kociumaka et al., SODA 2012, ACM Trans. Algorithms, 2020)有显著不同。Kociumaka等人(Algorithmica, 2015)提出了一个$O(n\log n)$时间的算法,用于计算每个$alpha=1,ldots,n$的最短$alpha$-partial cover;我们将该复杂度改进为$O(n)$。 我们的结果基于一个新的对$T$中子串$S$的连续重叠出现的表述方式,即用$T$中的运行集(见Kolpakov and Kucherov, FOCS 1999)表示。这个新的洞察力还产生了一个$O(n)$大小的指示器,用于在$O(m+output)$的时间内报告具有给定模式$P$的连续重叠出现,其中$output$是报告的出现次数。相比之下,Navarro和Thankachan (Theor. Comput. Sci., 2016)提出的用于报告有界间隙连续出现的一般指示器使用了$O(n\log n)$的空间。

作者:Jakub Radoszewski

论文ID:2308.04289

分类:Data Structures and Algorithms

分类简称:cs.DS

提交时间:2023-08-09

PDF 下载: 英文版 中文版pdf翻译中