# Optimal-Time Text Indexing in BWT-runs Bounded Space

arXiv: https://arxiv.org/abs/1705.10382 · HTML: https://mlsanity.com/paper/1705.10382/

## Key facts

- Cited by 1 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 29 May 2017.

## Built on by (most cited first, 1 of 1)

- [On minimizers and convolutional filters: theoretical connections and applications to genome analysis](https://mlsanity.com/paper/2111.08452/) (2021)

## Abstract (arXiv)

Indexing highly repetitive texts --- such as genomic databases, software repositories and versioned text collections --- has become an important problem since the turn of the millennium. A relevant compressibility measure for repetitive texts is r, the number of runs in their Burrows-Wheeler Transform (BWT). One of the earliest indexes for repetitive collections, the Run-Length FM-index, used O(r) space and was able to efficiently count the number of occurrences of a pattern of length m in the text (in loglogarithmic time per pattern symbol, with current techniques). However, it was unable to locate the positions of those occurrences efficiently within a space bounded in terms of r. Since then, a number of other indexes with space bounded by other measures of repetitiveness --- the number of phrases in the Lempel-Ziv parse, the size of the smallest grammar generating the text, the size of the smallest automaton recognizing the text factors --- have been proposed for efficiently locating, but not directly counting, the occurrences of a pattern. In this paper we close this long-standing problem, showing how to extend the Run-Length FM-index so that it can locate the occ occurrences efficiently within O(r) space (in loglogarithmic time each), and reaching optimal time O(m+occ) within O(rlog(n/r)) space, on a RAM machine of w=Omega(log n) bits. Within O(rlog (n/r)) space, our index can also count in optimal time O(m). Raising the space to O(r wlogσ(n/r)), we support count and locate in O(mlog(σ)/w) and O(mlog(σ)/w+occ) time, which is optimal in the packed setting and had not been obtained before in compressed space. We also describe a structure using O(rlog(n/r)) space that replaces the text and extracts any text substring of length ℓ in almost-optimal time O(log(n/r)+ℓlog(σ)/w). (...continues...)
