Suffixient Arrays: a New Efficient Suffix Array Compression Technique
本文提出 Suffixient Array,仅保留后缀数组中足以通过二分搜索定位模式及 MEM 的子集,实现压缩工作空间线性构建,并在重复集合上显著快于 SA 和 r-index。
2025-03-18 cs.DS
Suffix arrays with a twist
suffix数组是一个经典的全文索引,它结合了有效性和简单性。我们讨论了三种旨在提高其效率的方法:更改导航,数据布局和添加额外的数据。简而言之,我们表明,$(i)$如何搜索正确的间隔边界显着影响整体搜索速度,$(ii)$的B树数据布局很容易战胜标准的,$(iii)$的后缀的前缀的查找表的众所周知的想法,可以使用压缩,$(iv)$缓存前缀的后缀在一个助手数组可以构成(nother)实际的空间-时间权衡。
2016-07-27 cs.DS
Dynamic Suffix Array with Sub-linear update time and Poly-logarithmic Lookup Time
长度为$n$的字符串$S$的后缀数组$SA_S[1\ldots n]$是$S$的后缀的按字典顺序排序的数组。后缀数组是字符串算法中最著名和最广泛使用的数据结构之一。我们提出了一个数据结构,用于维护一个表示的后缀数组的动态字符串,经历符号替换,删除和插入。对于每个字符串操作,我们的数据结构可以在$O(n^{\frac{2}{3}})$时间内更新(忽略乘法多对数因子),$n$是字符串的当前长度。对于输入查询$i\in [1\ldots n]$,我们的数据结构在$O(\log^5(n))$时间内报告$SA_S[i]$。我们还提出了一个更快的数据结构,与$O(\sqrt{n})$更新时间(忽略乘法多对数因子),用于维护一个动态字符串的倒序后缀数组进行符号替换更新。对于输入查询$i\in [1\ldots n]$,我们的数据结构在$O(\log^4(n))$时间内报告倒排后缀数组中的第$i$个条目。我们的数据结构可以用来获得几个经典的字符串问题,有效的动态解决方案是以前不知道的次线性动态算法。
2021-12-23 cs.DS
Fast and Lightweight Distributed Suffix Array Construction -- First Results
本研究提出基于分桶技术的DCX算法分布式内存适配方案,在内存占用不到现有最快PSAC算法一半的前提下,实现了相当甚至更优的运行速度,为轻量级分布式后缀数组构建提供了新思路。
2024-12-13 cs.DS
Dynamic Suffix Array with Polylogarithmic Queries and Updates
长度为$n$的文本$T$的后缀数组$SA[1..n]$是$\{1,\ldots,n\}$的置换,描述了$T$的后缀的字典序,它被认为是字符串算法中最重要的数据结构之一,在数据压缩、生物信息学和信息检索中有数十种应用。后缀数组最大的缺点之一是在文本更新下很难维护:即使是一个字符替换也可以完全改变后缀数组的内容。因此,动态文本的后缀数组是使用后缀数组查询建模的,该查询返回给定任何$i\in[1..n]$的值$SA[i]$。在此之前,最快的动态后缀数组实现是由Amir和Boneh完成的。在ISAAC 2020上,他们展示了如何在$\tilde{O}(k)$时间内回答后缀数组查询,其中$k\in[1..n]$是一个权衡参数,具有$\tilde{O}(\frac{n}{k})$时间文本更新。在最近的预印本[2021]中,他们还提供了一个具有$O(\log^5 n)$ -时间查询和$\tilde{O}(n^{2/3})$ -时间更新的解决方案。我们提出了第一个数据结构,支持后缀数组查询和文本更新在$O({\rm polylog}\,n)$时间(实现$O(\log^4 n)$和$O(\log^{3+o(1)} n)$时间,分别)。我们的数据结构是确定性的,所有操作的运行时间都是最坏情况。除了标准的单字符编辑(字符插入、删除和替换)之外,我们还支持(在$O(\log^{3+o(1)} n)$时间内…
2022-01-04 cs.DS
Compressed Spaced Suffix Arrays
间隔种子是生物信息学中相似性搜索的重要工具,同时使用多个种子通常会显着提高其性能。然而,对于现有的方法,对于每个种子,我们保持单独的线性大小的数据结构,或者是哈希表或者是间隔后缀数组(SSA)。在本文中,我们将展示如何压缩SSA相对于正常后缀数组(SA),仍然支持快速随机访问它们。我们首先证明了一个理论上的上限存储SSA时,我们已经有SA所需的空间。然后,我们提出的实验表明,我们的方法在实践中工作得更好。
2014-03-09 cs.DS
Direct Linear Time Construction of Parameterized Suffix and LCP Arrays for Constant Alphabets
我们提出了第一个最坏情况下的线性时间算法,直接计算参数化的后缀和LCP数组恒定大小的字母。以前的算法要么需要二次时间,要么首先建立参数化的后缀树。更正式地说,对于静态字母表$Σ$和参数化字母表$Π$上的字符串,我们的算法在$O(nπ)$时间和空间的$O(n)$字中运行,其中$π$是字符串中$Π$的不同符号的数量。
2019-06-03 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
Two simple full-text indexes based on the suffix array
我们提出了两个后缀数组启发全文索引。一种称为SA哈希,它用一个哈希表来增加后缀数组,以加快模式搜索,因为在二进制搜索阶段之前搜索间隔大大缩小。另一种称为FBCSA,是一种紧凑的数据结构,类似于M{ä}kinen的紧凑后缀数组,但工作在固定大小的块上。在Pizza~\&~Chili 200\,MB数据集上的实验表明,SA散列在模式搜索(计数)方面比标准后缀数组快2- 3倍,代价是需要$0.2n-1.1n$字节的额外空间,其中$n$是文本长度,并设置最小模式长度。FBCSA在单个单元访问中相对较快(在大约相同或更好的压缩下比相关索引快几倍),但如果要提取许多连续单元,则没有竞争力。尽管如此,对于提取的任务,例如,10个连续的细胞,其时空关系仍然是有吸引力的。
2016-05-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
Lightweight LCP-Array Construction in Linear Time
后缀树是字符串处理中一种非常重要的数据结构,但其占用的空间非常大。在大规模应用中,因此使用压缩后缀树(CST)。CST由三个(压缩)组件组成:后缀数组、LCP数组和用于模拟后缀树上的导航操作的数据结构。LCP-array存储了字典顺序相邻后缀的最长公共前缀的长度,并且可以在线性时间内计算。在本文中,我们提出了新的LCP阵列的建设算法,是快速和非常空间效率。在实践中,我们的算法优于目前最好的算法。
2010-12-20 cs.DS
On the Optimisation of the GSACA Suffix Array Construction Algorithm
后缀数组可以说是序列分析中最重要的数据结构之一,因此存在大量的后缀排序算法。然而,到目前为止,2015年引入的GSACA算法是唯一已知的非递归线性时间后缀数组构造算法(SACA)。尽管其有趣的理论特性,一直很少努力提高算法的低于现实世界的性能。有一种超线性算法DSH,它依赖于相同的排序原理,比DivSufSort更快,DivSufSort是十多年来最快的SACA。本文分析了GSACA和DSH中的排序原理,并利用其性质给出了一个优化的线性时间算法。我们得到的算法不仅比GSACA快得多,而且优于DivSufSort和DSH。
2022-08-30 cs.DS
An Elegant Algorithm for the Construction of Suffix Arrays
后缀数组是一种数据结构,在语言文本和生物数据的字符串处理问题中有许多应用。它已被引入作为后缀树的内存有效的替代品。后缀数组由字符串的已排序后缀组成。在文献中已知有几种线性时间后缀阵列构造算法(SACA)。然而,实际上最快的算法之一在最坏情况下的运行时间为$O(n^2)$。设计实际上和理论上有效的技术的问题仍然是开放的。在本文中,我们提出了一个优雅的算法后缀数组的建设,需要线性时间与高概率,概率是在所有可能的输入空间。我们的算法是已知的SACAs中最简单的一个,它开辟了一个新的维度的后缀数组的建设,还没有探索到现在。我们的算法是很容易并行化。我们提供各种并行计算模型的并行实现。我们证明了一个引理的$\ell$-聚体的随机字符串,可能会发现独立的应用。我们还提出了另一种算法,利用上述算法。该算法称为RadixSA,最差情况下的运行时间为$O(n\log{n})$。RadixSA引入了一个想法,可以找到独立的应用程序作为其他SACA的加速技术。RadixSA与其他算法在各种数据集上的实证比较表明,我们的算法是迄今为止最快的算法之一。C++源代码可在www.example.com上免费获得
2013-07-04 cs.DS
Constant-Time Inverse Suffix Array Queries in Compact Space and Sublinear-Time Construction of Suffix Array Indexes
Stony Brook University(石溪大学);Max Planck Institute for Informatics(马克斯·普朗克 informatics 研究所)
该研究提出最优空间的常数时间逆后缀数组结构,在字RAM中确定性构造该结构及两类后缀数组,匹配二元文本的时间-空间下界,可提升字典匹配算法效率。
2026-08-20 cs.DS
Parallel Suffix Array Construction by Accelerated Sampling
本文提出了一种基于加速采样技术的确定性BSP算法,用于构造给定字符串的后缀数组。它运行在最优的O(n/p)本地计算和通信,并需要一个接近最优的O(log log p)同步步骤。该算法提供了一个改进现有算法的同步成本,并加强了采样技术的重要性。
2013-02-23 cs.DC 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
Explaining the Inherent Tradeoffs for Suffix Array Functionality: Equivalences between String Problems and Prefix Range Queries
Department of Computer Science, Max Planck Institute for Informatics(马克斯·普朗克信息学研究所计算机科学系);Stony Brook University(石溪大学);Saarland Informatics Campus(萨尔兰信息学校区)
本研究提出首个双向归约,证明后缀数组查询与前缀选择查询在查询时间仅差$O(\log\log n)$项时参数等价,还推导了六类字符串问题与前缀查询的等价关系,为字符串处理效率分析提供统一基础。
2025-10-22 cs.DS
Large-Scale Pattern Search Using Reduced-Space On-Disk Suffix Arrays
后缀数组是一种用于内存模式搜索的有效数据结构。后缀数组也可以用于外部内存模式搜索,通过两级结构,使用内部索引来识别正确的后缀指针块。在本文中,我们描述了一个新的两级后缀数组为基础的索引结构,需要显着减少磁盘空间比以前的方法。节省的关键是使用基于前缀的磁盘块,而不是更常见的均匀采样方法,允许在块和其他块的子部分之间进行缩减。我们还描述了一个新的内存结构的基础上浓缩的BWT字符串,并表明,它允许常见的模式来解决,而无需访问文本。实验使用64 GB的英文网页文本和膝上计算机只有4 GB的主内存证明了新方法的速度和通用性。对于这些数据,索引的大小大约是以前两级机制的三分之一;内存占用仅为文本大小的1%,这意味着可以比紧凑的FM-INDEX更快地处理查询。
2013-03-26 cs.DS
A fast implementation of the good-suffix array for the Boyer-Moore string matching algorithm
本文针对Boyer-Moore算法中好后缀表计算存在冗余操作的问题,基于对模式的精细分析提出一种快速实现,实验证明其两个版本在几乎所有测试场景中均为最快。
2024-02-26 cs.DS
Ultra-fast Multiple Genome Sequence Matching Using GPU
本文基于Intel Core i7 3770 K四核处理器和NVIDIA GeForce GTX 680 GPU,对后缀树和后缀数组的大规模并行实现进行了对比分析。此外,后缀数组仅占后缀树的20%~30%的空间,合并的二叉搜索和瓦片优化使后缀数组在GPU上的性能明显优于后缀树。实验结果表明,基于后缀数组的多基因组序列匹配比CPU串行实现的多基因组序列匹配有99倍以上的加速比。毫无疑问,基于后缀数组的大规模并行匹配算法是实现高性能生物信息学应用的有效途径。
2015-05-03 cs.DC 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
Breaking the $O(n)$-Barrier in the Construction of Compressed Suffix Arrays and Suffix Trees
本文提出新的压缩后缀数组和压缩后缀树,首次在二十年里将构造时间从 O(n) 改进为 o(n),同时保持原有空间和查询性能,并基于前缀排名与前缀选择的新查询类型建立了一般性归约。
2023-04-18 cs.DS
Inducing the Lyndon Array
在本文中,我们提出了Nong(TOIS,2013)的诱导后缀排序算法的变体,该算法使用工作空间的$σ+ O(1)$字在$O(n)$时间内同时计算文本的Lyndon数组和后缀数组,其中$n$是文本的长度,$σ$是字母表大小。我们的结果改善了以前的最佳空间要求的线性时间计算的林登阵列。事实上,所有已知的用于Lyndon阵列计算的线性算法使用后缀排序作为预处理步骤,并且除了Lyndon阵列和后缀阵列之外还使用工作空间的$O(n)$字。在真实数据集和人工数据集上的实验结果表明,该算法不仅具有空间效率,而且在实际应用中具有快速性。
2019-07-26 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
Deterministic Sparse Suffix Sorting in the Restore Model
给定一个长度为$n$的文本$T$,在$T$的空间为n的前提下,提出了一个确定性的在线算法,利用空间的$O(m)$字计算$T$在$O(c \sqrt{\lg n} + m \lg m \lg n \lg^* n)$时间上的稀疏后缀数组和稀疏最长公共前缀数组,其中$m \le n$是待排序的后缀个数(在线和任意提供),$c$是必须比较以区分指定后缀的具有$m \le c \le n$的字符数。
2018-02-28 cs.DS
Sparse Suffix and LCP Array: Simple, Direct, Small, and Fast
本文提出两种构造稀疏后缀数组与LCP数组的新算法,兼具简单、直接、紧凑和快速特性,最坏时间O(n log b),空间仅8b+o(b)机器字,并通过实验验证其简单性与高效性。
2024-07-04 cs.DS
Suffix sorting via matching statistics
本研究提出一种基于匹配统计的后缀排序新算法,通过构建匹配统计压缩表示加速后缀比较,在高度相似字符串集合上构建广义后缀数组的速度可媲美甚至超过现有最快方法,还提出了可独立应用的匹配统计快速计算启发式方法。
2022-07-03 cs.DS
Prefix-free graphs and suffix array construction in sublinear space
针对泛基因组图结构难以直接应用字符串数据结构的问题,提出新型数据结构prefix-free graphs,并在子线性空间下构建后缀数组等结构以支持高效泛基因组操作。
2023-06-26 cs.DS
Compressing Suffix Trees by Path Decompositions
Dalhousie University(达尔豪斯大学);ETH Zurich(苏黎世联邦理工学院);Karlsruhe Institute of Technology(卡尔斯鲁厄理工学院);University of Pisa(比萨大学)
通过路径分解技术,提出一种基于后缀数组采样的压缩索引方法,实现I/O模型中高效的模式匹配,空间复杂度优于现有方法。
2026-02-25 cs.DS
Cascade: GPU-Accelerated Out-of-Core Suffix Array Construction for LLM Corpora
Northeastern University(东北大学)
Cascade是一种面向LLM语料库的GPU加速外存后缀数组构建方法,无需全局排名数组,可在单GPU节点上构建最大238B token的精确后缀数组,速度优于infini-gram流水线和libsais。
2026-10-21 cs.DS
Sampled Longest Common Prefix Array
当增加最长公共前缀数组和其他结构时,后缀数组可以在最优的时间和空间上解决许多字符串处理问题。LCP数组的压缩表示也是许多压缩后缀树提案中的主要构建块之一。在本文中,我们描述了一种新的压缩LCP表示:采样LCP阵列。我们表明,当使用压缩后缀阵列(CSA),采样LCP阵列往往提供更好的时间/空间的权衡比现有的替代品。我们还展示了如何直接从CSA构建LCP阵列的压缩表示。
2010-06-29 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
Using Compressed Suffix-Arrays for a Compact Representation of Temporal-Graphs
时态图表示随时间变化的二元关系。它们可以模拟例如社交和通信网络的动态。时间图被定义为接触的集合,这些接触是当它们处于活动状态时用时间间隔标记的边。本文探讨了压缩后缀数组(CSA),一个众所周知的紧凑和自索引的数据结构在文本索引领域,来表示大的时间图的使用。新的结构,称为时间图CSA(TGCSA),实验比较最有竞争力的紧凑数据结构在国家的最先进的,即EDGSTUGG和CET。实验结果表明,TGCSA获得了良好的时空折衷。它使用了合理的空间,并有效地解决复杂的时态查询。此外,TGCSA具有更广泛的表达能力,比EDGSTUG和CET,因为它是能够表示时间图,其中接触的边缘可以暂时重叠。
2018-12-28 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
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
Wee LCP
我们证明了最长公共前缀(LCP)的信息可以存储在更少的空间比以前已知的。更确切地说,我们表明,在存在的文本和后缀数组,O(n)额外的位是足够的回答LCP查询渐近在同一时间,需要检索一个条目从后缀数组。这产生具有亚对数导航时间的最小压缩后缀树。
2010-02-19 cs.DS
New Algorithms for Position Heaps
我们提出了几个结果的位置堆,一个相对较新的替代后缀树和后缀数组。首先,我们证明了,如果我们限制要寻找的模式的最大长度,那么我们也可以限制堆的高度,并减少插入和删除的最坏情况下的成本。其次,我们展示了如何在线性时间内建立一个位置堆,而不依赖于字母表的大小。第三,我们展示了如何增加位置堆,使其支持访问相应的后缀数组,反之亦然。第四,我们引入了一个位置堆的变体,它可以通过一个具有线性额外位数的压缩后缀数组来有效地模拟。
2013-01-13 cs.DS
On the Use of Suffix Arrays for Memory-Efficient Lempel-Ziv Data Compression
许多研究致力于优化Lempel-Ziv(LZ)77系列的算法,无论是在速度和内存需求方面。二叉搜索树和后缀树(ST)是经常用于此目的的数据结构,因为它们允许以内存使用为代价进行快速搜索。近年来,由于后缀数组(SA)的简单性和低存储器要求,人们对它们产生了兴趣。一个关键的问题是,SA可以解决子串问题几乎一样有效的ST,使用更少的内存。本文提出了两种新的SA为基础的LZ编码算法,这需要在解码器端的修改。标准基准测试的实验结果表明,我们的算法,虽然不是更快,使用的内存比ST同行少3至5倍。我们基于SA的算法的另一个重要特征是,内存量与要搜索的文本无关,因此可以先验地定义要分配的内存。这些低且可预测的内存需求特性在几种情况下至关重要,例如嵌入式系统,其中内存非常宝贵,速度并不重要。最后,我们指出,新的算法是一般的,在这个意义上说,他们是足够的应用程序以外的LZ压缩,如文本检索和向前/向后子串搜索。
2009-03-25 cs.DS
The Inverse Lyndon Array: Definition, Properties, and Linear-Time Construction
University of Salerno(萨莱诺大学)
本文研究逆Lyndon数组,定义其为逆Lyndon词的结构,通过next greater suffix数组和border修正项进行刻画,并提出线性时间构造算法,适用于一般有序字母表。
2026-03-18 cs.DS cs.FL
Compressed Inverse Suffix Arrays
North Carolina State University(北卡罗来纳州立大学)
本文提出了一种新的压缩方法,通过直接从打包文本支持逆后缀数组查询,实现更快的查询时间,同时减少存储需求。
2026-09-03 cs.DS
Scalable Construction of Text Indexes
后缀数组是有效解决不同应用领域(如数据压缩、数据采掘或生物信息学)中无数字符串处理问题的关键。随着可用数据的快速增长,后缀数组构造算法必须适应高级计算模型,如外部存储器和分布式计算。在这篇文章中,我们提出了五个后缀数组构造算法,利用新的算法大数据批处理框架Thrill,它允许我们处理以前没有考虑过的数量级的输入大小。
2016-10-10 cs.DC cs.DS
The Inverse Lyndon Array
University of Salerno(萨莱诺大学)
本文引入逆Lyndon数组,通过下一个更大后缀数组与LCE修正项刻画,并基于最近后缀框架提出O(n)时间构建算法,同时用于线性时间重构规范逆Lyndon分解。
2026-09-22 cs.DS cs.FL
Adaptive encodings for small and fast compressed suffix arrays
Department of Computer Science, University of Helsinki(赫尔辛基大学计算机系)
本文提出可变长度阻塞编码技术,用于优化压缩后缀数组的空间与查询速度,通过动态调整索引信息以提升性能。
2026-02-19 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
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
Simpler and Faster Lempel Ziv Factorization
我们提出了一种新的,简单的,有效的方法来计算Lempel-Ziv(LZ 77)分解的字符串在线性时间,基于后缀数组。在不同数据集上的计算实验表明,我们的方法始终优于目前最快的算法LZ OG(Ohlebusch and Gog 2011),并且在获得后缀数组后的处理速度可以快2到3倍,而需要相同或多一点的空间。
2013-01-18 cs.DS
Time and Memory Efficient Lempel-Ziv Compression Using Suffix Arrays
众所周知的基于字典的Lempel-Ziv(LZ)77系列算法是几种通用无损压缩技术的基础。这些算法在编码/解码时间和存储器要求方面是不对称的,前者要求更高。在过去的几年中,相当多的注意力已经致力于寻找有效的数据结构,以支持这些搜索的问题,旨在优化编码器的速度和内存。哈希表、二叉搜索树和后缀树已被广泛用于此目的,因为它们允许以牺牲存储器为代价的快速搜索。最近的一些研究集中在后缀数组(SA),由于其低内存需求和线性构造算法。先前的工作已经展示了如何使用单个SA或具有最长公共前缀信息的辅助阵列的SA来计算LZ 77分解。基于SA的算法比基于树的编码器使用更少的内存,分配严格必要的内存量,而不管要搜索/编码的文本的内容。在本文中,我们提出了更快的SA为基础的算法LZ 77编码和子串搜索,保持其低的内存需求,以前的工作进行改进。对于一些压缩设置,在一个大型基准测试文件集上,我们的低内存SA编码器也比基于树的编码器更快。这提供了时间和存储器高效的LZ 77编码,是对像LZMA这样的公知编码器上的树的可能替代。我们的算法也适用于文本分类,因为它提供了一种紧凑的方式来描述文本的词袋表示,以及一个快速的索引机制,允许快速找到所有的单词集,以一个给定的符号开始,在一个静态字典。
2009-12-30 cs.DS cs.IT math.IT
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
Inducing the LCP-Array
我们展示了如何修改基于诱导排序的后缀数组的线性时间构造算法(Nong等人,DCC'09),使得它也计算最长公共前缀的数组(LCP数组)。实际测试表明,这优于最近的LCP阵列构造算法(Gog和Ohlebusch,ALENEX'11)。
2011-01-18 cs.DS
Dynamic Suffix Array in Optimal Compressed Space
本文提出首个支持后缀数组查询与更新的动态压缩数据结构,在对数多项式时间内运行,并达到δ-最优空间,填补了静态结构的空白。
2024-11-08 cs.DS
Near-real-time Solutions for Online String Problems
University of Yamanashi(山梨大学);LIGM, CNRS and Gustave Eiffel University(信息学与机器学习实验室,法国国家科学研究中心和巴黎-塞纳河大学)
本文提出了一种近实时算法,用于高效解决在线字符串问题,如最长重复后缀数组、Lempel-Ziv因子化和最小唯一子串维护,通过多项式对数对数时间复杂度实现。
2026-02-17 cs.DS
Computing matching statistics on Wheeler DFAs
匹配统计被引入到解决近似字符串匹配问题,这是一个经常性的子程序在生物信息学应用。2010年,Ohlebusch等人[SPIRE 2010]提出了一种用于计算匹配统计的时间和空间高效算法,该算法依赖于压缩后缀树的某些组件-特别是最长公共前缀(LCP)数组。在本文中,我们展示了他们的算法可以从字符串推广到惠勒确定性有限自动机。最重要的是,我们引入了一个概念的LCP阵列惠勒自动机,从而建立了一个明确的第一步扩展(压缩)后缀树的功能标记图。
2023-01-13 cs.DS
Prefix Sorting DFAs: a Recursive Algorithm
本文受Farach后缀树构建算法启发,提出一种$O(n^2)$时间复杂度的递归算法,改进了DFA后缀数组的构建时间界,并深化了对图的字典序与组合结构的理解,助力图后缀树构建这一长期开放问题的研究。
2023-10-06 cs.DS
Engineering a Distributed Full-Text Index
我们提出了一个分布式环境中的大数据应用程序的分布式全文索引。我们的索引可以回答不同类型的模式匹配查询(存在,计数和枚举)。我们使用多达512个处理器对高达100 GiB的输入进行实验,并将我们的索引与Arroyuelo等人的分布式后缀数组进行比较。Comput. 40(9):471- 495,2014]。结果是,我们的索引在使用相同的空间时,比分布式后缀数组快5.5倍。我们还提供了索引的简洁变体,与非简洁变体相比,它只使用了三分之一的内存,而查询时间只慢了20%。
2016-12-05 cs.DS