中文

一种计算字符串集合的 BWT 和 LCP 数组的新型轻量级算法

数据结构与算法 2016-07-29 v1

摘要

对非常大规模字符串集合(如广泛使用的测序技术所产生的集合)的索引 heavily 依赖于 Burrows-Wheeler 变换 (BWT) 的多字符串推广,针对此问题已提出了各种内存算法。 routinely 处理的数据(如生物信息学中的数据)的快速增长需要大量主内存,这一事实推动了开发几乎完全在外存中工作的 BWT 计算算法。另一方面,计算最长公共前缀 (LCP) 数组的相关问题通常在字符串集合的多种算法中起到关键作用,例如计算字符串间后缀 - 前缀重叠的算法,这是许多基因组组装算法的基本步骤。当前计算mm个字符串(每个长度为kk)的 BWT 和 LCP 数组的最佳轻量级方法的 I/O 复杂度为O(mk2logΣ)O(mk^2 \log |\Sigma|)(其中Σ|\Sigma|是字母表大小),因此并非最优。在本文中,我们提出了一种同时构建 BWT 和 LCP 数组的新方法,其 I/O 复杂度为O(kmL(logk+logσ))O(kmL(\log k +\log \sigma)),其中LL是输入字符串中至少出现两次的最长子串的长度。

关键词

引用

@article{arxiv.1607.08342,
  title  = {A New Lightweight Algorithm to compute the BWT and the LCP array of a Set of Strings},
  author = {Paola Bonizzoni and Gianluca Della Vedova and Serena Nicosia and Marco Previtali and Raffaella Rizzi},
  journal= {arXiv preprint arXiv:1607.08342},
  year   = {2016}
}