A Fast String Matching Algorithm Based on Lowlight Characters in the Pattern
提出了一种新的字符串匹配算法,该算法不从模式的左端或右端进行匹配,而是从一个特定的位置进行匹配。与Knuth-Morris-Pratt算法和Boyer-Moore算法相比,新算法在选择比较起始位置时更加灵活。该选项确实节省了成本。
2014-01-28 cs.DS
Quantum Algorithms for the Most Frequently String Search, Intersection of Two String Sequences and Sorting of Strings Problems
我们研究的算法解决三个问题的字符串。第一个是最常见的字符串搜索问题。问题如下。假设我们有一个长度为$k$的$n$字符串序列。问题是找到在序列中出现最频繁的字符串。我们提出了一个量子算法,具有查询复杂度$\tilde{O}(n \sqrt{k})$。与需要$Ω(nk)$查询的确定性算法相比,该算法显示出速度的提高。第二个是搜索两个字符串序列的交集。所有字符串都具有相同的长度$k$。第一集合的大小是$n$,第二集合的大小是$m$。我们提出了一个量子算法,具有查询复杂度$\tilde{O}((n+m) \sqrt{k})$。与需要$Ω((n+m)k)$查询的确定性算法相比,该算法具有更高的速度。第三个问题是长度为$k$的$n$字符串的排序。一方面,众所周知,量子算法无法比经典算法更快地对对象进行渐进排序。另一方面,我们专注于对不是任意对象的字符串进行排序。我们提出了一个量子算法,具有查询复杂度$O(n (\log n)^2 \sqrt{k})$。与需要$Ω((n+d)k)$查询的确定性算法(基数排序)相比,该算法显示出速度的提高,其中$d$是字母表的大小。
2020-01-07 cs.DS quant-ph
Fast $q$-gram Mining on SLP Compressed Strings
我们提出了简单而有效的算法,用于计算$q$ -克频率的字符串表示在压缩的形式,即,作为一个直线程序(SLP)。给定一个表示字符串$T$的大小为$n$的SLP,我们提出了一个计算$T$中$q$ -gram出现频率的$O(qn)$时空算法.计算实验表明,我们的算法和它的变化是实用的小$q$,实际上运行速度更快的各种真正的字符串数据,相比,工作在未压缩文本的算法。我们还讨论了字符串数据的数据采掘和分类中的应用,我们的算法对此很有用。
2011-07-13 cs.DS
siEDM: an efficient string index and search algorithm for edit distance with moves
虽然存在用于高度重复的文本集合的几个自索引,但是开发具有编辑操作的索引和搜索算法仍然是一个挑战。移动编辑距离(EDM)是一种字符串到字符串的距离度量,除了将一个字符串转换为另一个字符串的顺序编辑操作之外,还包括子字符串移动。虽然EDM的计算问题是棘手的,它有广泛的潜在应用,特别是在近似字符串检索。尽管计算EDM的重要性,一直没有有效的方法来索引和搜索大型文本集合的基础上的EDM措施。我们提出了第一个算法,命名为字符串索引的编辑距离与移动(siEDM),索引和搜索字符串与EDM。siEDM算法通过利用编辑敏感解析(ESP)背后的思想来构建索引结构,ESP是一种有效的算法,能够近似计算EDM,并保证精确EDM的上界和下界。siEDM有效地修剪的空间搜索查询字符串的方法,这使得快速查询搜索与ESP相同的保证。我们实验测试的能力,siEDM索引和搜索字符串的基准数据集,我们展示了siEDM的效率。
2016-04-08 cs.DS
Combinatorial Algorithms for String Sanitization
字符串数据通常被传播以支持诸如基于位置的服务提供或DNA序列分析之类的应用。然而,这种传播可能会暴露模拟机密知识的敏感模式。在本文中,我们考虑的问题,消毒字符串隐藏敏感模式的出现,同时保持数据的效用,在两个设置相关的许多常见的字符串处理任务。在第一个设置中,我们的目标是生成最小长度的字符串,保留所有非敏感模式的出现顺序和频率。这样的串允许基于串的顺序性质和模式频率准确地执行任务。为了构造这样一个字符串,我们提出了一个时间最优算法,TFS-ALGO。我们还提出了另一种时间最优算法,PFS-ALGO,它保留了部分顺序的外观不敏感的模式,但产生一个更短的字符串,可以更有效地分析。这两种算法生成的字符串都是通过连接输入字符串的非敏感部分来构造的。然而,可以通过“反转”串联操作来检测敏感模式。作为回应,我们提出了一个启发式,MCSR-ALGO,它取代了字母的字符串输出的算法精心挑选的字母,使敏感的模式不会恢复,不可信的模式不会被引入,并防止出现虚假的模式。在第二种设置中,我们的目标是生成一个字符串,它与原始字符串的编辑距离最小,此外还保留了所有非敏感模式的出现顺序和频率。为了构造这样一个字符串,我们提出了一个算法,ETFS-ALGO,基于解决特定的近似正则表达式匹配的情况。
2019-12-28 cs.DS
Pattern Matching in Trees and Strings
本文研究了组合模式匹配的有效算法设计。更具体地说,我们研究算法的树匹配,字符串匹配,字符串匹配在压缩文本。
2007-08-31 cs.DS
Fast Algorithms for Exact String Matching
给定长度为$n$的模式字符串$P$和长度为$m$的查询字符串$T$,其中$P$和$T$的字符是从大小为$Δ$的字母表中提取的,{ \em精确字符串匹配}问题包括在$T$中查找所有出现的$P$。对于这个问题,我们提出的算法,在$O(nΔ^2)$时间预处理$P$,基本上确定$sparse(P)$,一个很少出现的子串$P$,然后用它来找到$P$在$T$有效的出现。我们的算法需要$O(m)$的最坏情况下的搜索时间,和$O(m/min(|sparse(P)|, Δ))$的预期搜索时间,其中$|sparse(P)|$至少是$δ$(即$P$中不同字符的数量),并且对于大多数模式字符串,它被观察到是$Ω(n^{1/2})$。
2015-09-30 cs.DS
The Greedy Superstring Algorithm Achieves Ratio 2 for Strings of Length 6 Already
JetBrains Research(JetBrains 研究院)
本文针对最短公共超串问题,证明贪心算法对长度≥6的字符串近似比达2,且确定长度为3的字符串的近似比为9/5,推进了悬而未决40年的贪心超串猜想研究。
2026-08-25 cs.DS
Cadences in Grammar-Compressed Strings
终止符是对应于基础字符串中相等字符的索引的结构最大算术级数。本文提出了一种多项式时间检测文法压缩二进制串中3-终止的算法。该算法也转化为一个线性时间检测算法的3-终止在未压缩的二进制字符串。此外,本文证明了几个变种的韵律检测问题是NP-完全的语法压缩字符串。因此,长度为3的模式的等距子序列匹配问题是NP-完全的语法压缩的三进制字符串。
2020-08-12 cs.DS
Assessing the best edit in perturbation-based iterative refinement algorithms to compute the median string
字符串是生物数据(如DNA、RNA和蛋白质序列)的自然表示。找到一个字符串,总结了一组序列的问题有直接的应用在相对压缩算法的基因组和蛋白质组分析,其中参考序列需要选择。中值字符串已经被用作不同域中的一组字符串的代表。然而,这些问题的一些公式是NP完全的。可替代地,已经提出了通过应用编辑操作来迭代地细化初始粗略解的启发式方法。最近,我们研究了最佳编辑操作的选择,以加快收敛,而不会破坏近似中值字符串的质量。我们提出了一种新的算法,优于最先进的启发式近似的中值字符串的收敛速度方面的估计的扰动的影响,在最小化的表达式,定义的中值字符串。我们提出了语料库的比较实验来验证这些结果。
2019-12-04 cs.DS
A Family of Approximation Algorithms for the Maximum Duo-Preservation String Mapping Problem
在Maximum Duo-Preservation String Mapping问题中,我们给出两个字符串,并希望将前者的字母映射到后者的字母,以便最大化duo的数量。duo是一对连续的字母,它们以相同的顺序映射到一对连续的字母。这是对研究得很好的最小公共字符串划分问题的补充,其目标是将前一个字符串划分为可以排列和连接的块以获得后一个字符串。最大Duo-Preservation字符串映射是APX困难的。经过一系列改进后,Brubach [WABI 2016]给出了多项式时间$3.25$ -近似算法。我们的主要贡献是,对于任何$ε>0$存在一个多项式时间的$(2+ε)$ -近似算法。与Boria等人之前的解决方案类似。[CPM 2016],我们的算法使用局部搜索技术。然而,这只在一定的初步贪婪过程之后使用,这给了我们更多的结构,并使更一般的局部搜索成为可能。我们补充这一点与一个专门版本的算法,实现$2.67$ -近似在二次时间。
2017-05-30 cs.DS
Reversible Programming: A Case Study of Two String-Matching Algorithms
字符串匹配是算法中的一个基本问题。本研究探讨两个可逆的字符串匹配算法的发展和建设:一个天真的字符串匹配算法和拉宾-卡普算法。该算法用于引入可逆计算的概念,从基本的可逆编程技术开始,以更先进的考虑多项式哈希更新函数的注入拉宾-卡普算法。其结果是两个干净的输入保持可逆算法,不需要额外的空间,并具有相同的渐近时间复杂度作为他们的经典不可逆原件。这项研究的目的是有助于身体的可逆算法和可逆规划的纪律。
2022-11-22 cs.DS cs.PL
Quadratic-time Algorithm for the String Constrained LCS Problem
最近提出了求两个主序列的最长公共子序列的问题(STR-IC-LCS)。它是约束最长公共子序列问题的一个变种。由于STR-IC-LCS问题的已知算法都是二次时间算法,本文提出的二次时间算法明显快得多。
2011-06-30 cs.DS
An output-sensitive algorithm for the minimization of 2-dimensional String Covers
串覆盖是分析一维数据准周期性的有力工具,在自动机理论、计算生物学、编码和事务数据分析中有着广泛的应用。字符串$T$的\emph{cover}是这样的字符串$C$,其中$T$的每个字母都位于$C$的某个出现中。字符串覆盖已经以多种方式进行了推广,导致了\emph{k-covers},\emph{$λ$-covers},\emph{approximate covers},并在不同的上下文中进行了研究,如\emph{indeterminate strings}。在本文中,我们将字符串覆盖推广到二维数据(如图像)的上下文中。我们展示了它们如何可用于从图像中提取纹理和识别点阵数据中的原始细胞。这在图像压缩、程序地形生成和晶体学中有有趣的应用。
2019-05-02 cs.DS
Fast Packed String Matching for Short Patterns
在文本中搜索模式的所有出现是计算机科学中的一个基本问题,在许多其他领域,如自然语言处理,信息检索和计算生物学的应用。在过去的二十年里,一个总的趋势已经出现,试图利用字RAM模型的力量,以加快经典的字符串匹配算法的性能。在这个模型中,算法对长度为w的字进行运算,对字符块进行分组,对字进行算术和逻辑运算需要一个时间单位。在本文中,我们使用专门的字长压缩字符串匹配指令,基于英特尔流SIMD扩展(SSE)技术,设计非常快速的字符串匹配算法的情况下,短模式。从我们的实验结果证明,尽管他们的二次最坏情况下的时间复杂度,新提出的算法成为明显的赢家,平均短模式,在文献中已知的最有效的算法相比。
2012-09-28 cs.DS cs.IR cs.PF
Highly Scalable Algorithms for Robust String Barcoding
字符串条形码是最近引入的用于基于基因组的微生物鉴定的技术。在本文中,我们描述了工程的高度可扩展的算法,强大的字符串条码。我们的方法能够在设备齐全的工作站上基于数百种微生物的全基因组序列进行细菌选择,并且可以很容易地并行化,以进一步将适用范围扩展到数千种细菌大小的基因组。随机生成的和NCBI的基因组数据的实验结果表明,全基因组为基础的选择结果在一些几乎匹配的问题的信息理论的下限。
2005-02-14 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
Algorithm to derive shortest edit script using Levenshtein distance algorithm
字符串相似性、最长公共子序列和最短编辑脚本是相互关联的三元组问题。通过求解最长公共子序列问题来生成编辑脚本有不同的算法。提出了一种利用字符串相似性问题生成最短编辑脚本的算法。为此,我们使用著名的Levenshtein距离算法,该算法计算表示从0到n的字符串之间的相似度的数值,其中n是最长输入字符串的长度,并产生包含插入,删除和替换指令的最短编辑脚本。
2022-08-18 cs.DS
A Fixed-Parameter Algorithm for Minimum Common String Partition with Few Duplications
受基因组重排研究的启发,NP难的最小公共串划分问题要求,给定两个字符串,将两个字符串分成一组相同的块。我们考虑这个问题的扩展到不平衡的字符串,使一些元素可能不会被任何块覆盖。我们提出了一个有效的固定参数算法的参数数k的块和最大出现d的一个字母在任一字符串。然后,我们评估该算法的细菌基因组和合成数据。
2013-07-30 cs.CE cs.DS q-bio.QM
Technology Beats Algorithms (in Exact String Matching)
在过去的40年里,已经开发了120多种算法来进行精确的字符串匹配。我们通过实验表明,\naive{}算法利用SIMD指令的现代CPU(与符号比较,在一个特殊的顺序)是最快的一个模式的长度高达约50个符号和非常好的较长的模式和小的字母。该算法分别应用SSE 2或AVX2指令并行比较16或32个字符。此外,它使用循环剥离,以进一步加快搜索阶段。我们尝试了几种顺序来比较模式符号,并且它们在文本中的概率的增加顺序是最好的。
2016-12-05 cs.DS
Scalable String and Suffix Sorting: Algorithms, Techniques, and Tools
本文主要研究两个基本的排序问题:字符串排序和后缀排序。第一部分考虑共享内存多核机器上的并行字符串排序,第二部分使用归纳排序原理进行外部内存后缀排序,第三部分使用新的分布式算法大数据框架Thrill进行分布式外部内存后缀排序。
2018-08-02 cs.DC cs.DS
Suffix tree-based linear algorithms for multiple prefixes, single suffix counting and listing problems
给定两个字符串$T$和$S$以及一组字符串$P$,对于每个字符串$p \in P$,考虑以$p$作为其前缀、以$S$作为其后缀的$T$的唯一子字符串。然后会出现两个问题;第一个问题是计算这样的子串,第二个问题是列出所有这样的子串。在本文中,我们描述了线性时间,线性空间后缀树为基础的算法这两个问题。更具体地说,我们描述了用于计数问题的$O(|T| + |P|)$时间算法,以及用于列表问题的$O(|T| + |P| + \#(ans))$时间算法,其中$\#(ans)$是指总共列出的字符串的数量,并且$|P|$是指$P$中的字符串的总长度。我们还考虑了反向版本的问题,其中一个前缀条件字符串和多个后缀条件字符串,而不是,并同样描述线性时间,线性空间算法来解决它们。
2022-04-18 cs.DS
Newer method of string comparison: the Modified Moving Contracting Window Pattern Algorithm
本文提出了一种计算字段相似度的新算法--改进的移动收缩窗口模式算法(CMCWPM)。它在很大程度上依赖于Yang et al.(2001)以前的工作,纠正了以前的工作,在以前的工作中,标记为无法进一步模式匹配的字符没有被视为子字段之间的边界,偶尔会导致字段相似性的分数高于预期。提供了一个参考Python实现。
2016-05-03 cs.DS
Compressibility-Aware Quantum Algorithms on Strings
对于弦上的许多基本问题,已经建立了次线性时间量子算法。这项工作表明,新的,更快的量子算法可以设计时,字符串是高度可压缩的。本文重点研究了两种流行的、具有重要理论意义的压缩算法--Lempel-Ziv 77算法(LZ 77)和游程编码的Burrows-Wheeler变换(RL-BWT),得到了如下结果。我们首先提供了一个运行在$\tilde{O}(\sqrt{zn})$时间的量子算法,用于找到具有$z$因子的输入字符串$T[1..n]$的LZ 77因子分解。结合多个现有的结果,这产生了一个$\tilde{O}(\sqrt{rn})$时间量子算法,用于找到具有$r$ BWT运行的RL-BWT编码。请注意,$r = \tildeΘ(z)$。我们补充这些结果与下界证明我们的算法是最佳的(polylog因素)。接下来,我们研究压缩索引的问题,在那里我们提供了一个$\tilde{O}(\sqrt{rn})$时间量子算法,用于构建一个最近设计的$\tilde{O}(r)$空间结构,具有与后缀树相同的能力。这种数据结构,然后应用到许多问题,以获得次线性时间量子算法时,输入是高度可压缩的。例如,我们证明了两个总长度为$n$的字符串的最长公共子串可以在$\tilde{O}(\sqrt{zn})$时间内计算,其中$z$是它们级联的LZ 77因子分解中的因子数。当$z$足够小时,这胜过了最著名的$\til…
2023-02-14 cs.DS
Parallel String Sample Sort
我们讨论如何字符串排序算法可以在现代多核共享内存机器上并行化。作为对原子对象的最佳顺序字符串排序算法和成功的并行排序算法的综合,我们提出了字符串样本排序。该算法有效地利用了存储层次结构,使用额外的字级并行,并在很大程度上避免了分支误预测。此外,我们并行化多键快速排序和基数排序的变体,这些变体在某些情况下也很有用。
2013-05-06 cs.DC cs.DS
A Novel Algorithm for String Matching with Mismatches
本文提出了一种在线的字符串模式匹配算法。我们研究的问题通常被称为不匹配的字符串匹配,其目标是报告当模式与文本中的每个位置对齐时匹配的字符数。我们提出的新方法是基于模式和文本中单个字符的频率。该算法以简单数组的形式占用最少的空间,从而减少了维护后缀树或自动机等复杂数据结构的开销。
2016-03-10 cs.DS
Finding approximate palindromes in strings
我们引入了一种新的字符串中的近似回文的定义,并提供了一个算法,以找到所有最大的近似回文在一个字符串中的$k$错误。我们的定义是基于通常的编辑操作的近似模式匹配,和算法,我们给一个字符串的大小$n$在一个固定的字母表,运行在$O(k^2 n)$时间。我们还讨论了两个实现相关的改进算法,并通过实验和平均情况下的分析,在实践中证明其有效性。
2003-09-23 cs.DS
A fast implementation of the good-suffix array for the Boyer-Moore string matching algorithm
本文针对Boyer-Moore算法中好后缀表计算存在冗余操作的问题,基于对模式的精细分析提出一种快速实现,实验证明其两个版本在几乎所有测试场景中均为最快。
2024-02-26 cs.DS
Fast and linear-time string matching algorithms based on the distances of $q$-gram occurrences
给定一个长度为$n$的文本$T$和一个长度为$m$的模式$P$,字符串匹配问题是一个在$T$中找到所有$P$的任务。在这项研究中,我们提出了一种算法,解决了这个问题,在$O((n + m)q)$时间考虑到两个相邻的出现之间的距离相同的$q$ -gram包含在$P$。我们还提出了一个理论上的改进,它运行在$O(n + m)$的时间,虽然它不一定是更快的实践。我们比较了我们和现有算法在各种真实和人工数据集上的执行时间,例如英文文本,基因组序列和斐波那契字符串。实验结果表明,我们的算法是一样快的国家的最先进的算法在许多情况下,特别是当一个模式经常出现在一个文本。
2020-04-13 cs.DS
A Comparative Study on String Matching Algorithm of Biological Sequences
字符串匹配算法在计算生物学中起着至关重要的作用。生物序列的功能和结构关系由该序列的相似性决定。为此,研究人员应该意识到生物序列的相似性。生物序列间的相似性研究是揭示基因间进化和遗传关系的重要研究领域。本文研究了不同类型的字符串匹配算法,观察了它们的时间复杂度和空间复杂度。在这项研究中,我们评估了生物序列测试算法的性能。
2014-01-29 cs.CE cs.DS
Near-Optimal Quantum Algorithms for String Problems
我们研究了几个基本弦问题的量子算法,包括最长公共子串,字典序最小弦旋转和最长平方子串。这些问题自1970年代以来在弦学文献中得到了广泛的研究,并且被认为是可以用近似线性时间经典算法解决的。在这项工作中,我们给出了解决这些问题的量子算法,具有接近最优的查询复杂度和时间复杂度。具体而言,我们表明:最长公共子串可以通过量子算法在$\tilde O(n^{2/3})$时间内求解,改进了Le Gall和Seddighin(2020)最近的$\tilde O(n^{5/6})$时间算法。我们的算法使用了MNRS量子行走框架,以及字符串同步集(Kempa和Kociumaka,2019)和广义差覆盖的精心组合。- 字典序最小字符串旋转可以通过$n^{1/2 + o(1)}$时间的量子算法来解决,改进了Wang和Ying(2020)最近的$\tilde O(n^{3/4})$时间算法。我们设计了我们的算法,首先给出了一个新的经典分治算法在近线性时间的基础上排除规则,然后加快它的二次使用嵌套Grover搜索和量子最小发现。- 最长平方子串可以通过量子算法在$\tilde O(\sqrt{n})$时间内求解。我们的算法是Le Gall和Seddighin(2020)针对最长回文子串问题的算法的改编,但使用了额外的技术来克服二进制搜索不再适用的困难。我们的技术自然地扩展到其他相关的字符串问题,如最长重复子…
2021-10-20 cs.DS quant-ph
Near-Optimal Dynamic Time Warping on Run-Length Encoded Strings
我们给出了一个$\tilde O(n^2)$时间算法,用于计算两个字符串之间的精确动态时间弯曲距离,其行程长度编码的大小至多为$n$。这与已知(条件)下限相匹配(直至对数因子),并且应与之前的最快$O(n^3)$时间精确算法和$\tilde O(n^2)$时间近似算法进行比较。
2023-02-13 cs.DS
Alternative Algorithms for Lyndon Factorization
我们提出了两种变化的杜瓦尔算法计算林登分解的一个字。第一种算法是针对小字母表的情况设计的,并且对于包含字母表中最小字符的串,能够跳过字符串的显著部分。实验结果表明,该算法比Duval的原算法速度快十倍以上,在长DNA串的情况下也有明显的提高。第二个算法,给定一个长度为$ρ$的游程编码字符串$R$,计算$R$在$O(ρ)$时间和恒定空间中的林登因子分解。
2014-07-11 cs.DS
An External-Memory Algorithm for String Graph Construction
最近的一些结果已经引入了外部存储器算法来计算一组字符串的自索引,主要是通过计算输入字符串的Burrows-Wheeler变换(BWT)。这些结果的动机来自生物信息学,其中大量的短字符串(称为读取)被常规地产生和分析。在该领域中,一个基本问题是从未知基因组中提取的大量短得多的样本中组装基因组。目前用来解决这个问题的方法是内存密集型的。这一事实并不预示着基因组数据的可用性正在不断增加。在基因组组装中使用的数据结构是字符串图,其中顶点对应于样本,弧表示两个重叠的样本。在本文中,我们解决一个开放的问题:设计一个外部存储器算法来计算字符串图。
2015-06-11 cs.DS q-bio.GN
A Critical Pair Enumeration Algorithm for String Diagram Rewriting
Johns Hopkins University(约翰霍普金斯大学);University of Washington(华盛顿大学);University of Technology of Compiègne(贡比涅技术大学);Universidad Nacional de Córdoba(科尔多瓦国立大学);Tallinn University of Technology(塔林理工大学);University of São Paulo(圣保罗大学);National Institute of Informatics(日本国立情报学研究所);Ochanomizu University(御茶水女子大学)
本文提出了一种用于字符串图重写的自动化关键对枚举算法,适用于无弗罗贝尼乌斯结构的对称张量范畴。
2026-03-10 cs.DS math.CT
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
Efficient algorithms for enumerating maximal common subsequences of two strings
本研究针对两字符串最大公共子序列枚举问题,提出三种不同时空复杂度的高效算法,分别适配不同的资源与输出效率需求,部分结构还支持条件式MCS检索。
2023-07-20 cs.DS
An Algorithm for the Longest Common Subsequence and Substring Problem for Multiple Strings
本文针对多字符串场景,提出一种求解最长公共子序列与子串问题的算法,该问题要求找到同时为多个X串的子序列且为多个Y串的子串的最长字符串。
2024-11-24 cs.DS
An Algorithm for the Constrained Longest Common Subsequence and Substring Problem
本文针对带有约束字符串的两个字符串的最长公共子序列与子串问题,提出了一种寻找同时满足子序列、子串及约束条件的最长字符串的算法。
2023-08-02 cs.DS
A local search 2.917-approximation algorithm for duo-preservation string mapping
本文研究了{ \em最大双保留字符串映射}({ \sc Max-Duo})问题,它是已有研究的{ \em最小公共字符串划分}({ \sc MCSP})问题的补充.这两个问题在许多领域都有应用,包括文本压缩和生物信息学。受早期局部搜索算法的启发,我们提出了一种改进的近似,并表明其性能比不大于${35}/{12} < 2.917$。这优于{ \sc Max-Duo}的当前最佳$3.25$近似。我们的算法的性能分析是通过一个复杂而有趣的摊销。我们的算法的局部间隙的两个下界也提供了。
2017-02-07 cs.DM cs.DS
Revisiting the Folklore Algorithm for Random Access to Grammar-Compressed Strings
针对语法压缩字符串随机访问实用研究不足的问题,本文修改了乔姆斯基范式下的民间传说随机访问算法使其适配通用语法,验证了其实际运行速度快、内存效率高的优势。
2024-07-11 cs.DS
Modelling the Eulerian Path Problem using a String Matching Framework
著名的欧拉路径问题可以在多项式时间内求解(更确切地说,存在一个线性时间算法)。在本文中,我们使用字符串匹配的框架模型的问题,然后开始这个问题的一个变种,称为(2,1)-STRING-MATCH问题(这实际上是一个推广的欧拉路径问题)的算法研究。然后,我们给出了(2,1)-串匹配问题的一个多项式时间算法,这是本文最重要的结果。具体来说,我们得到了Omega(n)的下界和O(n^{2})的上界。
2005-08-21 cs.DS
Sublinear Algorithms for Approximating String Compressibility
我们提出的问题,近似的可压缩性的字符串相对于一个固定的压缩方案,在次线性时间。我们详细研究了两种流行的无损压缩方案:行程长度编码(RLE)和Lempel-Ziv(LZ),并提出了近似压缩性的次线性算法。我们还给出了几个下界,表明我们的算法,这两个计划不能显着改善。我们对LZ的研究产生了一些结果,这些结果的兴趣超出了我们最初要研究的问题。特别是,我们证明了组合结构引理的压缩性的字符串相对于Lempel-Ziv的不同的短子串的数量包含在它。此外,我们表明,近似的压缩性相对于LZ是近似的支持大小的分布。
2007-06-08 cs.DS
An innovative platform to improve the performance of exact string matching algorithms
字符串精确匹配是计算机科学应用中的一个重要问题。不幸的是,精确字符串匹配算法的性能(即执行时间)无法满足这些应用程序的需求。本文提出了一个通用的平台,称为PXSMAlg平台,以改善现有的精确字符串匹配算法的执行时间。该平台的功能是使用MPI模型在主或从范例上并行化精确字符串匹配算法。PXSMAlg平台的并行化过程是通过将文本分成几个部分并同时处理这些部分来完成的。这样可以缩短精确字符串匹配算法的执行时间。通过在PXSMAlg平台上应用快速搜索算法,对PXSMAlg平台进行了仿真,以展示其性能。仿真结果表明,快速搜索的执行时间显着改善,因此在PXSMAlg平台的极端竞争力。
2010-02-11 cs.DC cs.DS
Parallel Algorithm for Longest Common Subsequence in a String
在模式识别和匹配领域中,寻找最长公共子序列是一个非常重要的问题。本文提出了一种基于并行计算的算法。我们使用OpenMPAPI包作为中间件将数据发送到不同的处理器。我们已经测试了我们的算法在一个系统中有四个处理器和2 GB的物理内存。最好的结果表明,并行算法的性能(计算速度)提高了3.22。
2013-06-19 cs.DS
String comparison by transposition networks
计算字符串或序列比对是比较字符串的经典方法,并且在许多计算领域(诸如信号处理和生物信息学)中具有应用。半局部字符串对齐是这种方法的最新推广,其中给定字符串和另一个字符串的所有子串的对齐同时计算,没有额外的渐近成本。在本文中,我们表明,有一个密切的联系,半本地字符串对齐和某一类传统的比较网络被称为换位网络。转置网络方法可以用于以统一的形式表示不同的字符串比较算法,并且在某些情况下提供对现有算法的概括或改进。这种方法使我们能够获得新的算法稀疏半本地字符串比较和比较高度相似和高度不相似的字符串,以及运行长度压缩字符串。我们的结论是,换位网络方法是一个非常通用和灵活的方式来理解和改进不同的字符串比较算法,以及它们的有效实现。
2009-03-20 cs.DM cs.DS
Practical Algorithmic Techniques for Several String Processing Problems
数据采掘和知识发现领域使用大量的文本数据,这些数据需要被有效地处理。特定的问题,如寻找一组有序集的最大权重有序公共子集或搜索文本中的特定模式,经常发生在这种情况下。在本文中,我们提出了几个新的和实用的算法技术处理文本数据(字符串),以有效地解决多个问题。我们的技术利用有效的字符串算法和数据结构,如KMP,后缀数组,尝试和确定性有限自动机。
2009-12-04 cs.DS cs.FL
$LCSk$++: Practical similarity metric for long strings
本文提出了一种新的长串相似性度量方法$LCSk$ ++,并给出了一种有效的计算算法。随着实践中出现的字符串的大小不断增加,例如植物和动物的大基因组,经典算法如最长公共子序列(LCS)由于要求的计算复杂性而失败。最近,Benson等人定义了一个相似性度量,命名为$LCSk$。通过放宽$k$长度的子串不应该重叠的要求,我们将它们的定义扩展到一个新的度量。给出了一个在实际随机模型下计算字符串$X$和$Y$的$LCSk$ ++的有效算法,其复杂度为$O((|X|+|Y|)\log(|X|+|Y|))$.该算法的设计考虑到了实现的简单性。此外,我们还描述了如何调整它来计算$LCSk$,这给出了在原始$LCSk$论文中提出的$O(|X|\dot|Y|)$算法的改进。
2014-07-09 cs.DS
An Optimal Algorithm for Binary Closest String
Max Planck Institute for Informatics(马克斯·普朗克计算机科学研究所);Rutgers University(罗格斯大学)
针对二元最近字符串问题,提出一个运行时间为O*(4^d)的随机算法,匹配了细粒度下界,达到条件最优。
2026-05-29 cs.DS
Bouma2 - A Quasi-Stateless, Tunable Multiple String-Match Algorithm
Bouma 2算法试图通过提出一种“准无状态”方法来挑战流行的“有状态”精确字符串匹配范例。我们声称,使用状态机来解决多个精确字符串匹配问题引入了一个隐藏的人工约束,即消费顺序依赖,这会导致不必要的开销。Bouma 2在这个意义上不受限制;我们假设这允许内存效率和改进的性能与其状态机等价物。Bouma 2预处理问题的核心是一个加权的线性规划问题,可以针对内存占用和性能优化进行调整。具体而言,这使得Bouma 2对输入敏感,因为可以根据输入特性进行调谐。评估Bouma 2对Aho-Corasick变体的流行的Snort入侵防御系统,我们证明了一倍的吞吐量,同时使用约10%的内存。
2012-09-20 cs.DS
On the cyclic regularities of strings
字符串中的正则性通常与周期和覆盖有关,这已经得到了广泛的研究,并且有效计算它们的算法有广泛的应用。本文主要研究了串的循环周期的计算问题,提出了几种有效的算法来计算:(i)循环周期;(ii)全循环周期;(iii)最大局部循环周期;(iv)循环覆盖。
2019-08-05 cs.DS
Fast Searching in Packed Strings
给定字符串$P$和$Q$,(精确)字符串匹配问题是找到与$P$匹配的$Q$中子字符串的所有位置。经典的Knuth-Morris-Pratt算法[SIAM J. Comput.,1977]在线性时间内解决了字符串匹配问题,如果我们一次只能读取一个字符,这是最佳的。然而,大多数字符串都是以打包的形式存储在计算机中的,一个单词中有几个字符,这使我们有机会同时读取多个字符。在本文中,我们研究了字符串匹配的最坏情况下的复杂性在包装表示。令$m \leq n$分别为长度$P$和$Q$,并令$σ$表示字母表的大小。在一个标准的单位成本字RAM的对数字长,我们提出了一个算法,使用时间$$ O\left(\frac{n}{\log_σn} + m + \occ\right). $$这里$\occ$是$P$的出现次数在$Q$。对于$m = o(n)$,这改进了Knuth-Morris-Pratt算法的$O(n)$界。此外,如果$m = O(n/\log_σn)$,我们的算法是最优的,因为任何算法都必须花费至少$Ω(\frac{(n+m)\log σ}{\log n} + \occ) = Ω(\frac{n}{\log_σn} + \occ)$时间来读取输入并报告所有事件。结果是通过一种新的自动机构造的基础上的克努特-莫里斯-普拉特算法结合一个新的紧凑表示的子自动机,允许最佳的制表为基础的模拟。
2010-09-07 cs.DS
Parameterized Algorithms for String Matching to DAGs: Funnels and Beyond
字符串与标号图匹配(SMLG)问题要求在标号图$G = (V, E)$中找到拼写与输入字符串$S \in Σ^m$匹配的所有路径。SMLG可以在二次$O(m|E|)$时间内求解[Amir等人,JALG],其通过最近以SETH为条件的下限被证明是最佳的[Equi et al.,ICALP 2019]。下界状态,没有强次二次时间算法存在,即使仅限于有向无环图(DAG)。在这项工作中,我们提出了第一个参数化的算法SMLG的DAG。我们的参数捕获的拓扑结构的$G$。我们所有的结果都来自Knuth-Morris-Pratt算法的推广[Park and Kim,CPM 1995],该算法经过优化,可以在与前缀不可比匹配数量成比例的时间内工作。为了获得$G$的拓扑结构中的参数化,我们首先研究一类特殊的DAG,称为漏斗[Millani等人,JCO]并将它们推广到$k$ -漏斗和类$ST_k$。我们提出了一些新的特性和算法的贡献漏斗和他们的推广。
2023-02-02 cs.DS
Finding Approximate Palindromes in Strings Quickly and Simply
描述了两种算法,以找到长的近似回文在一个字符串,例如DNA序列。一个简单的算法需要O(n)空间,并且几乎总是在$O(k.n)$时间内运行,其中n是字符串的长度,k是回文中允许的“错误”的数量。它的最坏情况的时间复杂度是$O(n^2)$,但这不会发生在真实的生物序列。更复杂的算法保证了$O(k.n)$的最差时间复杂度。
2004-12-01 cs.DS