Inducing the LCP-Array
我们展示了如何修改基于诱导排序的后缀数组的线性时间构造算法(Nong等人,DCC'09),使得它也计算最长公共前缀的数组(LCP数组)。实际测试表明,这优于最近的LCP阵列构造算法(Gog和Ohlebusch,ALENEX'11)。
2011-01-18 cs.DS
Low Space External Memory Construction of the Succinct Permuted Longest Common Prefix Array
最长公共前缀(LCP)数组是索引字符串匹配中的一种通用辅助数据结构。它可以用来加速使用后缀数组(SA)的搜索,并提供底层后缀树拓扑的隐式表示。长度为$n$的字符串的LCP阵列可以表示为长度为$n$的字的阵列,或者在存在SA的情况下,表示为$2n$位加上渐近可忽略的支持数据结构的位向量。已经提出了用于LCP阵列的外部存储器构造算法,但是迄今为止提出的那些算法在外部存储器中具有$O(n)$字(即,$O(n \log n)$位)的空间要求。在某些实际情况下,这种空间要求过于昂贵。我们提出了一个外部存储器算法,用于构建的$2n$位版本的LCP阵列,使用$O(n \log σ)$位的额外空间在外部存储器中时,给定的(压缩)BWT与字母大小$σ$和采样率$O(\log n)$的采样逆后缀阵列。在$σ$通常比$n$小得多或者甚至是常数的情况下,这在实践中通常是显著的空间增益。我们还考虑了计算循环字符串的简洁LCP数组的情况。
2016-03-08 cs.DS
Computing the BWT and LCP array of a Set of Strings in External Memory
索引非常大的字符串集合,如广泛的下一代测序技术产生的,在很大程度上依赖于多串概括的Burrows-Wheeler变换(BWT):大量的要求在内存中的方法刺激了最近的发展外部存储器算法。计算字符串的最长公共前缀(LCP)数组是计算字符串之间的后缀前缀重叠的一个重要步骤,是许多基因组组装算法的基础。在以前的论文中,我们提出了一种内存中的分治方法来构建BWT和LCP,其中我们合并部分BWT和前向方法来排序后缀。在本文中,我们提出了一种替代的向后策略,开发一种外部存储器的方法,同时建立BWT和LCP阵列上的m个字符串的不同长度的集合。在一组字符串具有恒定长度k的算法具有O(mkl)的时间和I/O量,使用O(k + m)的主存,其中l是LCP数组中的最大值。
2020-12-04 cs.DS
In-Place Sparse Suffix Sorting
后缀数组对文本中所有后缀的词典顺序进行编码,并且通常与最长公共前缀数组(LCP)结合使用,以在减少的空间中模拟后缀树上的导航查询。在诸如稀疏和压缩文本索引之类的空间关键型应用中,通常仅需要关于所有$n$文本后缀的大小$b$子集的词典顺序的信息。这样的信息可以空间有效地(以$b$字)存储在稀疏后缀阵列(SSA)中。SSA及其相关的稀疏LCP阵列(SLCP)可以作为稀疏后缀树的空间有效的替代品。最近,Gawrychowski和Kociumaka [SODA 2017]表明,稀疏后缀树(因此SSA和SLCP)可以在渐近最优的$O(b)$空间中构建,蒙特卡罗算法在$O(n)$时间内运行。然而,使用SSA和SLCP数组代替稀疏后缀树的主要原因是它们各自减少了$b$字的空间。这自然导致了对构建这些数组的就地算法的追求。Franceschini和Muthukrishnan [ICALP 2007]表明,可以在最佳运行时间内就地内置的完整的后缀数组。另一方面,几十年来,为后缀的\emph{general}子集找到用于构建SSA和SLCP的次二次原地算法一直是一项难以捉摸的任务。在本文中,我们给出了这个问题的第一个解决方案。我们提供了在$O(n\log n)$预期时间内构建完整LCP阵列的第一个就地算法和在$O(n + b\log^2 n)$预期时间内构建SSA和SLCP的第一个Monte Carl…
2017-11-01 cs.DS
Alphabet-dependent Parallel Algorithm for Suffix Tree Construction for Pattern Searching
最近,后缀树在处理诸如DNA或蛋白质序列之类的大数据序列方面已经成为非常成功的数据结构。因此,并行架构已经变得无处不在。我们提出了一种新的字母依赖的并行算法,试图利用多核架构的反常。微卫星对于它们的生物相关性是重要的,因此我们的算法是基于时间有效的构建来识别这样的微卫星。我们在实验上实现了高达15倍的加速比的顺序算法上不同的生物序列的输入大小。
2017-04-19 cs.DS
Dismantling DivSufSort
我们给出了第一个简洁的描述最快的已知后缀排序算法在主内存中,DivSufSort由Yuta Mori。然后,我们提出了一个扩展,也计算的LCP阵列,这是最快的已知的LCP阵列构造算法的竞争力。
2017-10-05 cs.DS
Computing matching statistics on Wheeler DFAs
匹配统计被引入到解决近似字符串匹配问题,这是一个经常性的子程序在生物信息学应用。2010年,Ohlebusch等人[SPIRE 2010]提出了一种用于计算匹配统计的时间和空间高效算法,该算法依赖于压缩后缀树的某些组件-特别是最长公共前缀(LCP)数组。在本文中,我们展示了他们的算法可以从字符串推广到惠勒确定性有限自动机。最重要的是,我们引入了一个概念的LCP阵列惠勒自动机,从而建立了一个明确的第一步扩展(压缩)后缀树的功能标记图。
2023-01-13 cs.DS
Optimal Substring-Equality Queries with Applications to Sparse Text Indexing
我们考虑的问题编码的字符串长度$n$从一个整数字母表的大小$σ$,以便访问和子串的平等查询(即,确定任何两个子串的平等)可以有效地回答。任何支持访问的可解码编码都必须采用$n\logσ+ Θ(\log (n\logσ))$位。我们描述了一个新的数据结构匹配这个下限时,$σ\leq n^{O(1)}$,同时支持查询的最佳$O(1)$的时间。此外,我们表明,该字符串可以被覆盖在这个结构的地方。$Θ(\log n)$位的冗余和恒定的查询时间以指数方式打破了已知在只读模型中保持的下限。使用我们的新字符串表示,我们获得了第一个到位次二次(事实上,在某些情况下,甚至次线性)算法的几个字符串处理问题的恢复模型:输入字符串是重复的,必须在计算终止前恢复。特别是,我们描述了第一次到位次二次蒙特卡罗解决方案的稀疏后缀排序,稀疏LCP阵列建设,后缀选择问题。唯一例外的后缀选择,我们的算法也是第一次运行在次线性时间足够小的输入后缀集。结合这些解决方案,我们得到了第一个次线性时间的Monte Carlo算法在紧空间中建立稀疏后缀树。我们还展示了如何使用小空间去随机化我们的算法。这导致了第一个Las Vegas就地算法在$O(n\log n)$时间内计算完整的LCP阵列,并导致了第一个Las Vegas就地算法在$O(n^{1.5}\sqrt{\log σ})$时间内解决稀疏后缀排序和稀疏LCP阵列构造问题。…
2020-05-11 cs.DS
Optimal In-Place Suffix Sorting
后缀数组是许多涉及字符串搜索和数据压缩的应用程序的基本数据结构。在过去的20年里,设计时间/空间有效的后缀阵列构造算法引起了人们的极大关注,并取得了相当大的进展。我们得到的\emph{first}在位后缀数组的建设算法,是最佳的时间和空间(只读)整数字母表。具体而言,本文做出了以下贡献:1.对于整数字母表,我们得到了第一个后缀排序算法,它需要线性时间,只使用$O(1)$工作空间(工作空间是输入字符串和输出后缀数组之外所需的总空间)。输入字符串可以在算法执行期间被修改,但是应该在算法终止时被恢复。2.我们通过为只读整数字母表提供第一个就地线性时间算法来加强第一个结果,该算法具有$|Σ|=O(n)$(即,不能修改输入字符串)。该算法解决了Franceschini和Muthukrishnan在ICALP 2007中提出的公开问题。开放性问题要求在$o(n\log n)$时间内设计就地算法,并最终在$O(n)$时间内使用$|Σ| \leq n$设计(只读)整数字母表。我们的结果实际上稍微强一些,因为我们允许$|Σ|=O(n)$。3.此外,对于只读通用字母表(即,只允许比较),我们提出了一个最优的原地$O(n\log n)$时间后缀排序算法,恢复了Manzini和Ferragina在ESA 2002中提出的一个公开问题Franceschini和Muthukrishnan的结果.
2018-11-09 cs.DS
Space-Efficient Computation of the LCP Array from the Burrows-Wheeler Transform
我们证明了在字母表[1,σ]上总大小为n的文本集合的最长公共前缀数组可以在O(n log σ)时间内从Burrows-Wheeler变换的集合中使用O(n log σ)位的输入和输出工作空间来计算。我们的结果改进(小字母表)和推广(字符串集合)以前的解决方案从贝勒等人,这需要O(n)位的额外工作空间。我们还展示了如何在相同的时间和空间范围内合并总大小为n的两个集合的BWT。我们算法的核心程序可以用来枚举后缀树区间在简洁的空间从BWT,这是独立的利益。我们的第一个算法在DNA字母表上的工程实现以每秒2.92兆字节的速率在RAM中使用每个碱基总共1.5兆字节来诱导短(100个碱基)读段的大(16 GiB)集合的LCP。我们的第二个算法以每秒1.7兆字节的速度合并两个8 GiB的短读段集合的BWT,并在RAM中使用每个碱基0.625兆字节。该算法的扩展也计算合并集合的LCP阵列,以每秒1.48兆字节的速率处理数据,并在RAM中使用每个碱基1.625兆字节。
2019-01-22 cs.DS
Space-Efficient Construction of Compressed Suffix Trees
我们展示了如何建立几个数据结构的核心重要字符串处理,作为输入的Burrows-Wheeler变换(BWT)和使用小的额外的工作空间。设$n$为文本长度,$σ$为字母大小。我们首先提供了两个算法,枚举所有的LCP值和后缀树间隔在$O(n\logσ)$时间只使用$o(n\logσ)$位的工作空间上的输入BWT。使用这些算法作为构建模块,对于任何参数$0 < ε\leq 1$,我们展示了如何在$O\left(n(\logσ+ ε^{-1}\cdot \log\log n)\right)$时间内使用最多$n\logσ\cdot(ε+ o(1))$位的工作空间在输入BWT和输出的顶部构建PLCP位向量和后缀树拓扑的平衡括号表示。特别地,这意味着我们可以仅使用简洁的工作空间(即$o(n\logσ)$位)和$Θ(n\logσ) + ω(n\log\log n)$中的任何时间从BWT构建压缩的后缀树。这改进了以前最节省空间的算法,这些算法在$O(n)$比特和$O(n\log n)$时间中工作。我们还考虑了合并字符串集合的BWT的问题,并提供了一个解决方案,运行在$O(n\logσ)$的时间,并使用$o(n\logσ)$位的工作空间。我们的LCP结构和BWT合并算法的有效实现使用(在RAM中)少至$n$位的输入/输出的压缩表示,并以每秒$2.92$兆位的速度处理数据。
2019-08-12 cs.DS
Lightweight LCP Construction for Very Large Collections of Strings
最长公共前缀数组是一种非常有利的数据结构,它与后缀数组和Burrows-Wheeler变换相结合,可以有效地计算字符串的一些组合属性,这些属性在一些应用中非常有用,特别是在生物学背景下。如今,许多问题的输入数据是字符串的大集合,例如来自“下一代”DNA测序(NGS)技术的数据。在本文中,我们提出了第一个轻量级的算法(称为extLCP)的同时计算的最长的公共前缀数组和Burrows-Wheeler变换的一个非常大的收集字符串具有任何长度。该计算通过仅经由顺序扫描执行磁盘数据访问来实现,并且总的磁盘空间使用不需要超过输出大小的两倍,不包括输入所需的磁盘空间。此外,extLCP还允许计算集合的字符串的后缀数组,而不需要任何其他进一步的数据结构。最后,我们在真实数据上测试我们的算法,并将我们的结果与另一种能够在外部存储器中处理大量字符串的工具进行比较。
2016-05-13 cs.DS
Suffix Trays and Suffix Trists: Structures for Faster Text Indexing
后缀树和后缀数组是文本索引中使用最广泛的两种数据结构。每一个都使用线性空间,并且可以在线性时间内为多项式大小的字母表构造。然而,当涉及到回答具有最坏情况确定性时间边界的查询时,先验在$O(m\log|Σ|)$时间内这样做,其中$m$是查询大小,$|Σ|$是字母表大小,而后者在$O(m+\log n)$时间内这样做,其中$n$是文本大小。如果想要输出查询的所有外观,则$O(occ)$时间的附加成本就足够了,其中$occ$是输出的大小。我们提出了一种新的方式结合成,我们称之为,一个{ \em后缀托盘}。空间和构造时间保持线性,并且对于任意常数$c$,查询时间从线性范围(即,$Σ\subset \{1,\cdots, cn\}$)提高到整数字母表的$O(m+\log|Σ|)$。构造和查询是确定性的。这里,如果期望输出查询的所有外观,则附加的$O(occ)$时间也是足够的。我们还考虑了在线版本的索引,其中文本到达在线,一次一个字符,索引查询是串联回答的。在这个变体中,我们在后缀树和后缀列表(后缀数组的动态变体)之间创建了一个交叉,称为{ \em suffix trist};它支持$O(m+\log|Σ|)$时间查询。后缀trist也使用线性空间。此外,如果存在线性空间后缀树的在线构造,使得添加字符的成本是最坏情况确定性$f(n,|Σ|)$($n$是当前文本的大小),则可以在$O(f(n,|…
2013-11-07 cs.DS
Computing the LCP Array of a Labeled Graph
本文提出了首个基于动态范围刺穿的高效算法,可在 $O(n\log σ)$ 时间和 $O(n\logσ)$ 位空间内构建有向有标号图的 LCP 数组。
2024-04-22 cs.DS
A New Lightweight Algorithm to compute the BWT and the LCP array of a Set of Strings
索引非常大的字符串集合,如那些广泛的测序技术,严重依赖于多串概括的Burrows-Wheeler变换(BWT),并为这个问题提出了各种内存算法。常规处理的数据的快速增长,例如在生物信息学中,需要大量的主存储器,并且这一事实促使算法的开发,以计算BWT,其几乎完全在外部存储器中工作。另一方面,计算最长公共前缀(LCP)数组的相关问题通常在关于字符串集合的若干算法中是有用的,例如计算字符串之间的后缀-前缀重叠的那些算法,这是许多基因组组装算法的必要步骤。目前最好的轻量级方法是在一组$m$字符串上计算BWT和LCP数组,每个$k$字符长,其I/O复杂度为$O(mk^2 \log |Σ|)$(其中$|Σ|$是字母表的大小),因此它不是最佳的。在本文中,我们提出了一种新的方法来建立BWT和LCP阵列(同时)与$O(kmL(\log k +\log σ))$的I/O复杂度,其中$L$是最长的子串,至少出现在输入字符串中的两次的长度。
2016-07-28 cs.DS
The Parameterized Suffix Tray
设$Σ$和$Π$是不相交的字母表,分别称为静态字母表和参数化字母表。如果在$Σ$上存在重命名双射$f$,并且在$Σ$上存在恒等的$Π$,并且将$x$的字符映射到$y$的字符,使得两个字符串变得相同,则称$Σ\cup Π$上的两个等长字符串$x$和$y$参数化匹配(p匹配)。在文本中找到给定模式的p-匹配出现的问题的索引版本是字符串匹配中的一个很好的研究课题。在本文中,我们提出了一种用于p匹配的最新索引结构,称为输入文本$T$的参数化后缀托盘,用$\mathsf{PSTray}(T)$表示。我们发现,$\mathsf{PSTray}(T)$占用$O(n)$空间,并支持模式匹配查询在$O(m + \log (σ+π) + \mathit{occ})$时间,其中$n$是$T$的长度,$m$是查询模式$P$的长度,$π$是$T$中$|Π|$的不同符号的数量,$σ$是$T$中$|Σ|$的不同符号的数量,$\mathit{occ}$是$P$在$T$中p匹配出现的数量。本文还介绍了如何利用参数化的$T$后缀树在$O(n)$时间内构造$\mathsf{PSTray}(T)$。
2021-02-04 cs.DS
External memory BWT and LCP computation for sequence collections with applications
我们提出了一个外部存储器算法的BWT和LCP阵列的序列集合的计算。我们的算法以可用内存的量作为输入参数,并试图通过将输入集合拆分为足够小的子集合来最大限度地利用它,以便使用最佳线性时间算法在RAM中计算它们的BWT。接下来,它合并外部存储器中的部分BWT,并且在此过程中,它还计算LCP值。我们证明了我们的算法执行O(nAveLcp)顺序I/O,其中n是集合的总长度,AveLcp是集合的平均最长公共前缀。这个界限是对相同任务的已知算法的改进。实验结果表明,我们的算法优于目前最好的算法的集合的序列具有不同的长度和集合具有相对较小的平均最长公共前缀。在本文的第二部分中,我们表明,我们的算法可以修改输出两个额外的数组,使用BWT和LCP阵列,提供简单的,基于扫描的,外部存储器的算法,在生物信息学中的三个众所周知的问题:最大重复的计算,所有对后缀前缀重叠,简洁的de Bruijn图的建设。据我们所知,没有其他已知的外部存储器算法,这些问题。
2018-05-17 cs.DS
Weighted Ancestors in Suffix Trees Revisited
加权祖先问题是一个著名的推广的前身问题的树。已知如果$O(n\mathop{\mathrm{polylog}} n)$空间可用并且权重来自$[0..n]$,则查询需要$Ω(\log\log n)$时间,其中$n$是树节点的数量。然而,当应用于后缀树时,令人惊讶的是,该问题允许具有恒定查询时间的$O(n)$空间解决方案,如Gawrychowski,Lewenstein和Nicholson所示(Proc. ESA 2014)。这个问题的变体可以重新表述如下:给定一个字符串$s$的后缀树,我们需要一个数据结构,它可以在$O(1)$时间内在树中定位$s$的任何子串$s[p..q]$(就像一个人从根开始一路读$s[p..q]$)。不幸的是,Gawrychowski等人的数据结构没有有效的构造算法,限制了其作为算法工具的更广泛使用。在本文中,我们解决了这个问题,描述了一个数据结构的加权祖先后缀树与常数查询时间和线性构造算法。我们的解决方案是基于一种新的方法,使用所谓的不可约LCP值。
2021-04-11 cs.DS
Sampling the suffix array with minimizers
从后缀数组中(均匀地)采样后缀是一个旧的想法,它用模式搜索时间换取减少的索引空间。几年前,Claude等人展示了一种字母表采样方案,与稀疏后缀数组相比,对于足够长的模式,该方案允许更有效的模式搜索。他们的方法的一个缺点是要求所寻找的模式需要包含至少一个来自所选子字母表的字符。在这项工作中,我们提出了一种替代后缀采样方法,只有一个最小的模式长度作为一个要求,这似乎在实践中更方便。实验表明,我们的算法实现了竞争力的时间-空间权衡最标准的基准数据。
2014-12-03 cs.DS
Linear time construction of compressed text indices in compact space
我们表明,压缩后缀数组和压缩后缀树的长度$n$在一个整数字母表的大小$σ\leq n$的字符串都可以内置的$O(n)$(随机)的时间只使用$O(n\logσ)$位的工作空间。以前使用$O(n\logσ)$位空间的最快构造算法分别花费时间$O(n\log\logσ)$和$O(n\log^εn)$(其中$ε$是小于$1$的任何正常数)。在传递中,我们表明,长度为$n$的字符串在大小为$σ$的字母表上的Burrows-Wheeler变换可以建立在确定性的$O(n)$时间和空间$O(n\logσ)$中。我们还表明,在相同的时间和空间内,我们可以进行多种序列分析任务,并构造压缩后缀数组和压缩后缀树的一些变体。
2016-05-23 cs.DS
Run-Length Encoded Nondeterministic KMP and Suffix Automata
我们提出了一种新的位并行表示,基于行程长度编码的非确定性KMP和后缀自动机的字符串$P$至少有两个不同的符号。我们的方法针对的是小字母表上的长字符串的情况,并补充了Cantone et al.(2012)的方法,该方法对大字母表上的长字符串有效。我们的编码需要$O((σ+ m)\lceil ρ/ w\rceil)$空间,并允许一个模拟的自动机在一个字符串上的时间$O(\lceil ρ/ w\rceil)$每个过渡,其中$σ$是字母表的大小,$m$是$P$的长度,$ρ$是行程长度编码的长度$P$和$w$是机器字的大小位。输入字符串可以以未编码或游程长度编码的形式给出。
2014-12-17 cs.DS cs.FL
Grammar Compression By Induced Suffix Sorting
在这项工作中,语法压缩算法,称为GCIS。GCIS基于Nong等人在2009年提出的诱导后缀排序算法SAIS。所提出的解决方案建立在由SAIS在后缀排序期间执行的因子分解的基础上。使用上下文无关文法将因子替换为非终结符。该算法,然后递归地应用于较短的序列的非终端。所得到的语法是通过利用一些冗余来编码的,例如根据SAIS排序的规则的右手之间的公共前缀。GCIS在获得有竞争力的压缩比的同时,压缩所需的空间和时间较低。我们对常规和重复的,中等和非常大的文本的实验表明,GCIS是一个非常方便的选择相比,众所周知的压缩器,如Gzip,7-Zip和RePair,在语法压缩的黄金标准。作为交换,GCIS的减压速度很慢。然而,语法压缩器比Lempel-Ziv压缩器更方便,因为可以直接以压缩形式访问文本子串,而无需解压缩文本。我们证明,GCIS是这种情况下的一个很好的候选人,因为它显示出其基于修复的替代品之间的竞争力。我们还显示,如何GCIS与SAIS的关系,使其成为一个很好的中间结构,以建立后缀数组和LCP数组在解压缩的文本。
2020-11-25 cs.DS
Computing All Distinct Squares in Linear Time for Integer Alphabets
给定一个整数字母表上的字符串,我们提出了一个算法,计算属于这个字符串的所有不同的广场在时间线性的字符串长度的集合。作为应用,我们展示了如何在线性时间内计算最小增广后缀树的树拓扑。除此之外,我们详细说明了一个算法计算最长的前一个表在一个简洁的表示使用压缩的工作空间。
2017-02-20 cs.DS
Linear Algorithms for Computing the Lyndon Border Array and the Lyndon Suffix Array
我们考虑在一个给定的字符串$\s{s}$的长度$n$在一个有限的全序字母表中找到重复的结构和固有的模式的问题。字符串$\s{s}$的边界$\s{u}$既是$\s{s}$的前缀又是后缀,使得$\s{u} \not= \s{s}$。字符串$\s{s}$的边界数组的计算,即$\s{s}$的每个前缀的边界,与字符串匹配问题密切相关:给定一个字符串$\s{w}$,找到它在$\s{s}$中的所有出现。{ \itshape Lyndon字}是原始字(即,它不是另一个词的幂),这对于它的共轭类的词典编纂顺序是最小的(即,通过字母的循环旋转获得的单词集合)。本文结合这些概念引入了$\s{s}$的\emph{Lyndon Border Array} $\mathcal L β$,它的第$i$项$\mathcal L β(\s{s})[i]$是$\s{s}[1 \dd i]$的最长边的长度,它也是一个林登词.我们提出了线性时间和线性空间算法计算$\mathcal L β(\s{s})$。%,在二进制和有界字母表的情况下。此外,我们介绍了\emph{Lyndon Suffix Array},并通过修改高和Aluru \cite{KA03}的有效后缀数组技术,概述了其建设的线性时间和空间算法。
2015-06-23 cs.DS
Sliding Suffix Tree using LCA
我们考虑一个滑动窗口$W$的字符流从一些字母表的恒定大小。用户想要对当前滑动窗口内容执行确定性子串匹配,并获得匹配的位置。我们提出了一个索引版本的滑动窗口使用后缀树,链接树和最低共同祖先。大小为$Θ(|W|)$的数据结构具有最佳时间查询$Θ(m+occ)$和摊销常数时间更新,其中$m$是查询字符串的长度,$occ$是其出现的次数。
2018-09-06 cs.DS
Constructing LZ78 Tries and Position Heaps in Linear Time for Large Alphabets
我们提出了第一个最坏情况下的线性时间算法来计算一个给定的字符串在一个整数字母表的Lempel-Ziv 78因子分解。我们的算法是基于最近的标记祖先查询的后缀树的给定字符串。我们还表明,同样的技术可以用来构建一组字符串的位置堆在最坏情况下的线性时间,当一组字符串作为一个trie。
2015-01-26 cs.DS
Space-Efficient Construction of Compressed Indexes in Deterministic Linear Time
我们表明,压缩后缀数组和压缩后缀树的字符串$T$可以内置的$O(n)$确定性时间使用$O(n\logσ)$位的空间,其中$n$是字符串长度和$σ$是字母表的大小。先前描述的确定性算法要么在取决于字母表大小的时间内运行,要么需要工作空间的$ω(n\log σ)$位。我们的结果有直接的应用到其他问题,如产生第一个线性时间LZ77和LZ78解析算法,使用$O(n \logσ)$位。
2016-11-14 cs.DS
Order-Preserving Suffix Trees and Their Algorithmic Applications
最近,Kubica等人(Inf.Process.让我们,2013)和Kim等人(提交给Theor. Comp. Sci.)引入保序模式匹配。在这个问题中,我们正在寻找与给定模式具有相同“形状”的文本的连续子串。这些结果包括一个线性时间保序模式匹配算法的多项式有界字母表和这个结果的扩展到模式匹配与多个模式。我们在分析上向前推进了一步,给出了一个在保序情况下构造后缀树的$O(\frac{n\log{n}}{\log\log{n}})$时间随机算法。我们展示了一些应用程序的顺序保持后缀树,以确定时间序列中的模式和重复。
2013-03-27 cs.DS
Linear pattern matching on sparse suffix trees
将多个字符打包到一个计算机字中是压缩字符串表示并加速其处理的一种简单而自然的方法。利用这个想法,我们提出了一个压缩字符串的索引,基于{ \em稀疏后缀树} \cite{KU-96}适当定义的后缀链接。假设,在标准的单位成本RAM模型下,一个字最多可以存储$\log_σn$字符($σ$是字母表大小),我们的索引占用$O(n/\log_σn)$空间,即与压缩字符串本身相同的空间。所得到的模式匹配算法在时间$O(m+r^2+r\cdot occ)$中运行,其中$m$是模式的长度,$r$是存储在字中的字符的实际数目,而$occ$是模式出现的数目。
2011-03-14 cs.DS
Space-time Trade-offs for the LCP Array of Wheeler DFAs
针对Wheeler DFA的LCP数组存储占用高的问题,提出仅需线性比特、对数时间访问的采样技术,实现匹配统计计算的时空权衡,并改进了变阶德布鲁因图遍历的时间界。
2024-08-19 cs.DS
Online algorithms for finding distinct substrings with length and multiple prefix and suffix conditions
让两个静态序列的字符串$P$和$S$,分别代表前缀和后缀条件,作为输入预处理。对于查询,给定两个正整数$k_1$和$k_2$,以及以在线方式给定的字符串$T$,使得$T_i$表示$1 \leq i \leq |T|$的$T$的长度- $i$前缀.在本文中,我们感兴趣的是计算$T_i$的不同子串$w$的集合$\mathit{ans_i}$,使得$k_1 \leq |w| \leq k_2$和$w$包含一些$p \in P$作为前缀和一些$s \in S$作为后缀。更具体地说,计数问题是输出$|\mathit{ans_i}|$,而报告问题是输出每次迭代$i$的$\mathit{ans_i}$的所有元素。令$σ$表示字母表大小,并且对于字符串序列$A$,$\Vert A\Vert=\sum_{u\in A}|u|$。然后,我们表明,经过$O((\Vert P\Vert +\Vert S\Vert)\logσ)$时间预处理,解决方案的计数和报告问题,每次迭代$i$可以输出在$O(|T_i| \logσ)$和$O(|T_i| \logσ+ |\mathit{ans_i}|)$总时间。对于关于$\Vert P\Vert +\Vert S\Vert$的大小多项式的整数字母表,预处理时间可以减少到$O(\Vert P\Vert +\Vert S\Vert)$。我们的算法有可能应用于网络流量分类。
2022-10-30 cs.DS
New Algorithms for Position Heaps
我们提出了几个结果的位置堆,一个相对较新的替代后缀树和后缀数组。首先,我们证明了,如果我们限制要寻找的模式的最大长度,那么我们也可以限制堆的高度,并减少插入和删除的最坏情况下的成本。其次,我们展示了如何在线性时间内建立一个位置堆,而不依赖于字母表的大小。第三,我们展示了如何增加位置堆,使其支持访问相应的后缀数组,反之亦然。第四,我们引入了一个位置堆的变体,它可以通过一个具有线性额外位数的压缩后缀数组来有效地模拟。
2013-01-13 cs.DS
Online Computation of Palindromes and Suffix Trees on Tries
Joint Graduate School of Mathematics for Innovation, Kyushu University(九州大学数学创新联合研究生院);NTT Communication Science Laboratories(NTT通信科学实验室);Department of Computer and Network Engineering, University of Electro-Communications(电子通信大学计算机与网络工程系);Department of Informatics, Kyushu University(九州大学信息学系);M&D Data Science Center, Institute of Integrated Research, Institute of Science Tokyo(东京科学大学综合研究研究所M&D数据科学中心)
本文提出亚二次算法在线计算动态Trie中的回文和后缀树,支持叶节点的增删操作。
2026-01-23 cs.DS
On the Benefit of Merging Suffix Array Intervals for Parallel Pattern Matching
我们提出了并行算法的精确和近似模式匹配与后缀数组,使用CREW-PRAM与$p$处理器。给定一个长度为$n$的静态文本,我们首先展示了如何在$p \le m$的$O(\frac{m}{p}+ \lg p + \lg\lg p\cdot\lg\lg n)$时间内计算给定长度为$m$的模式的后缀数组间隔。对于近似模式匹配与$k$差异或不匹配,我们展示了如何计算所有出现的给定模式在$O(\frac{m^kσ^k}{p}\max\left(k,\lg\lg n\right)\!+\!(1+\frac{m}{p}) \lg p\cdot \lg\lg n + \text{occ})$的时间,其中$σ$是字母表和$p \le σ^k m^k$的大小。算法的核心是一种快速合并后缀数组区间的数据结构:给定两种模式$P$和$P'$的后缀数组区间,我们提出了一种在$O(\lg\lg n)$顺序时间或$O(1+\lg_p\lg n)$并行时间计算$PP'$的区间的数据结构。我们所有的数据结构的大小都是$O(n)$位(除了后缀数组)。
2016-06-08 cs.DS
Efficient LCE Queries and Lexicographic Minimizers on Sliding Suffix Trees
Kyushu University(九州大学)
针对滑动窗口的后缀树,提出线性空间数据结构,支持均摊常数时间窗口移动和最坏常数时间LCE查询,并给出常数时间报告最小化子的替代算法。
2026-07-02 cs.DS
Linear-time Computation of DAWGs, Symmetric Indexing Structures, and MAWs for Integer Alphabets
本文提出在整数字母表上利用后缀树以线性时间构造 DAWG 的算法,并据此首次实现词缀树、对称 CDAWG 等结构的线性时间构建,同时给出 MAW 的最优输入输出敏感计算。
2023-07-04 cs.DS cs.FL
Inducing the Lyndon Array
在本文中,我们提出了Nong(TOIS,2013)的诱导后缀排序算法的变体,该算法使用工作空间的$σ+ O(1)$字在$O(n)$时间内同时计算文本的Lyndon数组和后缀数组,其中$n$是文本的长度,$σ$是字母表大小。我们的结果改善了以前的最佳空间要求的线性时间计算的林登阵列。事实上,所有已知的用于Lyndon阵列计算的线性算法使用后缀排序作为预处理步骤,并且除了Lyndon阵列和后缀阵列之外还使用工作空间的$O(n)$字。在真实数据集和人工数据集上的实验结果表明,该算法不仅具有空间效率,而且在实际应用中具有快速性。
2019-07-26 cs.DS
Alphabet-Dependent String Searching with Wexponential Search Trees
如果坚持线性大小的数据结构和确定性的最坏情况运行时间,则广泛地假设$O(m+\lg σ)$是在存储大小为$σ$的字母表上的字符串的压缩trie中找到长度为$m$的模式所能做的最好的选择[Cole等人,ICALP'06]。在这篇文章中,我们首先展示了一个相当简单的组合,众所周知的想法产生$O(m+\lg\lg σ)$确定性的最坏情况下的静态尝试搜索时间。然后,我们继续进行动态尝试,其中我们实现每个查询或更新的$O(m+\frac{\lg^{2}\lgσ}{\lg\lg\lgσ})$的最坏情况界限,这应该再次与先前已知的$O(m+\lgσ)$确定性最坏情况界限进行比较[Cole等人,ICALP'06],以及依赖于字母表\emph{in}的$O(m+\sqrt{\lg n/\lg\lg n})$确定性最坏情况界限[Andersson和Thorup,SODA'01],其中$n$是trie中的节点数。我们的更新过程的基础是指数搜索树的加权变体,虽然简单,但可能是独立的兴趣。作为一个特定应用,上述界限(静态和动态)适用于后缀树。在那里,更新对应于在文本中添加或追加一个字母,另外一个目标是更新比重新匹配整个后缀更快。我们展示了如何在$O(\lg\lg n + \frac{\lg^{2}\lgσ}{\lg\lg\lgσ})$时间内做到这一点,这改善了先前已知的$O(\lg n)$结合[Amir等人…
2013-02-14 cs.DS
On the combinatorics of suffix arrays
我们证明了后缀数组的几个组合性质,包括通过双射与一定的定义良好的一类置换后缀数组的表征。我们的方法是基于[1]中给出的Burrows-Wheeler阵列的特征,我们通过使用额外的哨兵符号将后缀排序减少到循环移位排序来应用。我们证明了[2]中给出的二进制字母表的一个特殊情况的后缀数组的特征很容易从我们的特征。基于我们的结果,我们还对文[3]中关于后缀数组的计数结果提供了简单的证明。我们的方法来表征后缀数组是第一个利用他们的关系与Burrows-Wheeler排列。
2012-06-18 cs.DS math.CO
On the Complexity of BWT-runs Minimization via Alphabet Reordering
Burrows-Wheeler变换(BWT)是文本压缩和索引的重要工具。它于1994年首次引入,为经典后缀树数据结构在接近基于熵的下界的空间中的第一个编码提供了主干。最近,已经有紧凑的后缀树在空间中成比例的“$r$“,在BWT中运行的数量,以及$r$的外观在新算法的时间复杂度的发展。与其他流行的压缩度量方法不同,参数$r$对文本字母表的词典顺序很敏感。尽管过去有几次尝试利用这一点,但多年来一直存在一种可证明有效的算法,用于找到或近似最小化$r$的字母顺序。我们提出的第一组结果的计算复杂性最小化BWT运行通过字母表重排。我们证明了这个问题的决策版本是NP完全的,不能解决的时间$2^{o(σ+ \sqrt{n})}$,除非指数时间假设失败,其中$σ$是字母表的大小和$n$是文本的长度。我们还表明,优化问题是APX困难的。在这样做的时候,我们涉及到两个以前不同的主题:最佳的旅行销售人员的路径和运行的BWT的文本的数量,提供了一个令人惊讶的图形和文本压缩的问题之间的连接。此外,有关最近的结果在字典压缩领域,我们说明,任意字母顺序提供了一个$O(\log^2 n)$ -近似。我们提供了一个最佳的线性时间算法的问题,找到一个运行最小化排序的符号(只发生一次)的子集的顺序约束下,并证明了这个问题的推广到一类图的BWT一样的属性称为惠勒图是NP-完全的。
2020-02-18 cs.DS
Linear-time Computation of Minimal Absent Words Using Suffix Array
一个长度为n的词y的一个缺席词是一个在y中不出现的词。如果它的所有固有因子都出现在y中,则它是一个最小的缺词。最小缺席的话已经计算出生物体的基因组从所有领域的生活,他们的计算提供了一个快速的替代测量近似序列比较。存在一种O(n)时间和O(n)空间算法,用于基于后缀自动机的构造来计算固定大小的字母表上的所有最小缺失词(Crochemore等人,1998年)。该算法没有公开的实现。基于后缀数组的构造,对于相同的问题也存在O(n^2)-时间和O(n)-空间算法(Pinho等人,2009年)。作者还提供了该算法的实现,并且是目前最快的。在这篇文章中,我们提出了一个O(n)-时间和O(n)-空间的算法来计算所有基于后缀数组的最小缺失词,从而弥合了这个令人不快的差距。使用真实数据和合成数据的实验结果表明,各自的实现优于Pinho等人。
2014-06-28 cs.DS
A Simple Algorithm for Computing the Document Array
我们提出了一个简单的算法,用于计算给定字符串集合及其后缀数组作为输入的文档数组。我们的算法运行在线性时间使用恒定的额外空间字符串从常数字母表。
2019-11-02 cs.DS
Compressed Inverse Suffix Arrays
North Carolina State University(北卡罗来纳州立大学)
本文提出了一种新的压缩方法,通过直接从打包文本支持逆后缀数组查询,实现更快的查询时间,同时减少存储需求。
2026-09-03 cs.DS
Online Algorithms for Constructing Linear-size Suffix Trie
后缀树是各种字符串处理的基本数据结构。长度为$n$的字符串$T$的后缀树具有$O(n)$节点和边,并且每个边的字符串标签由$T$中的一对位置编码。因此,即使在构建树之后,输入文本$T$也需要保持存储,并且仍然需要对$T$的随机访问。由Crochemore等人提出的线性大小后缀tries(LST)[Linear-size suffix tries,TCS 638:171-178,2016]是后缀树的“独立”替代方案。即,长度为$n$的串$T$的LST占用$O(n)$总空间,并且以与后缀树相同的效率支持模式匹配和其它任务,而不需要存储输入文本$T$。Crochemore等人提出了一种离线算法,该算法将$T$的后缀树转换成$T$在$O(n \log σ)$时间和$O(n)$空间上的LST,其中$σ$是字母表大小。在本文中,我们提出了两种类型的在线算法,“直接”构造LST,从右到左,从左到右,而不构造后缀树作为中间结构。这两种算法在读取新符号时递增地构造LST,并且不访问先前读取的符号。从右到左构造算法在$O(n \log σ)$时间和$O(n)$空间中工作,从左到右构造算法在$O(n (\log σ+ \log n / \log \log n))$时间和$O(n)$空间中工作。我们的算法的主要特点是,输入的文本不需要存储。
2019-04-10 cs.DS
Longest Common Prefix Arrays for Succinct k-Spectra
本文研究从 k-谱的 SBWT 表示构造 LCP 数组,提出 O(nk) 直接算法、最优 O(n) 算法及缓存友好的次优算法,以支持伪比对加速和变阶 de Bruijn 图模拟。
2023-06-08 cs.DS
Online and Offline Algorithms for Counting Distinct Closed Factors via Sliding Suffix Trees
本文提出两种基于滑动后缀树的算法,分别以O(n log σ)在线和O(n)离线时间计数长度为n的字符串中不同闭合因子的数量,解决了闭合因子计数问题。
2024-09-29 cs.DS
Partial Data Compression and Text Indexing via Optimal Suffix Multi-Selection
考虑从无界字母表中提取的输入文本串T[1,N]。本文研究了基于后缀的数据压缩和文本索引问题中的部分计算,如(I)从T的Burrows-Wheeler变换中检索K<=N个连续符号的任何片段,以及(II)检索后缀数组或后缀树中K<=N个连续条目的任何块。以前的文献需要O(N log N)的比较(和时间)来解决这些问题,通过解决构建整个Burrows-Wheeler变换或T的文本索引的总问题,并执行后处理来挑选出想要的部分。我们引入了一种新的自适应方法来解决上述部分计算问题,并解决了O(K log K + N)比较和时间的部分问题,提高了K=O(N)的最佳运行时间O(N log N)。这些部分计算问题是密切相关的,因为它们共享一个共同的瓶颈:后缀多选择问题,即输出秩为r_1,r_2,.的后缀,r_1<r_2<... <r_K,r_i在[1,N]中。这个问题的特殊情况是众所周知的:K=N是后缀排序问题,它是弦乐学中的主力,有数百个应用程序,K=1是最近研究的后缀选择。我们证明了后缀多重选择可以在Theta(N log N - sum_{j=0} ^K Delta_j log Delta_j+N)时间和比较中解决,其中r_0=0,r_{K+1} =N+1,并且对于0<=j<=K,Delta_j= r_{j+1} -r_j。这是渐近最优的,并且也与[Dobkin,Munro,JACM 28(3…
2011-10-15 cs.DS
More RLBWT Tricks
Center for Biotechnology and Bioengineering (CeBiB)(生物技术生物工程中心)
针对FM索引和CSA在字母表增大时的性能差异,提出一种基于1阶秩编码的混合索引,通过反向搜索结合单步CSA恢复信息,在合成数据上速度最快,但空间开销较大。
2026-11-06 cs.DS
Computing Smallest Suffixient Arrays in Sublinear Time
Kyushu University(九州大学);University of Chile(智利大学);Center for Biotechnology and Bioengineering (CeBiB)(生物技术与生物工程中心);University of Warsaw(华沙大学);University of Palermo(巴勒莫大学)
提出在亚线性时间内计算文本T的最小后缀数组的方法,时间复杂度和运行数相关,改进了现有算法。
2026-07-02 cs.DS
Cell-Probe Lower Bounds and Complexity-Preserving Reductions for Suffix Array Queries
Stony Brook University(石溪大学);Max Planck Institute for Informatics(马克斯·普朗克信息学研究所)
本文证明了后缀数组查询的首个单元探测时空下界,解答了Grossi与Vitter的25年问题,还给出后缀数组查询与短串前缀查询间无附加项的复杂度保持等价归约。
2026-08-20 cs.DS
Optimal cache-aware suffix selection
给定字符串$S[1..N]$和整数$k$,{ \em后缀选择}问题是确定后缀$S[i... N]$、$1 \leq i \leq N$中按字典顺序最小的$k$。我们研究的后缀选择问题的高速缓存感知模型,捕获两级内存固有的计算系统,有限的大小$M$和块大小$B$的\emph{cache}。感兴趣的复杂度是块传输的数量。我们提出了一个最佳的后缀选择算法的高速缓存感知模型,需要$\Thetah{N/B}$块传输,任何字符串$S$在一个无界的字母表(字符只能比较),在共同的高缓存假设(即$M=\Omegah{B^{1+ε}}$,其中$ε<1$)。我们的算法击败了瓶颈约束置换输入数组所需的输出数组,这几乎适用于任何非平凡的问题,在分层内存模型。
2009-02-10 cs.AR cs.DS
Pointer-Machine Algorithms for Fully-Online Construction of Suffix Trees and DAWGs on Multiple Strings
我们处理的问题,维护后缀树索引结构的一个完全在线的多个字符串的集合,其中一个新的字符可以在任何时候在集合中的任何字符串的前缀。最近由Takagi等人提出的用于该问题的唯一先前已知的算法[Micromica 82(5):1346-1377(2020)]在字RAM模型上在$O(N \log σ)$时间和$O(N)$空间中运行,其中$N$表示字符串的总长度,$σ$表示字母表大小。他们的算法大量使用了半动态树上的最近标记祖先(NMA)数据结构,该结构可以回答查询并支持在字RAM模型上的$O(1)$分摊时间中插入节点。在本文中,我们提出了一个更简单的全在线从右到左的算法,建立后缀树为一个给定的字符串集合在$O(N (\log σ+ \log d))$时间和$O(N)$空间,其中$d$是最大数量的传入韦纳链接到一个节点的后缀树。我们注意到,$d$由后缀树的高度限定,后缀树的高度又由集合中最长字符串的长度限定。这种新算法的优点是它工作在指针机器模型上,即它不使用涉及查表的复杂NMA数据结构。作为一个副产品,我们还获得了一个指针机算法,用于建立有向无环字图(DAWG)的多个字符串,它运行在$O(N (\log σ+ \log d))$时间和$O(N)$空间再次没有NMA数据结构的帮助下,一个完全在线的左到右收集。
2020-05-02 cs.DS
Optimal prefix-suffix queries with applications
本文提出一种更简单的数据结构,以最优O(n/log_σ n)构建时间和O(1)查询时间解决字符串前缀-后缀查询,并应用于节点标记图的模式匹配。
2024-11-06 cs.DS
Faster run-length compressed suffix arrays
该研究针对游程长度压缩后缀数组(RLCSA),通过修改其结构并应用新结果,将查找aP的SA区间的时间复杂度从O(log r_a + log log n)降至O(log r_a),同时不增加空间复杂度,还探讨了其对两级索引及最大精确匹配启发式方法的优化作用。
2025-04-19 cs.DS