pipette
ENEnglish

Practical and Space-Efficient LZ77 and LZ Pre-Compression via String Synchronizing Sets

Jonas Ellert, Lukas Nalbach

PreprintCódigo disponible

En palabras de los autores

The Lempel-Ziv (LZ77) factorization decomposes a text into the least possible number of phrases that each refer to an earlier occurrence. It is this phrase count, rather than the encoded size, that governs the size of LZ-based compressed indexes, and computing a factorization with few phrases is a time and space bottleneck in their construction. In practice, computing LZ77 quickly has so far required building a suffix array. Ellert [SPIRE 2023] gave algorithms that compute the exact LZ77 factorization, and a 3-approximation of it, in sublinear working space. They have remained unimplemented, because two of their components resist a direct implementation: a lookup table that degenerates to patterns of length at most two for realistic inputs, and an orthogonal range reporting data structure that is impractical. We replace both, fine-tune every remaining stage, and obtain the first practical implementation, which runs in space close to the text rather than to the suffix array. On one thread, our 3-approximation factorizes 12-19x faster than the classical LPF algorithm while using 14x less memory; on 32 threads, even our exact algorithm is 1.4--2.9x faster than parallel LPF, at 9x less memory. In practice the approximation ratio stays far below 3. As a side result, passing only its perfect phrases to a downstream compressor yields a precompressor that is on par with the state of the art [Dinklage, SEA 2026] in compression ratio, and better in memory consumption and parallel throughput.

Resultado principalEl resumen no menciona limitaciones.

Apareció: viernes, 25 de septiembre. arXiv. Preprint, todavía sin revisión por pares.

Comentario de los autores: 17 pages, 6 figures, 4 tables. Accepted at ALENEX 2027. Code: https://github.com/LukasNalbach/lz77-sss