Compressed Data Structures for Dynamic Sequences

preprint2015arXivOpen access

Abstract

We consider the problem of storing a dynamic string SS over an alphabet Σ={ 1,…,σ }Σ=\{\,1,\ldots,σ\,\} in compressed form. Our representation supports insertions and deletions of symbols and answers three fundamental queries: access(i,S)\mathrm{access}(i,S) returns the ii-th symbol in SS, ranka(i,S)\mathrm{rank}_a(i,S) counts how many times a symbol aa occurs among the first ii positions in SS, and selecta(i,S)\mathrm{select}_a(i,S) finds the position where a symbol aa occurs for the ii-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(nlog⁡σ)nH_k+o(n\logσ) bits, where HkH_k is the kk-th order entropy and nn is the string length. Moreover our representation supports extraction of a substring S[i..i+ℓ]S[i..i+\ell] in optimal O(log⁡n/log⁡log⁡n+ℓ/log⁡σn)O(\log n/\log\log n + \ell/\log_σn) time.

Explore this paper’s authors, topics and related work.

Building this map preview

BZPEER is loading the nearby papers, people, topics and institutions for this page.

Reviews 0

Write a reviewWrite

No reviews yet.

Discussion 0

Add a commentWrite

No comments yet.