4 research outputs found
Subpath Queries on Compressed Graphs: A Survey
Text indexing is a classical algorithmic problem that has been studied for over four decades: given a text T, pre-process it off-line so that, later, we can quickly count and locate the occurrences of any string (the query pattern) in T in time proportional to the query’s length. The earliest optimal-time solution to the problem, the suffix tree, dates back to 1973 and requires up to two orders of magnitude more space than the plain text just to be stored. In the year 2000, two breakthrough works showed that efficient queries can be achieved without this space overhead: a fast index be stored in a space proportional to the text’s entropy. These contributions had an enormous impact in bioinformatics: today, virtually any DNA aligner employs compressed indexes. Recent trends considered more powerful compression schemes (dictionary compressors) and generalizations of the problem to labeled graphs: after all, texts can be viewed as labeled directed paths. In turn, since finite state automata can be considered as a particular case of labeled graphs, these findings created a bridge between the fields of compressed indexing and regular language theory, ultimately allowing to index regular languages and promising to shed new light on problems, such as regular expression matching. This survey is a gentle introduction to the main landmarks of the fascinating journey that took us from suffix trees to today’s compressed indexes for labeled graphs and regular languages
On Locating Paths in Compressed Tries
In this paper, we consider the problem of compressing a trie while supporting
the powerful \emph{locate} queries: to return the pre-order identifiers of all
nodes reached by a path labeled with a given query pattern. Our result builds
on top of the XBWT tree transform of Ferragina et al. [FOCS 2005] and
generalizes the \emph{r-index} locate machinery of Gagie et al. [SODA 2018,
JACM 2020] based on the run-length encoded Burrows-Wheeler transform (BWT). Our
first contribution is to propose a suitable generalization of the run-length
BWT to tries. We show that this natural generalization enjoys several of the
useful properties of its counterpart on strings: in particular, the transform
natively supports counting occurrences of a query pattern on the trie's paths
and its size captures the trie's repetitiveness and lower-bounds a natural
notion of trie entropy. Our main contribution is a much deeper insight into the
combinatorial structure of this object. In detail, we show that a data
structure of bits, where is the number of nodes,
allows locating the occurrences of a pattern of length in
nearly-optimal time, where is the alphabet's
size. Our solution consists in sampling nodes that can be used as
"anchor points" during the locate process. Once obtained the pre-order
identifier of the first pattern occurrence (in co-lexicographic order), we show
that a constant number of constant-time jumps between those anchor points lead
to the identifier of the next pattern occurrence, thus enabling locating in
optimal time per occurrence.Comment: Improved toehold lemma running time; added more detailed proofs that
take care of all border cases in the locate strategy; postprint version to
appear in SODA 202