On-line Indexing for General Alphabets via Predecessor Queries on Subsets of an Ordered List
文本索引问题是一个基本的算法问题,其中人们希望预处理文本,以便快速定位文本中的模式查询。在动态和在线数据的不断发展的世界中,还需要开发解决方案来索引在线到达的文本,即一次一个字符,并且仍然能够快速定位所述模式。本文提出了一种新的在线索引解决方案,通过在$O(\log \log n + \log\log |Σ|)$最坏情况下每个字符的期望时间,其中$n$是字符串的大小,和$Σ$是字母表中提供一个在线后缀树的结构。这改进了所有先前已知的用于一般字母表的在线后缀树构造,代价是具有预期的运行时间。其主要思想是减少问题的后缀树在线构建一个有趣的变体的顺序维护问题,这可能是独立的利益。在著名的顺序维护问题中,人们希望在插入、删除和顺序查询下维护大小为$n$的动态列表$L$。在顺序查询中,一个查询从$L$获得两个节点,并且必须确定在$L$中哪个节点在另一个节点之前。在有序动态列表问题(POLP)的动态子集上的前驱搜索中,还需要维护$L$的动态子集,使得给定某些$u\in L$,可以在任何子集中快速定位$u$的前驱。本文提供了一种有效的数据结构,能够解决POLP与最坏情况下的预期边界相匹配的RAM模型中的前趋搜索的当前最佳已知的边界,改善了解决方案,可以隐式地从Dietz [Die89]。此外,本文还改进或简化了一些其他应用程序的边界,包括完全持久化数组和订单维护问题。
2012-08-19 cs.DS
Counting Distinct Square Substrings in Sublinear Time
本文首次在打包字符串模型下提出次线性时间算法,通过长周期run的隐式表示、layer run的金字塔形组合性质以及稀疏Lyndon根技术,在$O(n/\log_σn)$时间内统计长度为$n$的字符串中不同平方子串的数量。
2025-09-02 cs.DS
Finding Distinct Subpalindromes Online
我们展示了一个在线算法,发现所有不同的回文内一个给定的字符串在时间$Θ(n\log|Σ|)$在一个有序的字母表和时间$Θ(n|Σ|)$在一个无序的字母表。使用减少从字典一样的数据结构,我们证明了该算法的最优性在基于比较的计算模型。
2013-05-11 cs.DS
Linear Time Inference of Strings from Cover Arrays using a Binary Alphabet
封面是最流行的形式之一,在字符串,随着时间的推移引起了人们的关注。在本文中,我们专注于问题的线性时间推断的字符串覆盖数组使用尽可能最小的字母表。我们提出了一个算法,可以重建一个字符串$x$在一个两个字母的字母表,只要一个有效的覆盖数组$C$作为输入。该算法利用覆盖数组的几个有趣的组合性质和边界数组与覆盖数组之间的一个有趣关系来实现这一点。我们的算法在线性时间内运行。
2011-08-27 cs.DM cs.DS
Fast Computation of Abelian Runs
给定单词$w$和Parikh向量$\mathcal{P}$,$w$中周期$\mathcal{P}$的阿贝尔游程是具有阿贝尔周期$\mathcal{P}$的$w$的子串的最大出现。我们的主要结果是一个在线算法,给定一个词$w$的长度$n$在基数$σ$的字母表和一个Parikh向量$\mathcal{P}$,返回所有的阿贝尔运行周期$\mathcal{P}$在$w$在时间$O(n)$和空间$O(σ+p)$,其中$p$是规范的$\mathcal{P}$,即,其组成部分的总和。我们还提出了一种在线算法,对于任何给定的范数$p$,该算法计算$w$中范数$p$周期的所有阿贝尔运行,时间为$O(np)$。最后,我们给出了计算$w$的全部阿贝尔游程的$O(n^2)$ -时间离线随机算法。它的确定性对应部分在$O(n^2\logσ)$时间中运行。
2015-12-22 cs.DS
Unclustered BWTs of any Length over Non-Binary Alphabets
本文证明在大小至少为3的字母表上,对任意长度n都存在BWT完全无聚类(恰好n个run)的项链,并给出数量下界,与二进制情形下仍待解决的Artin原根猜想问题形成对比。
2025-08-28 cs.DM cs.DS cs.FL
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
Alternative Algorithms for Lyndon Factorization
我们提出了两种变化的杜瓦尔算法计算林登分解的一个字。第一种算法是针对小字母表的情况设计的,并且对于包含字母表中最小字符的串,能够跳过字符串的显著部分。实验结果表明,该算法比Duval的原算法速度快十倍以上,在长DNA串的情况下也有明显的提高。第二个算法,给定一个长度为$ρ$的游程编码字符串$R$,计算$R$在$O(ρ)$时间和恒定空间中的林登因子分解。
2014-07-11 cs.DS
Optimal Time and Space Construction of Suffix Arrays and LCP Arrays for Integer Alphabets
后缀数组和LCP数组是广泛用于各种字符串处理的最基本的数据结构之一。考虑了整数字母表上长度为$N$的只读字符串的两个问题:对于$1 \leq σ\leq N$,字符串包含$σ$不同字符,后缀数组的构造,以及后缀数组和LCP数组的同时构造.对于字RAM模型,我们提出的算法来解决这两个问题,在$O(N)$的时间,通过使用$O(1)$额外的字,这是最佳的时间和空间。额外的字意味着除了输入字符串和输出后缀数组和LCP数组的空间之外所需的空间。我们的贡献改进了以前最有效的算法,[Nong,TOIS 2013]使用$σ+O(1)$额外单词的$O(N)$时间和[Franceschini和Muthukrishnan,ICALP 2007]使用$O(1)$额外单词的$O(N \log N)$时间,用于构建后缀数组,并且它改进了以前在$O(N)$时间中运行的最有效的解决方案,该解决方案使用$σ+ O(1)$额外的字来构造后缀数组和LCP数组,[Nong,TOIS 2013]和[Manzini,SWAT 2004]的组合。
2019-07-13 cs.DS
Fast Computation of $k$-Runs, Parameterized Squares, and Other Generalised Squares
本文证明 $k$-错配重复输出规模为 $O(nk\log k)$,并据此给出 $O(nσ\log σ)$ 枚举与 $O(n\log n)$ 计数不等价参数化平方的算法。
2025-09-02 cs.DS
Adaptive Learning of Compressible Strings
假设一个oracle知道一个字符串$S$,这个字符串对我们来说是未知的,我们想确定它。oracle可以回答"$s$是$S$的子串吗?".在1995年,Skiena和Sundaram指出,在最坏的情况下,任何算法都需要询问Oracle $σn/4 -O(n)$查询,以便能够重建隐藏字符串,其中$σ$是$S$的字母表的大小,$n$是其长度,并给出了一个算法,该算法花费$(σ-1)n+O(σ\sqrt{n})$查询来重建$S$。本文的主要贡献是在弦是可压缩的情况下改进了上述上界。我们首先提出了一个通用的算法,给定一个(可计算的)压缩器,压缩字符串的$τ$位,执行$q=O(τ)$子串查询,这个算法,但是,在指数时间运行。出于这个原因,本文的第二部分侧重于时间效率更高的算法,其查询的数量是由特定的压缩性措施。我们首先表明,任何字符串的长度$n$在一个整数字母表的大小$σ$与$rle$运行可以重建与$q=O(rle (σ+ \log \frac{n}{rle}))$子串查询线性时间和空间。然后,我们提出了一个算法,花$q \in O(σg\log n)$子串查询和运行在$O(n(\log n + \log σ)+ q)$时间使用线性空间,其中$g$是一个最小的直线程序生成的字符串的大小。
2021-10-19 cs.DS
Efficiently Testing Simon's Congruence
西蒙同余$\sim_k$定义如下:如果两个词具有相同的长度不超过$k$的同余集合,则它们是$\sim_k$等价的。我们提出了一种算法,计算,给定两个字$s$和$t$,最大的$k$,其中$s\sim_k t$。我们的算法运行在线性时间$O(|s|+|t|)$时,输入的单词是在整数字母表$\{1,\ldots,|s|+|t|\}$(或其他字母,可以在线性时间排序)。这种方法也导致在一般字母表的情况下的最佳算法。我们的结果是基于一种新的组合方法和一系列有效的数据结构。
2021-03-15 cs.DS cs.FL
Run Compressed Rank/Select for Large Alphabets
给定一个长度为$n$的字符串,该字符串由来自字母表$\{0,1,\ldots,σ{-}1\}$的字母组成,使得$2 \le σ\le r$,我们描述了一种数据结构,该数据结构提供$r \le n / \log^{ω(1)} n$,以$r\log\frac{nσ}{r} + o(r\log\frac{nσ}{r})$位存储字符串,并支持在$O(\log\frac{\log(n/r)}{\log\log n})$时间中的选择和访问查询以及在$O(\log\frac{\log(nσ/r)}{\log\log n})$时间中的排名查询。我们表明,$r\log\frac{n(σ-1)}{r} - O(\log\frac{n}{r})$位是必要的任何这样的数据结构,因此,我们的解决方案是简洁的。我们还描述了一个数据结构,它使用$(1 + ε)r\log\frac{nσ}{r} + O(r)$位,其中$ε> 0$是一个任意常数,具有相同的查询时间,但没有限制$r \le n / \log^{ω(1)} n$。通过简单的减少有色前任问题,我们表明,查询时间是最佳的重要情况下$r \ge 2^{\log^δn}$,为任意常数$δ> 0$。我们实施了我们的解决方案,并将其与最先进的解决方案进行了比较,结果显示,最接近的竞争对手消耗的空间要多31-46%。
2018-02-26 cs.DS
Online Square Detection
在线正方形检测问题是检测一个字符串中第一次出现的正方形,该字符串的字符被一次一个地提供作为输入。回想一下,正方形是一个字符串,它是两个相同字符串的串联。本文提出了一种在有序字母表上的$O(n\logσ)$时间和线性空间中求解该问题的算法,其中$σ$是输入字符串中不同字母的个数。我们的解决方案是相对简单的,不需要太多的内存,不像以前已知的在线算法具有相同的工作时间。此外,我们还提出了一种适用于$O(n\log n)$时间和无序字母表线性空间的算法,尽管该解决方案在相同时间范围内并没有优于之前已知的结果。
2014-11-07 cs.DS
Algorithms for Longest Common Abelian Factors
在本文中,我们考虑的问题,计算两个给定的字符串之间的最长公共阿贝尔因子(LCAF)。我们提出了一个简单的$O(σ~ n^2)$时间算法,其中$n$是字符串的长度和$σ$是字母表的大小,和一个次二次运行时间的解决方案的二进制字符串的情况下,都有线性空间的要求。此外,我们提出了一个修改后的算法,应用一些有趣的技巧和实验表明,由此产生的算法运行速度更快。
2015-02-28 cs.DS
More RLBWT Tricks
Center for Biotechnology and Bioengineering (CeBiB)(生物技术生物工程中心)
针对FM索引和CSA在字母表增大时的性能差异,提出一种基于1阶秩编码的混合索引,通过反向搜索结合单步CSA恢复信息,在合成数据上速度最快,但空间开销较大。
2026-11-06 cs.DS
Improved Approximation for Longest Common Subsequence over Small Alphabets
研究了最长公共子序列(LCS)问题的可逼近性。求解LCS问题的最快算法在输入长度上的基本二次时间内运行,并且已知在强指数时间假设下,二次运行时间无法被击败。然而,除了在一些有限的情况下,LCS的近似计算没有这样的限制。近似算法也很缺乏。当两个给定的字符串在大小为$k$的字母表上时,返回由两个字符串中出现最频繁的符号形成的子序列实现LCS的$1/k$近似。这是一个开放的问题,是否可以在真正的次二次时间($O(n^{2-δ})$时间常数$δ>0$)实现更好的$1/k$近似。最近的一个结果[Rubinstein and Song SODA'2020]表明,只要输入字符串具有相同的长度,在真正的次二次时间中,在二进制字母表上对LCS的$1/2+ε$近似是可能的。在本文中,我们表明,如果一个$1/2+ε$近似($ε>0$)是可实现的二进制LCS在真正的次二次时间时,输入字符串可以是不平等的,然后为每个常数$k$,有一个真正的次二次时间算法,实现了$1/k+δ$近似$k$ -ary字母表LCS的一些$δ>0$。二进制是最难的。我们还表明,对于每个常数$k$,如果给定$k$进制字母表上的两个长度为\emph{equal}的字符串,则可以在真正的次二次时间内获得某个常数$ε>0$的$1/k+ε$逼近,从而将Rubinstein和Song的结果扩展到所有常数大小的字母表。
2021-05-07 cs.CC cs.DS
Subsequence Matching and LCS under Cartesian-Tree Equivalence
Kyushu University(九州大学);Joint Graduate School of Mathematics for Innovation, Kyushu University(九州大学数学创新联合研究生院);University of Electro-Communications(电气通信大学)
本文提出Cartesian树匹配下的子序列匹配与最长公共子序列问题,针对不同字母表提出高效算法及时间下限。
2025-12-30 cs.DS
Minimizing the Minimizers via Alphabet Reordering
本文研究通过字母表重排序最小化字符串 minimizer 集合规模的问题,证明该问题对任意 w≥2 和 k≥1 都是 NP 难的,从而解释了现有方法只能依赖启发式算法而缺乏精确算法的原因。
2024-05-07 cs.DS
Counting Distinct (Non-)Crossing Substrings in Optimal Time
Kyushu University(九州大学);University of Yamanashi(山梨大学);Institute of Science Tokyo(东京科学大学)
本文提出新的算法,能够在一般有序字母表中以O(n)时间计算所有位置k的C(w,k),在线性可排序字母表中以O(n)时间计算所有位置k的N(w,k),并推导出基于字母表假设和计算模型的最优界。
2026-06-04 cs.DS
Pattern matching under DTW distance
在这项工作中,我们考虑动态时间规整(DTW)距离下的模式匹配的问题,潜在的应用在分析生物数据产生的第三代测序的动机。为了测量两个字符串之间的DTW距离,必须将它们“扭曲”,即将字符串中的某些字母加倍以获得两个等长字符串,然后将相应位置的字母之间的距离相加。当字母之间的距离是整数时,我们证明了对于m次运行的模式P和n次运行的文本T:1。有一个O(m + n)时间的算法,它计算从P到T的DTW距离最多为1的所有位置; 2.有一个O(kmn)时间算法,它计算从P到T的DTW距离最多为k的所有位置。作为第二个结果的推论,我们还导出了字母表上一般度量的近似算法。
2022-08-31 cs.DS
Synchronization Strings: Efficient and Fast Deterministic Constructions over Small Alphabets
最近Haeupler和Shahrasbi [HS 17 a]在研究用于纠正插入和删除错误的代码(insdel代码)时引入了同步字符串。同步字符串是字符串中符号索引的编码,并且与适当的解码算法一起,它可以将插入和删除错误转换为标准符号擦除和损坏。这将构造insdel码的问题简化为构造标准纠错码的问题,这更容易理解。除此之外,同步字符串在其他应用中也很有用,例如同步序列和交互式编码方案。令人惊讶的是,[HS 17 a]表明,对于任何错误参数$\varepsilon>0$,在其大小仅取决于$\varepsilon$的字母表上存在任意长度的同步字符串。具体来说,他们获得了$O(\varepsilon^{-4})$的字母表大小,以及在预期时间$O(n^5)$内运行的随机结构。然而,它仍然是一个有趣的问题,找到确定性和更有效的结构。本文从三个方面对文献[HS 17 a]中的构造方法进行了改进:减小了字母表的长度,构造了一个确定性的结构,并给出了一个更快的算法。在此过程中,我们引入了一个新的组合对象,并建立了一个新的同步字符串和insdel码之间的联系-这样的代码可以用一种简单的方式来构造同步字符串。这个新的连接补充了[HS 17 a]中发现的连接,并且可能是独立的兴趣。在一个独立的工作[HS 17 c]中,Haeupler和Shahrasbi也给出了任意长度(甚至无限长)的同步弦的确定性结构。…
2017-10-29 cs.DS cs.IT math.IT
Minimal unique palindromic substrings after single-character substitution
回文是一个字符串,它的正反读都是一样的。如果$w$在$T$中只出现一次,并且$w$的任何适当回文子串在$T$中至少出现两次,则字符串$T$的回文子串$w$被称为$T$的最小唯一回文子串(MUPS)。MUPS用于回答最短唯一回文子串问题,这是由分子生物学激发的[Inoue et al.,2018年]。给定长度为$n$的字符串$T$,可以在$O(n)$时间内计算$T$的所有MUPS。在本文中,我们研究的问题,更新的MUPS的设置时,输入字符串$T$中的一个字符被替换为另一个字符。我们首先分析了当一个字符被替换时,MUPS变化的数目$d$,并表明$d$在$O(\log n)$中。此外,我们提出了一种算法,使用$O(n)$时间和空间的预处理,并更新的MUPS在$O(\logσ+ (\log\log n)^2 + d)$时间,其中$σ$是字母表的大小。我们还提出了一个变体的算法,它运行在最佳的$O(1+d)$时间时,字母表的大小是恒定的。
2021-10-02 cs.DS
Computing Longest (Common) Lyndon Subsequences
给定一个长度为$n$的字符串$T$,其字符来自大小为$σ$的有序字母表,它的最长林登子序列是$T$的最长子序列,该子序列是林登字。我们提出的算法,找到这样一个子序列在$O(n^3)$时间与$O(n)$空间,或在线$O(n^3 σ)$空间和时间。我们的第一个结果可以扩展到使用$O(n^3)$空间在$O(n^4 σ)$时间内找到两个长度为$n$的字符串的最长公共林登子序列。
2022-01-18 cs.DS
Subsequence Covers of Words
该研究提出新型单词覆盖s-cover,给出多项式有界字母表下的s-cover检测及常数字母表下最短s-cover的线性时间算法,并给出s-本原词长度的指数上下界且改进了已有上界。
2025-09-06 cs.DS
$t$-Covering Arrays Generated by a Tiling Probability Model
$t-\a$覆盖阵列是$m\times n$矩阵,具有来自大小为$α$的字母表的条目,使得对于$t$行的任何选择以及字母表的任何有序的$t$字母串,存在一列,使得该列中的行的“值”与字母串的“值”匹配。我们使用Lovász局部引理结合一个新的基于平铺的概率模型,以提高上界的最小列数$N=N(m,t,α)$的$t-\a$覆盖阵列。
2010-11-01 cs.DS math.CO math.PR
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
Generation, Ranking and Unranking of Ordered Trees with Degree Bounds
研究了节点具有最大度$Δ$的无标号有序树的生成、排序和去排序问题。这类树代表了化学树的推广。化学树是一种无标号树,其中没有节点的度大于4。通过允许化学树的每个节点最多有$Δ$子节点而不是4个,我们将得到化学树的泛化。在这里,我们介绍了一个新的编码在一个字母表的大小为4表示无标记有序树的最大程度的$Δ$。我们使用这种编码生成这些树在A-顺序与常数的平均时间和O(n)的最坏情况下的时间。由于给定的编码,在预先计算大小和时间O(n^2)的情况下(假设$Δ$是常数),排序和取消排序算法也都采用O(n)和O(nlogn)时间复杂度设计。
2016-03-03 cs.CC cs.DM 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
Successor-bispecial strings with minimum Burrows--Wheeler transform runs
Postgraduate Program in Informatics, Federal University of Paraná(巴拉那联邦大学信息学研究生项目);Federal University of Technology – Paraná(巴拉那联邦技术大学)
研究字母表上后继右特殊字符串的最小BWT游程数,构造了阶为3的显式族,其游程数为σ²+2,并分析了χ/r比值的界。
2026-06-18 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
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
Linear-time Minimization of Wheeler DFAs
Wheeler DFA(WDFA)是有限状态自动机的一个子类,在压缩数据结构的新兴领域中发挥着重要作用:与一般自动机相反,WDFA可以存储在每个边缘的$\logσ+ O(1)$位中,$σ$是字母表的大小,并支持对它们识别的语言的子串闭包的最佳时间模式匹配查询。实现进一步压缩的一个重要步骤是最小化。当输入$\mathcal A$是一个一般的确定性有限状态自动机(DFA),国家的最先进的是由经典的Hopcroft算法,它运行在$O(|\mathcal A|\log |\mathcal A|)$时间。该算法是Wheeler DFA唯一现有的最小化算法的核心,继承了其复杂性。在这项工作中,我们表明,最小WDFA相当于一个给定的输入WDFA可以计算在线性$O(|\mathcal A|)$时间。当运行在从真实DNA数据集构建的de Bruijn WDFA上时,我们算法的实现以每秒超过100万个节点的速度将节点数量从14%减少到51%。
2021-11-03 cs.DS
Optimal Las Vegas reduction from one-way set reconciliation to error correction
假设我们有两个参与者$A$和$C$,其中参与者$A$有一个字符串$s[0..u-1]$,参与者$C$有一个字符串$t[0..u-1]$,两个参与者都不知道对方的字符串。假设$s$和$t$都在整数字母表$[σ]$上,其中第一个字符串包含$n$非零条目。我们希望回答以下基本问题。假设$s$和$t$在大多数$k$位置上不同,那么参与者$A$需要向参与者$C$发送多少比特,以便他可以确定地恢复$s$?此外,播放器$A$需要花费多少时间来计算发送的比特,播放器$C$需要多少时间来恢复字符串$s$?这个问题有一定数量的应用,例如在数据库中,其中双方中的每一方都拥有一组$n$键值对,其中键来自$[u]$,值来自$[σ]$,通常是$n\ll u$。在本文中,我们展示了一个时间和消息大小的最佳拉斯维加斯减少从这个问题的问题的系统误差校正的$k$错误的字符串长度$Θ(n)$的大小$2^{Θ(\logσ+\log (u/n))}$的字母表。由减少引起的额外运行时间对于参与者$A$是线性随机的,并且对于参与者$B$是线性确定的,但是校正确定地起作用。当使用流行的Reed-Solomon码时,该简化给出了一个协议,该协议传输$O(k(\log u+\logσ))$比特,并且对于$k$的所有值都在时间$O(n\cdot\mathrm{polylog}(n)(\log u+\logσ))$中运行。时间对于玩家$…
2015-12-16 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