Resumen:
The successor and predecessor problem consists of obtaining the closest value in a set
of integers, greater/smaller than a given value. This problem has interesting applications,
like the intersection of inverted lists. It can be easily modeled by using a bitvector of size n
and its operations rank and select. However, there is a practical approach [1], which keeps
the best theoretical bounds, and allows to solve successor and predecessor more efficiently.
Based on that technique, we designed a novel compact data structure for bitvectors with k
runs that achieves access, rank, and successor/predecessor in O(1) time by consuming space
O(
√
kn) bits. In practice, it obtains a compression ratio of 0.04% − 26.33% when the runs
are larger than 100, and becomes the fastest technique, which considers compressibility,
in successor/predecessor queries. Besides, we present a recursive variant of our structure,
which tends to O(k) bits and takes O(log n
k ) time.