Broadword Computing and Fibonacci Code Speed Up Compressed Suffix Arrays

  • Authors:
  • Simon Gog

  • Affiliations:
  • Insitute of Theoretical Computer Science, Ulm University,

  • Venue:
  • SEA '09 Proceedings of the 8th International Symposium on Experimental Algorithms
  • Year:
  • 2009

Quantified Score

Hi-index 0.02

Visualization

Abstract

The suffix array of a string s of length n over the alphabet Σ is the permutation that gives us the lexicographic order of all suffixes of s . This popular index can be used to solve many problems in sequence analysis. In practice, one limitation of this data structure is its size of n logn bits, while the size of the text is n log|Σ | bits. For this reason compressed suffix arrays (CSAs) were introduced. The size of these CSAs is asymptotically less than or equal to the text size if the text is compressible, while maintaining O (log *** n ) access time to the elements (0 *** ≤ 1). The goal of a good CSA implementation is to provide fast access time to the elements while using minimal space for the CSA. Both access time and space depend on the choice of a self-delimiting code for compression. We show that the Fibonacci code is superior to the Elias *** code for strings that are low compressible. Our second contribution are two new broadword methods that support the decoding of Fibonacci encoded numbers on 64 bit architectures. Furthermore, our experiments show that the use of known broadword methods speed up the decoding of Elias *** code for strings that are high compressible, like XML. Finally, we provide a new efficient C++ library for succinct data structures which includes a generic CSA for further experiments.