Engineering Rank/Select Data Structures for Large-Alphabet Strings
Large-alphabet strings are common in scenarios such as information retrieval and natural-language processing. The efficient storage and processing of such strings usually introduces several challenges that are not witnessed in small-alphabets strings. This paper studies the efficient implementation...
Saved in:
Main Authors | , , , , , |
---|---|
Format | Journal Article |
Language | English |
Published |
23.05.2023
|
Subjects | |
Online Access | Get full text |
Cover
Loading…
Summary: | Large-alphabet strings are common in scenarios such as information retrieval
and natural-language processing. The efficient storage and processing of such
strings usually introduces several challenges that are not witnessed in
small-alphabets strings. This paper studies the efficient implementation of one
of the most effective approaches for dealing with large-alphabet strings,
namely the \emph{alphabet-partitioning} approach. The main contribution is a
compressed data structure that supports the fundamental operations $rank$ and
$select$ efficiently. We show experimental results that indicate that our
implementation outperforms the current realizations of the
alphabet-partitioning approach. In particular, the time for operation $select$
can be improved by about 80%, using only 11% more space than current
alphabet-partitioning schemes. We also show the impact of our data structure on
several applications, like the intersection of inverted lists (where
improvements of up to 60% are achieved, using only 2% of extra space), the
representation of run-length compressed strings, and the
distributed-computation processing of $rank$ and $select$ operations. In the
particular case of run-length compressed strings, our experiments on the
Burrows-Wheeler transform of highly-repetitive texts indicate that by using
only about 0.98--1.09 times the space of state-of-the-art RLFM-indexes
(depending on the text), the process of counting the number of occurrences of a
pattern in a text can be carried out 1.23--2.33 times faster. |
---|---|
DOI: | 10.48550/arxiv.2305.14461 |