We consider the problem of storing a dynamic string S over an alphabet Σ = { 1,...,σ } in compressed form. Our representation supports insertions and deletions of symbols and answers three fundamental queries: access(i, S) returns the i-th symbol in S, ranka(i, S) counts how many times a symbol a occurs among the first i positions in S, and selecta(i, S) finds the position where a symbol a occurs for the i-th time. We present the first fully-dynamic data structure for arbitrarily large alphabets that achieves optimal query times for all three operations and supports updates with worst-case time guarantees. Ours is also the first fully-dynamic data structure that needs only nHk+o(n log σ) bits, where Hk is the k-th order entropy and n is the string length. Moreover our representation supports extraction of a substring S[i..i +ℓ] in optimal O(log n/ log log n + _/ logσ n) time.
CITATION STYLE
Munro, J. I., & Nekrich, Y. (2015). Compressed data structures for dynamic sequences. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 9294, pp. 891–902). Springer Verlag. https://doi.org/10.1007/978-3-662-48350-3_74
Mendeley helps you to discover research relevant for your work.