Title: Text Indexing and Searching in Sublinear Time,
Abstract: We introduce the first index that can be built in $o(n)$ time for a text of
length $n$, and also queried in $o(m)$ time for a pattern of length $m$. On a
constant-size alphabet, for example, our index uses
$O(n\log^{1/2+\varepsilon}n)$ bits, is built in $O(n/\log^{1/2-\varepsilon} n)$
deterministic time, and finds the $\mathrm{occ}$ pattern occurrences in time
$O(m/\log n + \sqrt{\log n}\log\log n + \mathrm{occ})$, where $\varepsilon>0$
is an arbitrarily small constant. As a comparison, the most recent classical
text index uses $O(n\log n)$ bits, is built in $O(n)$ time, and searches in
time $O(m/\log n + \log\log n + \mathrm{occ})$. We build on a novel text
sampling based on difference covers, which enjoys properties that allow us
efficiently computing longest common prefixes in constant time. We extend our
results to the secondary memory model as well, where we give the first
construction in $o(Sort(n))$ time of a data structure with suffix array
functionality, which can search for patterns in the almost optimal time, with
an additive penalty of $O(\sqrt{\log_{M/B} n}\log\log n)$, where $M$ is the
size of main memory available and $B$ is the disk block size.