2008-10-25 109 views
24

为了纪念Hutter Prize, 什么是文本压缩的顶级算法(以及每个算法的快速描述)?什么是纯文本压缩算法的当前状态?

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

+2

我看到一旦一个(模拟)的文章提出文本的有损压缩,具有优良的性能(大小!)......很有趣。 – PhiLho 2008-10-25 14:18:15

+0

@PhiLho嘿,这基本上就是Summly做:) http://www.theregister.co.uk/2013/03/25/yahoo_buys_summly/ – 2013-05-04 21:38:21

回答

22

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

  • 的​​和here - 洗牌字符(或其他比特块)与可预测的算法,以增加重复块这使得源更容易压缩。正常情况下会发生解压缩,并且反向转换会导致结果不重排。注意:单独使用BWT实际上并不压缩任何内容。它只是使源更容易压缩。
  • Prediction by Partial Matching (PPM) - arithmetic coding的演变,其中预测模型(上下文)是通过处理有关源与使用静态概率的统计信息来创建的。尽管它的根源在于算术编码,但结果可以用霍夫曼编码或字典以及算术编码来表示。
  • 上下文混合 - 算术编码使用静态上下文进行预测,PPM动态选择单个上下文,上下文混合使用许多上下文并权衡其结果。 PAQ使用上下文混合。 Here's高级概述。
  • Dynamic Markov Compression - 与PPM相关,但使用比特级上下文与字节或更长。
  • 此外,Hutter奖参赛者可以用外部字典中的小字节条目替换常见文本,并使用特殊符号区分大小写文本,而不是使用两个不同的条目。这就是为什么他们擅长压缩文本(特别是ASCII文本),而不是像常规压缩那样有价值。

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

3

总是有lzip

所有开玩笑一边:

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

这些都没有在附近PAQ等几个纯文本压缩算法(HTTP: //en.wikipedia.org/wiki/PAQ) – 2008-10-25 14:47:11

0

如果您想将PAQ作为程序使用,您可以在基于debian的系统上安装zpaq软件包。用法是(也man zpaq见)

zpaq c archivename.zpaq file1 file2 file3 

压缩为约1/10日一个zip文件的大小的。 (1.9M VS 15M)