bzip2原理分享
实现压缩
对数据进行压缩,通常有两个思路:
- 字典转换 ( dictionary transforms )
减少数据中不同符号的数量(即让“字母表”尽可能小);【目前所有的主流压缩算法,比如GZIP或者7-Zip,都会在核心转换步骤中使用字典转换】 - 变长编码 (variable-length codes)
用更少的位数对更常见的符号进行编码(即最常见的“字母”所用的位数最少)。【bzip2 基于该点对数据进行压缩】
bzip2 运行原理
wiki 描述
wiki 描述
wiki 描述
wiki 描述
数据解压为上述流程的逆过程。
BWT
Burrows–Wheeler变换(BWT,也称作块排序压缩),是一个被应用在数据压缩技术(如bzip2)中的算法。该算法于1994年被Michael Burrows和David Wheeler在位于加利福尼亚州帕洛阿尔托的DEC系统研究中心发明。它的基础是之前Wheeler在1983年发明的一种没有公开的转换方法。
BWT会打乱数据流中符号的顺序,并试图让相同的符号簇彼此靠近。
例如字符串S="BANANA"经过BWT后变成S 1 _1 1