中文

用于简洁 k-谱的最长公共前缀数组

数据结构与算法 2023-06-09 v1

摘要

字符串的 k-谱是字符串中出现的所有长度为 k 的不同子串的集合。k-谱在生物信息学中有许多应用,包括伪比对和基因组组装。谱 Burrows-Wheeler 变换(SBWT)最近被引入作为一种算法工具,用于高效表示和查询这些对象。k-谱的最长公共前缀(LCP)数组是一个长度为 n 的数组,存储按字典序排列的相邻 k-mer 的最长公共前缀的长度。LCP 数组至少有两个重要应用,即加速使用 SBWT 的伪比对算法,以及允许在 SBWT 框架内模拟变阶 de Bruijn 图。在本文中,我们探索从 k-谱的 SBWT 表示高效计算 LCP 数组的算法。从一个直接的 O(nk) 时间算法开始,我们描述了在理论和实践中都高效的算法。我们证明 LCP 数组可以在最优 O(n) 时间内计算,其中 n 是谱的 SBWT 的长度。在实际基因组学场景中,我们表明这种理论最优算法确实是实用的,但在较小的 k 值下,常常被一个渐近次优但与 CPU 缓存交互更好的算法超越。我们的算法与经典的 Burrows-Wheeler 逆变换算法以及后缀数组的 LCP 数组构建算法有一些共同特征。

关键词

引用

@article{arxiv.2306.04850,
  title  = {Longest Common Prefix Arrays for Succinct k-Spectra},
  author = {Jarno N. Alanko and Elena Biagi and Simon J. Puglisi},
  journal= {arXiv preprint arXiv:2306.04850},
  year   = {2023}
}