使用 LZMA 编码信息流
Use LZMA to codificate a stream of information
教授给了我一篇研究论文,展示了一种有效压缩某种数据的方法。
不值得解释完整的算法,因为问题不是关于那个,我只是介绍一个小例子,应该让你理解真正的问题是什么。
我们的压缩算法有自己的字典,是一个table(不管怎么算,假设compressor和decompressor都有),每table行有一个字符串。
为了压缩消息,压缩器将打开它并从头开始,它将在字典中搜索匹配项并最终发送带有行 ID 的 MATCH 消息,如果没有找到,则带有要设置的消息的 SET 消息是发送。
请注意,MATCH 不必真正完全匹配,它们后面可以跟许多 MISSMATCH 消息,每个消息包含字节偏移错误和正确字节。
例如,压缩器可能想要编码:
现在,他们在论文中说他们使用 LZMA 对 "stream" 数据进行熵编码,他们认为这是一件微不足道的事情,没有提供更多细节。
我在网上搜索过,但没有找到任何答案。您知道如何完成最后一步吗?有参考资料吗?
作为这个开源项目的一部分,有一个使用 LZMA 的预设字典的流压缩算法:Zip-Ada。预设词典在那里被调用 "training data".
教授给了我一篇研究论文,展示了一种有效压缩某种数据的方法。 不值得解释完整的算法,因为问题不是关于那个,我只是介绍一个小例子,应该让你理解真正的问题是什么。
我们的压缩算法有自己的字典,是一个table(不管怎么算,假设compressor和decompressor都有),每table行有一个字符串。 为了压缩消息,压缩器将打开它并从头开始,它将在字典中搜索匹配项并最终发送带有行 ID 的 MATCH 消息,如果没有找到,则带有要设置的消息的 SET 消息是发送。 请注意,MATCH 不必真正完全匹配,它们后面可以跟许多 MISSMATCH 消息,每个消息包含字节偏移错误和正确字节。
例如,压缩器可能想要编码:
现在,他们在论文中说他们使用 LZMA 对 "stream" 数据进行熵编码,他们认为这是一件微不足道的事情,没有提供更多细节。
我在网上搜索过,但没有找到任何答案。您知道如何完成最后一步吗?有参考资料吗?
作为这个开源项目的一部分,有一个使用 LZMA 的预设字典的流压缩算法:Zip-Ada。预设词典在那里被调用 "training data".