Fast and Small Subsampled R-indexes
Abstract
The -index represented a breakthrough in compressed indexing of repetitive text collections, outperforming its alternatives by orders of magnitude in query time. Its space usage, where is the number of runs in the Burrows--Wheeler Transform of the text, is however higher than Lempel--Ziv (LZ) and grammar-based indexes, and makes it uninteresting in various real-life scenarios of milder repetitiveness. We introduce the -index, a variant that limits the space to for a text of length and a given parameter , at the expense of multiplying by the time per occurrence reported. The -index is obtained subsampling the text positions indexed by the -index, being still able to support pattern matching with guaranteed performance. Our experiments show that the theoretical analysis falls short in describing the practical advantages of the -index, because it performs much better on real texts than on synthetic ones: the -index retains the performance of the -index while using 1.5--4.0 times less space, sharply outperforming {\em virtually every other} compressed index on repetitive texts in both time and space. Only a particular LZ-based index uses less space than the -index, but it is an order of magnitude slower. Our second contribution are the -csa and -csa indexes. Just like the -index adapts the well-known FM-Index to repetitive texts, the -csa adapts Sadakane's Compressed Suffix Array (CSA) to this case. We show that the principles used on the -index turn out to fit naturally and efficiently in the CSA framework. The -csa is the corresponding subsampled version of the -csa. While the CSA performs better than the FM-Index on classic texts with alphabets larger than DNA, we show that the -csa outperforms the -index on repetitive texts over those larger alphabets and some DNA texts as well.
Keywords
Cite
@article{arxiv.2409.14654,
title = {Fast and Small Subsampled R-indexes},
author = {Dustin Cobas and Travis Gagie and Gonzalo Navarro},
journal= {arXiv preprint arXiv:2409.14654},
year = {2024}
}
Comments
arXiv admin note: text overlap with arXiv:2103.15329