Burrows-Wheeler 压缩(转换)算法(BWT)

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

(注:本文大多数内容摘自中文/英文维基百科)

一.什么是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|

其中^和|分别标记字符串的头和尾。

这里写图片描述

实现过程:

//encode过程
//朴素的方法,即:轮转构造矩阵->排序->输出矩阵最后一列
public String 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值