纯文本压缩算法的现状如何?
-
04-07-2019 - |
题
为了纪念 哈特奖, ,用于文本压缩的顶级算法是什么?
笔记:这个问题的目的是获得压缩算法的描述,而不是压缩程序的描述。
解决方案
突破边界的压缩器结合了疯狂结果的算法。常见的算法包括:
- 这 Burrows-Wheeler 变换 和 这里 - 使用可预测的算法打乱字符(或其他位块)以增加重复块,从而使源更容易压缩。解压缩正常进行,并且结果未通过逆变换进行混洗。笔记:BWT 本身并不真正压缩任何东西。它只是使源代码更容易压缩。
- 部分匹配预测 (PPM) - 的演变 算术编码 其中预测模型(上下文)是通过处理有关源的统计数据与使用静态概率来创建的。尽管其根源在于算术编码,但结果可以用霍夫曼编码或字典以及算术编码来表示。
- 上下文混合 - 算术编码使用静态上下文进行预测,PPM 动态选择单个上下文,上下文混合使用许多上下文并权衡它们的结果。PAQ 使用上下文混合。 这是 一个高层次的概述。
- 动态马尔可夫压缩 - 与 PPM 相关,但使用位级上下文而不是字节或更长。
- 此外,Hutter 奖参赛者可以使用外部词典中的小字节条目替换普通文本,并使用特殊符号来区分大小写文本,而不是使用两个不同的条目。这就是为什么它们非常擅长压缩文本(尤其是 ASCII 文本),但对于一般压缩却没有那么有价值。
最大压缩 是一个非常酷的文本和通用压缩基准网站。马特·马奥尼出版了另一本 基准. 。Mahoney 可能特别令人感兴趣,因为它列出了每个条目使用的主要算法。
其他提示
如果要将PAQ用作程序,可以在基于debian的系统上安装 zpaq
包。用法是(另见 man zpaq
)
zpaq c archivename.zpaq file1 file2 file3
压缩大约是 zip文件大小的1/10 。 (1.9M vs 15M)
不隶属于 StackOverflow