  Strings in the real world are often encoded with some level of uncertainty.
In the character-level uncertainty model, an uncertain string $X$ of length $n$
on an alphabet $\Sigma$ is a sequence of $n$ probability distributions over
$\Sigma$. Given an uncertain string $X$ and a weight threshold
$\frac{1}{z}\in(0,1]$, we say that pattern $P$ occurs in $X$ at position $i$,
if the product of probabilities of the letters of $P$ at positions
$i,\ldots,i+|P|-1$ is at least $\frac{1}{z}$. While indexing standard strings
for online pattern searches can be performed in linear time and space, indexing
uncertain strings is much more challenging. Specifically, the state-of-the-art
index for uncertain strings has $\mathcal{O}(nz)$ size, requires
$\mathcal{O}(nz)$ time and $\mathcal{O}(nz)$ space to be constructed, and
answers pattern matching queries in the optimal $\mathcal{O}(m+|\text{Occ}|)$
time, where $m$ is the length of $P$ and $|\text{Occ}|$ is the total number of
occurrences of $P$ in $X$. For large $n$ and (moderate) $z$ values, this index
is completely impractical to construct, which outweighs the benefit of the
supported optimal pattern matching queries. We were thus motivated to design a
space-efficient index at the expense of slower yet competitive pattern matching
queries. We propose an index of $\mathcal{O}(\frac{nz}{\ell}\log z)$ expected
size, which can be constructed using $\mathcal{O}(\frac{nz}{\ell}\log z)$
expected space, and supports very fast pattern matching queries in expectation,
for patterns of length $m\geq \ell$. We have implemented and evaluated several
versions of our index. The best-performing version of our index is up to two
orders of magnitude smaller than the state of the art in terms of both index
size and construction space, while offering faster or very competitive query
and construction times.
