纯文本压缩算法的当前状态是什么?

时间:2008-10-25 14:11:29

标签: compression lossless-compression text-compression

为纪念Hutter Prize, 文本压缩的顶级算法(以及每种算法的快速描述)是什么?

注意:这个问题的目的是获得压缩算法的描述,而不是压缩程序。

3 个答案:

答案 0 :(得分:25)

边界推动压缩机结合了疯狂结果的算法。常用算法包括:

  • Burrows-Wheeler Transformhere - 随机字符(或其他位块)具有可预测的算法,以增加重复的块,使源更容易压缩。解压缩正常发生,结果与反向变换无混淆。注意:仅BWT实际上并不压缩任何东西。它只是使源更容易压缩。
  • Prediction by Partial Matching (PPM) - arithmetic coding的演变,其中预测模型(上下文)是通过处理关于源与使用静态概率的统计信息来创建的。尽管它的根源是算术编码,但结果可以用霍夫曼编码或字典以及算术编码来表示。
  • 上下文混合 - 算术编码使用静态上下文进行预测,PPM动态选择单个上下文,Context Mixing使用许多上下文并权衡其结果。 PAQ使用上下文混合。 Here's高级概述。
  • Dynamic Markov Compression - 与PPM相关但使用位级上下文与字节或更长时间。
  • 此外,Hutter奖的参赛者可以用外部词典中的小字节条目替换普通文本,并使用特殊符号区分大小写文本,而不是使用两个不同的条目。这就是为什么他们擅长压缩文本(特别是ASCII文本)而不是一般压缩的价值。

Maximum Compression是一个非常酷的文本和通用压缩基准网站。 Matt Mahoney发布了另一个benchmark。 Mahoney可能特别感兴趣,因为它列出了每个条目使用的主要算法。

答案 1 :(得分:4)

始终有lzip

所有开玩笑的人:

  • 在兼容性方面,PKZIP(DEFLATE算法)仍然胜出。
  • bzip2是享受相对广泛的安装基础和相当好的压缩比之间的最佳折衷,但需要一个单独的归档。
  • 7-ZipLZMA算法)压缩得非常好,可以在LGPL下使用。但是,很少有操作系统提供内置支持。
  • rzip是bzip2的变体,在我看来值得更多关注。对于需要长期归档的大型日志文件,它可能特别有趣。它还需要一个单独的归档器。

答案 2 :(得分:0)

如果要将PAQ用作程序,可以在基于debian的系统上安装zpaq包。用法是(另见man zpaq

zpaq c archivename.zpaq file1 file2 file3

压缩大约是压缩文件大小的1/10 。 (1.9M vs 15M)