Skip to main content
QUICK REVIEW

[论文解读] Space-Efficient Computation of the LCP Array from the Burrows-Wheeler Transform

Nicola Prezza, Giovanna Rosone|arXiv (Cornell University)|Jan 1, 2019
Algorithms and Data Compression被引用 7
一句话总结

本文提出了一种空间高效的算法,直接从Burrows-Wheeler变换(BWT)计算字符串集合的LCP数组并合并BWT,使用o(n log σ)比特的工作空间(在输入和输出之外)。通过结合Belazzougui的后缀树区间枚举方法与Beller等人提出的LCP构造方法,该方法在保持O(n log σ)时间复杂度的同时实现了最优的空间使用,显著优于以往针对小字母表的O(n)工作空间解决方案,并可推广至字符串集合。

ABSTRACT

We show that the Longest Common Prefix Array of a text collection of total size n on alphabet [1, {\\sigma}] can be computed from the Burrows-Wheeler transformed collection in O(n log {\\sigma}) time using o(n log {\\sigma}) bits of working space on top of the input and output. Our result improves (on small alphabets) and generalizes (to string collections) the previous solution from Beller et al., which required O(n) bits of extra working space. We also show how to merge the BWTs of two collections of total size n within the same time and space bounds. The procedure at the core of our algorithms can be used to enumerate suffix tree intervals in succinct space from the BWT, which is of independent interest. An engineered implementation of our first algorithm on DNA alphabet induces the LCP of a large (16 GiB) collection of short (100 bases) reads at a rate of 2.92 megabases per second using in total 1.5 Bytes per base in RAM. Our second algorithm merges the BWTs of two short-reads collections of 8 GiB each at a rate of 1.7 megabases per second and uses 0.625 Bytes per base in RAM. An extension of this algorithm that computes also the LCP array of the merged collection processes the data at a rate of 1.48 megabases per second and uses 1.625 Bytes per base in RAM.

研究动机与目标

  • 使用次线性工作空间从文本集合的BWT计算LCP数组。
  • 将针对单个文本的空间高效LCP计算推广至字符串集合。
  • 设计一种用于合并两个字符串集合BWT的空间高效算法。
  • 支持从BWT简洁枚举后缀树区间,为核心算法提供支持。
  • 在大规模生物数据(如短读长集合)上实现高性能,同时最大限度减少RAM使用。

提出的方法

  • 利用Belazzougui的算法,通过波浪树表示从BWT枚举右极大子串及其SA范围。
  • 将枚举过程扩展以包含广义后缀树的叶区间,从而支持集合的LCP数组构造。
  • 采用混合数据结构策略:当字母表较小(σ < √n / log²n)时,使用O(σ² log²n)工作空间;当字母表较大时,回退至Beller等人提出的O(n)空间方法。
  • 重用LCP数组和文档数组的输出空间来存储中间波浪矩阵,将总工作空间减少至o(n log σ)比特。
  • 根据字母表大小,使用优先队列或栈来管理BWT合并过程中的区间对,以保持空间效率。
  • 在枚举和合并过程中,使用波浪树上的秩操作执行反向搜索,以计算扩展子串的SA范围。

实验结果

研究问题

  • RQ1能否使用次线性工作空间(特别是o(n log σ)比特)从BWT中诱导出LCP数组?
  • RQ2如何将后缀树区间枚举过程扩展,以包含广义后缀树中字符串集合的叶节点?
  • RQ3是否可能使用o(n log σ)比特的工作空间合并两个字符串集合的BWT,同时保持重建合并后BWT的能力?
  • RQ4在计算LCP数组和合并BWT时,空间效率与时间复杂度之间的权衡是什么?
  • RQ5所提出的算法能否在真实生物数据(如短DNA读长)上高效实现,且仅使用极少的RAM?

主要发现

  • 对于总大小为n、字母表为[1, σ]的文本集合,可在O(n log σ)时间内使用o(n log σ)比特的工作空间(在BWT和LCP之外)计算其LCP数组。
  • 该算法将Beller等人提出的O(n)工作空间解决方案推广至字符串集合,并将空间使用减少至o(n log σ)比特。
  • 两个总大小为n的集合的BWT可在O(n log σ)时间内使用o(n log σ)比特的工作空间合并,同时作为副产品计算出文档数组。
  • 在DNA字母表上的工程化实现,使用仅1.5字节/基底的RAM,每秒处理16 GiB的100-bp短读长,速度达2.92兆基底/秒。
  • BWT合并算法处理两个8 GiB的集合,每秒处理1.7兆基底,RAM使用量为0.625字节/基底。
  • 可计算合并后集合LCP数组的扩展版本,处理速度为每秒1.48兆基底,RAM使用量为1.625字节/基底。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。