Source: xxsds-dynamic Priority: optional Maintainer: Debian Med Packaging Team Uploaders: Steffen Moeller Build-Depends: debhelper-compat (= 13), cmake, libtsl-hopscotch-map-dev Standards-Version: 4.6.0 Section: libs Vcs-Browser: https://salsa.debian.org/med-team/xxsds-dynamic Vcs-Git: https://salsa.debian.org/med-team/xxsds-dynamic.git Homepage: https://github.com/xxsds/DYNAMIC Rules-Requires-Root: no Package: libxxsds-dynamic-dev Section: libdevel Architecture: all Depends: ${misc:Depends} Multi-Arch: foreign Description: succinct and compressed fully-dynamic data structures library This library offers space- and time-efficient implementations of some basic succinct/compressed dynamic data structures. It only ships header files, i.e. is inclusion only. . DYNAMIC features: . * A succinct Searchable Partial Sums with Indels (SPSI) structure representing a list of integers s_1, s_2, ..., s_m. Space: about 1.2 * m * ( log(M/m) + log log m ) bits, where M = m + s_1 + s_2 + ... + s_m. The structure supports also update operations (i.e. s_i = s_i + delta). * A Succinct dynamic bitvector supporting rank/select/access/Indel (RSAI) operations. Space: about 1.2 * n bits. * A gap-compressed dynamic bitvector supporting rank/select/access/Indel operations. Space: about 1.2 * b * ( log(n/b) + log log b ) bits, b being the number of bits set and n being the bitvector length. All operations take log(b) time. * A dynamic sparse vector (of integers) with access/Indel operations. * A dynamic string supporting rank/select/access/Indel operations. The user can choose at construction time between fixed-length/gamma/Huffman encoding of the alphabet. All operations take log(n) * log(sigma) time (or log(n) * H0 with Huffman encoding). * A run-length encoded dynamic string supporting rank/select/access/insert operations (removes are not yet implemented). Space: approximately R*(1.2 * log(sigma) + 2.4 * (log(n/R)+log log R) ) bits, where R is the number of runs in the string. All operations take log(R) time. * A dynamic (left-extend only) entropy/run-length compressed BWT * A dynamic (left-extend only) entropy/run-length compressed FM-index. This structure consists in the above BWT + a dynamic suffix array sampling . Algorithms . * Two algorithms to build LZ77 in repetition-aware RAM working space. Both algorithms use a run-length encoded BWT with sparse Suffix array sampling. The first algorithm stores 2 SA samples per BWT run. The second algorithm (much more space efficient) stores 1 SA sample per LZ factor. From the papers "Computing LZ77 in Run-Compressed Space", Alberto Policriti and Nicola Prezza, DCC2016 and " LZ77 Computation Based on the Run-Length Encoded BWT", Alberto Policriti and Nicola Prezza (Algorithmica) * An algorithm to build the BWT in run-compressed space * An algorithm to build LZ77 in nH0(2+o(1)) space and n * log n * H0 time. From the paper "Fast Online Lempel-Ziv Factorization in Compressed Space", Alberto Policriti and Nicola Prezza, SPIRE2015 * An algorithm to build the BWT in high-order compressed space. The algorithm runs in O(n * H_k * log log n) average-case time (e.g. good for DNA) and O(n * H_k * log n) worst-case time. From the paper "Average linear time and compressed space construction of the Burrows-Wheeler transform" Policriti A., Gigante N. and Prezza N., LATA 2015 (the paper discusses a theoretically faster variant) . The SPSI structure is the building block on which all other structures are based. This structure is implemented with cache-efficient B-trees.