Optimal-Time Dictionary-Compressed Indexes
We describe the first self-indexes able to count and locate pattern occurrences in optimal time within a space bounded by the size of the most popular dictionary compressors. To achieve this result, we combine several recent findings, including string attractors —new combinatorial objects encompassi...
Gespeichert in:
Veröffentlicht in: | ACM transactions on algorithms 2021-01, Vol.17 (1), p.1-39 |
---|---|
Hauptverfasser: | , , , , |
Format: | Artikel |
Sprache: | eng |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | We describe the first self-indexes able to count and locate pattern occurrences in optimal time within a space bounded by the size of the most popular dictionary compressors. To achieve this result, we combine several recent findings, including
string attractors
—new combinatorial objects encompassing most known compressibility measures for highly repetitive texts—and grammars based on
locally consistent parsing
.
More in detail, letγ be the size of the smallest attractor for a text
T
of length
n
. The measureγ is an (asymptotic) lower bound to the size of dictionary compressors based on Lempel–Ziv, context-free grammars, and many others. The smallest known text representations in terms of attractors use space
O
(γ log (
n
/γ)), and our lightest indexes work within the same asymptotic space. Let ε > 0 be a suitably small constant fixed at construction time,
m
be the pattern length, and
occ
be the number of its text occurrences. Our index counts pattern occurrences in
O
(
m
+log
2+ε
n
) time and locates them in
O
(
m
+(
occ
+1)log
ε
n
) time. These times already outperform those of most dictionary-compressed indexes, while obtaining the least asymptotic space for any index searching within
O
((
m
+
occ
),polylog,
n
) time. Further, by increasing the space to
O
(γ log (
n
/γ)log
ε
n
), we reduce the locating time to the optimal
O
(
m
+
occ
), and within
O
(γ log (
n
/γ)log
n
) space we can also count in optimal
O
(
m
) time. No dictionary-compressed index had obtained this time before. All our indexes can be constructed in
O
(
n
) space and
O
(
n
log
n
) expected time.
As a by-product of independent interest, we show how to build, in
O
(
n
) expected time and without knowing the sizeγ of the smallest attractor (which is NP-hard to find), a run-length context-free grammar of size
O
(γ log (
n
/γ)) generating (only)
T
. As a result, our indexes can be built without knowingγ. |
---|---|
ISSN: | 1549-6325 1549-6333 |
DOI: | 10.1145/3426473 |