Fully-functional bidirectional Burrows-Wheeler indexes
arXiv:1901.10165
Abstract
Given a string on an alphabet of size , we describe a bidirectional Burrows-Wheeler index that takes bits of space, and that supports the addition \emph{and removal} of one character, on the left or right side of any substring of , in constant time. Previously known data structures that used the same space allowed constant-time addition to any substring of , but they could support removal only from specific substrings of . We also describe an index that supports bidirectional addition and removal in time, and that occupies a number of words proportional to the number of left and right extensions of the maximal repeats of . We use such fully-functional indexes to implement bidirectional, frequency-aware, variable-order de Bruijn graphs in small space, with no upper bound on their order, and supporting natural criteria for increasing and decreasing the order during traversal.