作者:Dominik Kempa, Tomasz Kociumaka ACM通信,2022年6月,第65卷第6期,第91-98页 10.1145 / 3531445评论一个>
来源:盖蒂图片社
伯罗斯-惠勒变换(BWT)是一种可逆的文本变换,根据其后缀的字典顺序排列文本的符号。BWT是目前流行的无损压缩程序的主要组成部分bzip2
)以及最近强大的压缩索引(例如r 指数<年代up>7一个>)是现代生物信息学的核心。BWT的可压缩性用数字来量化r 在输出中运行。尽管BWT具有实际意义,但没有一个非平凡的上界r 是已知的。相比之下,几乎所有其他已知的压缩方法的大小都显示为要么总是在多对数范围内n 因子(其中n是文本的长度)z ,文本的Lempel-Ziv (LZ77)解析的大小,或者在最坏的情况下更大n ε年代up>ε > 0的因子)。
在本文中,我们证明了这一点r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>2年代up>n)适用于所有文本。这个结果对文本索引和数据压缩有许多影响;特别是:(1)它证明了许多与BWT相关的结果自动适用于基于LZ77的方法,例如,可以获得中后缀树的功能<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z polylogn )空间;(2)它表明,假设LZ77的文本是可压缩的,可以在一个足够大的多对数下解决许多文本处理任务n 因素;(3)它暗示了第一个非平凡的关系之间的运行在BWT的文本和它的反向。
此外,我们提供一个<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z polylogn )时间算法将LZ77解析转换为运行长度压缩的BWT。为了实现这一点,我们开发了一些新的独立的数据结构和技术。特别地,我们定义了压缩的字符串同步集(泛化了最近引入的强大的字符串同步集技术<年代up>11一个>),并展示如何有效地构建它们。接下来,我们针对长串序列提出了一种新的小波树变体,建立了小波树大小的非平凡界,并描述了有效的构造算法。最后,我们开发了可以直接从LZ77解析构造的新索引,并有效地支持对文本子字符串的模式匹配查询。
回到顶部一个>
1.简介
无损数据压缩的目的是利用输入数据的冗余在一个小空间中表示它。尽管有大量的压缩方法,但几乎所有现有的工具都属于少数几种通用框架之一,其中最流行的三种是:Lempel-Ziv压缩(其中名义上和最常用的是LZ77变体<年代up>25一个>)、统计压缩(包括上下文混合、部分匹配预测(PPM)和动态马尔可夫编码)和Burrows-Wheeler变换(BWT)。<年代up> 4一个>
区分这些算法的最佳特征之一是,它们是否能更好地消除由扭曲的符号频率或重复的片段造成的冗余。LZ77的思想(其基础是,例如,7 - zip
而且gzip
压缩器)将输入文本划分为长子字符串,每个子字符串在文本中出现的时间更早。然后,每个子字符串被编码为使用一对整数指向前一次出现的指针。这种方法本身就可以处理长重复子字符串,在输入足够重复的情况下,可以实现指数级的压缩比。另一方面,统计压缩器是基于符号的频率来表示(预测)输入中的符号。的概念正式地表达了这一点k阶经验熵<年代ub>k年代ub>(T ).对于任何足够长的文本T ,符号频率(取长度-k 上下文考虑)在任何权力T (几个副本的串联T )变化不大(见卡夫和纳瓦罗,<年代up>14一个>引理2.6)。因此,|T<年代up>t年代up>|H<年代ub>k年代ub>(T<年代up>t年代up>)≈t ·|T |H<年代ub>k年代ub>(T )为任何t ≥1,这意味着熵对长重复不敏感,因此它不能捕捉到与LZ77压缩相同类型的冗余。<年代up>7一个>,<一个href="#R12">12一个>,<一个href="#R14">14一个>,<一个href="#R24">24一个>
上述分析提出了关于Burrows-Wheeler变换可压缩性质的问题。基于bwt的压缩器的压缩bzip2
,用数字来量化r 在BWT中相等字母的运行。上面描述的清晰画面不再适用于该措施r。 一方面,曼奇尼<年代up>16一个>证明r 可以以输入字符串的KTH阶经验熵为上界。另一方面,已经在2008年,Sirén等。<年代up> 24一个>观察到BWT在高度重复的集合上实现了优秀的压缩(优于统计方法),并提供了概率分析,展示了当r 很小。然而,十多年过去了,没有上界了r 而言,z (LZ77解析的大小)被发现。
由于BWT在生物信息学和压缩计算领域的大量应用,这种认识的缺乏尤其令人沮丧。BWT最成功的应用之一是在压缩索引 ,它的目的是同时存储一个压缩字符串,支持关于未压缩版本的各种查询(如随机访问、模式匹配,甚至后缀数组查询)。虽然经典的(未压缩的)索引,如后缀树和后缀数组,在许多应用程序中都取得了成功,但它们不适合存储和搜索高重复的大型集合,如果不进行预处理,这些集合几乎不可能进行搜索。最近的一项调查<年代up>17一个>提供了此类数据集的几个真实示例。特别是,Github存储了超过20tb的数据,每个项目平均有20多个版本,而100000人类基因组计划产生了超过70tb的DNA,由于人类个体基因组之间99.9%的相似性,这是高度可压缩的。在这些应用的推动下,压缩索引近年来引起了极大的兴趣。基于bwt的索引,如r-index,<年代up> 7一个>都是最强大的,它们的空间利用率达到了多少<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(polylogn )因素与值无关r。 要了解这一领域的全面概况,我们请读者参阅纳瓦罗的一项调查。<年代up> 18一个>
除了文本索引,Burrows-Wheeler变换在计算生物学中有许多应用。特别地,BWT是流行的基因组读取对齐器的主要组成部分,如领结
,BWA
,Soap2
,为通用生物信息学教科书铺平了道路。<年代up>21一个>生物序列算法分析的专门文献<年代up> 15一个>,<一个href="#R19">19一个>花了几十页的BWT应用程序。
鉴于BWT的重要性和实际意义,在无损数据压缩和压缩计算领域出现的一个最大的开放问题是:
Burrows-Wheeler变换的输出大小的上界是什么?
除了BWT,基本上每个其他已知的压缩方法已被证明产生的输出大小总是在一个<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(polylogn )因素z , LZ77算法的输出大小(例如,语法压缩、拼贴系统和宏方案)<年代up>一个一个>或大于一个多项式因子(n ε年代up>对于某些ε > 0)在最坏的情况下(例如LZ78,压缩字图(CDAWGs))。我们向读者推荐纳瓦罗<年代up>17一个> 重复测量的调查。值得注意的是,众所周知BWT永远不会比LZ77压缩得更好,也就是说,z =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(r 日志n ),<年代up>6年代up>相反的关系r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z poly-logn )常常被推测为是假的。<年代up> 5一个>
1.1.我们的贡献年代trong>
我们证明r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>2年代up>n)对所有弦都成立,以更令人惊讶的方式解决了BWT猜想,并回答了Gagie等人的一个开放问题。<年代up>5一个>,<一个href="#R6">6一个>这个结果本身对索引和压缩有多重含义:
中可以支持后缀数组和后缀树功能<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z polylogn )空间。<年代up>7一个>
它是由肯帕展示的<年代up>10一个>许多字符串处理任务(如BWT和LZ77构造)可以在<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(n /日志<年代ub>σ年代ub>n+r polylogn )时间(σ 是字母大小)。因此,如果文本可被BWT充分压缩(形式上,n / r =Ω(polylogn ),这些任务可以在最佳时间解决(这对于一般文本不太可能<年代up>11一个>).我们的结果放宽了这个假设n / z =Ω(polylogn ).
到目前为止,基于Burrows-Wheeler变换的方法被认为既不是统计也不是字典(LZ-like)压缩算法。<年代up>5一个>,<一个href="#R24">24一个>我们的结果挑战了BWT形成一个单独的压缩类型的概念:因为我们的边界,BWT比预期更接近LZ压缩器。 更强的边界r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(δ日志<年代up>2年代up>n),其中δ≤z 是Kociumaka等人最近研究的一种对称(对弦反转不敏感)重复测量方法,<年代up>13一个>进一步说明:
数量<我米g alt="cacm6506_aw.gif" src="https://dl.acm.org/cms/attachment/6be052f4-aea9-42b7-88a8-f81a0498ebdc/cacm6506_aw.gif">BWT的值与文本满足的值相反<我米g alt="cacm6506_b.gif" src="https://dl.acm.org/cms/attachment/21111e19-08b0-49ec-bd7f-5cac8f770abc/cacm6506_b.gif">,这是关于的第一个非平凡界r。 由于许多算法的效率取决于算法本身,因此该结果具有重要的实际意义<我米g alt="cacm6506_aw.gif" src="https://dl.acm.org/cms/attachment/6be052f4-aea9-42b7-88a8-f81a0498ebdc/cacm6506_aw.gif">.<年代up>2一个>,<一个href="#R20">20.一个>,<一个href="#R22">22一个>,<一个href="#R23">23一个>
后证明r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>2年代up>n),我们改进我们的方法以获得<我米g alt="cacm6506_c.gif" src="https://dl.acm.org/cms/attachment/026f05ef-e6d9-408c-9134-5745225e1542/cacm6506_c.gif">随后<我米g alt="cacm6506_d.gif" src="https://dl.acm.org/cms/attachment/979e26f6-040e-4f73-a2d1-5b0bb5ab304a/cacm6506_d.gif">.然后,我们证明了后者与平凡界的结合r ≤n 的全谱是渐近紧的n 和δ。作为一个附带结果,我们得到了一个紧上界<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(n log δ)的不可约LCP值的和,在已知的界上改进<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(n 日志r ).<年代up>9一个>
接下来,我们开发一个<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>8年代up>n)时间算法将LZ77解析转换为运行长度压缩的BWT (polylogn 因素尚未优化)。与之前最快的空间效率算法相比,这提供了指数级的加速,后者需要Ω(n 日志z )时间。<年代up>20.一个>,<一个href="#R22">22一个>为了实现这一点,我们开发了新的独立的数据结构和技术。特别地,我们引入了压缩字符串同步集的概念,推广了Kempa和Kociumaka的技术。<年代up> 11一个>然后我们描述了一种新的小波树,<年代up> 8一个>设计用于长字符串序列。在本文的完整版中,我们还提出了可以直接从LZ77解析构建的新索引,并支持对文本子字符串的快速模式匹配查询。
回到顶部一个>
2.预赛
一个字符串 是一个给定的有限字符序列吗字母表。 字符串的长度年代 表示为|年代 |,我 ∈[1 .;|年代 |),<年代up>b一个>的我 th的特点年代 用年代 [我 ].一个字符串U 是一个子字符串 的年代 如果U =年代 [我 ]年代 [我 + 1]…年代 [j - 1]表示某1≤我 ≤j ≤|年代 | + 1。然后我们说你发生 在年代 在位置我。 的发生 的U 在位置我 在年代 用年代 [我 。。j )或年代 [我 。。j - 1)。这样的事情发生了片段 的年代 并且可以由(指向)年代 这两个位置我 ,j。 两个片段(可能是不同的字符串)匹配 如果它们出现在相同的子字符串中。一个片段年代 [我 。。j )是一种前缀 如果我 = 1和a后缀 如果j = |年代 |。
我们使用<我米g alt="cacm6506_a.gif" src="https://dl.acm.org/cms/attachment/3b6a94c9-4a7c-4481-b708-cd9204efe91d/cacm6506_a.gif">来表示的反向 的年代 ,也就是说,年代 (|年代 |]…年代 [2]年代 [1]。我们表示连接 两个字符串的U 而且V ,也就是说,U [1]U [2]……U (|U |)V [1]V [2]……V (|V |),紫外线 或U ·V。 此外,<我米g alt="cacm6506_e.gif" src="https://dl.acm.org/cms/attachment/ed1d4dec-eb38-4efb-8a2e-a3c11f91c26f/cacm6506_e.gif">的连接k ≥0份年代 ;请注意,年代 0年代up>= ε为空字符串。
一个整数p ∈[1 .;|年代 |)是一个期 一个字符串的年代 如果年代 [我]=年代 [我 +p 每一个我 ∈[1 .;|年代 | - - - - - -p ].的最短周期年代 表示为(年代 ).一个字符串年代 被称为周期 如果<我米g alt="cacm6506_f.gif" src="https://dl.acm.org/cms/attachment/34863124-c7c5-4620-80f8-7673b7b1f997/cacm6506_f.gif">.以下事实是经典的结果周期性引理 (我们不直接使用)。
事实2.1(见Amir等人,<年代up>1一个>1)。任意两个相同长度的不同周期弦至少有两个位置不同。
在本文中,我们考虑了一个字符串(称为文本 )T 的长度n ≥1超过有序字母表Σ的大小Σ。我们假设T [n = $,其中$是Σ中最小的符号,并且$不会出现在其他任何地方T。 我们用在Σ上表示订单,扩展到词典 秩序Σ<年代up>*年代up>(Σ上的字符串集)U ,V ∈Σ<年代up>*年代up>满足U V当且仅当其中之一U 的前缀V ,或U [1。。我 ) =V [1。。我 ),U [我 ]≺V [我 对某些人有效我 ∈[1 .;min (|U | |,V |)]。
的后缀数组 SA[1。。n 的T 是[1 . .]的排列。n ),这样T (SA)[1]。n ]≺T (SA)[2]。n ]≺…≺T (SA) (n ]。。n ].密切相关的burrows - wheeler变换 BWT[1。。n 的T 定义为BWT[我 ]=T (SA) (我 ] - 1]如果SA[我 ] > 1和BWT[我 ]=T [n 否则]。在BWT的情况下,方便地考虑无限字符串T ∞年代up>这样定义的T ∞年代up>[我 ]=T [1 + (我 - 1)国防部n ]我 ∈ℤ,T ∞年代up>[1。。n ]=T [1。。n ].然后我们有BWT[我 ]=T ∞年代up>(SA) (我 [- 1]表示我 ∈[1 .;n ].此外,假设T [n = $暗指T ∞年代up>[sa[1] ..]≺…≺T ∞年代up>(SA) (n ]]。
对于任何一个字符串<我米g alt="cacm6506_g.gif" src="https://dl.acm.org/cms/attachment/aa21edb6-333a-4613-9369-d2c6ed8efdb9/cacm6506_g.gif">,在那里c<年代ub>我年代ub>∈Σ和ℓ 我 ∈ℤ<年代ub>> 0年代ub>为我 ∈[1 .;h ),而c<年代ub>我年代ub>≠c 我 +1年代ub>为我 ∈[1 .;h )时,我们定义行程长度编码 的年代 作为序列RL(年代 ) = ((c 1年代ub>,λ<年代ub>1年代ub>),…,(c<年代ub>h年代ub>,λ<年代ub>h )),λ<年代ub>我=ℓ 1年代ub>+……+ℓ<年代ub>我年代ub> 为我 ∈[1 .;h ].在,我们让r = |RL(BWT)|表示在的BWT中运行的次数T。 例如,文本T =bbabaababababaababa美元
在<一个href="https://dl.acm.org/cms/attachment/4e6d6d77-c3fd-4899-a258-114028d14b1d/t1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=758,height=674'); return false;">表1一个>,我们有BWT=一个<年代up>1年代up>b<年代up>6年代up>一个<年代up>1年代up>b<年代up>2年代up>一个<年代up>6年代up>b<年代up>1年代up>一个<年代up>2年代up>$<年代up>1年代up>
,因此r = 8。
表1。按字典顺序排序的字符串后缀T =bbabaa-babababaababa美元
以及BWT、SA和LCP表。年代trong>
连结控制协定(U ,V )表示字符串的最长公共前缀的长度U 而且V。 为j 1年代ub>,j 2年代ub>∈[1 .;n ],我们让LCE(j 1年代ub>,j 2年代ub>) =连结控制协定(T [j 1年代ub>),T [j 2年代ub>])。的连结控制协定数组 连结控制协定[1。。n 的定义,因此LCP[我 如冰(SA) [] =我 ], SA [我 - 1])我 ∈[2 .;n , LCP[1] = 0。我们说价值LCP[我 )是可约 如果BWT[i] = BWT[我 - 1),不可约 否则(包括当我 = 1). There isr 不可约连结控制协定值。
我们称之为非空片段T [我 。。我 +ℓ )是一个以前的因素 如果它在T ,即LCE (我 ,我 )≥ℓ 适用于一些我 ∈[1 .;我 ).的LZ77解析 的T 是一种分解T =F 1年代ub>···F f 为非空的短语 这样j th短语F<年代ub>j年代ub>前面最长的因子是从位置1 + |开始的吗F 1年代ub>···F j -1年代ub>|;如果没有先前的因素从这里开始,那么F<年代ub>j年代ub>由单个字符组成。在底层LZ77表示 ,每一个短语F<年代ub>j年代ub>=T [我 。。我 +ℓ )的前一个因子被编码为(我 ,ℓ ),我 ∈[1 .;我 )满足特性(我 ,我 )≥ℓ (在多种可能性中任意选择);如果F<年代ub>j年代ub>=T [我 ]不是前一个因子,那么它被编码为(T [我 ], 0)。我们通过表示LZ77解析中的短语数量z。 例如,文本bbabaababababaababa美元
的<一个href="https://dl.acm.org/cms/attachment/4e6d6d77-c3fd-4899-a258-114028d14b1d/t1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=758,height=674'); return false;">表1一个>有LZ77分解B·B·a·ba·aba·巴巴·阿巴·$
与z = 8短语,其LZ77表示是(b, 0), (1, 1), (a, 0),(2, 2),(3)、(7,6),(10、5),($,0)。
的单词查找树 一个有限集年代 ⊆Σ<年代up>*年代up>边标记的有根树是否有节点v<年代ub>X年代ub>对于每一个字符串X 这是字符串的前缀年代 ∈年代。 这一考验的根源在于v ε年代ub>以及每个节点的父节点v<年代ub>X年代ub>与X ≠ε是v X (1 . . |X |)年代ub>.在这种情况下,从v X (1 . . |X |)年代ub>来v<年代ub>X年代ub>是标签 与X (|X |]。看到<一个href="https://dl.acm.org/cms/attachment/7322d99d-9702-4d55-a96f-e225341659e8/f1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=575,height=270'); return false;">图1一个>对于试{$aba, aaba, abaa, abab, abb$, b$ab, baab, baba, babb, bb$a}
.
图1。的单词查找树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">的反向4个子字符串T ∞年代up>为T =bbabaababababaababa美元
的<一个href="https://dl.acm.org/cms/attachment/4e6d6d77-c3fd-4899-a258-114028d14b1d/t1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=758,height=674'); return false;">表1一个>.光的边缘是薄的和虚线。年代trong>
回到顶部一个>
3.组合边界
3.1.基本的上界年代trong>
为了说明我们证明技术的主要思想,我们首先证明上界的最简单形式r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>2年代up>n).下面的引理是我们证明的核心。
引理3.1。对于每个ℓ ∈[1 .;n ),中不可约LCP值的数量 [ℓ 。。2ℓ )是<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志n ).
证明。表示年代<年代ub>米年代ub>= {年代 ∈Σ<年代up>米 :年代 的子字符串是T ∞年代up>},米 ≥1。观察到|年代<年代ub>米年代ub>|≤mz 因为每一个长度,米 子串的T ∞年代up>在LZ77解析的短语边界处发生交叉或开始T。 这包括重叠的两个副本的子字符串T ,跨越最后一段和第一段之间的界限。
证明的思想如下:对于每个不可约值LCP[我 )∈(ℓ 。。2ℓ ),我们联想到成本ℓ 中的字符串的单个字符年代 3.ℓ .然后我们展示了其中的每个字符串年代 3.ℓ 最多收费2 logn 次了。中不可约LCP值的数量[ℓ 。。2ℓ ) =<我米g alt="cacm6506_h.gif" src="https://dl.acm.org/cms/attachment/bd91f699-758b-4637-9376-862fd83c4faa/cacm6506_h.gif">乘以总成本,最大值
中字符串的字符赋值年代 3.ℓ ,考虑试一试<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">所有反向的弦年代<年代ub>ℓ年代ub>(见<一个href="https://dl.acm.org/cms/attachment/7322d99d-9702-4d55-a96f-e225341659e8/f1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=575,height=270'); return false;">图1一个>例如)。
让连结控制协定(我 )∈(ℓ 。。2ℓ )为不可约LCP值;请注意,我 > 1由于LCP[我 )≥ℓ > 0。让j 0年代ub>= SA (我 - 1),j 1年代ub>= SA (我 使LCP[我 如冰()=j 0年代ub>,j 1年代ub>).因为连结控制协定我 是不可简化的,我们有T ∞年代up>[j 0年代ub>- 1] = bwt [我 - 1]≠bwt [我 ]=T ∞年代up>[j 1年代ub>- 1)。为k ∈(1 . .ℓ ),k 与LCP有关的第一个成本单位[我 ]是收费的k th字符(T ∞年代up>[j<年代ub>t年代ub>- 1])的字符串(T ∞年代up>[j<年代ub>t年代ub>- - - - - -k ..j<年代ub>t年代ub>- - - - - -k + 3ℓ )∈年代 3.ℓ ,在那里t ∈{0,1}的子树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">扎根在<我米g alt="cacm6506_i.gif" src="https://dl.acm.org/cms/attachment/ef93dcfa-31b2-46cf-8234-201e6371b681/cacm6506_i.gif">包含比树根处的子树更少的叶子<我米g alt="cacm6506_j.gif" src="https://dl.acm.org/cms/attachment/a32221ab-2199-4180-b2d1-33bb52a9865b/cacm6506_j.gif">(我们选择t = 0在平局的情况下);看到<一个href="https://dl.acm.org/cms/attachment/05216db8-8251-4215-97e2-1f58bad85d27/f2.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=572,height=236'); return false;">图2一个>插图。
图2。引理3.1的证明T 从<一个href="https://dl.acm.org/cms/attachment/4e6d6d77-c3fd-4899-a258-114028d14b1d/t1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=758,height=674'); return false;">表1一个>为ℓ = 4,我 = 11,k = 2。字符串T<年代up>∞年代up>[j<年代ub>t年代ub>- - - - - -k 。。j<年代ub>t年代ub>- - - - - -k + 3ℓ )突出显示。的子树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">根植于v 英国机场管理局年代ub>小于inv 巴布年代ub>(见<一个href="https://dl.acm.org/cms/attachment/7322d99d-9702-4d55-a96f-e225341659e8/f1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=575,height=270'); return false;">图1一个>),因此我们把第二个符号T ∞年代up>[j 1年代ub>- - - - - -k 。。j 1年代ub>- - - - - -k + 3ℓ ),也就是说,t = 1。年代trong>
注意,最多只记录日志n 字符的年代 ∈年代 3.ℓ 可在上述程序中收费:何时年代 [k ),与k ∈(1 . .ℓ 的子树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">扎根在<我米g alt="cacm6506_k.gif" src="https://dl.acm.org/cms/attachment/93f9807e-2e0e-4b2e-b415-ff2816476b25/cacm6506_k.gif">至少有两倍于子树的叶结点<我米g alt="cacm6506_l.gif" src="https://dl.acm.org/cms/attachment/40bce491-4577-4d32-90f2-6eca1495c55c/cacm6506_l.gif">,这最多可以发生在log|年代<年代ub>ℓ年代ub>|≤日志n 节点<我米g alt="cacm6506_l.gif" src="https://dl.acm.org/cms/attachment/40bce491-4577-4d32-90f2-6eca1495c55c/cacm6506_l.gif">在来自<我米g alt="cacm6506_m.gif" src="https://dl.acm.org/cms/attachment/8516f76a-a7a6-494d-b1a8-2473af21e6fd/cacm6506_m.gif">彻底地<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">.
这还有待证明,对于每一个年代 ∈年代 3.ℓ ,单一位置年代 [k ),与k ∈(1 . .ℓ ,最多可充两次电。为此,请注意字符以单个不可约值LCP收费[我 中字符串的不同位置年代 3.ℓ ).因此,分析分配给年代 [k ,我们只需要限制可能的候选职位的数量我。 让(b 。。e 是索引的集合我 这样T ∞年代up>(SA) (我 ]..]年代t一个rt年代与年代 [k + 1 . .3.ℓ ].在上述过程中,如果出现字符年代 [k ]以与LCP相对应的成本单位计算[我 ),然后年代 [k + 1 . .3.ℓ 是两者的前缀T ∞年代up>(SA) (我 −1]. .]=T ∞年代up>[j 0年代ub>..]或T ∞年代up>(SA) (我 ] . .] =T ∞年代up>[j 1年代ub>. .)。因此,{我 −1我 }∩(b ..e ]≠∅。同时,LCE(SA[我 1], SA (我 2) <ℓ ,和所有字符串T ∞年代up>(SA) (我 ]..]与我 ∈(b ..e 使用相同的前缀年代 [k + 1 . .3.ℓ 长度为3ℓ - - - - - -k ≥2ℓ .因此,我 =b 或我 =e + 1。ⅈ
定理3.2。所有长度为n的字符串都满足r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>2年代up>n).
证明。回想一下,r 为不可约LCP值的总数。因此,该声明随后应用引理3.1ℓ<年代ub>我年代ub>= 2<年代up>我 ,我 ∈(0 . .⌊日志n ⌋],观察到LCP值0的个数恰好为σ≤z .
3.2.更严格的上限年代trong>
为了得到一个更紧的边界,我们从引理3.1的对应部分开始提炼3.1节中的思想。
引理3.3。对于每个ℓ ∈(1 . .n ),中不可约LCP值的数量 [ℓ ..2ℓ )是<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志z ).
证明。证明与引理3.1的证明非常接近。然而,对于每个不可约值LCP[我 )∈(ℓ ..2ℓ ),我们联想到成本<我米g alt="cacm6506_n.gif" src="https://dl.acm.org/cms/attachment/0ab863fc-a8a8-4c19-8412-f994dd8cca91/cacm6506_n.gif">而不是ℓ。 然后我们展示了其中的每个字符串年代 3.ℓ 最多收取2·(3 + log ?z )次(而不是2 logn 次)。则在[范围内的不可约LCP值个数ℓ ..2ℓ )不超过<我米g alt="cacm6506_o.gif" src="https://dl.acm.org/cms/attachment/143d54c9-72b1-412f-b02c-3ba63bbfec0b/cacm6506_o.gif">乘以总成本,它的范围是
回忆起单词查找树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">所有反向的弦年代<年代ub>ℓ年代ub>.对于一个节点v 的<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">的大小(v 的子树中叶节点的数量<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">根植于v。 一条边连接v ≠根(<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">)到它的父母在<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">被称为光 如果v 有一个兄弟姐妹v ' 令人满意的大小(v ' )≥大小(v )(见<一个href="https://dl.acm.org/cms/attachment/7322d99d-9702-4d55-a96f-e225341659e8/f1.jpg" onclick="window.open(this.href, '', 'resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=575,height=270'); return false;">图1一个>).在引理3.1的证明中,我们观察到年代 [k 的年代 ∈年代 3.ℓ 这可以被充电对应的光边缘的路径从根<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">的叶子<我米g alt="cacm6506_m.gif" src="https://dl.acm.org/cms/attachment/8516f76a-a7a6-494d-b1a8-2473af21e6fd/cacm6506_m.gif">:每当年代 [k ),与k ∈(1 . .ℓ ],是带电的,边缘连接<我米g alt="cacm6506_l.gif" src="https://dl.acm.org/cms/attachment/40bce491-4577-4d32-90f2-6eca1495c55c/cacm6506_l.gif">其父母<我米g alt="cacm6506_p.gif" src="https://dl.acm.org/cms/attachment/e0cfdfe5-7508-4e3f-aa29-da8b224a591e/cacm6506_p.gif">就是光。然后我们注意到最多有log |年代<年代ub>ℓ年代ub>|≤日志n 每个根到叶路径上的光边缘<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">.这里,我们将字符串中的字符输入年代 3.ℓ 与引理3.1的方法相同,但只适用于单位<我米g alt="cacm6506_q.gif" src="https://dl.acm.org/cms/attachment/ef5aaaf6-87e3-467e-9a63-1cdbf65e360b/cacm6506_q.gif">.这意味着只有字符年代 [k 的年代 ∈年代 3.ℓ 与<我米g alt="cacm6506_r.gif" src="https://dl.acm.org/cms/attachment/0b10615e-b1ab-4394-a3ef-aac0b453337c/cacm6506_r.gif">被指控。它仍然表明,任何根到叶路径在<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">最多包含3 + logz 至少在深度上照亮节点之间的边<我米g alt="cacm6506_s.gif" src="https://dl.acm.org/cms/attachment/fd980722-f456-48f4-b7bb-91ecebe61bc5/cacm6506_s.gif">和它的孩子。
考虑一个来自节点的轻边v 其父母u 至少在深度上<我米g alt="cacm6506_s.gif" src="https://dl.acm.org/cms/attachment/fd980722-f456-48f4-b7bb-91ecebe61bc5/cacm6506_s.gif">.让v ' 成为…的兄弟姐妹v 令人满意的大小(v ' )≥大小(v ),让年代<年代ub>v年代ub>,年代<年代ub>v '年代ub>是从根到的路径的标签v 而且v ' ,分别。这些标签只在最后一个位置不同,因此,根据事实2.1,它们不能都是周期性的。让∈{v ,v ' 如:年代 不是周期性的,让<我米g alt="cacm6506_t.gif" src="https://dl.acm.org/cms/attachment/2db38766-f240-4195-8ced-13653df852f3/cacm6506_t.gif">.
考虑集年代 的长度,ℓ 的子树中的叶节点对应的字符串<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">扎根在(即,从根到叶路径经过的标签).定义<我米g alt="cacm6506_u.gif" src="https://dl.acm.org/cms/attachment/f9762ab6-85a0-4c3d-8e84-f6d542e04d6f/cacm6506_u.gif">和注意,<我米g alt="cacm6506_v.gif" src="https://dl.acm.org/cms/attachment/4e653bca-95f7-4262-9d90-139fe01c6ae0/cacm6506_v.gif">,因为<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">trieof是什么逆转 字符串从年代<年代ub>ℓ年代ub>.让<我米g alt="cacm6506_br.gif" src="https://dl.acm.org/cms/attachment/7599a234-1ad5-476f-9926-5b4c1bf778fa/cacm6506_br.gif">中最左侧出现的结束位置T ∞年代up>中的字符串[1 . .])<我米g alt="cacm6506_a.gif" src="https://dl.acm.org/cms/attachment/3b6a94c9-4a7c-4481-b708-cd9204efe91d/cacm6506_a.gif">.根据定义,我们有<我米g alt="cacm6506_w.gif" src="https://dl.acm.org/cms/attachment/f84a4926-e40c-46a3-b568-9d67bf5c7a42/cacm6506_w.gif">结束在T ∞年代up>在每一个位置e 我 与<我米g alt="cacm6506_x.gif" src="https://dl.acm.org/cms/attachment/cb0e45fd-a27a-4b80-a8a6-972b190a6036/cacm6506_x.gif">.现在,<我米g alt="cacm6506_y.gif" src="https://dl.acm.org/cms/attachment/a2570068-2eec-4fd5-8fbe-fad0fe3a5362/cacm6506_y.gif">意味着<我米g alt="cacm6506_z.gif" src="https://dl.acm.org/cms/attachment/76391824-1cba-4c6d-b946-742041a26301/cacm6506_z.gif">对于每一个<我米g alt="cacm6506_aa.gif" src="https://dl.acm.org/cms/attachment/5b69c01a-a7db-412e-96d2-02de0bf3d0e8/cacm6506_aa.gif">(否则,两个相近的<我米g alt="cacm6506_w.gif" src="https://dl.acm.org/cms/attachment/f84a4926-e40c-46a3-b568-9d67bf5c7a42/cacm6506_w.gif">将产生<我米g alt="cacm6506_ab.gif" src="https://dl.acm.org/cms/attachment/2d3d11ff-c1b7-4970-ac9f-ff45cf679323/cacm6506_ab.gif">.因此,至少<我米g alt="cacm6506_ac.gif" src="https://dl.acm.org/cms/attachment/b7e5e07b-eb7b-42cd-8456-63422f70e9e3/cacm6506_ac.gif">长度,ℓ 子字符串的T ∞年代up>[1 . .)有不相交的最左边事件。因为每个最左边出现交叉或开始于的LZ77解析的短语边界T ,我们得出结论<我米g alt="cacm6506_ad.gif" src="https://dl.acm.org/cms/attachment/98d3c259-a435-4025-9697-21a5244361f5/cacm6506_ad.gif">,因此<我米g alt="cacm6506_ae.gif" src="https://dl.acm.org/cms/attachment/90a77861-61ba-4254-8f25-af501bf9491f/cacm6506_ae.gif">.
上面的推理表明,一旦根到叶路径遇到连接节点的光边u 至少在深度上<我米g alt="cacm6506_s.gif" src="https://dl.acm.org/cms/attachment/fd980722-f456-48f4-b7bb-91ecebe61bc5/cacm6506_s.gif">它的孩子v ,我们有尺寸(v )≤4z。 路径上剩余的光边数最多为log(size(v ))≤2 + logz 的子树的标准界<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">扎根在v。
定理3.4。每个长度为n的字符串T都满足 .
证明。获得中不可约LCP值数量的更紧界[ℓ 。。2ℓ ),我们考虑以下三种情况:
ℓ≤<年代trong>日志z。 我们重复了引理3.1的证明,除了我们观察到在中每个根到叶路径上的光边数<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">是有界的ℓ。 因此,中不可约LCP值的个数为[ℓ 。。2ℓ )是<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(zℓ ).
.我们使用边界<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志z )。<我米g alt="cacm6506_ah.gif" src="https://dl.acm.org/cms/attachment/a215882a-134a-434e-beff-76aa5e2f02dd/cacm6506_ah.gif">.我们重复引理3.3的证明,只是我们观察到|年代 3.ℓ |≤n。 因此,中不可约LCP值的数量<我米g alt="cacm6506_ai.gif" src="https://dl.acm.org/cms/attachment/cc21c055-4a84-4a7e-bb06-1cd268fe4aa0/cacm6506_ai.gif">.
上面的上界,适用于每个ℓ = 2<年代up>我与我 ∈[0 .;⌊日志n ⌋)、产量
3.3.严格的δ范围年代trong>
让<我米g alt="cacm6506_aj.gif" src="https://dl.acm.org/cms/attachment/ae609e05-b41a-494a-b47a-7aa8876006f9/cacm6506_aj.gif">表示(循环)子串的复杂性 的T。 13一个> 请注意,让<我米g alt="cacm6506_ak.gif" src="https://dl.acm.org/cms/attachment/34af353e-fef9-4c23-b1c4-d095f32f8c4e/cacm6506_ak.gif">是等价的,因为|年代<年代ub>米年代ub>|≤n 适用于米 ≥1,表示<我米g alt="cacm6506_al.gif" src="https://dl.acm.org/cms/attachment/5cb981b4-7144-4b6c-97d6-3b1a8aed0026/cacm6506_al.gif">为米 ≥n。 我们首先注意δ≤z 因为|年代<年代ub>米年代ub>|≤mz 适用于每一个米 ≥1,在引理3.1的证明中可以看到。此外,|年代<年代ub>米年代ub>|≤米 根据δ的定义,δ成立,因此可以替换z 在引理3.1证明中。
为了适应引理3.3的证明,我们需要推广观察最多z 子字符串从年代<年代ub>ℓ年代ub>可能有不相交的最左侧事件发生在T ∞年代up>(1)。这种观察很容易,因为LZ77解析自然会产生一组z 中的位置(短语边界)T。 子串复杂度δ不提供这样的结构,但正如引理所暗示的,我们可以替换z 在上述的观察中,通过3δ。引理3.5的证明是对Kociumaka等人所使用的论证的直接修改。<年代up>13一个> (引理6)为了完备性,我们写下了完整的推理过程,并根据我们的符号定制了技术细节(例如,年代<年代ub>ℓ年代ub>定义为T ∞年代up>而不是T ).
引理3.5(基于Kociumaka等人,<年代up>13一个>引理6)。对于任何整数ℓ ≥1,T中位置的总数 ∞年代up>[1。。)由S中最左边出现的字符串覆盖<年代ub>ℓ年代ub>最多是 3.δℓ .
证明。让C 中的位置集T ∞年代up>从最左边出现的字符串覆盖[1 . .年代<年代ub>ℓ年代ub>,让C ' =C \ [1 . .ℓ ).对于任何我 ∈C ' 表示年代 =T ∞年代up>[我 −ℓ + 1 . .我 +ℓ ),让年代 = {年代 我 :我 ∈C '}⊆年代 2ℓ .我们会显示|年代 | = |C ' |。让我 ∈C ' .首先,观察,由于我 ≥ℓ 的片段年代<年代ub>我年代ub>完全包含在T ∞年代up>(1)。此外,根据定义,年代<年代ub>我年代ub>.包含某项的最左边出现年代 ∈年代<年代ub>ℓ年代ub>.因此,这种现象的发生年代<年代ub>我年代ub>在T ∞年代up>[1 . .)也必须是最左边的一个T ∞年代up>(1)。因此,子字符串年代<年代ub>我年代ub>为我 ∈C ' 是截然不同的。
我们已经证明了|C ' | = |年代 |≤|年代 2ℓ .因为|年代 2ℓ |≤2δℓ 根据δ的定义成立,我们得到|C |<|C '|+ℓ≤|年代 2ℓ |+ℓ ≤(2δ + 1)ℓ ≤3δℓ .ⅈ
引理3.6。对于每个ℓ ∈(1 . .n ),中不可约LCP值的数量 [ℓ ..2ℓ )是 (δδ日志)。
证明。与引理3.3的证明相比,我们使用了|的约束年代 3.ℓ |≤3ℓ 用δ代替|年代 3.ℓ |≤3ℓz .唯一需要修改的是,对于每个连接节点的光边u 的<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">至少在深度上<我米g alt="cacm6506_s.gif" src="https://dl.acm.org/cms/attachment/fd980722-f456-48f4-b7bb-91ecebe61bc5/cacm6506_s.gif">它的孩子v ,我们需要证明大小(v ) =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(δ)。
让<我米g alt="cacm6506_am.gif" src="https://dl.acm.org/cms/attachment/2f217ae3-ac84-49f5-abaf-d4d113b18aac/cacm6506_am.gif">在引理3.3的证明中定义为。回想一下,至少有<我米g alt="cacm6506_an.gif" src="https://dl.acm.org/cms/attachment/fa4d6218-2192-4294-92d0-417f49a4b311/cacm6506_an.gif">字符串年代<年代ub>ℓ年代ub>在最左侧出现不相交T ∞年代up>(1)。根据引理3.5,最多有3个δ个这样的子串。因此,<我米g alt="cacm6506_ao.gif" src="https://dl.acm.org/cms/attachment/042fcc96-3546-4403-aa2b-a87f9266f3fa/cacm6506_ao.gif">.ⅈ
通过替换阈值日志z 而且<我米g alt="cacm6506_ap.gif" src="https://dl.acm.org/cms/attachment/a3cf720a-fec1-410f-af90-53eb840c5942/cacm6506_ap.gif">与log δ和<我米g alt="cacm6506_aq.gif" src="https://dl.acm.org/cms/attachment/e99cf21b-ff2e-4313-9c22-6477f9b43d7a/cacm6506_aq.gif">在定理3.4的证明中,我们立即得到了一个以δ表示的界。
定理3.7。每个长度为n的字符串T都满足 .
下面的结构,在本文的完整版中分析,提供了子串复杂性δ覆盖之间的整个频谱的紧密示例<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(1)和<我米g alt="cacm6506_as.gif" src="https://dl.acm.org/cms/attachment/4bf69fcf-478e-44c9-9379-3bd8b6db69f5/cacm6506_as.gif">.为ℓ ≥1和x ∈(0 . .2<年代up>ℓ),我们设bin<年代ub>ℓ(x ∈{0,1}<年代up>ℓ的二进制表示x。
引理3.8。对于所有整数ℓ ≥2和K ≥1,长度n,子串复杂度δ,以及字符串T的BWT中的运行次数r<年代ub>l, K年代ub>∈{$,0,1,2}<年代up>+年代up>,定义了
满足n=Θ(2<年代up>K+ℓ ℓ,δ =Θ(2<年代up>ℓ),和r =Ω(2<年代up>ℓℓK).
如果<我米g alt="cacm6506_at.gif" src="https://dl.acm.org/cms/attachment/9577011b-17d7-4113-9ae1-6d5e8d253ade/cacm6506_at.gif">,另一方面,一个微不足道的上界r =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(n )比定理3.7更紧凑。在这种情况下,本文的完整版中也分析了下面的结构,提供了严密的示例。
引理3.9。对于所有整数ℓ ≥2而且 Δ∈Ω(2<年代up>ℓ)∩<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(2<年代up>ℓℓ),长度n,子串复杂度δ,以及串BWT的运行次数r ,定义了
满足n=Θ(2<年代up>ℓℓ),δ=Θ(Δ),而且 r=Ω(2<年代up>ℓℓ).
总的来说,结合引理3.8和3.9,我们得到了以下δ范围的紧密下界<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(1)Ω(n ).
定理3.10。每N ≥1, Δ∈[1 ..]N ),存在一个长度为n的弦T,子弦复杂度为δ, BWT中的运行次数为r n=Θ(N ),δ=Θ(Δ),而且 .
3.4.进一步组合边界年代trong>
通过将定理3.7与子串复杂度δ的已知性质相结合,我们得到了有关弦上BWT运行数及其反向的第一个界。没有这样的边界(偶数多项式在r 日志n )是已知的。
推论3.11。如果r和<我米g alt="cacm6506_aw.gif" src="https://dl.acm.org/cms/attachment/6be052f4-aea9-42b7-88a8-f81a0498ebdc/cacm6506_aw.gif">分别表示长度为n的文本及其反向的BWT中运行的次数,则 .
证明。因为δ的值与文本及其相反的值相同,定理3.7产生<我米g alt="cacm6506_ay.gif" src="https://dl.acm.org/cms/attachment/7d7c2e6b-7be6-4dc4-a30f-4d4c689e58da/cacm6506_ay.gif">.结合Kempa和Prezza的结果<年代up>12一个>(定理3.9)和Kociumaka等人。<年代up> 13一个>引理2给出δ≤r。 因此,我们获得<我米g alt="cacm6506_az.gif" src="https://dl.acm.org/cms/attachment/c1692a8c-536b-4ec3-a470-706df60f309a/cacm6506_az.gif">.
在本文的完整版中,我们还刻画了所有不可约LCP值的和:
定理3.12。对于每一个长度为n的字符串,求和r Σ年代ub>所有不可约LCP值满足rΣ年代ub>=<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(n 日志δ)。
由于δ≤r ,给出的上界总是(渐近地)至少与前一个上界一样强r σ年代ub>≤n 日志r 作者:Kärkkäinen等。<年代up>9一个>此外,它可以严格更强,因为log δ =o (日志r )是可能的,当δ = log<年代up>o(1)年代up>n。在本文的完整版中,我们证明了引理3.8和3.9的字符串产生了一个匹配的下界:
定理3.13。每N ≥1而且 Δ∈[1 ..]N ),存在一个长度为n,子串复杂度为δ,和为r的字符串T Σ年代ub>满足不可约LCP值n=Θ(N ),δ=Θ(Δ),而且 rΣ年代ub>=Θ(n 日志δ)。
回到顶部一个>
4.从LZ77到游程BWT
在本节中,我们概述了给定文本的LZ77解析的算法T ∈Σ<年代up>n,计算其游程长度压缩BWT<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z polylogn )时间。我们从解释关键概念的概述开始。接下来,我们介绍了算法中使用的两个新的数据结构:压缩字符串同步集(4.1节)和压缩小波树(4.2节)。最后算法的草图在第4.3节中给出。
对于任何子串Y 的T ∞年代up>,我们定义
我们称之为子字符串Y 的T ∞年代up>是left-maximal 如果存在不同的符号一个 ,b ∈Σ这样的弦唉 而且通过 的子字符串也是T ∞年代up>.下面的定义,假设Σ∩ℕ=∅,在我们的建设中起到关键作用。
定义4.1 (bwt模ℓ ).让 T∈Σ<年代up>n,ℓ ≥1是整数,和 Y我 =T ∞年代up>(SA) (我 ) . SA (我 ) +ℓ )为 我∈(1 . .n ].我们定义字符串 BWT<年代ub>ℓ∈(Σ∪ℕ)<年代up>n ,被称为 BWT模ℓ (T),如下。因为我∈(1 . .n ),
算法运行在k =⌈日志n ⌉轮。为问 ∈(0 . .k ),输入到问 第一轮是RL(BWT<年代ub>2<年代up>问),输出为RL(BWT<年代ub>2<年代up>问+1年代up>).在算法的最后,我们得到了RL(BWT)<年代ub>2<年代up>k= RL(BWT),因为X ∈年代 2<年代up>k 2永远是左最大的吗<年代up>k≥n。
非正式地,在圆问 ,我们得到了一个(经过行程压缩的)BWT子序列,该子序列可以通过只对长度为2的前缀进行后缀排序来确定<年代up>问.请注意,BWT<年代ub>ℓ[b ..e )∈Σ<年代up>*年代up>意味着BWT<年代ub>ℓ+1年代ub>[b ..e )∈Σ<年代up>*年代up>(因为左极大子字符串的前缀是左极大子字符串)。因此,这些子序列直到算法结束时才需要修改(除非可能将它们的运行与相邻的运行合并)。剩下的职位,BWT<年代ub>ℓ控件中要检查的(最左边出现的)子字符串问 第一轮的目标是替换他们在BWT中相应的运行<年代ub>ℓ与以前未知的BWT符号(定义在BWT<年代ub>2ℓ ).
我们称一个块为BWT[b 。。e ]统一的 如果BWT中的所有符号[b 。。e 都是平等的非均匀 否则。以下引理保证了上述构造的可行性。
引理4.2。对于任何ℓ ≥1,它拥有 | RL (BWT<年代ub>ℓ) | < 2r。
证明。表示RL (BWT<年代ub>ℓ) = ((c 1年代ub>,λ<年代ub>1年代ub>,……(c h ,λ<年代ub>h )),让λ<年代ub> 0年代ub>= 0。通过BWT的定义<年代ub>ℓ,如果c<年代ub>我年代ub> ∈ℕ,则块BWT(λ<年代ub>我-1年代ub>..λ<年代ub>我是不均匀的。因此,最多有r - 1运行的符号从ℕ在BWT<年代ub>ℓ.
另一方面,c<年代ub>我年代ub>∈Σ和c<年代ub>j年代ub>∈Σ,我 <j ,两者不能在BWT中属于同一运行。如果这是真的,那么两者都不是c 我 +1年代ub>∈Σ(这意味着c 我 +1年代ub>=c<年代ub>我年代ub>,与RL(BWT)的定义相矛盾<年代ub>ℓ ),或c 我+1年代ub>∈ℕ,这是不可能的,因为BWT(λ<年代ub>我 ..λ<年代ub>我+1年代ub>那么就是非均匀的。因此,最多有r 运行的符号从Σ在BWT<年代ub>ℓ.ⅈ
4.1.压缩字符串同步集年代trong>
我们的算法建立在字符串同步设置 最近由Kempa和Kociumaka引入。<年代up>11一个>同步集是采样后缀最强大的技术之一。在未压缩的设置中,它们是获得多个问题的时间最优解的关键,例如最先进的小字母文本BWT构造算法。<年代up> 11一个>在本节中,我们将介绍一个概念压缩字符串同步集。 我们的构造是在压缩设置中同步集合的第一个实现,因此是独立的。
我们从基本同步集的定义开始。
定义4.3 (τ同步集<年代up>11一个>).让T ∈Σ<年代up>n做一条绳子,让它是一个参数。一组年代⊆[1 . .n −2τ+ 1]如果T满足以下条件,则称为τ同步集 一致性而且 密度条件:
如果T[我 ..我 + 2τ)=T [j ..j + 2τ),然后我 ∈年代当且仅当j ∈年代(i, j ∈(1 . .n - 2τ+ 1]),
年代∩(我 ..我 +τ)=∅当且仅当 (因为我∈(1 . .n - 3τ + 2])。
在大多数应用中,我们想要最小化|S|。然而,密度条件规定了一个下界<我米g alt="cacm6506_bc.gif" src="https://dl.acm.org/cms/attachment/8616864f-7f6a-4b85-8175-aa899b819d30/cacm6506_bc.gif">对于长度字符串n ≥3τ - 1,不包含长度为3τ - 1的最多为周期的周期子串<我米g alt="cacm6506_bd.gif" src="https://dl.acm.org/cms/attachment/6e5087c8-b597-4f08-ad95-d9e87cd5cabd/cacm6506_bd.gif">.因此,我们不能指望在最坏的情况下,在接下来的情况下取得上界改进。
定理4.4(Kempa和Kociumaka<年代up>11一个>).对于任意长度为n且带参数的字符串T ,存在一个τ同步集 年代的大小 .此外,这样的 年代可以(确定性地)构造在 (n )时间。
为可压缩字符串存储S存在以下挑战<我米g alt="cacm6506_bc.gif" src="https://dl.acm.org/cms/attachment/8616864f-7f6a-4b85-8175-aa899b819d30/cacm6506_bc.gif">是有时,它不是 暗示了z n。例如,正如Bille等人所指出的,<年代up>3.一个>Thue-Morse条件满足z =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(日志n ),但它们不包含周期子串X 与<我米g alt="cacm6506_bg.gif" src="https://dl.acm.org/cms/attachment/ff7f76da-031f-4809-891c-225949f40b72/cacm6506_bg.gif">,因此它们的同步集满足<我米g alt="cacm6506_bc.gif" src="https://dl.acm.org/cms/attachment/8616864f-7f6a-4b85-8175-aa899b819d30/cacm6506_bc.gif">.这使我们不能保持S的普通表示<我米g alt="cacm6506_bh.gif" src="https://dl.acm.org/cms/attachment/b51e62d6-535d-4f15-9c5f-d89b7b31bfc0/cacm6506_bh.gif">.
因此,我们利用了可压缩字符串的一个不同属性:即它们的所有子字符串Y 满足法律流程外包(Y )<我米g alt="cacm6506_bi.gif" src="https://dl.acm.org/cms/attachment/e14334ae-be4d-4974-a840-dfd6d62d14c5/cacm6506_bi.gif">,在那里e<年代ub>j年代ub>最后的位置是j 的LZ77解析中的th短语T。 通过S的一致性,它足以存储<我米g alt="cacm6506_bj.gif" src="https://dl.acm.org/cms/attachment/2e270b57-142d-44bd-a2a1-a1dc8275f2bc/cacm6506_bj.gif">.决定是否我 ∈S,然后定位我 =法律流程外包(T [我 ..我 + 2τ)并检查if<我米g alt="cacm6506_bk.gif" src="https://dl.acm.org/cms/attachment/b98778ae-5715-47c9-bd80-058f98198cc2/cacm6506_bk.gif">.这激发了以下(更普遍的)定义。
定义4.5(压缩τ同步集)。让 年代是弦T的τ同步集 [1。。n ]对于一些 ,对于每一个j ∈(1 . .z ),让e<年代ub>j年代ub>表示t的LZ77解析中第j个短语的最后位置 ∈ℤ<年代ub>≥2年代ub>,我们定义的 压缩表示的 年代作为
在本文的完整版中,我们证明了每一个文本T 有一个同步集S和一个小的压缩表示,我们展示了如何有效地从LZ77解析T。
定理4.6。存在一种拉斯维加斯随机化算法,给定字符串T的LZ77解析 ∈Σ<年代up>n,一个参数 ,常数k ∈ℤ<年代ub>≥2年代ub>,结构在 (z 日志<年代up>5一个>n)压缩表示的时间 电脑及相关知识<年代ub>k(年代)一个τ同步集 年代T的满足 |排版<年代ub>k(S) |≤72kz .
4.2.压缩小波树年代trong>
除了字符串同步集,小波树,<年代up>8一个>最初是为文本索引而发明的,在我们的算法中发挥着核心作用。与几乎所有之前的小波树应用不同,我们的应用使用了一个非常长的字符串序列(直到Θ(n )符号)。这种方法是可行的,因为所有字符串都是文本的子字符串,文本存储在LZ77表示中。在本节中,我们将描述这种新颖的小波树变体压缩小波树。 特别地,我们证明了它们大小的上界,描述了一个由lz77压缩的文本组成的高效结构,并展示了如何增强它们以支持一些基本查询。
设Σ为Σ≥1的字母表。考虑一个字符串W [1。。米 ]的字母表Σ<年代up>ℓ这W 是一个序列米 字符串长度≥0ℓ 字母≥0 Σ。的小波树W 是单词查找树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">每个节点的Σv<年代ub>X年代ub> 与字符串关联B<年代ub>X年代ub>∈Σ<年代up>*年代up>在此定义基于W。 我们让<我米g alt="cacm6506_bm.gif" src="https://dl.acm.org/cms/attachment/bbb75b02-8788-434e-8db2-18c644e45da6/cacm6506_bm.gif">的节点集<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">.
与每个节点v<年代ub>X年代ub>∈V (<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">)时,我们将递增序列关联起来我<年代ub>X年代ub>[1。。h 的主要指标 这样
基于我<年代ub>X年代ub>,我们定义B<年代ub>X年代ub>∈Σ<年代up>*年代up>所以,对于我 ∈[1 .;h ),
如果|X | <ℓ ,B<年代ub>X年代ub>= ε if |X | =ℓ。 换句话说,B<年代ub>X年代ub>字符串是否包含位置为|的符号X 的每个字符串的| + 1W 前缀是X。 重要的是,其中的符号B<年代ub>X年代ub>发生的顺序与这些字符串发生的顺序相同W。
就像在小波树应用程序中通常做的那样,我们只显式地存储字符串B<年代ub>X年代ub>.主要指标的值我<年代ub>X年代ub>根据以下观察,使用其他数据结构检索。
引理4.7 (Grossi等。<年代up>8一个>).让X ∈Σ<年代up>d,在维 ∈[0 .;ℓ ).对于每一个c ∈Σ和j ∈[1 .;|我 Xc年代ub>|),我们有我<年代ub>Xc年代ub> [j ]=我<年代ub>X年代ub>[我 ),B<年代ub>X年代ub>[我 ]c在B中出现第j次<年代ub>X年代ub>.
我们定义的压缩小波树 c 的W 的小波树W 其中所有的字符串B<年代ub>X年代ub>已经被压缩了,除了<我米g alt="cacm6506_bn.gif" src="https://dl.acm.org/cms/attachment/180342fc-eba1-4dff-92d0-73752d487cae/cacm6506_bn.gif">,所有节点v<年代ub>X年代ub>满足| RL (B<年代ub>X年代ub>)|≤1已被移除(一元路径被折叠成单个边,并将其标签拼接)。生成的树的形状和边缘标签与压实单词查找树 的{W [1],…W [米 ]}。
我们存储的边标签<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 中子字符串的指针W。 我们假设每条边<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 和RL的每个元素(B<年代ub>X年代ub>)可以编码为<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(1)空间。因为| RL (B<年代ub>Y年代ub>)每个内部节点|≥1保持v<年代ub>Y年代ub>∈V (<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c )和,除非|V (<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c )| = 1,每片叶子v<年代ub>Z年代ub>在<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 可以单射映射到RL(B<年代ub>Z”年代ub>)给家长v<年代ub>Z”年代ub>的v<年代ub>Z年代ub>,树<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 使用<我米g alt="cacm6506_bo.gif" src="https://dl.acm.org/cms/attachment/2b36c3b4-6ad4-4c66-84da-912387426032/cacm6506_bo.gif">空间。
定理4.8。如果 c 那么长度为l的字符串序列的压缩小波树是W吗 .
证明。让米 = |W |,k = | RL (W ) |≤米 ,k” = | {W [我 ]:我 ∈[1 .;米 ]} |。由于|V (T c ) |≤1 + 2k ' =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(1 + k)我们可以关注节点v x ∈V (T c )使<年代ub>X年代ub>) |≥2。
证明与引理3.1相似。与每个X ∈Σ<年代up>*年代up>这样| RL (B<年代ub>X年代ub>)|≥2,我们关联|RL(B<年代ub>X年代ub>)| - 1单位的成本,并将它们收费到单个元素W。 然后我们展示了在RL(W )的总收费最多为2 logk” 单位成本。因此,
考虑X ∈Σ<年代up>d与| RL (B<年代ub>X年代ub> ) |≥2;请注意,d <ℓ。 让RL (B<年代ub>X年代ub>) = ((c 1年代ub>,……(c<年代ub>h年代ub>,λ<年代ub>h ))。如果我们允许,就观察一下p 0年代ub>=我<年代ub>X年代ub>(λ<年代ub>我 ),p 1年代ub>=我<年代ub>X年代ub>(λ<年代ub>我 + 1]我 ∈[1 .;h ),然后W [p 0年代ub>][d + 1) =c<年代ub>我年代ub>≠c<年代ub>我年代ub>+<年代ub>1年代ub>=W [p 1年代ub>][d + 1]。此外,B<年代ub>X年代ub>(λ<年代ub>我 ]≠B<年代ub>X年代ub>(λ<年代ub>我 + 1]意味着W [p 0年代ub>+ 1]≠W [p 0年代ub>),W [p 1年代ub>- 1)≠W [p 1年代ub>].的我 第一个单位成本计入W [p<年代ub>t年代ub>),t 的子树大小决定∈{0,1}的取值<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 扎根于……的孩子v<年代ub>X年代ub>,使子树包含v w [p t ]年代ub>不超过子树包含的叶子数v w[p 1−t ]年代ub>.
现在,考虑跑步W [b 。。b” ]=Y δ 在RL (W ).对于单一深度d ,运行最多可以充电两次,最多一个单元分配给W [b )由于p 1年代ub>=b 最多分配一个小队W [b” )由于p 0年代ub>=b” ,对于X =Y [1。。d ].此外,注意路径上的子树大小v<年代ub>Y年代ub>到根v ε年代ub>的<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 每个深度都加倍d 这趟跑是收费的。因此,运行的总费用最多为2 logk” 单位。ⅈ
我们想要支持的键操作<我米g alt="cacm6506_bt.gif" src="https://dl.acm.org/cms/attachment/7d90f7aa-958c-4416-a0b8-8fa4072ff029/cacm6506_bt.gif">c 是计算价值吗我<年代ub>X年代ub>[问 )给问 ∈[1 .;|我<年代ub>X年代ub>和一个指向v x ∈V (T c ).让W [1。。米 的子字符串序列T ∞年代up>常见的长度ℓ .注意,如果我们有权限T ,则序列W 可以编码为<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(1 + | RL (W ) |)空间。也就是说,它足以存储长度ℓ 和序列RL((lpos(W [我 )))<年代ub>我∈(1 . .米 ]年代ub>).在本文的完整版中,我们证明,给定这样的编码W 的LZ77解析T 的压缩小波树W 可以高效地构造支持快速主索引查询。
定理4.9。给定T的LZ77表示[1 .。和序列W[1 ..]m m] ≤T的n个相同长度的子字符串 ∞年代up>,表示为 RL((法律流程外包(W [我 )))<年代ub>我∈(1 . .米 ]年代ub>),压缩小波树W,支持及时的主索引查询 (日志<年代up>4年代up>n),可以及时构建吗 ((z + | RL (W ) |)日志<年代up>2年代up>n).
4.3.该算法年代trong>
我们现在准备草图构建序列RL(BWT)的过程<年代ub>2<年代up>问),问 ∈[0 .;⌈日志n ⌉]。
让问 ∈[4 .;⌈日志n ⌉)(值问 ∈[0 .;3]分别处理)和让ℓ = 2<年代up>问.我们展示了如何计算RL(BWT)<年代ub>2ℓ )鉴于RL (BWT<年代ub>ℓ的LZ77解析T。 算法的主要思想如下。
设S是一个τ同步集T ,在那里<我米g alt="cacm6506_bq.gif" src="https://dl.acm.org/cms/attachment/d974ca21-c342-4c4d-b8bf-809f0c76106b/cacm6506_bq.gif">.如前所述,BWT<年代ub>ℓ[j ∈Σ表示BWT<年代ub>2ℓ [j )∈Σ。让BWT<年代ub>ℓ[y 。。y ' )∈ℕ<年代up>+年代up>在BWT跑步<年代ub>ℓ.通过BWT的定义<年代ub>ℓ的后缀T ∞年代up>开始位置我 ∈SA (y 。。y ' 共享一个共同的长度前缀ℓ ≥3τ。因此,假设S∩[我 ..我 +τ) =对所有成立我 ∈SA (y 。。y ' ](周期性的情况是单独处理的),由一致性的S,所有文本的位置我 ∈SA (y 。。y ' 共享一个公共的偏移Δ与我 + Δ = min (S∩[我 ..我 +τ))。这让我们推导出长度-2的阶数1 前缀T [我 。。我 + 2ℓ )基于字符串的顺序T [我 + Δ . .我 + 2ℓ )从同步位置开始。为此,从片段的排序列表T [年代 。。年代 + 2ℓ )年代 ∈S,我们利用小波树提取前面的T [我 。。我 + Δ)(一个常见的前缀T ∞年代up>[我 。。)我 ∈SA (y 。。y ' ])。重要的是同步位置年代 分享T [年代 - τ . .年代 + 2ℓ )可一起加工;因此,通过定理4.6,应用于k = 7,所以2ℓ ≤k τ,它足以使用<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z )不同的子字符串。
在论文的完整版中,我们提供了上述构建的细节,得到了以下结果。
定理4.10。存在一种拉斯维加斯随机化算法,给定长度为n的文本T的LZ77解析,在时间上计算其运行长度压缩Burrows-Wheeler变换 ((r +z )日志<年代up>6年代up>n) =<我米g alt="cacm6506_bs.gif" src="https://dl.acm.org/cms/attachment/5a6b4346-4395-4bd9-8412-e526c7182d7d/cacm6506_bs.gif">(z 日志<年代up>8年代up>n).
回到顶部一个>
致谢
这项研究的第一作者是加州大学伯克利分校的博士后学者(由美国国家科学基金会资助)。1652303和1934846,以及Alfred P. Sloan奖学金),而第二作者是以色列巴伊兰大学的博士后(由ISF资助,资助项目为:1278/16和1926/19,BSF拨款编号。2018364,以及欧盟地平线2020研究和创新计划下的ERC授权MPM,协议编号:683064)。
回到顶部一个>
参考文献
1.Amir, A., Iliopoulos, C.S., Radoszewski, J.汉明距离为1的两个弦不能同时是准周期的。正无穷。过程。128年博士论文。 , 54-57(2017)。
2.复合重复感知的数据结构。在CPM (2015),施普林格,Cham, Switzerland, 26-39。
3.Bille, P., Gagie, T., Gørtz, i.l., Prezza, N. RLSLPs和LZ77之间的分离。J.离散算法50 、(2018)》。
4.Burrows, M., Wheeler, D.J.一种块排序无损数据压缩算法。数字设备公司124号技术报告加州帕洛阿尔托,1994年。
5.全功能后缀树与bwt有限空间下的最优文本搜索。arXiv 1809.02792(2018)。
6.Gagie, T., Navarro, G., Prezza, N.关于Lempel-Ziv解析的近似比率。在拉丁 (2018),施普林格,Cham, Switzerland, 490-503。
7.全功能后缀树和bwt运行的有限空间中的最优文本搜索。ACM 67 , 1(2020), 1 - 54。
8.Grossi, R., Gupta, A., Vitter, J.S.高阶熵压缩文本索引。在苏打水 (2003), ACM/SIAM,费城,宾夕法尼亚州,美国,841-850。
9.Kärkkäinen, J., Kempa, D., Pitkowski, M.不可约LCP值和的更紧界。定理。第一版。Sci 656。 ,(2016), 265 - 278。
10.高重复文本的压缩索引的最佳构建。在苏打水 (2019),美国宾夕法尼亚州费城SIAM, 1344-1357。
11.字符串同步集:亚线性时间BWT构造和最优LCE数据结构。在获得STOC (2019), ACM,纽约,美国,756-767。
12.Kempa D., Prezza N.在字典压缩的根:字符串吸引子。在获得STOC (2018), ACM,纽约,美国,827-840。
13.Kociumaka, T., Navarro, G., Prezza, N.。在拉丁 (2020),施普林格,Cham, Switzerland, 207-219。
14.刘志强,刘志强。关于压缩和索引重复序列的研究。定理。第一版。Sci 483。 (2013), 115 - 133。
15.Mäkinen, V., Belazzougui, D., Cunial, F., Tomescu,人工智能基因组尺度算法设计:高通量测序时代的生物序列分析。 剑桥大学出版社,英国剑桥,2015。
16.对Burrows-Wheeler变换的分析。j . ACM 48 , 3(2001), 407-430。
17.高度重复的字符串集合索引,第一部分:重复度量。ACM第一版。测量员54 , 2(2021), 1-31。
18.为高度重复的字符串集合建立索引,第二部分:压缩索引。ACM第一版。测量员54 , 2(2021), 1-32。
19.Ohlebusch E。生物信息学算法:序列分析,基因组重排和系统发育重建。 Oldenbusch Verlag,不来梅,德国,2013年。
20.Ohno, T., Sakai, K., takabtakake, Y., Tomohiro, I, Sakamoto, H.在线RLBWT的快速实现及其在LZ77解析中的应用。j .离散算法 , 52-53:18-28(2018)。
21.Pevsner, J。生物信息学与功能基因组学 3<年代up>理查德·道金斯年代up>经济日报。Wiley-Blackwell,奇切斯特,英国,2015年。
22.policyiti, A., Prezza, N.从LZ77到跑长编码的Burrows-Wheeler变换,然后返回。在CPM (2017), Schloss Dagstuhl - leibniz - zentrum für Informatik, Dagstuhl,德国,17:1-17:10。
23.基于游程编码BWT的LZ77计算。Algorithmica 80 , 7(2018), 1986-2011。
24.Sirén, J., Välimäki, N., Mäkinen, V., Navarro, G.游程长度压缩索引对于高度重复的序列集合是优越的。在尖塔 (2008),施普林格,柏林,海德堡,德国,164-175。
25.Ziv, J., Lempel, A.序列数据压缩的通用算法。IEEE反式。正无穷。理论23 , 3(1977), 337-343。
回到顶部一个>
作者
杜米尼克Kempa年代trong>(<一个href="mailto:kempa@cs.jhu.edu">kempa@cs.jhu.edu一个>),约翰霍普金斯大学,巴尔的摩,马里兰州,美国。
托马斯Kociumaka年代trong>(<一个href="mailto:kociumaka@berkeley.edu">kociumaka@berkeley.edu一个>),美国加州大学伯克利分校。
回到顶部一个>
脚注
a.选择LZ77作为这个类的代表,是因为大多数其他方法是NP-hard优化,而LZ77承认一个简单的线性时间压缩。
b。为整数我 ,j ∈ℤ,我们表示[我 。。j ] = {k ∈ℤ:我 ≤k ≤j },我 。。j ) = {k ∈ℤ:我 ≤k <j }, (我 。。j ] = {k ∈ℤ:我 <k <j }。
本文的原始版本在FOCS 2020上发表,并可在<一个href="https://arxiv.org/abs/1910.10631">https://arxiv.org/abs/1910.10631一个>
要查看随附的技术观点,请访问<一个href="https://doi.acm.org/10.1145/3531443">doi.acm.org/10.1145/3531443一个>
本作品授权于<一个href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/一个>
数字图书馆是由计算机协会出版的。版权所有©2022 ACM股份有限公司
没有发现记录