We consider the problem of computing the q-gram profile of a string T of size N compressed by a context-free grammar with n production rules. We present an algorithm that runs in O(N−α) expected time and uses O(n+q+kT,q) space, where N−α≤qnN−α≤qn is the exact number of characters decompressed by the algorithm and kT,q≤N−α is the number of distinct q-grams in T . This simultaneously matches the current best known time bound and improves the best known space bound. Our space bound is asymptotically optimal in the sense that any algorithm storing the grammar and the q-gram profile must use Ω(n+q+kT,q) space. To achieve this we introduce the q-gram graph that space-efficiently captures the structure of a string with respect to its q-grams, and show how to construct it from a grammar.
- q-gram profile
- Grammar compression