Burrows-Wheeler 压缩
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Burrows-Wheeler 压缩相关的知识,希望对你有一定的参考价值。
Burrows-Wheeler压缩,这个革命性的压缩算法性能优于 gzip 和 PKZIP,并且易于实现,也没有专利保护,它是Unix的bzip2压缩的基础。
Burrows-Wheeler 压缩算法包含三部分,依顺序分别是:
1. Burrows-Wheeler 变换。给定一个典型的英文文本,把它变换成另一个文本,其中相同的字母序列相邻出现;
2. 前移编码(Move-to-Front encoding)。给定一个文本,其中相同字母多次相邻出现,把它转换成另一文本,其中特定字母比其它字母出现的频次更高;
3. Huffman 压缩(Huffman Compression)。给定一个文本,其中特定字母比其它字母出现的频次更高,通过给出现频次高的字母以短编码而其它频次低的字母长编码来进行压缩。
第三步 Huffman 压缩才是真正进行了信息的压缩:这一步之所以有效是因为第一步和第二步能确保给出一个文本,其中某些字母出现的频次要比其它字母出现的频次更高。为了恢复一个消息,反序应用逆操作:首先应用 Huffman 展开,然后前移解码,最后是 Burrows-Wheeler 逆变换。
前移编码与解码:前移编码的主要思想是让字母表中的字母保持一个字母序列,不断地从输入消息中读入字母,打印出字母出现在字母序列中的位置,然后把该字母移动到字母表的前面。举一个例子,如果我们有一个6个字母的字母表,初始次序为 A B C D E F, 然后我们对输入 CAAABCCCACCF 进行编码,我们将如下更新字母序列:
Move-to-Front in out
--------------------- ----- ------
A B C D E F C 2
C A B D E F A 1
A C B D E F A 0
A C B D E F A 0
A C B D E F B 2
B A C D E F C 2
C B A D E F C 0
C B A D E F C 0
C B A D E F A 2
A C B D E F C 1
C A B D E F C 0
C A B D E F F 5
F C A B D E
以上是关于Burrows-Wheeler 压缩的主要内容,如果未能解决你的问题,请参考以下文章
我在 Burrows-Wheeler 逆向转换中的逻辑有啥问题?
Burrows-Wheeler 变换 (BWT) 重复字符串