中文

可更新的动态 r-index:LCP 有界时间的自索引结构

数据结构与算法 2025-10-30 v4

摘要

自索引是一种支持 locate 查询的数据压缩结构,用于报告给定模式在字符串中出现的全部位置,同时保持字符串的压缩形式。虽然已提出许多自索引,但开发支持字符串插入和删除的数据可更新版本仍具有挑战性。r-index (Gagie 等,JACM'20) 是一种基于 run-length BWT (RLBWT) 设计的代表性静态自索引,适用于高度重复字符串。我们提出的动态 r-index 是 r-index 的动态扩展,实现了 LCP 有界时间的更新。动态 r-index 支持在 O(mlogr/loglogr)O(m \log r / \log \log r) 时间内进行 count 查询,locate 查询在 O(mlogr/loglogr+occlogr)O(m \log r / \log \log r + \mathsf{occ} \log r) 时间内完成,其中 mm 为查询长度,occ\mathsf{occ} 为出现的次数,rr 为 RLBWT 中的 run 数目。使用 O(r)O(r) 单词的空间。关键在于,更新操作以 O((m+Lmax)logn)O((m + L_{\mathsf{max}}) \log n) 时间实现针对长度为 mm 的子串,其中 LmaxL_{\mathsf{max}} 为最大 LCP 值;平均运行时间为 O((m+Lavg)logn)O((m + L_{\mathsf{avg}}) \log n),其中 LavgL_{\mathsf{avg}} 为平均 LCP 值。这种 LCP 有界复杂度在 LCP 值通常较小的高度重复字符串中尤为有利。我们在 various 高度重复数据集上实验性地演示了动态 r-index 的实际效率。

关键词

引用

@article{arxiv.2504.19482,
  title  = {Dynamic r-index: An Updatable Self-Index in LCP-bounded Time},
  author = {Takaaki Nishimoto and Yasuo Tabei},
  journal= {arXiv preprint arXiv:2504.19482},
  year   = {2025}
}

备注

I fixed the abstract so that it is now displayed correctly in Chrome