我在哪里可以找到无损压缩算法,它会产生无头输出?

时间:2009-02-18 15:52:31

标签: algorithm compression lossless-compression

有没有人知道无损压缩算法,它会产生无头输出? 例如,不要存储用于压缩它的霍夫曼树?我不谈论硬编码的霍夫曼树,但我想知道是否有任何算法可以压缩和解压缩输入而不在其输出中存储一些元数据。或者这在理论上是不可能的?

5 个答案:

答案 0 :(得分:5)

当然它是可行的。除此之外,LZ系列压缩器不需要输出除压缩数据本身之外的任何东西,因为字典是在线构建的压缩(或解压缩)进程。对于那些LZ类型的算法,您有很多参考实现。例如,LZMA,7zip的组件。

答案 1 :(得分:4)

Run Length Encoding就是一个例子

答案 2 :(得分:4)

Adaptive Huffman coding正是如此。更一般地,术语adaptive coding用于描述具有此属性的entropy codes。有些dictionary codes也拥有此属性,例如run-length encoding (RLE)Lempel-Ziv-Welch (LZW)

答案 3 :(得分:1)

脑海中浮现出{p> lzo。它在OpenVPN中使用,效果很好

答案 4 :(得分:0)

为什么要寻找无头压缩输出的压缩算法?

或许(a)你有一个像双向电话那样需要低延迟流压缩/解压缩的系统。 Zach Scrivena提到的压缩算法的自适应编码类别 以及Diego Sevilla和Javier提到的dictionary compression算法的LZ族 非常适合这种应用。 这些算法的实际实现通常 do 具有一个或两个元数据 在开始时(使它们对(b)应用程序无用),但这对延迟几乎没有影响。

或许(b)您主要对加密感兴趣,并且您听说加密前压缩会提供一些改进的安全属性,只要压缩文本没有固定的元数据标题“crib”。 现代加密算法(据我们所知)并不容易受到这种“婴儿”的影响,但如果你是偏执狂,你可能会感兴趣 “双射压缩”(abc等)。 当接收器获得这样的压缩输出时,不可能检测到传输中的错误(翻转位,插入位,删除位等)(使这些算法对(a)应用程序不是特别有用)。

或许(c)由于某些其他原因,您对无头压缩感兴趣。听起来很有趣 - 这是什么原因?