Compressed Data Structures for Dynamic Sequences

Abstract

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σ) 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( n/ n + /σn) time.

0

Turn this paper into a lesson

ArcXiv compiles a structured reading guide from this paper's metadata: plain-English importance, contributions, prerequisite concepts, which sections to read first, flashcards, and a quiz. Grounded in the abstract, never invented.

Discussion (0)

Sign in to join the discussion.

Loading comments…