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
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
String Inference from the LCP Array
后缀数组,也许是现代字符串处理中最重要的数据结构,通常用最长公共前缀(LCP)数组来扩充,LCP数组存储字符串的字典顺序相邻后缀的LCP的长度。这两个数组加在一起大致相当于后缀树,LCP数组表示树的形状。为了更好地理解LCP阵列的组合学,我们考虑从LCP阵列推断字符串的问题,即,确定给定的整数数组是否是有效的LCP数组,如果是,则用该LCP数组重建某些字符串或所有字符串。最近有研究从后缀树形状推断字符串,但使用的信息(以后缀链接的形式)比LCP数组中可用的信息多得多。我们提供了两个主要结果。(1)我们描述了两个算法,用于推断字符串从LCP阵列时,我们允许一个广义形式的LCP阵列定义的循环字符串的多集:一个线性时间算法的二进制字母表和一般算法的多项式时间复杂度为一个恒定的字母表大小。(2)我们证明,确定一个给定的整数数组是否是一个有效的LCP阵列是NP-完全的,当我们需要更多的限制形式的LCP阵列定义为一个单一的循环或非循环字符串或多集的非循环字符串。无论字母表是否被限制为二进制,结果都成立。结合起来,这两个结果表明,LCP阵列的循环字符串的多重集的广义形式是从根本上不同于其他更严格的形式。
2017-02-23 cs.DS
Constructing LZ78 Tries and Position Heaps in Linear Time for Large Alphabets
我们提出了第一个最坏情况下的线性时间算法来计算一个给定的字符串在一个整数字母表的Lempel-Ziv 78因子分解。我们的算法是基于最近的标记祖先查询的后缀树的给定字符串。我们还表明,同样的技术可以用来构建一组字符串的位置堆在最坏情况下的线性时间,当一组字符串作为一个trie。
2015-01-26 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
Fully-Functional Suffix Trees and Optimal Text Searching in BWT-runs Bounded Space
自千年之交以来,索引高度重复的文本-如基因组数据库,软件库和版本化文本集合-已成为一个重要的问题。重复文本的相关可压缩性度量是r,其Burrows-Wheeler变换(BWT)中的运行次数。Run-Length FM索引是最早的重复集合索引之一,使用O(r)空间,能够有效地计算文本中长度为m的模式的出现次数(使用当前技术,以每个模式符号的对数时间为单位)。然而,它无法在以r为界的空间内有效地定位这些事件的位置。在本文中,我们关闭这个长期存在的问题,展示了如何扩展游程长度FM索引,使其能够在O(r)空间内有效地定位occ出现时间复杂度为O(m + occ),时间复杂度为O(m)。(r log log w(σ + n/r))空间,用于在RAM机器上具有w = Ω(log n)位的字的σ大小的字母表上的长度为n的文本。在这个空间内,我们的索引也可以在最佳时间内计数,O(m)。将空间乘以O(w/ log σ),我们支持O(dm log(σ)/we)和O(dm log(σ)/we + occ)时间的计数和定位,这在压缩设置中是最优的,以前在压缩空间中没有得到。我们还描述了一个使用O(rlog(n/r))空间的结构,该结构在几乎最优的时间O(log(n/r)+ ` log(σ)/w)内替换文本并提取长度为`的任何文本子串。在这个空间内,我们同样提供了直接存取后缀数组,反后缀数组,和最长的公共前…
2019-07-04 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
Linear-time Computation of DAWGs, Symmetric Indexing Structures, and MAWs for Integer Alphabets
本文提出在整数字母表上利用后缀树以线性时间构造 DAWG 的算法,并据此首次实现词缀树、对称 CDAWG 等结构的线性时间构建,同时给出 MAW 的最优输入输出敏感计算。
2023-07-04 cs.DS cs.FL
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
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
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
Fully-Online Suffix Tree and Directed Acyclic Word Graph Construction for Multiple Texts
我们认为建设的后缀树和有向无环字图(DAWG)索引数据结构的集合$\mathcal{T}$的文本,其中一个新的符号可以被附加到任何文本在$\mathcal{T} = \{T_1, \ldots, T_K\}$,在任何时候。在动态索引多传感器数据中出现的这种完全在线的场景是长期解决的半在线文本索引问题的自然概括,其中文本$T_1, \ldots, T_{k}$在为每个$1 \leq k < K$处理下一个文本$T_{k+1}$之前被永久固定。我们提出了在$O(N \log σ)$时间和$O(N)$空间中为$\mathcal{T}$构建后缀树和DAWG的全在线算法,其中$N$是$\mathcal{T}$中字符串的总长度,而$σ$是它们的字母大小。后缀树叶子边和一些DAWG边的标准显式表示在我们的完全在线场景中必须放松,因为在最坏的情况下需要对这些边进行太多的更新。相反,我们提供了对更新后的后缀树叶子边缘标签和DAWG边缘的访问,这些边缘将通过辅助数据结构以每个添加的字符的$O(\log σ)$时间重定向。
2018-07-12 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
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
CSA++: Fast Pattern Search for Large Alphabets
文本中的索引模式搜索已经研究了几十年。对于小字母,FM索引提供了无与伦比的性能,在所需的空间和搜索速度方面。对于大字母表--例如,当标记是单词时--情况更加复杂,FM-Index表示是紧凑的,但可能很慢。在本文中,我们应用最近的创新领域的倒排索引和文档检索压缩模式搜索,包括字母到数百万。从实际的压缩后缀数组结构开发的贞根,我们表明,埃利亚斯-法诺代码为基础的方法,文档索引可以适应提供新的权衡选项,在索引模式搜索,并提供显着更快的模式处理相比,以前的实现,以及减少空间的要求。我们报告了一个详细的实验评估,证明了新方法的相对优势,使用标准的比萨饼和辣椒的方法和文件,以及应用用例来自大规模数据压缩,并从自然语言处理。对于大的字母表,新的结构产生的空间要求接近那些最高度压缩的FM-Index变体,以及无与伦比的搜索吞吐率。
2016-05-18 cs.DS
Suffixient Sets
本文定义了文本后缀树的后缀充分集,证明其大小上限与逆序文本BWT游程数相关,并基于直线型程序构建了支持高效查找最大精确匹配的索引。
2024-06-04 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
Sliding suffix trees revisited
Kyushu University(九州大学);Institute of Science Tokyo(东京科学大学);University of Electro-Communications(电气通信大学)
研究滑动后缀树从一个窗口更新到下一个窗口时边标签维护问题,提出新算法能在\(O(1)\)最坏情况时间内完成此任务,改进现有算法,关键数据结构是叶指针的非平凡扩展。
2026-07-16 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
Wavelet Trees Meet Suffix Trees
我们提出了一种改进的小波树构造算法,并讨论了它的应用程序的整数键和字符串的排名/选择问题。给定一个长度为n的字符串,在一个大小为$σ\leq n$的字母表上,我们的方法在$O(n \log σ/ \sqrt{\log{n}})$时间内构建小波树,通过$\sqrt{\log n}$的因子改进了最先进的算法。因此,给定n个整数的数组,我们可以在$O(n \sqrt{\log n})$时间内构造一个由$O(n)$机器字组成的数据结构,并且能够在$O(\log n / \log \log n)$时间内回答数组子范围的秩/选择查询。这是一个$\log \log n$ -因素的改善,在查询时间相比,陈和Ptragarcu和一个$\sqrt{\log n}$ -因素的改善,在建设时间相比,Brodal等人。接下来,我们切换到字符串上下文,并提出了一个新的概念,小波后缀树。对于长度为n的字符串w,该数据结构占用$O(n)$字,花费$O(n \sqrt{\log n})$时间来构造,并且同时捕获w的子字符串的组合结构,同时实现有效的自顶向下遍历和二分搜索。特别地,使用小波后缀树,我们能够在$O(\log |x|)$时间内回答以下两个自然类似的子串后缀的排名/选择查询:对于w的子串x和y,计算x的后缀在字典上小于y的数量,并且对于w的子串x和整数k,找到x的第k个字典上最小的后缀。我们进一步表明,小波…
2015-05-15 cs.DS
Breaking the $O(n)$-Barrier in the Construction of Compressed Suffix Arrays and Suffix Trees
本文提出新的压缩后缀数组和压缩后缀树,首次在二十年里将构造时间从 O(n) 改进为 o(n),同时保持原有空间和查询性能,并基于前缀排名与前缀选择的新查询类型建立了一般性归约。
2023-04-18 cs.DS
Linear Time Online Algorithms for Constructing Linear-size Suffix Trie
本文提出两种直接在线构造线性大小后缀字典树(LST)的算法,分别从右到左和从左到右增量构建,在 O(n log σ) 时间和 O(n) 空间内完成,且无需存储输入文本串。
2023-12-05 cs.DS
Orthogonal Range Searching for Text Indexing
文本索引,其中一个人希望预处理(通常是大)文本为未来(较短)查询的问题,一直在研究以来,后缀树是在70年代初发明。随着文本数据的不断增加和访问方式的变化,不断需要新的数据结构和新的算法方法。因此,文本索引是一个非常活跃的研究领域。与计算几何团体相关的正交范围搜索是对于各种文本索引应用越来越重要的工具之一。最初,在90年代中期,有几个结果认识到这种联系。在过去的几年里,我们看到这种方法的使用越来越多,并且对范围搜索用于文本索引有了更深入的理解。在这本专著中,我们调查其中的一些结果。
2013-06-03 cs.DS
FMtree: A fast locating algorithm of FM-indexes for genomic data
动机:作为生物信息学中的一项基本任务,在长文本中搜索大量短模式被各种压缩全文索引广泛加速。这些索引能够提供与经典索引类似的搜索功能,例如,后缀树和后缀数组,同时需要更少的空间。对于基因组数据,一个著名的压缩全文索引家族,称为FM索引,在实践中表现出无与伦比的性能。FM索引的一个主要缺点是它们的定位操作,报告给定文本中模式的所有出现位置,特别是对于多次出现的模式,特别慢。结果:本文介绍了一种新的定位算法FMtree,通过FM索引快速检索任何模式的所有出现位置。当在给定文本上搜索模式时,FMtree将定位操作的搜索空间组织成概念四叉树。因此,可以通过遍历四叉树同时检索该模式的多个出现位置。与现有的定位算法相比,我们的基于树的算法减少了大量的冗余操作,并提供了更好的数据局部性。实验结果表明,FMtree通常比现有的算法快一个数量级,并且仍然是内存有效的。
2017-04-18 cs.DS
Space/time-efficient RDF stores based on circular suffix sorting
本文提出 RDFCSA,将 RDF 三元组视为循环字符串并借助压缩后缀数组进行自索引,以低空间开销高效支持三元组模式与 SPARQL 连接查询。
2022-04-13 cs.DS
Optimal Computation of Overabundant Words
在给定序列$x$中观察到的单词$w$的最长正确前缀、最长正确后缀和最长中缀的频率可用于将$w$分类为避免的或过度丰富的。Brendel等人(J Biomol Struct Dyn 1986)描述了该统计模型中用于$w$预期和偏差的定义,并进行了生物学论证。我们最近引入了一种时间最优算法,用于计算整数字母表上给定序列的所有避免单词(Algorithms Mol Biol 2017)。在这篇文章中,我们提出了一个$\mathcal{O}(n)$-时间和$\mathcal{O}(n)$-空间算法计算所有过剩的话在一个序列$x$的长度$n$在一个整数字母表。我们的主要结果是基于一个新的非平凡的组合性质的后缀树$\mathcal{T}$的$x$:$x$的最长中缀是标签的显式节点的$\mathcal{T}$的不同的因素的数目不超过$3n-4$。我们进一步表明,所提出的算法是时间最优的证明,$\mathcal{O}(n)$是一个紧上限的数量过剩的话。最后,我们提出的实验结果,使用合成和真实的数据,证明我们的方法在实践中的有效性和效率。
2017-05-09 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
Computing Lempel-Ziv Factorization Online
我们提出了一个算法,计算Lempel-Ziv因式分解的一个字$W$的长度$n$上的一个字母表$Σ$的大小$σ$在线在以下意义上:它读取$W$从左边开始,并在读取每个$r = O(\log_σ n)$字符的$W$,更新Lempel-Ziv因式分解。该算法需要$O(n \log σ)$位空间和O(n \log^2 n)时间。该算法的基础是一个稀疏后缀树结合小波树。
2012-11-30 cs.DS
Binary Jumbled Indexing: Suffix tree histogram
本文研究二进制乱序索引问题,证明游程数平均为 n/4 导致现有算法平均复杂度为二次方,并提出基于后缀树去重和向量化优化的 SFTree 算法,在保持相同理论复杂度下显著提升实际性能。
2024-12-30 cs.DS
Streaming Algorithms For Computing Edit Distance Without Exploiting Suffix Trees
编辑距离是一种通过计算将一个字符串转换为另一个字符串所需的最小字符插入、删除和替换次数来量化两个字符串彼此相似程度的方法。在本文中,我们研究的计算问题的编辑距离计算一对字符串之间的距离是有界的参数$k\ll n$。本文提出了两种计算编辑距离的流算法:一种是按时间运行的$O(n+k^2)$,另一种是按时间运行的$n+O(k^3)$。通过写$n+O(k^3)$,我们想强调每个输入符号的操作数是一个小常数。特别是,运行时间不依赖于字母表的大小,算法应该很容易实现。以前的一个流算法与运行时间$O(n+k^4)$中给出的文件,目前的作者(STOC'16)。最好的离线算法在时间上运行$O(n+k^2)$(Landau等人,1998年),这是已知的最佳下的强指数时间假设。
2016-07-13 cs.CC cs.DS
Dynamic Suffix Array in Optimal Compressed Space
本文提出首个支持后缀数组查询与更新的动态压缩数据结构,在对数多项式时间内运行,并达到δ-最优空间,填补了静态结构的空白。
2024-11-08 cs.DS
An Efficient Word Lookup System by using Improved Trie Algorithm
有效地存储和检索单词是计算机科学的一项重要任务。应用程序的空间复杂度、时间复杂度和总体性能都取决于此字符串数据。目前世界上已有许多词检索的数据结构和算法,但具有空间压缩能力的却很少。Trie是一种常用的数据结构,它具有线性搜索能力。它是信息检索、自然语言处理、数据库系统、编译器、计算机网络等各种计算机应用的基础和重要组成部分。但目前已有的Trie树版本由于其对内存的要求较高而不能得到广泛应用。本文提出了一种新的基于基数trie树的数据结构,它不仅可以共享前缀,而且可以共享中缀和后缀,从而减少了对内存的需求。我们提出了一个新的空属性的基数trie。提出的trie具有字符单元缩减能力,可以显著减少任何应用程序运行时的内存大小。使用它作为操作系统的数据存储器,可以在很大程度上减少设备的总体主存需求。
2019-11-05 cs.DS
Construction of Sparse Suffix Trees and LCE Indexes in Optimal Time and Space
本文提出确定性算法,在最优时间和空间内构造稀疏后缀树和LCE索引,利用划分集合实现线性时间构造,并改进任意参数下的构造效率。
2024-04-21 cs.DS
Managing Unbounded-Length Keys in Comparison-Driven Data Structures with Applications to On-Line Indexing
本文提出了一种通用的技术,用于优化转换任何动态的数据结构,原子和不可分割的关键字的常数时间比较,到一个数据结构,处理无限长的关键字的比较成本不是一个常数。这些键的示例包括字符串、多维点、多精度数字、多键数据(例如~记录)、XML路径、URL地址等。该技术比以前的工作更通用,因为不需要特别利用的底层结构。唯一的要求是,插入的键必须标识它的前导键或后继键。使用所提出的技术,在线后缀树可以在最坏情况下的时间$O(\log n)$每输入符号(相对于摊销的$O(\log n)$时间每符号,通过先前已知的算法实现)。据我们所知,我们的算法是第一个实现$O(\log n)$最坏情况下的时间每输入符号。在结果后缀树中搜索长度为$m$的模式需要花费$O(\min(m\log |Σ|, m + \log n) + tocc)$时间,其中$tocc$是模式出现的次数。本文还描述了更多的应用,并展示了如何获得替代方法来处理后缀排序,动态最低共同祖先和顺序维护。
2013-06-03 cs.DS
Online Computation of String Net Frequency
本文首次在在线设置下解决字符串净频(NF)的 SINGLE-NF 和 ALL-NF 问题,通过后缀树新离线算法、NF 性质证明及 Ukkonen 在线构造技术,在常数字母表下分别达到 O(m) 和 O(n) 的最优时间。
2024-08-01 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
Text Indexing and Searching in Sublinear Time
我们介绍了第一个索引,可以建立在$o(n)$时间的文本长度$n$,也可以在$o(q)$时间查询的模式长度$q$。在大小为$σ$的字母表上,我们的索引使用$O(n\sqrt{\log n\logσ})$位,在$O(n((\log\log n)^2+\sqrt{\logσ})/\sqrt{\log_σn})$确定性时间内构建,并计算模式在时间$O(q/\log_σn+\log n)$中出现的次数$\mathrm{occ}$。然后可以在$O(\sqrt{\log n\logσ})$时间中找到每个这样的出现。对于任何恒定的$0<\varepsilon<1/2$,通过将空间和构造时间分别稍微增加到$O(n(\sqrt{\log n\logσ}+ \logσ\log^\varepsilon n))$和$O(n\log^{3/2}σ/\log^{1/2-\varepsilon} n)$,我们可以找到$\mathrm{occ}$模式在时间$O(q/\log_σn + \sqrt{\log_σn}\log\log n + \mathrm{occ})$中的出现。我们建立在一个新的文本采样的基础上的差异覆盖,它享有的属性,使我们能够有效地计算最长的共同前缀在恒定的时间。我们扩展我们的研究结果的二级内存模型,以及,在那里我们给的第一个建设$o(\mathit{Sort}(n))$ I/O的数据结构与后缀数…
2019-07-15 cs.DS
Collapsing the Hierarchy of Compressed Data Structures: Suffix Arrays in Optimal Compressed Space
提出仅需最优压缩文本表示空间即可支持后缀数组查询的新索引,将压缩数据结构层级坍缩为单点,并大幅改进了构建时间及数十种算法的空间复杂度。
2023-08-07 cs.DS
Linear Time Construction of Cover Suffix Tree and Applications
本文提出了在整数字母表上以线性时间构造覆盖后缀树(CST)的算法,并基于对连续重叠出现的新刻画,将最短α-部分覆盖的计算复杂度从O(n log n)改进为O(n),同时给出了O(n)空间的重叠连续出现报告索引。
2023-08-08 cs.DS
Faster Algorithms for Longest Common Substring
King’s College London(伦敦国王学院);Max Planck Institute for Informatics(马克斯·普朗克计算机科学研究所);University of Warsaw(华沙大学);Samsung R&D Institute Poland(三星波兰研发中心);CWI, Amsterdam(荷兰数学与计算机科学研究中心);Vrije Universiteit, Amsterdam(阿姆斯特丹自由大学)
针对最长公共子串问题,提出字RAM模型下O(n log σ/√log n)时间的亚线性算法(σ=O(1)时);拓展到k-错配LCS问题,给出O(n log^{k-1/2}n)时间算法,突破n log^k n壁垒。
2025-11-17 cs.DS
Sequence Searching Allowing for Non-Overlapping Adjacent Unbalanced Translocations
不平衡易位是最常见的染色体改变之一,占所有杂合性丢失的30%,是导致肿瘤抑制基因失活的主要遗传事件。尽管它们在基因组序列分析中起着中心作用,但很少有人关注允许这种染色体改变的匹配序列的问题。在本文中,我们研究的\emph{approximate string matching}问题时,编辑操作是相邻因素的非重叠不平衡易位。特别是,我们首先提出了一个$O(nm^3)$ -时间和$O(m^2)$ -空间算法的基础上的动态规划方法。然后,我们改进我们的第一个结果,设计了第二个解决方案,利用有向无环字图的模式。特别是,我们表明,在等概率和字符的独立性的假设下,我们的算法有一个$O(n\log^2_σ m)$平均时间复杂度,对于一个字母表的大小$σ$,仍然保持$O(nm^3)$ -时间和$O(m^2)$ -空间复杂度在最坏的情况下。据我们所知,这是文献中的第一个解决方案的近似字符串匹配问题,允许不平衡易位的因素。
2018-12-02 cs.DS
Efficient pattern matching in degenerate strings with the Burrows-Wheeler transform
字母表$Σ$上的退化或不确定字符串是$Σ$的非空子集的序列。给定一个长度为$n$的退化串$t$,本文提出了一种基于Burrows-Wheeler变换的新方法,用于在长度为$Σ$、运行于$O(mn)$时间的$t$中搜索长度为$m$的退化模式.此外,它是一种混合模式匹配技术,适用于常规和退化字符串。一个退化字符串是保守的,如果它的非实心字母的数量是由一个固定的正常数$q$的上限,在这种情况下,我们表明,搜索的复杂性时间是$O(qm^2)$。实验结果表明,我们的方法在实践中表现良好。
2017-08-03 cs.DS
Efficient Fully-Compressed Sequence Representations
我们提出了一种数据结构,存储序列$s[1..n]$在字母表$[1..σ]$在$n\Ho(s) + o(n)(\Ho(s){+}1)$位,其中$\Ho(s)$是零阶熵的$s$。此结构支持查询\access、\rank \和\select,它们是许多其他压缩数据结构的基本构建块,在最坏情况下为时间$\Oh{\lg\lgσ}$和平均时间$\Oh{\lg \Ho(s)}$。最坏情况下的复杂度与以前的最佳结果相匹配,但这些结果是通过使用$n\Ho(s)+o(n\lgσ)$位的数据结构实现的。在高度可压缩的序列上,冗余的$o(n\lgσ)$位与编码数据的$n\Ho(s)$位相比可能是重要的。相反,我们的表示也压缩了冗余。此外,我们的平均情况复杂性是前所未有的。我们的技术是基于分区的字母相似的频率的字符。然后,对应于每个组的子序列可以使用快速未压缩表示进行编码,而不会损害整体压缩比,即使在冗余中。该结果还改进了其他几种数据结构的最佳当前压缩表示。例如,我们实现了$(i)$压缩冗余,保留最佳的时间复杂度,为最小的现有全文自索引; $(ii)$压缩排列$π$与时间为$π()$和$\pii()$改进为对数对数;和$(iii)$的第一个压缩表示的动态集合的不相交集。我们还指出了倒排索引,后缀数组,二进制关系和数据压缩器的各种应用。...
2012-04-02 cs.DS
Monge matrix searching for lot sizing with piecewise-concave production costs
本文针对分段凹生产成本的批量订货问题,提出基于Monge矩阵搜索的精确算法,在固定断点和边界水平下实现更优复杂度,并通过大量基准验证其有效性和效率。
2026-10-05 cs.DS