(注:本文大多数内容摘自中文/英文维基百科)
一.什么是BWT算法?
Burrows–Wheeler变换(BWT,也称作块排序压缩),是一个被应用在数据压缩技术(如bzip2)中的算法。该算法于1994年被Michael Burrows和David Wheeler在位于加利福尼亚州帕洛阿尔托的DEC系统研究中心发明。它的基础是之前Wheeler在1983年发明的一种没有公开的转换方法。
当一个字符串用该算法转换时,算法只改变这个字符串中字符的顺序而并不改变其字符。如果原字符串有几个出现多次的子串,那么转换过的字符串上就会有一些连续重复的字符,这对压缩是很有用的。该方法能使得基于处理字符串中连续重复字符的技术的编码更容易被压缩。
举个栗子:
input:SIX.MIXED.PIXIES.SIFT.SIXTY.PIXIE.DUST.BOXES
output:TEXYDST.E.IXXIIXXSSMPPS.B..E.S.UESFXDIIOIIIT
该算法的输出因为有更多的重复字符而更容易被压缩了,例如使用游程编码:Run-length encoding。
二.变换过程
2.1 对原文本转码
简单来讲,就是a)循环移位生成矩阵,b)对矩阵中的行按字典序排序,c)输出最后一列得到变换结果。直接上栗子
input:^BANANA|
其中^和|分别标记字符串的头和尾。
实现过程:

Burrows-Wheeler 变换(BWT)是一种用于数据压缩的技术,由 Michael Burrows 和 David Wheeler 在1994年发明。BWT通过改变字符串字符顺序而非改变字符本身,使得含有重复子串的字符串在转换后更利于压缩。文章介绍了BWT的变换过程,包括转码和解码,并讨论了如何利用后缀数组进行优化。
最低0.47元/天 解锁文章
1901





