Fine-Grained Hardness of Approximating Dynamic Time Warping
The University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校)
本文在GBD和OVH假设下,证明了近似动态时间规整(DTW)的细粒度下界,匹配了近似与运行时间的权衡,并扩展到多符号度量及游程编码字符串。
2026-10-08 cs.CC cs.DS
From LZ77 to the Run-Length Encoded Burrows-Wheeler Transform, and Back
Lempel-Ziv分解(LZ 77)和游程编码Burrows-Wheeler变换(RLBWT)是文本压缩和索引中的两个重要工具,它们的大小$z$和$r$与文本自重复的数量密切相关。在本文中,我们考虑的问题转换成彼此的两个表示成比例的输入和输出的工作空间内。让$n$为文本长度。我们证明了$RLBWT$可以在$\mathcal{O}(n\log r)$时间和工作空间的$\mathcal{O}(r)$字中转换为$LZ77$。相反,我们提供了一个算法,将$LZ77$转换为$RLBWT$在$\mathcal{O}\big(n(\log r + \log z)\big)$时间和工作空间的$\mathcal{O}(r+z)$字。请注意,如果文本高度重复,则$r$和$z$可以是\emph{constant},并且我们的算法可以使用比基于完全解压缩的朴素解决方案更少的空间(最多)\emph{exponentially}。
2017-02-04 cs.DS
Fast Algorithms for the Shortest Unique Palindromic Substring Problem on Run-Length Encoded Strings
对于字符串$S$,回文子字符串$S[i..j]$被称为$S$中的$[s, t]$间隔的\emph{shortest unique palindromic substring}($\mathit{SUPS}$),如果$S[i..j]$在$S$中恰好出现一次,则间隔$[i, j]$包含$[s, t]$,并且每个包含比$S[i..j]$短的$[s, t]$的回文子字符串在$S$中至少出现两次。在本文中,我们研究的问题,回答$\mathit{SUPS}$查询行程编码字符串。我们展示了如何预处理一个给定的运行长度编码的字符串$\mathit{RLE}_{S}$的大小$m$在$O(m)$空间和$O(m \log σ_{\mathit{RLE}_{S}} + m \sqrt{\log m / \log\log m})$时间,使所有的$\mathit{SUPSs}$的任何后续查询间隔可以回答在$O(\sqrt{\log m / \log\log m} + α)$时间,其中$α$是输出的数量,和$σ_{\mathit{RLE}_{S}}$是不同的运行的$\mathit{RLE}_{S}$的数量。此外,我们考虑的SUPS问题的一个变种,其中的查询间隔也给出了游程编码的形式。对于这个变种的问题,我们提出了两种替代算法更快的查询。第一个在$O(\sqrt{\log\log m /\log\log\log …
2020-03-24 cs.DS
Computing all-vs-all MEMs in run-length encoded collections of HiFi reads
我们描述了一种算法,以找到最大精确匹配(MEMs)HiFi读取与均聚物错误。在我们的工作中,主要的新颖性是,我们诉诸行程压缩,以帮助处理错误。我们的方法接收一个游程长度编码的字符串集合作为输入,该字符串集合包含HiFi读取及其反向互补。随后,它将编码分成两个数组,一个存储等符号游程的符号序列,另一个存储游程长度。分割的目的是获得游程符号的BWT并相应地重新排序它们的长度。我们表明,这种特殊的BWT,因为它编码的HiFi读取及其反向互补,支持双向查询的HiFi读取。然后,我们提出了Belazzougui等人的MEM算法的变体。(2013)利用我们的BWT的行程长度编码和隐式双向属性来计算近似MEM。具体地,如果算法发现两个子串$a_1 \ldots a_p$和$b_1 \ldots b_p$具有MEM,则仅当它们对应的长度序列$\ell^{a}_1 \ldots \ell^{a}_p$和$\ell^{b}_1 \ldots \ell^{b}_p$的差异不超过输入阈值时,它才报告MEM。我们使用一个简单的度量来计算长度序列的相似性,我们称之为{ \em游程长度过剩}。我们的技术有利于检测MEMs与均聚物错误,因为它不需要动态规划找到近似匹配,其中唯一的编辑是长度的相等符号运行。最后,我们提出了一种方法,它依赖于一个几何数据结构报告的文本出现的MEM检测到我们的算法。
2022-08-31 cs.DS
Dynamic Time Warping and Geometric Edit Distance: Breaking the Quadratic Barrier
动态时间规整(DTW)和几何编辑距离(GED)是曲线或一般时间序列(例如,时间序列),其被表示为某个度量空间$(X, \mathrm{dist})$中的点序列。DTW和GED度量在计算机科学、计算生物学和工程学的各个领域中被大量使用。因此,计算这些措施的任务是在P的核心问题之一。尽管广泛的努力,以找到更有效的算法,最有名的算法计算的DTW或GED之间的两个序列的点在$X = \mathbb{R}^d$是长期存在的动态规划算法,需要二次运行时间,即使是一维的情况下$d = 1$,这可能是最常用的在实践中。在本文中,我们打破了近50年的二次时间界计算$\mathbb{R}$中的两个序列的$n$点之间的DTW或GED,通过提出确定性算法,运行在$O\left( n^2 / \log\log n \right)$时间。我们的算法可以扩展到也适用于高维空间$\mathbb{R}^d$,对于任何常数$d$,当底层距离度量$\mathrm{dist}$是多面体时(例如,$L_1, L_\infty$)。
2020-01-28 cs.CG cs.DS
Faster Binary Mean Computation Under Dynamic Time Warping
许多共识串问题都是基于汉明距离的。我们用更灵活的(例如,容易处理不同的输入字符串长度)动态时间弯曲距离,最好从时间序列挖掘中的应用中得知。这样做,我们研究的问题,找到一个平均字符串,最大限度地减少(平方)动态时间弯曲距离的总和到一组给定的输入字符串。虽然这个问题是已知的NP-难(即使是字符串的三个元素的字母表),我们解决的二进制字母表的情况下,这是已知的多项式时间可解的。我们显着改善了以前已知的算法在最坏情况下的运行时间。此外,我们还展示了我们的算法在实验中与现实世界和合成数据的实用性。最后,我们确定了在线性时间内可解的特殊情况(例如,找到只有两个二进制输入字符串的平均值),并报告了一些关于最佳平均值的组合特性的经验发现。
2020-02-04 cs.DM cs.DS
Towards Efficient Interactive Computation of Dynamic Time Warping Distance
动态时间规整(DTW)是一种广泛使用的方法,它允许我们有效地比较两个速度不同的时间序列。给定长度分别为$m$和$n$的两个字符串$A$和$B$,存在计算$A$和$B$的DTW距离以及$Θ(mn)$时间和空间中的最佳比对的基本动态编程算法。在本文中,我们解决了动态字符串的DTW距离的交互式计算问题,表示为$\mathrm{D^2TW}$,其中字符式编辑操作(插入,删除,替换)可以在字符串的任意位置进行。令$M$和$N$分别为$A$和$B$的游程长度编码(RLE)的大小。我们提出了一种算法$\mathrm{D^2TW}$,占用$Θ(mN+nM)$空间,并使用$O(m+n+\#_{\mathrm{chg}}) \subseteq O(mN + nM)$时间更新一个紧凑的差分表示$\mathit{DS}$的DP表每个编辑操作,其中$\#_{\mathrm{chg}}$表示在$\mathit{DS}$中的单元格的数量,其值在编辑操作后改变。我们的方法是至少一样有效的算法最近提出的Froese等。运行在$Θ(mN + nM)$时间,更快,当$\#_{\mathrm{chg}}$小于$O(mN + nM)$,这是我们的初步实验表明,在大多数情况下可能是这种情况。
2020-07-29 cs.DB cs.DS
Compact Enumeration of Maximal Closed Substrings in Run-Length Encoded Strings
Kyushu University(九州大学)
研究从字符串游程编码直接枚举最大封闭子串,引入紧凑族表示,证明\(O(m^2)\)个族有时必要且总是充分,借助后缀树等处理不同情况,能在特定时间和空间内列出所有最大封闭子串的紧凑表示。
2026-08-21 cs.DS
Minimal Absent Words on Run-Length Encoded Strings
一个字符串$w$被称为另一个字符串$T$的最小缺失字(MAW),如果$w$不出现在$T$中(作为一个子串),并且$w$的任何适当的子串出现在$T$中。用于从长度为$n$的给定串$T$报告MAW的集合$\mathsf{MAW}(T)$的现有技术的数据结构需要$O(n)$空间,可以在$O(n)$时间内构建,并且可以在查询时在$O(|\mathsf{MAW}(T)|)$时间内报告所有MAW。本文提出了一个压缩表示的字符串计算MAW的问题。特别是,我们专注于最基本的压缩表示的字符串,行程长度编码(RLE),它表示每个最大运行相同的字符$a$ $a^p$其中$p$是运行的长度。令$m$为字符串$T$的RLE大小。在使用RLE将MAW分类为五个不相交的集合$\mathcal{M}_1$,$\mathcal{M}_2$,$\mathcal{M}_3$,$\mathcal{M}_4$,$\mathcal{M}_5$之后,我们根据RLE大小$m$给出了$i = 1,2,4,5$的$\mathcal{M}_i$中MAW数量的匹配上界和下界,除了$\mathcal{M}_3$的大小不受$m$限制。然后,我们提出了一个紧凑的$O(m)$空间数据结构,可以报告所有MAW在最佳的$O(|\mathsf{MAW}(T)|)$时间。
2022-04-14 cs.DS
Run-Length Encoded Nondeterministic KMP and Suffix Automata
我们提出了一种新的位并行表示,基于行程长度编码的非确定性KMP和后缀自动机的字符串$P$至少有两个不同的符号。我们的方法针对的是小字母表上的长字符串的情况,并补充了Cantone et al.(2012)的方法,该方法对大字母表上的长字符串有效。我们的编码需要$O((σ+ m)\lceil ρ/ w\rceil)$空间,并允许一个模拟的自动机在一个字符串上的时间$O(\lceil ρ/ w\rceil)$每个过渡,其中$σ$是字母表的大小,$m$是$P$的长度,$ρ$是行程长度编码的长度$P$和$w$是机器字的大小位。输入字符串可以以未编码或游程长度编码的形式给出。
2014-12-17 cs.DS cs.FL
Compressed Dictionary Matching on Run-Length Encoded Strings
针对游程编码压缩字符串的字典匹配问题,提出基于压缩Aho-Corasick自动机与新型字符串索引的算法,实现接近最优的时间与线性压缩空间复杂度,为该问题首个非平凡解决方案。
2025-09-03 cs.DS
Dynamic Time Warping in the Low-Distance Regime
Institute of Computer Science, University of Wrocław(弗罗茨瓦夫大学计算机科学研究所);Department of Computer Science, Ariel University(阿里埃尔大学计算机科学系);Max Planck Institute for Informatics(马克斯·普朗克信息学研究所)
本研究证明在低距离区域计算动态时间规整(DTW)在正交向量假设下需要 $n^{1-o(1)}k$ 时间,并给出在特定结构输入上的近线性算法,同时将下界扩展至模式匹配。
2026-10-01 cs.DS
Quadratic Conditional Lower Bounds for String Problems and Dynamic Time Warping
字符串的经典相似性度量是最长公共子序列和Levenshtein距离(即,经典的编辑距离)。曲线的经典相似性度量是动态时间规整。这些测量可以通过简单的$O(n^2)$动态规划算法来计算,并且尽管付出了很多努力,但是还没有已知的具有显著更好的运行时间的算法。我们证明,即使仅限于二进制字符串或一维曲线,分别,这些措施没有强次二次时间算法,即,对于任何$\varepsilon > 0$,没有运行时间为$O(n^{2-\varepsilon})$的算法,除非强指数时间假设失败。我们将结果推广到编辑距离的任意固定成本的四个操作(删除在两个字符串之一,匹配,替代),通过识别平凡的情况下,可以解决在恒定的时间,并证明二次时间硬度二进制字符串的所有其他成本的选择。这改善和推广已知的硬度结果Levenshtein距离[Backurs,Indyk STOC'15]的限制,二进制字符串和推广到任意成本,并增加了重要的问题,最近的一系列研究显示越来越多的二次时间问题的条件下界。作为我们的主要技术贡献,我们介绍了一个框架,证明二次时间硬度的相似性措施。要应用该框架,只需构造一个小工具即可,该小工具封装了模拟从可满足性减少所需的所有表达能力。最后,我们证明二次时间硬度最长回文子序列和最长串联子序列通过减少最长的共同子序列,显示条件下界的基础上强指数时间假设也适用于字符串问题,不一定是相似的措施。
2015-04-02 cs.CC cs.DS
Dynamic Time Warping in Strongly Subquadratic Time: Algorithms for the Low-Distance Regime and Approximate Evaluation
动态时间规整距离(DTW)是一种广泛使用的时间序列间距离度量。最著名的算法计算DTW运行在近二次时间,和条件下限禁止存在显着更快的算法。然而,对于DTW很小的特殊情况,下限并不妨碍更快的算法。对于任意度量空间$Σ$,将距离归一化,使得最小非零距离为1,本文给出了一个计算$Σ$上两个字符串$x$和$y$在时间$O(n \cdot \operatorname{dtw}(x, y))$上的$\operatorname{dtw}(x, y)$的算法.我们还提出了一个近似算法,计算$\operatorname{dtw}(x, y)$内的一个因素的$O(n^ε)$在时间$\tilde{O}(n^{2 - ε})$为$0 < ε< 1$。该算法允许字符串$x$和$y$被带到一个任意的良好分离的树度量与对数深度和最多指数纵横比。进一步扩展我们的技术,我们还获得了第一近似算法的编辑距离与字符从任意度量空间,提供了一个$n^ε$近似的时间$\tilde{O}(n^{2 - ε})$,具有很高的概率。此外,我们提出了一个简单的减少从计算编辑距离计算DTW。将我们的约化应用于关于$\{0, 1\}$上的编辑距离的Bringmann和Künnemann的条件下界,我们获得了计算DTW的条件下界超过三个字母的字母表(距离为0和1)。这改进了Abboud,Backurs和Williams之前的结果。使用类似的方…
2019-05-23 cs.DS
Algorithms for Computing Longest Unbordered Factors on Run-Length Encoded Strings
The University of Electro-Communications(电气通信大学)
本文研究游程编码字符串上的最长无边界因子问题,通过新的组合学观察将已有算法适配到RLE场景,提出时间复杂度为 $O(m^{1.5} \log^2 m)$ 的算法,在压缩规模较小时可优于现有方法。
2026-10-21 cs.DS
A Study of Parallelizable Alternatives to Dynamic Time Warping for Aligning Long Sequences
Harvey Mudd College(哈维·穆德学院)
研究长序列对齐的DTW并行化替代方法,提出四种算法,在音频对齐任务中表征性能,开发GPU实现,实验显示ParDTW最实用,能精确对齐且大幅减少长序列运行时间,还全面评估了算法的各项性能。
2026-07-20 cs.DS cs.SD eess.AS
Computing LZ77 in Run-Compressed Space
本文证明了文本T { \in n ^n}的LZ 77分解可以在O(Rlog n)位的工作空间和O(nlog R)时间内计算,R是T的Burrows-Wheeler变换的游程数.对于极端重复的输入,工作空间可以低至O(log n)位:比文本本身小。作为我们的结果的直接后果,我们表明,一类重复意识的自我索引的基础上的游程编码的BWT和LZ 77的组合可以建立在内置的渐近最佳O(R + z)字的工作空间,z是LZ 77解析的大小。
2015-10-21 cs.DS
RLE edit distance in near optimal time
我们表明,两个游程长度编码字符串的压缩长度$m$和$n$分别之间的编辑距离,可以计算在$\mathcal{O}(mn\log(mn))$时间。这将以前的记录提高$\mathcal{O}(n/\log(mn))$倍。我们的算法的运行时间是最佳的次多项式的因素,受到标准的赛斯硬度假设。这有效地关闭了1993年首次开始的算法研究。
2019-05-03 cs.DS
On Computing Exact Means of Time Series Using the Move-Split-Merge Metric
计算一组时间序列的精确均值是时间序列最近邻分类和聚类等应用中的关键任务。虽然时间序列有许多距离函数,但用于计算时间序列均值的最流行的距离函数是非度量动态时间规整(DTW)距离。最近的一种精确计算DTW均值的算法的运行时间为$\mathcal{O}(n^{2k+1}2^kk)$,其中$k$表示时间序列的数量,$n$表示它们的最大长度。在本文中,我们研究的平均值问题的移动-分裂-合并(MSM)度量,不仅提供了很高的实际精度的时间序列分类,但也进行的度量属性,使进一步多样化的应用程序的优势。本文的主要贡献是为时间序列的MSM均值问题提供了一个精确有效的算法。该算法的运行时间为$\mathcal{O}(n^{k+3}2^k k^3 )$,优于以前的DTW算法。实验比较的结果证实了我们的算法相比DTW平均竞争对手的运行时间的优越性。此外,我们引入了一个启发式,以提高运行时间显着,而不牺牲太多的准确性。
2022-09-28 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
Alternative Algorithms for Lyndon Factorization
我们提出了两种变化的杜瓦尔算法计算林登分解的一个字。第一种算法是针对小字母表的情况设计的,并且对于包含字母表中最小字符的串,能够跳过字符串的显著部分。实验结果表明,该算法比Duval的原算法速度快十倍以上,在长DNA串的情况下也有明显的提高。第二个算法,给定一个长度为$ρ$的游程编码字符串$R$,计算$R$在$O(ρ)$时间和恒定空间中的林登因子分解。
2014-07-11 cs.DS
An Optimal-Time RLBWT Construction in BWT-runs Bounded Space
高度重复的字符串的压缩(即,具有许多重复的字符串)一直是字符串处理中的中心研究课题,并且迄今为止已经提出了针对这些字符串的相当多的压缩方法。其中,一种有效的压缩格式越来越受到关注的是游程Burrows-Wheeler变换(RLBWT),它是一种游程编码的BWT,作为输入字符串在后缀的字典顺序上的可逆置换。最先进的RLBWT构造算法在以下方面存在严重问题:(i)非最优计算时间或(ii)与输入字符串长度成线性比例的工作空间。本文提出了有界游程空间中RLBWT的第一个最优时间构造算法\emph{r-comp}。也就是说,对于输入串的长度$n$和BWT中的等字母游程的数目$r$,r-comp的计算复杂性是$O(n + r \log{r})$时间和工作空间的$O(r\log{n})$位。计算时间是最佳的(即,$O(n)$),用于具有属性$r=O(n/\log{n})$的字符串,该属性适用于大多数高度重复的字符串。使用真实世界的数据集的高度重复的字符串的实验表明,相对于计算时间和空间的有效性。
2022-02-16 cs.DS
R-enum: Enumeration of Characteristic Substrings in BWT-runs Bounded Space
枚举特征子串(例如,最大重复、最小唯一子串和最小缺失字)已经成为重要的研究课题,因为在诸如串处理和计算生物学的各种领域中存在各种各样的应用。虽然已经提出了几种特征子串的枚举算法,但它们的空间使用率与输入串的长度成正比,因此它们不是空间有效的。最近,游程编码Burrows-Wheeler变换(RLBWT)在字符串处理中引起了越来越多的关注,并且已经开发了各种RLBWT算法。然而,使用RLBWT开发特征子串的枚举算法仍然是一个挑战。本文提出了第一个基于RLBWT的特征子串枚举算法r-enum(RLBWT-based enumeration)。R-enum在$O(n \log \log (n/r))$时间内运行,并且对于字符串长度$n$和RLBWT中的运行次数$r$,具有$O(r \log n)$位的工作空间,其中对于高度重复的字符串,预期$r$显著小于$n$(即,重复多次的字符串)。使用高度重复字符串的基准数据集的实验表明,r-enum的结果比以前的结果更节省空间。此外,我们证明了r-enum的适用性,以一个巨大的字符串进行实验的300千兆字节的字符串的100个人类基因组。
2021-03-02 cs.DS
Knapsack and Subset Sum with Small Items
背包问题与子集和问题是组合优化中的基本NP-难问题。最近有越来越多的兴趣了解这些问题的最佳可能的伪多项式运行时间相对于各种参数。在本文中,我们专注于最大项目大小$s$和最大项目价值$v$。我们给出的算法,在时间$O(n + s^3)$和$O(n + v^3)$的背包问题,并在时间$\tilde{O}(n + s^{5/3})$的子集和问题。我们的算法适用于具有多重性的更一般的问题变体,其中每个输入项都具有(二进制编码的)多重性,这简洁地描述了该项在实例中出现的次数。在这些变体中,$n$表示不同项目的数量(可能小得多)。我们的结果来自于组合和优化几种不同的研究路线,特别是Eisenbrand和Weismantel(TALG 2019)的整数规划的邻近参数,Kellerer和Pferschy的快速结构化$(\min,+)$ -卷积(J. Comb. Optim. 2004),以及源自Galil和Margalit(SICOMP 1991)的加性组合方法。
2021-05-09 cs.DS
Tight Hardness Results for Consensus Problems on Circular Strings and Time Series
字符串和序列的一致性问题出现在许多应用环境中,从生物信息学到数据挖掘再到机器学习。填补了文献中的一些空白,我们证明了在这种情况下的几个基本问题是NP-和W[1]-困难的,并且已知的(部分蛮力)算法接近最优假设指数时间假设。我们的主要贡献之一是解决了在动态时间规整空间中计算平均值的复杂性问题,正如Brill等人[DMKD 2019]所指出的那样,文献中存在许多未经证实或错误的假设。我们证明了这个问题是NP-难的,另外表明,最近的动态规划算法基本上是最优的。在这方面,我们研究了一个广泛的家庭的圆形字符串对齐问题。这个家族也是我们降低硬度的关键,它在分子生物学中具有独立的(实际的)兴趣。特别是,我们显示了严格的硬度和运行时间的下限循环共识字符串;值得注意的是,相应的非循环版本很容易线性时间可解。
2019-04-11 cs.DM cs.DS
Fast Arithmetic in Algorithmic Self-Assembly
在本文中,我们考虑的时间复杂度计算的总和和积的两个$n$位数内的瓷砖自组装模型。(抽象)瓦片组装模型是自组装的数学模型,其中系统组件是具有分配给瓦片边缘的不同胶水类型的正方形瓦片。当胶对瓦片的净吸引力超过某个固定阈值时,通过将单体瓦片附接到生长的种子组件来驱动组件。在这个框架内,我们研究的时间复杂度计算2个n位数的总和或产品,其中输入的数字被编码在一个初始的种子汇编,并在最后的输出编码,终端组装的系统。我们证明了加法和乘法问题在2D装配中有$Ω(\sqrt{n})$的最坏情况下界,在3D装配中有$Ω(\sqrt[3]{n})$的最坏情况下界。在加法的情况下,我们设计了二维和三维的算法,分别满足$O(\sqrt{n})$和$O(\sqrt[3]{n})$的最坏情况运行时间的上限,这击败了以前最好的已知上限O(n)。此外,我们认为平均情况下的复杂性,除了均匀分布的n位串,并显示如何实现$O(\log n)$平均情况下的时间与同时$O(\sqrt{n})$最坏情况下的运行时间在2D。对于乘法,我们提出了一个$O(n^{5/6})$时间乘法算法,它工作在3D,它击败了以前最好的已知的O(n)的上限。作为我们的算法的速度的额外证据,我们实现我们的加法算法,随着更简单的O(n)时间加法算法,到一个概率运行时模拟器和比较的时序结果。
2013-08-05 cs.CC cs.CG cs.DS
Mespotine-RLE-basic v0.9 - An overhead-reduced and improved Run-Length-Encoding Method
行程长度编码(RLE)是最古老的数据压缩算法之一,用于将大数据压缩为较小的,因此更紧凑的数据的方法。它通过查看数据来压缩同一个字符在一行中的重复,并将数量(称为run)和相应的字符(称为run_value)存储为目标数据。不幸的是,它只在严格和特殊情况下压缩。在这些情况之外,它会增加数据大小,甚至在最坏的情况下,与原始的未处理数据相比,数据大小会增加一倍。在本文中,我们将讨论对RLE的修改,我们将只存储实际上可压缩的字符的游程,摆脱了大量无用的数据,如字符的游程,这些数据首先是不可压缩的。这将通过先存储字符、后存储游程来实现。此外,我们创建了一个256位的位列表(每个可能的ASCII字符一个),我们将存储,如果一个特定的(ASCII-)字符是可压缩的(1)或不(0)。使用这个列表,我们现在可以说,如果一个字符是可压缩的(store [the character]+[it's run])或如果它是不可压缩的(只存储[the character],下一个字符不是run,而是后面的字符)。使用这个列表,我们也可以成功地解码数据(如果字符是可压缩的,下一个字符是运行,如果不可压缩,下一个字符是普通字符)。这样,我们就只存储字符的游程,这些字符首先是可压缩的。事实上,在最坏的情况下,编码数据将始终只创建位列表本身大小的开销。如果一个字母表有256个不同的字符(即ASCII),那么无论原始数据…
2015-01-22 cs.DS cs.IT math.IT