Compressed random access memory

Jesper Jansson, Kunihiko Sadakane, Wing-Kin Ken Sung · 2010

AbstractMotivated by applicationswhichneed to storehugeamounts ofdatain the main memory of a computer, this paper proposes a new dynamicdata-structure for compressed random access memory. Ferragina andVenturini [SODA 2007, TCS 2007] recently gave a compressed data-structure for storing a string that allows substrings to be retrievedefficiently, but it requires the string to be static. Here, we extend theirresults in a non-trivial way to also allow the stored compressed stringto be modified during execution.Our results are as follows. A memory (or string) T[1..n], where eachcharacterT[i]isoflogσ bits, canbe storedinnH k (T)+O(nlogσ (k+1)(logσ+loglogn)logn )bits, where H k (T) is the k-th order empirical entropy of T, such that(1) accessing T[i..j] takes optimal O(1+(j−i)/log σ n) time and (2) re-placing T[i..i + log σ n − 1] by another string of length log σ n takesO(logn/loglogn) time. We can also support insertion and deletionof log σ n characters in O(logn/loglogn) time at the cost of increas-ing the access time to O(logn/loglogn) time, which matches a knownlower bound. In addition, our key observation that the empirical en-tropy of a string does not change much after a small change to thestring and our simple yet efficient method for maintaining an arrayof variable-length blocks under length modifications may be useful formany other applications as well.

Read the paper · More papers on PaperTik