Longest common substring with approximately $k$ mismatches
在最长公共子串问题中,我们给定两个长度为$n$的字符串,必须找到一个在两个字符串中都出现的最大长度的子串。众所周知,该问题可以在线性时间内求解,但该解决方案是不鲁棒的,并且当输入字符串即使改变一个字符时也会发生很大变化。为了解决这个问题,Leimeister和Morgenstern引入了具有$k$不匹配的最长公共子串的问题。最近,这个问题在文献中得到了很多关注。在本文中,我们首先展示了一个条件下界的基础上,SETH假设意味着有希望改善现有的解决方案。然后,我们引入了一个新的,但密切相关的问题,最长的共同子串与约$k$不匹配,并使用局部敏感的哈希表明,它承认一个解决方案,具有强烈的次二次运行时间。我们还应用这些结果得到了一个强次二次时间2-近似算法的最长公共子串与$k$不匹配的问题,并显示出提高其近似比的条件困难。
2018-08-18 cs.DS
A fast and simple $O (z \log n)$-space index for finding approximately longest common substrings
我们描述如何,给定一个文本$T [1..n]$和一个正常数$ε$,我们可以建立一个简单的$O (z \log n)$空间索引,其中$z$是$T$的LZ 77解析中的短语数量,这样,稍后,给定一个模式$P [1..m]$,在$O (m \log \log z + \mathrm{polylog} (m + z))$时间中,我们可以以高概率找到$P$子串,该子串出现在$T$中,且其长度至少为$(1 - ε)$。$P$和$T$的最长公共子串的长度的分数。
2022-12-03 cs.DS
Approximating longest common substring with $k$ mismatches: Theory and practice
在具有$k$不匹配的最长公共子串的问题中,我们给定两个字符串$X, Y$,并且必须找到最大长度$\ell$,使得存在$X$的长度- $\ell$子串和$Y$的长度- $\ell$子串,它们在至多$k$位置上不同。长度$\ell$可以用作$X, Y$之间相似性的鲁棒度量。在这项工作中,我们开发了新的近似算法计算$\ell$是显着更有效的,以前已知的解决方案,从理论的角度来看。我们的方法是简单和实用的,我们通过实验评估确认,可能是接近最佳的,因为我们证明通过一个条件下限。
2020-04-28 cs.DS
Searching a bitstream in linear time for the longest substring of any given density
给定一个任意的比特流,我们考虑的问题,找到最长的子串的1到0的比例等于一个给定的值。本文的中心结果是一个算法,解决这个问题的线性时间。该方法涉及(i)重新制定的问题,作为一个约束的走查稀疏矩阵,然后(ii)开发一个数据结构,使我们能够执行每一步的步行在摊销常数时间的稀疏矩阵。我们还给出了一个线性时间算法,以找到最长的子串的1到0的比例是有界的给定值以下。这两个问题都与密码学和生物信息学有实际关系。
2010-06-07 cs.DS
A note on the longest common substring with $k$-mismatches problem
最近引入的具有$k$ -错配的最长公共子串($k$-LCF)问题是在给定长度均为$n$的两个序列$S_1$和$S_2$的情况下,找到$S_1$的最长子串$A_1$和$S_2$的最长子串$A_2$,使得$A_1$和$A_2$之间的汉明距离至多为$k$。到目前为止,这个问题的唯一次二次时间结果是已知的$k = 1$ ~ \cite{FGKU2014}。我们首先提出了两个依赖于输出的算法解决$k$ -LCF问题,并表明,对于$k = O(\log^{1-\varepsilon} n)$,其中$\varepsilon > 0$,至少有一个工作在次二次时间,使用$O(n)$字的空间。在线性时间和空间预处理之后,可以选择这两种算法之一来应用于给定的输入。最后,我们提出了一个基于表格的算法工作,在其适用范围内,在$O(n^2\log\min(k+\ell_0, σ)/\log n)$时间,其中$\ell_0$是标准的最长公共子串的长度。
2014-10-14 cs.DS
Longest common substrings with k mismatches
具有$k$ -不匹配的最长公共子串问题是在给定两个串$S_1$和$S_2$的情况下,找到$S_1$的最长子串$A_1$和$S_2$的最长子串$A_2$,使得$A_1$和$A_2$之间的汉明距离为$\le k$。本文提出了一种实用的$O(nm)$时间和$O(1)$空间解,其中$n$和$m$分别是$S_1$和$S_2$的长度.该算法还可用于计算$k$ --$S_1$和$S_2$在$O(nm)$时间和$O(m)$空间上的失配的匹配统计量。此外,我们还提出了一个理论的解决方案$k = 1$的情况下,运行在$O(n \log m)$时间,假设$m\le n$,并使用$O(m)$空间,改善了现有的$O(nm)$时间和$O(m)$空间界的巴边科和Starikovskaya。
2015-03-16 cs.DS
Computing longest palindromic substring after single-character or block-wise edits
回文是字符串中的重要对象,已经从组合、算法和生物信息学的角度进行了广泛的研究。已知长度为n的给定字符串T的最长回文子串(LPS)的长度可以通过Manacher算法在O(n)时间内计算[J. ACM '75]。在本文中,我们考虑的问题,找到LPS后,字符串被编辑。我们提出了一个O(n)时间和空间的预处理算法,并在O(\log(\min \{σ,\log n\}))时间内回答了单个字符替换、插入或删除后LPS的长度,其中σ表示T中出现的不同字符的数量.我们还提出了一个算法,使用O(n)的时间和空间进行预处理,并回答了O(\ell + \log \log n)时间的长度的LPS后,T中的现有子串被替换为任意长度的字符串\ell。
2021-01-08 cs.DS
Heaviest Induced Ancestors and Longest Common Substrings
假设我们有两棵树在同一组叶子上,其中节点的权重使得孩子比他们的父母更重。我们说第一棵树的一个节点和第二棵树的一个节点被归纳在一起,如果它们有一个共同的叶子后代。在本文中,我们描述的数据结构,有效地支持以下最短的诱导祖先查询:给定一个节点从第一棵树和一个节点从第二棵树,找到一个诱导对他们的祖先最大的组合权重。我们的解决方案是基于几何解释,使我们能够找到最重的诱导祖先使用范围查询。然后,我们将展示如何使用这些结果来构建一个LZ压缩索引,我们可以快速找到一个最长的子串共同的索引字符串和一个给定的模式的概率很高。
2013-07-13 cs.DS
An efficient dynamic programming algorithm for the generalized LCS problem with multiple substring inclusive constraints
本文考虑了一个具有多子串包含约束的广义最长公共子序列问题。对于长度为$n$和$m$的两个输入序列$X$和$Y$,以及总长度为$r$的一组$d$约束$P=\{P_1,\cdots,P_d\}$,问题是找到$X$和$Y$的公共子序列$Z$,其包括$P$中的每个约束串作为子串,并且$Z$的长度被最大化。本文提出了一种新的动态规划方法来解决这一问题。证明了新算法的正确性。算法的时间复杂度为$O(d2^dnmr)$。在约束串个数固定的情况下,本文提出的求解多子串包容约束广义最长公共子序列问题的新算法需要$O(nmr)$时间和空间.
2015-05-25 cs.DS
Path algebra algorithm for finding longest increasing subsequence
讨论了求最长递增子序列的新算法。该算法基于幂等数学的思想,利用Max-Plus幂等半环。将求最长递增子序列的问题转化为矩阵形式,用线性代数方法求解.
2014-09-10 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
Finding Top-k Longest Palindromes in Substrings
本文将最长回文问题推广为子串top-k最长回文查询问题,提出线性大小的数据结构,可在O(k)时间内响应查询,构建时间为O(n log n),k=1时降至O(n)。
2023-06-17 cs.DS
A simple linear space algorithm for computing a longest common increasing subsequence
本文以一种非常简洁的方式重新表述了求两个给定输入序列的最长公共增子序列的问题。基于新公式的一个非常简单的线性空间算法可以在时间$O(nm)$上使用额外的$\min\{n,m\}+1$空间分别找到大小为$n$和$m$的最长公共递增子序列。
2016-08-25 cs.DS
Longest (Sub-)Periodic Subsequence
我们提出了一个算法计算长度为$n$的字符串在$O(n^7)$时间与空间的$O(n^4)$字的最长周期子序列。当限制指数或扩展搜索时,我们得到改进,允许报告的子序列亚周期性下降到$O(n^3)$时间和空间的$O(n^2)$字。
2022-02-15 cs.DS
Longest Common Subsequence in Sublinear Space
我们提出了第一个计算最长公共子序列长度的$\mathrm{o}(n)$-空间多项式时间算法。给定两个长度为$n$的字符串,该算法以$\mathrm{O}(n^{3})$时间和$\mathrm{O}\left(\frac{n \log^{1.5} n}{2^{\sqrt{\log n}}}\right)$位空间运行。
2020-09-18 cs.DS
The Dynamic Longest Increasing Subsequence Problem
在本文中,我们构造了一个数据结构来有效地计算动态更新序列的最长递增子序列。我们的数据结构支持在$O(r+\log n)$最坏情况下查询最长递增子序列,并支持在$O \left(r\log{n/r}\right)$最坏情况下插入序列中的任何位置(其中$r$是最长递增子序列的长度)。如果在序列的末尾执行插入,则相同的数据结构经过微小修改后支持$O(\log n)$最差情况时间插入。所提出的数据结构还可以被扩充以在与插入相同的最坏情况时间内支持删除操作。
2013-12-15 cs.DS
Sublinear Space Algorithms for the Longest Common Substring Problem
给定$m$文档的总长度$n$,我们考虑的问题,找到一个最长的字符串共同的至少$d \geq 2$的文件。这个问题被称为\emph{longest common substring (LCS) problem},并且具有经典的$O(n)$空间和$O(n)$时间解(Weiner [FOCS'73],Hui [CPM'92])。然而,线性空间的使用在许多应用中是不切实际的。在本文中,我们表明,对于任何权衡参数$1 \leq τ\leq n$,LCS问题可以解决在$O(τ)$空间和$O(n^2/τ)$时间,从而提供了第一个光滑的确定性的时间-空间权衡从常数到线性空间。结果使用了一种新的非常简单的算法,它计算了在$O(n^2/τ)$时间和$O(1)$空间中LCS的$τ$ -加法近似。我们还展示了确定性分支程序的时间-空间权衡下界,这意味着任何确定性RAM算法解决LCS问题的文件,从足够大的字母在$O(τ)$空间必须使用$Ω(n\sqrt{\log(n/(τ\log n))/\log\log(n/(τ\log n)})$时间。
2014-07-02 cs.DS
Longest Common Substring Made Fully Dynamic
在最长公共子串(LCS)问题中,我们给出两个字符串$S$和$T$,每个字符串的长度最多为$n$,我们被要求找到一个最长的字符串,它同时作为$S$和$T$的片段出现。这是计算机科学中一个经典的、研究得很好的问题,有一个已知的$\mathcal{O}(n)$时间解。在这个问题的完全动态版本中,两个字符串中的任何一个都允许编辑操作,并且我们被要求在每个这样的操作之后报告一个LCS。我们提出了这个问题的第一个解决方案,需要每次编辑操作的次线性时间。特别是,我们展示了如何在每次使用$\tilde{\mathcal{O}}(n)$空间的操作之后,以$\tilde{\mathcal{O}}(n^{2/3})$时间(或$\tilde{\mathcal{O}}(\sqrt{n})$时间,如果只允许在两个字符串中的一个中进行编辑)返回LCS。这一系列研究最近由作者[SPIRE 2017]在某种程度上受到限制的动态变量中发起。给出了一个$\tilde{\mathcal{O}}(n)$大小的数据结构,它在$\tilde{\mathcal{O}}(1)$时间内返回两个字符串的LCS。在CPM 2018上,有三篇论文研究了字符串问题的类比限制动态变体。我们表明,我们的技术可以用来获得完全动态算法的几个经典问题的字符串,即,计算最长的重复,最长的回文和最长的林登子串的字符串。之前唯一已知的字符串问题的次线性时间…
2018-07-16 cs.DS
Solving Cyclic Longest Common Subsequence in Quadratic Time
我们提出了一个实用的算法循环最长公共子序列(CLCS)的问题,运行在O(MN)的时间,其中m和n是两个输入字符串的长度。虽然这不一定是对现有记录的渐进改进,但它更容易理解和实施。
2012-08-16 cs.DS
Dynamic Longest Common Substring in Polylogarithmic Time
King’s College London(伦敦国王学院);Institute of Computer Science, University of Wrocław(弗罗茨瓦夫大学计算机科学研究所)
研究动态最长公共子串问题,提出在多项式对数时间内处理更新的算法,同时给出数据结构的下界分析。
2026-04-08 cs.DS
Computing Covers under Substring Consistent Equivalence Relations
覆盖是弦中的一种准周期性。如果$T$的任何位置在$T$中出现的$C$的某个位置内,则字符串$C$是另一个字符串$T$的覆盖。$T$的最短和最长覆盖数组分别具有$T$的每个前缀的最短和最长覆盖的长度。文献提出了线性时间算法计算最长和最短的覆盖数组边界数组作为输入。字符串上的等价关系$\approx$称为子串一致等价关系(SCER)当且仅当$X \approx Y$对所有$1 \le i \le j \le |X|$蕴涵(1)$|X| = |Y|$和(2)$X[i:j] \approx Y[i:j]$.本文推广了SCER的覆盖概念,并证明了在恒等关系下计算字符串$T$的最短覆盖数组和最长覆盖数组的现有算法适用于任何取相应广义边界数组的SCER.
2020-07-30 cs.DS
A Faster Subquadratic Algorithm for the Longest Common Increasing Subsequence Problem
最长公共递增子序列(LCIS)是经典最长公共子序列(LCS)的一个变体,其中我们额外要求公共子序列严格递增。虽然著名的“四个俄罗斯人”技术可以用来找到LCS在次二次时间,它似乎不适用于LCIS。最近,Duraj [STACS 2020]使用了一种基于LCIS组合特性的完全不同的方法来设计$\mathcal{O}(n^2(\log\log n)^2/\log^{1/6}n)$时间算法。我们表明,利用制表的基础上的方法可以用来构建一个渐近更快的$\mathcal{O}(n^2 \log\log n/\sqrt{\log n})$时间算法。由于我们的解决方案避免了使用LCIS的特定组合属性,因此它也可以适用于最长公共弱递增子序列(LCWIS)。
2020-03-30 cs.DS
Deterministic Longest Common Subsequence Approximation in Near-Linear Time
本研究提出一种确定性算法,能在近线性时间内求解最长公共子序列的O(n^{3/4} log n)近似解,是首个达成近线性时间亚线性近似比的LCS确定性算法。
2025-07-30 cs.DS
Longest Square Subsequence Problem Revisited
最长平方子序列(LSS)问题包括计算给定字符串$S$的最长子序列,该字符串是正方形,即,出现在$S$中的形式$XX$的最长子序列。众所周知,长度为$n$的字符串$S$的LSS可以使用$O(n^2)$时间[Kosowski 2004]计算,或者使用$O(n^2 (\log \log n)^2 / \log^2 n)$时间[Tiskin 2013]进行(依赖于模型的)多对数加速。我们提出了第一个算法的LSS的运行时间取决于其他参数,即,我们证明了$S$的LSS可以在$O(r \min\{n, M\}\log \frac{n}{r} + n + M \log n)$时间和$O(M)$空间中计算,其中$r$是$S$的LSS的长度,$M$是$S$上的匹配点的数量。
2020-07-29 cs.DS
An $O(n^2)$ Algorithm for Computing Longest Common Cyclic Subsequence
{ \em最长公共子序列(LCS)}问题是计算机科学中一个经典的研究较多的问题。LCS是字符串学中的一个核心问题,在文本压缩、检错码和生物序列比较中有着广泛的应用。然而,在许多上下文中,单词表示符号的循环序列,并且LCS必须被推广以考虑字符串的所有循环移位。这尤其发生在计算生物学中,当遗传物质从环状DNA或RNA分子中测序时。这就引发了{ \em longest common cyclic subsequence(LCCS)}的问题,该问题在两个字符串的所有循环移位之间找到最长的子序列。本文给出了求解LCCS问题的一个$O(n^2)$算法,其中$n$是字符串中符号的个数。
2010-04-18 cs.DS
Finding a reconfiguration sequence between longest increasing subsequences
研究最长递增子序列重构问题,提出多项式时间判定算法,并在底层二分排列图情形下给出寻找最短重构序列的多项式算法。
2023-10-02 cs.DS
Longest Common Substring and Longest Palindromic Substring in $\tilde{\mathcal{O}}(\sqrt{n})$ Time
本文首次提出在电路模型中解决最长公共子串和最长回文子串问题的 $\tilde{\mathcal{O}}(\sqrt{n})$ 量子算法,简化了现有方法,并给出了具体量子电路实现。
2023-09-03 cs.DS quant-ph
An Efficient Dynamic Programming Algorithm for the Generalized LCS Problem with Multiple Substring Exclusion Constrains
本文考虑了一个具有多子串排除约束的广义最长公共子序列问题。对于长度为$n$和$m$的两个输入序列$X$和$Y$,以及总长度为$r$的一组$d$约束$P=\{P_1,...,P_d\}$,问题是找到$X$和$Y$的公共子序列$Z$,将$P$中的每个约束串排除为子串,并且使$Z$的长度最大化。这个问题被声明为NP难的\cite{1},但我们最终发现这不是真的。本文提出了一种新的动态规划方法。证明了新算法的正确性。算法的时间复杂度为$O(nmr)$。
2013-03-08 cs.DS
Space-Efficient Algorithms for Longest Increasing Subsequence
给定一个整数序列,我们想找到序列的最长递增子序列。已知该问题可以在$O(n \log n)$时间和空间中解决。本文的目标是在保持小的时间复杂度的同时减少空间消耗。对于$\sqrt{n} \le s \le n$,我们提出的算法,使用$O(s \log n)$位和$O(\frac{1}{s} \cdot n^{2} \cdot \log n)$时间计算最长的增加子序列的长度,和$O(\frac{1}{s} \cdot n^{2} \cdot \log^{2} n)$时间找到一个实际的子序列。我们还表明,我们的算法的时间复杂度是最佳的多对数因子的框架中的顺序存取算法与规定的空间量。
2017-12-26 cs.DS
Longest Common Subsequence: Tabular vs. Closed-Form Equation Computation of Subsequence Probability
最长公共子序列问题(LCS)是在给定的一组字符串中寻找最长的子序列。LCS问题是一个NP难问题,这使得它成为一个目标,大量的努力,以找到一个更好的解决方案,与数学方法。大多数著名的概率统计函数的基线是一个表格随机,概率方法。这种方法在每次迭代中近似LCS的长度。束搜索和基于概率的列表算法的结合,导致了大量的建议和成就的算法来解决LCS问题。在这项工作中,我们引入了一个封闭的形式方程的概率表计算首次。此外,我们提出了其他相应的形式的封闭形式的方程,并证明了所有这些。该封闭式方程为分析和进一步近似开辟了新的方法。利用这些定理和束搜索,我们提出了一种估计剩余子序列的LCS长度的解析方法。此外,我们提出了另一种启发式函数的基础上的变异系数。结果表明,我们提出的方法优于国家的最先进的方法对LCS问题。
2022-06-23 cs.DS
Longest Increasing Subsequence under Persistent Comparison Errors
我们研究了在存在持续比较错误的情况下,计算$n$不同元素序列$S$中最长递增子序列的问题。在此模型中,两个元素之间的每次比较都可能以一定的固定(小)概率$ p $返回错误结果,并且不能重复进行比较。在这个模型中,精确计算最长递增子序列是不可能的,因此,目标是识别一个子序列,该子序列(i)确实在递增,并且(ii)具有近似于最长递增子序列长度的长度。我们提出了渐近紧的上界和下界的近似因子和运行时间。特别是,我们提出了一种算法,计算的$O(\log n)$近似时间$O(n\log n)$,具有很高的概率。这种近似依赖于这样的事实,即我们可以在$O(n\log n)$时间内近似地对$n$元素进行排序,使得元素的最大位错至多为$O(\log n)$。对于下界,我们证明:(一)有一组序列,这样,从这个集合中随机挑选的序列,每个算法必须返回一个$Ω(\log n)$ -近似的概率很高,和(ii)任何$O(\log n)$ -近似算法最长的增加子序列需要$Ω(n \log n)$比较,即使在没有错误。
2018-08-09 cs.DS
A sub-quadratic algorithm for the longest common increasing subsequence problem
最长公共递增子序列问题(LCIS)是著名的最长公共子序列问题(LCS)的一个自然变体。对于LCIS以及LCS,存在$O(n^2)$时间算法和$O(n^{2-\varepsilon})$的基于SETH的条件下限。对于LCS,还有Masek-Paterson $O(n^2 / \log{n})$ -time算法,它似乎不以任何明显的方式适应LCIS。因此,一个自然的问题出现了:任何(稍微)次二次算法存在的最长共同增加子序列问题?我们肯定地回答这个问题,提出了一个$O(n^2 / \log^a{n})$ -时间算法的$a = \frac{1}{6}-o(1)$ .该算法不是基于记忆小块数据(通常用于对数加速,包括LCS中的“四个俄罗斯人的把戏”),而是利用一种新技术,限制两个序列之间重要符号匹配的数量。
2020-01-29 cs.DS
Heuristic algorithms for the Longest Filled Common Subsequence Problem
在CPM 2017上,Castelli等人定义并研究了最长公共子序列问题的一个新变体,称为最长填充公共子序列问题(LFCS)。对于LFCS问题,输入由两个字符串$A$和$B$以及多字符集$\mathcal{M}$组成。目标是将来自$\mathcal{M}$的字符插入到字符串$B$中,从而获得新字符串$B^*$,使得$A$和$B^*$之间的最长公共子序列(LCS)最大化。Casteli等人证明了该问题是NP难的,并给出了一个3/5-近似算法。本文从实验的角度对这一问题进行了研究。我们介绍,实施和测试新的启发式算法,并将它们与Casteli等人的近似算法进行比较。此外,我们引入了一个线性规划(ILP)模型的问题,我们使用的状态,最先进的ILP求解器,Guesthouse,获得精确的解决方案,中等大小的实例。
2019-04-16 cs.DS
Parallel Algorithm for Longest Common Subsequence in a String
在模式识别和匹配领域中,寻找最长公共子序列是一个非常重要的问题。本文提出了一种基于并行计算的算法。我们使用OpenMPAPI包作为中间件将数据发送到不同的处理器。我们已经测试了我们的算法在一个系统中有四个处理器和2 GB的物理内存。最好的结果表明,并行算法的性能(计算速度)提高了3.22。
2013-06-19 cs.DS
Small Longest Tandem Scattered Subsequences
我们考虑的问题,确定串联分散的连续性内的字符串。我们的算法确定了一个最长的子序列,出现两次没有重叠的字符串。该算法基于Hunt-Szymanski算法,因此如果字符串不是自相似的,则其性能会提高。这在大字母表上的字符串上自然发生。我们的算法依赖于新的数据结构,支持动态最长增加的子序列的结果。在这个过程中,我们也得到了改进的算法的递减字符串比较问题。
2020-06-24 cs.DS
A hardness result and new algorithm for the longest common palindromic subsequence problem
2-LCPS问题,首先由Chowdhury等人[Fundam.通知。,129(4):329-340,2014],要求计算两个给定字符串$A$和$B$之间的最长回文公共子序列(的长度)。我们表明,2-LCPS问题是至少一样难的研究最长的公共子序列问题的四个字符串(4-LCS问题)。然后,我们提出了一个新的算法,解决了2-LCPS问题在$O(σM^2 + n)$时间,其中$n$表示的长度$A$和$B$,$M$表示之间的匹配位置的数量$A$和$B$,和$σ$表示的数量不同的字符出现在$A$和$B$。我们的新算法比Chowdhury等人的算法更快。的稀疏算法时,$σ= o(\log^2n \log\log n)$。
2016-12-22 cs.DS
Near-Linear Preprocessing for Range Weighted Longest Increasing Subsequence Queries
Yokohama National University(横滨国立大学)
该研究提出确定性数据结构,实现范围加权LIS查询的近线性预处理,解决相关开放问题,具备高效查询与最优子序列输出能力。
2026-10-16 cs.DS
Fast and Simple Computation of All Longest Common Subsequences
本文证明了一个简单的算法,产生的{ \em所有前缀LCS图}在$O(mn)$时间为两个输入序列的大小$m$和$n$。给定第一输入序列的任何前缀$p$和第二输入序列的任何前缀$q$,一旦构造了全前缀LCS图,就可以在与输出大小成比例的时间内生成$p$和$q$的所有最长公共序列(LCS)。这个问题可以在生成表示LCS的所有不同字符串的上下文中解决,或者在生成将LCS嵌入两个输入字符串的所有方式的上下文中解决。
2011-03-08 cs.DS
Reducing approximate Longest Common Subsequence to approximate Edit Distance
给定一对字符串,计算它们的最长公共子序列和编辑距离的问题已经被广泛研究了几十年。对于精确算法,LCS和编辑距离(具有字符插入和删除)是等效的;最先进的运行时间(几乎)是二次的,这在合理的细粒度复杂性假设下是紧密的。但是对于近似算法,情况就不同了:有一长串的工作改进了编辑距离的近似因子,但是对于LCS(使用二进制字符串),只有一个微不足道的$1/2$近似是已知的。在这项工作中,我们给出了一个减少近似LCS的近似编辑距离,产生第一个有效的$(1/2+ε)$近似算法的LCS为一些常数$ε>0$。
2019-04-10 cs.DS
On Longest Repeat Queries
在字符串中寻找重复在计算生物学等子领域有重要的应用。令人惊讶的是,所有先前的工作重复发现没有考虑重复的局部约束。在本文中,我们提出和研究的问题,找到最长的重复子串覆盖特定的字符串位置。我们提出了一个$O(n)$时间和空间的算法,寻找最长的重复覆盖的每一个位置的字符串的大小$n$。我们的工作是最佳的,因为读取和存储的输入字符串的大小$n$需要$O(n)$的时间和空间。因为重复的任何子串也是重复,我们的解决方案,最长的重复查询有效地提供了一个“刺”的工具,为从业者找到大多数的重复,覆盖特定的字符串位置。
2015-01-26 cs.DS
Cartesian Tree Subsequence Matching
Park等人[TCS 2020]观察到两个(数值)字符串之间的相似性可以通过笛卡尔树来捕获:字符串的笛卡尔树是一棵二叉树,通过选择字符串的最小值作为树根递归构造。如果两个等长的字符串的笛卡尔树是同构的,则称它们为笛卡尔树匹配。Park等人[TCS 2020]介绍了以下笛卡尔树子串匹配(CTMStr)问题:给定长度为$n$的文本字符串$T$和长度为$m$的模式字符串,找到文本字符串$T$的每个连续子串$S = T[i..j]$,使得$S$和$P$笛卡尔树匹配。他们展示了如何在$\tilde{O}(n+m)$时间内解决这个问题。本文介绍了笛卡尔树子序列匹配(CTMSeq)问题,该问题要求找到$T$的每个最小子串$S = T[i..j]$,使得$S$包含一个子序列$S'$,该子序列是笛卡尔树与$P$匹配的.我们证明了CTMSeq问题可以有效地解决,在$O(m n p(n))$时间,其中$p(n)$表示动态前导查询的更新/查询时间。通过使用合适的动态前驱数据结构,我们获得了CTMSeq的$O(mn \log \log n)$ -时间和$O(n \log m)$ -空间解。这将CTMSeq与密切相关的保序子序列匹配(OPMSeq)进行了对比,Bose等人[IPL 1998]证明OPMSeq是NP难的。
2022-04-15 cs.DS
Computing the Number of Longest Common Subsequences
本文提供了计算两个输入字符串的不同最长公共连续数和计算LCS嵌入数的非常简单、有效的算法。
2003-01-29 cs.DM cs.DS
The Longest Common Bitonic Subsequence: Match-Sensitive Algorithms and Conditional Hardness
American International University-Bangladesh(孟加拉国美国国际大学)
本文提出两种算法解决最长公共双峰子序列问题,通过动态规划和匹配敏感方法提高效率。
2026-10-20 cs.DS
Locality-Sensitive Hashing Scheme based on Longest Circular Co-Substring
局部敏感散列(LSH)是高维空间中$c$ -近似最近邻搜索($c$ -ANNS)最流行的方法之一。在本文中,我们提出了一种新的LSH方案的基础上最长循环共子串(LCCS)搜索框架(LCCS-LSH)的理论保证。本文提出了一种新的LCCS概念和一种用于$k$ -LCCS搜索的循环移位阵列(CSA)数据结构。LCCS搜索框架的见解是,接近的数据对象将具有比相距较远的数据对象更长的LCCS。LCCS-LSH是\emph{LSH-family-independent},它支持具有不同类型距离度量的$c$ -ANNS。我们还介绍了LCCS-LSH的多探针版本,并在五个真实数据集上进行了广泛的实验。实验结果表明,LCCS-LSH优于最先进的LSH计划。
2020-04-11 cs.DB cs.DS
An $n^{8/5+o(1)}$-Time $Ω(λ^3)$-Approximation for Longest Common Subsequence
针对最长公共子序列问题,提出一种 $n^{8/5+o(1)}$ 时间的 $\Omega(\lambda^3)$ 近似算法,将运行时间指数从 1.95 改进至 1.6+o(1)。
2026-09-28 cs.DS
Computing a Longest Common Palindromic Subsequence
{ \em最长公共子序列(LCS)}问题是计算机科学中一个经典的研究较多的问题。回文是一个词,它读起来和读起来是一样的。{ \em longest common palindromic subsequence(LCPS)}问题是经典LCS问题的一个有趣的变体,经典LCS问题寻找两个给定字符串之间的最长公共子序列,使得计算出的子序列也是回文。本文研究了LCPS问题,给出了求解该问题的有效算法。据我们所知,这是第一次尝试研究和解决这个有趣的问题。
2011-10-24 cs.DM cs.DS
Computing Longest Increasing Subsequence Over Sequential Data Streams
本文提出了一种数据结构--四重邻居表(QN-list),用于支持序列数据流上所有最长递增子序列(LIS)和有约束LIS的实时的查询。由我们的算法构建的QN-List需要$O(w)$空间,其中$w$是时间窗口大小。构建初始QN列表的运行时间需要$O(w\log w)$时间。应用QN-列表时,插入新项目需要$O(\log w)$时间,删除第一个项目需要$O(w)$时间。据我们所知,这是第一个工作,支持LIS枚举和LIS的约束计算,通过使用一个统一的数据结构的实时的顺序数据流。我们的方法优于国家的最先进的方法在时间和空间成本,不仅在理论上,而且经验。
2016-10-11 cs.DS
Quantum Speed-ups for String Synchronizing Sets, Longest Common Substring, and k-mismatch Matching
最长公共子串(LCS)是一个重要的文本处理问题,最近在量子查询模型中得到了研究。这个问题的决策版本,LCS与阈值$d$,询问是否两个长度为$n$的输入字符串有一个共同的长度为$d$的子串。两个极端的情况,$d=1$和$d=n$,分别对应于元素清晰度和非结构化搜索,量子查询复杂性的两个基本问题。然而,中间病例$1\ll d\ll n$尚未完全了解。我们表明,LCS与阈值$d$的复杂性之间的两个极端的情况下,$n^{o(1)}$因素:LCS与阈值$d$有一个量子算法在$n^{2/3+o(1)}/d^{1/6}$查询复杂性和时间复杂性,并要求至少$Ω(n^{2/3}/d^{1/6})$量子查询复杂性。我们的结果改进了以前的上界$\tilde O(\min \{n/d^{1/2}, n^{2/3}\})$(Le Gall和Seddighin ITCS 2022,Akmal和Jin SODA 2022),并回答了Akmal和Jin的一个公开问题。我们的主要技术贡献是Kempa和Kociumaka(STOC 2019)引入的强大的String Synchronizing Set技术的量子加速。它根据字符串中的$n/τ^{1-o(1)}$同步位置的长度- $Θ(τ)$上下文一致地对它们进行采样,并且每个同步位置可以由量子算法在$\tilde O(τ^{1/2+o(1)})$时间内报告。作为我们的…
2022-11-29 cs.DS
A Simple Algorithm for the Constrained Sequence Problems
在本文中,我们解决的约束最长公共子序列问题。给定两个序列$X$、$Y$和约束序列$P$,如果$Z$是$X$和$Y$的最长子序列,使得$P$是$Z$的子序列,则序列$Z$是$X$和$Y$相对于$P$的约束最长公共子序列。最近,Tsai \cite{Tsai}利用动态规划技术提出了一种解决该问题的$O(n^2 \cdot m^2 \cdot r)$时间算法,其中$n$、$m$和$r$分别是$X$、$Y$和$P$的长度。本文给出了一个在$O(n \cdot m \cdot r)$时间内求解约束最长公共子序列问题的简单算法,并证明了约束最长公共子序列问题等价于约束多序列比对问题的一个特例,该问题也是可解的.
2021-03-04 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
Dynamic Longest Increasing Subsequence and the Erdös-Szekeres Partitioning Problem
在本文中,我们提供了新的近似算法的动态变化的最长增加子序列(\textsf{LIS})的问题,和互补距离单调性(\textsf{DTM})的问题。在这种设置中,以下形式的操作按顺序到达:(i)添加元素,(ii)删除元素,或(iii)用一个元素替换另一个元素。在每个时间点,算法都有一个最长递增子序列的近似值(或单调性距离)。我们提出了一个$(1+ε)$ -近似算法的\textsf{DTM}与多对数最坏情况下的更新时间和一个常数因子近似算法的\textsf{LIS}与最坏情况下的更新时间$\tilde O(n^ε)$的任何常数$ε> 0$。运行时中的$n$表示操作到达时数组的大小。我们的动态算法\textsf{LIS}导致一个几乎最佳的算法的Erdös-Szekeres分区问题。Erdös-Szekeres分割问题是由Erdös和Szekeres在1935年提出的,当时被认为是可以在时间上求解的$O(n^{1.5}\log n)$。后续工作仅在1998年将运行时改进为$O(n^{1.5})$。我们的动态\textsf{LIS}算法导致Erdös-Szekeres分区问题的解决方案与运行时$\tilde O_ε(n^{1+ε})$的任何常数$ε> 0$。
2021-01-18 cs.DS
Improved Dynamic Algorithms for Longest Increasing Subsequence
研究了最长递增子序列(\textsf{LIS})问题的动态算法。动态\textsf{LIS}算法维护一个序列,该序列服从以下形式的操作,这些操作逐个到达:(i)插入元素,(ii)删除元素,或(iii)用一个元素替换另一个元素。在执行每个操作之后,算法必须报告当前序列的最长递增子序列的长度。我们的主要贡献是第一个精确的动态\textsf{LIS}算法与次线性更新时间。更确切地说,我们提出了一个随机算法,执行每个操作的时间$\tilde O(n^{2/3})$和每次更新后,报告的答案正确的\textsf{LIS}问题的概率很高。我们使用了几种新的技术和意见,这个算法,可能会发现他们的应用在未来的工作。在本文的第二部分,我们研究了近似动态\textsf{LIS}算法,这是允许低估的解的大小在一个有界的乘法因子。在这种情况下,我们给出了一个确定性算法的更新时间$O(n^{o(1)})$和近似因子$1-o(1)$。该结果大大改进了Mitzenmacher和Seddighin(STOC'20)的先前工作,该工作提出了对于任何常数$ε> 0$具有更新时间$\tilde O(n^ε)$的$Ω(ε^{O(1/ε)})$近似算法。
2021-03-09 cs.DS
Approximating the Longest Common Subsequence problem within a sub-polynomial factor in linear time
两个字符串的最长公共子序列(LCS)是一个基本的字符串相似性度量,经典的动态规划解决方案需要二次时间。尽管做出了重大努力,但在改进运行时方面几乎没有取得进展。即使在近似领域,除了平凡的$\sqrt{n}$ -近似之外,对线性时间算法也知之甚少。最近的突破性结果提供了一种$n^{0.497}$ -因子近似算法[HSSS 19],最近将其改进为$n^{0.4}$ -因子1 [BCD 21]。后一篇论文还展示了一个$n^{2-2.5α}$时间算法,该算法输出LCS的$n^α$近似,但到目前为止,还没有真正的次二次时间的次多项式近似。在这项工作中,我们展示了一个算法,它运行在$O(n)$时间,并输出一个$n^{o(1)}$因子近似LCS $(x,y)$,具有很高的概率,对于任何一对长度$n$输入字符串。我们的整个算法仅仅是最近在[ANSS 21]中引入的Block-LIS问题的有效黑盒简化,并直接解决Block-LIS问题。
2021-12-15 cs.DS
A Data-Structure for Approximate Longest Common Subsequence of A Set of Strings
给定一组$k$字符串$I$,它们的最长公共子序列(LCS)是具有最大长度的字符串,该字符串是$I$中所有字符串的子集。用于该问题的数据结构将$I$预处理为数据结构,使得可以更快地计算具有$I$的字符串的查询字符串集合$Q$的LCS。由于该问题对于任意$k$都是NP难的,因此我们允许一个错误,该错误允许某些字符被其他字符替换。我们用额外的输入$m$来定义问题的近似版本,它是描述输入的正则表达式(regex)的长度,近似因子是算法返回的regex中可能性数量的对数,除以具有最小可能性数量的对数regex。然后,我们使用树型数据结构来实现次线性时间LCS查询。我们还解释了如何将这个想法扩展到最长递增子序列(LIS)问题。
2021-01-12 cs.DS