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
Space/time-efficient RDF stores based on circular suffix sorting
本文提出 RDFCSA,将 RDF 三元组视为循环字符串并借助压缩后缀数组进行自索引,以低空间开销高效支持三元组模式与 SPARQL 连接查询。
2022-04-13 cs.DS
Prefix Sorting DFAs: a Recursive Algorithm
本文受Farach后缀树构建算法启发,提出一种$O(n^2)$时间复杂度的递归算法,改进了DFA后缀数组的构建时间界,并深化了对图的字典序与组合结构的理解,助力图后缀树构建这一长期开放问题的研究。
2023-10-06 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
Inducing the Lyndon Array
在本文中,我们提出了Nong(TOIS,2013)的诱导后缀排序算法的变体,该算法使用工作空间的$σ+ O(1)$字在$O(n)$时间内同时计算文本的Lyndon数组和后缀数组,其中$n$是文本的长度,$σ$是字母表大小。我们的结果改善了以前的最佳空间要求的线性时间计算的林登阵列。事实上,所有已知的用于Lyndon阵列计算的线性算法使用后缀排序作为预处理步骤,并且除了Lyndon阵列和后缀阵列之外还使用工作空间的$O(n)$字。在真实数据集和人工数据集上的实验结果表明,该算法不仅具有空间效率,而且在实际应用中具有快速性。
2019-07-26 cs.DS
Update Query Time Trade-off for dynamic Suffix Arrays
字符串S[1.]的后缀数组SA(S)n]是一个数组,包含S的所有后缀,按字典顺序排序。后缀数组是最著名的索引数据结构之一,它在许多字符串算法中起着关键工具的作用。本文提出了一种维护动态字符串后缀数组的数据结构。对于每个$0 \leq \varepsilon \leq 1$,我们的数据结构在$\tilde{O}(n^{\varepsilon})$时间内报告SA[i],并在$\tilde{O}(n^{1-\varepsilon})$时间内处理文本修改。此外,我们的数据结构使得能够在相同的查询时间内报告iSA[i],其中iSA是S[1. n]。我们的数据结构可用于构造静态字符串算法的次线性动态变体或基于后缀数组和逆后缀数组的数据结构。
2020-07-13 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
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
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
Sparse Suffix Tree Construction in Optimal Time and Space
后缀树(以及与之密切相关的后缀数组)是一种基本的结构,它通过按字典顺序存储所有后缀来捕获给定文本的所有子串。在某些应用中,我们使用$b$感兴趣的后缀的子集,这些后缀存储在所谓的稀疏后缀树中。由于该结构的大小为$Θ(b)$,因此自然会寻求一种仅使用空间的$O(b)$字的构造算法,假设对文本的只读随机访问。我们为这个问题设计了一个线性时间蒙特卡罗算法,从而解决了Bille等人明确提出的一个悬而未决的问题。[TALG 2016]。I等人[STACS 2014]之前已知的最佳算法在$O(n\log b)$时间内工作。我们的解决方案在$n/b$轮中进行;在第$r$轮中,我们考虑从$r$模$n/b$全等位置开始的所有后缀。通过保持滚动哈希,我们按字典顺序排序所有感兴趣的后缀,然后将它们与已经考虑过的后缀合并。为了有效地合并,我们还需要在小空间中回答LCE查询。通过插入Bille等人[CPM 2015]的结构,我们获得了$O(n+b\log b)$时间复杂度。我们改进了这种结构,这意味着一个线性时间稀疏后缀树的构造算法。我们补充我们的Monte Carlo算法与确定性验证程序。验证需要$O(n\sqrt{\log b})$时间,这改善了I等人[STACS 2014]获得的$O(n\log b)$的范围。这是通过首先观察到在先前的解决方案中完成的修剪使用具有小乘法拉伸的图空间的概念具有相当清晰的描…
2016-08-02 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
String Comparison in $V$-Order: New Lexicographic Properties & On-line Applications
$V$ -order是与唯一最大因子分解族(UMFF)相关的字符串的全局顺序,UMFF本身是林登词的推广。$V$ -序最近被提出作为字典序的替代,用于后缀数组的计算和Burrows-Wheeler变换引起的后缀排序。高效的$V$ -字符串排序因此成为一个相当感兴趣的问题。在本文中,我们提出了关于$V$ -字符串中的顺序的新的且令人惊讶的结果,然后继续探索算法的后果。
2015-07-24 cs.DS
Inducing the LCP-Array
我们展示了如何修改基于诱导排序的后缀数组的线性时间构造算法(Nong等人,DCC'09),使得它也计算最长公共前缀的数组(LCP数组)。实际测试表明,这优于最近的LCP阵列构造算法(Gog和Ohlebusch,ALENEX'11)。
2011-01-18 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
Using parallelism techniques to improve sequential and multi-core sorting performance
我们提出了新的顺序排序操作的适应技术和方法用于设计并行排序算法。虽然规范是并行化的顺序算法,以提高性能,我们采用了相反的方法:我们采用并行计算技术,以加快顺序排序。我们的方法也可以工作的多核排序与微小的调整,不一定需要完全并行化的原始顺序算法。所提出的方法导致渐近有效的确定性和随机排序操作的实际顺序和多核性能的发展,如实验研究所示,匹配或超越现有的优化排序算法实现。我们利用并行排序技术,如确定性定期采样和随机过采样。我们扩展的概念,确定性定期采样到确定性定期过采样的顺序和多核排序,并展示其潜力。然后,我们将展示如何将这些技术用于顺序排序,并导致更好的多核排序算法的性能所见证的实验研究。
2016-08-30 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
An Agglomeration Law for Sorting Networks and its Application in Functional Programming
在本文中,我们将提出一个一般的凝聚法排序网络。聚合是设计并行程序时的常用技术,用于控制计算的粒度,从而在算法和算法运行的机器之间找到更好的匹配。通常,这是通过将较小的任务分组并在一个并行进程中整体计算它们来完成的。在排序网络的情况下,这可以通过用一个进程计算网络的更大部分来完成。本文中的凝聚法则追求一种不同的策略:将输入数据分组,并在保持算法原始结构的情况下将算法推广到凝聚输入。这将导致一个新的访问机会,排序网络非常适合在现代多核计算机,计算机网络或GPGPU编程的有效并行化。此外,这使我们能够使用排序网络作为任意排序算法的(并行或分布式)合并阶段,从而轻松创建新的混合排序算法。函数式程序设计语言的表达能力帮助我们将这一定律应用于系统构建的排序网络,从而产生高效且易于适应的排序算法。最后,用Eden程序设计语言给出了一个应用实例,说明了该方法的有效性。不同的并行排序算法的运行时行为的实现进行了比较。
2017-01-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
Frameworks for Designing In-place Graph Algorithms
只读存储器模型是研究算法时空折衷的经典计算模型。ROM模型的一个经典结果是,任何使用O(s)个额外空间字的排序算法都需要对$ \lg n \leq s \leq n/\lg n$进行$Ω(n^2/s)$比较,并且最近也有一个算法匹配了该边界。然而,如果我们放松模型(从ROM),我们确实有排序算法(比如Heapsort),可以使用$O(n \lg n)$比较进行排序,使用额外空间的$O(\lg n)$位,甚至在算法期间的任何时间点保持给定输入序列的排列。我们解决类似的问题,图算法。我们表明,ROM模型的一个简单的自然松弛允许我们实现基本的图搜索方法,如BFS和DFS比ROM更有效的空间。通过简单地允许顶点的邻接表中的元素被置换,我们表明,在一个无向或有向连通图$G$有$n$顶点和$m$边,可以使用额外空间和$O(n^3 \lg n)$时间的$O(\lg n)$位以DFS或BFS顺序输出$G$的顶点。因此,我们得到类似的边界的可达性和最短路径距离(无向和有向图)。再多花一点时间(但仍然是多项式),我们还可以按照lex-DFS顺序输出顶点。由于有向图中的可达性和最短路径距离是NL-完全的,而lex-DFS是P-完全的,我们的结果表明,如果L $\neq$ P,我们的模型比ROM更强大。途中,我们还介绍和开发了另一种松弛ROM的算法,其中顶点的邻接列表是循环列表,我们只能修改列表的头部。我…
2017-11-27 cs.DS
Text Indexing for Long Patterns using Locally Consistent Anchors
本文提出基于局部一致锚点的文本索引,在已知模式长度下界时,同时优化索引空间、查询时间、构建空间与构建时间,实验优于经典索引。
2024-07-16 cs.DB cs.DS
String Problems in the Congested Clique Model
针对拥塞团模型,本文提出三个基础字符串问题的高效算法:O(1)轮解决任意长度字符串排序与组合模式匹配,O(log log n)轮计算后缀数组及最长公共前缀数组。
2025-04-11 cs.DC cs.DS
Efficient Construction of the BWT for Repetitive Text Using String Compression
本文提出一种基于诱导后缀排序与游程/语法压缩的半外部算法,以期望线性时间构建BCR BWT,在重复性大规模基因组数据上显著降低内存并提升速度。
2023-08-14 cs.DS
Algorithmic Foundations of Inexact Computing
本文提出非精确计算的有原则模型,通过非精确性感知与不感知方法对比,证明在布尔函数求值、PAC学习和排序等问题上可获得指数级解质量提升。
2023-05-30 cs.DS
Optimal (Randomized) Parallel Algorithms in the Binary-Forking Model
在本文中,我们开发的二进制分叉模型的各种基本问题,包括排序,半排序,列表排名,树收缩,范围极小值,有序集的联合,交集和差异的最佳算法。在二进制派生模型中,任务只能派生为两个子任务,但可以递归地异步执行。这些任务共享内存,支持读、写和测试和设置。成本以工作(指令总数)和跨度(最长依赖链)来衡量。二进制分叉模型旨在捕获许多现有多线程语言的算法性能和算法设计考虑因素,这些语言也是异步的,并且显式或隐藏地依赖于二进制分叉。与广泛研究的PRAM模型相比,它不假设任意方向的分叉或同步操作,这两者都很难在现代硬件中实现。虽然最佳的PRAM算法是已知的问题,在这里研究,事实证明,任意方式分叉和严格的同步是强大的,如果不切实际的,能力。这些PRAM算法在二进制分叉模型中的自然模拟(即,现有并行语言中的实现)在跨度上引起$Ω(\log n)$开销。本文探讨了设计最佳算法时,限于二进制分叉和假设的技巧。本文所描述的所有算法都是二进制分叉模型中第一个具有最优工作和最优跨度的算法。大多数算法都很简单。许多人是随机的。
2020-06-24 cs.DS
Optimal Square Detection Over General Alphabets
正方形(对于某些字符串$x$,形式为$xx$的片段)可以说是字符串中最自然的重复类型。关于平方的基本算法问题是检查给定长度为$n$的字符串是否是无平方的,也就是说,不包含这种形式的片段。Main和Lorentz [J. Algorithms 1984]为这个问题设计了一个$\mathcal{O}(n\log n)$时间算法,并证明了一个匹配的下界,假设所谓的通用字母表,这意味着该算法只允许检查两个字符是否相等。但是,它们的下限还假设字符串中存在$Ω(n)$不同的符号。作为一个开放性问题,他们问如果限制字母表的大小,是否有更快的算法。克劳什莫尔(Theor)Comput. Sci. 1986年]设计了一个线性时间算法恒定大小的字母表,并结合最近的结果,他的方法实际上意味着这样的算法线性排序的字母表。最近,Ellert和Fischer [ICALP 2021]通过为一般有序字母表设计线性时间算法,即假设字符的线性顺序允许恒定的时间顺序比较,大大放松了这一假设。然而,1984年Main和Lorentz的公开问题对于一般(无序)字母表仍然没有解决。在本文中,我们表明,测试平方自由的长度$n$字符串的大小PDMATHAMR一般字母表可以做$\mathcal{O}(n\log σ)$比较,不能做$o(n\log σ)$比较。我们补充这个结果与$\mathcal{O}(n\log σ)$时间算法…
2023-03-13 cs.DS