Range Predecessor and Lempel-Ziv Parsing
Djamal Belazzougui, Simon J. Puglisi · 2015
The Lempel-Ziv parsing of a string (LZ77 for short) is one of the most important and widely-used algorithmic tools in data compression and string processing. We show that the Lempel-Ziv parsing of a string of length n on an alphabet of size σ can be computed in O(n log log σ) time (O(n) time if we allow randomization) using O(n log σ) bits of working space; that is, using space proportional to that of the input string in bits. The previous fastest algorithm using O(n log σ) space takes O(n(log σ + log log n)) time. We also consider the important rightmost variant of the problem, where the goal is to associate with each phrase of the parsing its most recent occurrence in the input string. We solve this problem in time, using the same working space as above. The previous best solution for rightmost parsing uses O(n(1 + log σ/log log n)) time and O(n log n) space. As a bonus, in our solution for rightmost parsing we provide a faster construction method for efficient 2D orthogonal range reporting, which is of independent interest.