我有一个问题 - 我被介绍给 Ziv-Lempel 的一个版本,它只编码大小为 3 或更长的重复(不编码 1 或 2 个字符的重复 - 字符本身被放置到编码字符串而不是 (m ,k) 值)。有人问我是否可以提高 ziv Lempel 编码效率(就编码字符串的长度而言 - 而不是时间复杂度)。
我认为就编码字符串的长度而言 - 可能存在以下情况:不在位置 p 编码 3 长度重复,而是编码从位置 p+1 或 p+2 开始的重复可能会产生更好的结果 - 这也出现在我读到的理论中:我添加了一张相关段落的照片,仅说明了这一点(但没有给出示例)。到目前为止,我设法找到的每个示例都是编码长度为 3 的重复的代码也可以检测到的示例。
这是一段谈到存在这样一个文本的事实:
到目前为止,我们描述的压缩算法是贪婪的:任何长度为 3 或更多的重复都会立即报告并使用。有时这不是最优的:我们可以在 p 位置重复一个 [ m 1 , k 1 ],在p +1 或p +2位置重复一个 [ m 2 , k 2 ] ,其中k 1 << k 2。因此,非贪心算法可能会导致改进的压缩。