[论文解读] O(n log n)-time text compression by LZ-style longest first substitution
本文提出了一种优化的LZ-LFS压缩算法,时间复杂度为O(n log n),显著优于Mauer等人原始方法的O(n²)时间复杂度。该算法引入了一种更快的Lempel-Ziv风格压缩中最长优先替换的计算方法,实现了对重复文本的高效压缩,同时提供了一种时间复杂度为O(n)的简化版本。
Mauer et al. [A Lempel-Ziv-style Compression Method for Repetitive Texts, PSC 2017] proposed a hybrid text compression method called LZ-LFS which has both features of Lempel-Ziv 77 factorization and longest first substitution. They showed that LZ-LFS can achieve better compression ratio for repetitive texts, compared to some state-of-the-art compression algorithms. The drawback of Mauer et al.'s method is that their LZ-LFS compression algorithm takes $O(n^2)$ time on an input string of length $n$. In this paper, we show a faster LZ-LFS compression algorithm that works in $O(n \log n)$ time. We also propose a simpler version of LZ-LFS that can be computed in $O(n)$ time.
研究动机与目标
- 为解决Mauer等人LZ-LFS算法在长度为n的输入字符串上运行时间复杂度高达O(n²)的问题。
- 设计一种更快的压缩算法,在保持LZ-LFS对重复文本高压缩率的同时提升效率。
- 开发一种简化版的LZ-LFS,实现线性时间复杂度O(n)。
- 通过降低计算开销,使LZ-LFS能够实际应用于大规模重复文本数据的压缩任务。
提出的方法
- 本文引入一种基于后缀数组和增强后缀数组的数据结构,以高效定位并管理压缩过程中的最长匹配子串。
- 采用贪心的最长优先替换策略,优先将最长的重复子串替换为编码字。
- 利用线性时间后缀数组构建方法预处理输入字符串,实现高效的后缀排序与LCP(最长公共前缀)数组计算。
- 在替换阶段使用优先队列管理候选子串,确保最长匹配优先被处理。
- O(n)版本通过仅限制在最具潜力的匹配上进行搜索,简化了替换过程,降低了开销,同时保持了压缩质量。
实验结果
研究问题
- RQ1能否在不牺牲压缩效率的前提下,将原始LZ-LFS算法的O(n²)时间复杂度降低?
- RQ2哪些数据结构和算法优化能够实现LZ-LFS的O(n log n)时间压缩?
- RQ3是否可能设计一种简化版的LZ-LFS,实现O(n)时间复杂度的同时保持具有竞争力的压缩率?
- RQ4新算法在重复文本工作负载下的性能与压缩率与现有最先进方法相比如何?
主要发现
- 所提出的算法实现了O(n log n)的时间复杂度,相较于Mauer等人原始方法的O(n²)有显著提升。
- 该算法在重复文本上保持了高比率的压缩效率,在压缩率效率方面优于多个最先进的压缩算法。
- 该算法的简化版本运行时间复杂度为O(n),适用于大规模文本压缩任务。
- 后缀数组与优先队列的结合,实现了对最长匹配的高效识别与处理,构成了性能提升的核心。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。