- 4
- 0
- 约5.94千字
- 约 4页
- 2015-08-20 发布于未知
- 举报
一般工业技术
维普资讯
第 l3毫第 1期 青 岛 大 学 学 报 VOL.13NO.4
1998年 12月 JOURNALOFQINGDAOUNIVERSITY Dtc l998
)1/
采用LRU淘汰原则的LZW 压缩算法’下∞。
LZW COM PRESSION ALGORITHM W ITH
LRU ELIM INAT10N PRINCIPLE
高基铎一 GaoChangduo
(青岛大学讦膏 青岛266071) (Center。fCcmp~ingofQingda0Unlv~sky.Q;ngda0266071)
摘要 用LRU淘汰原则改进 了LZW 压缩算法- AbstractLnprovedLZWcompressionalgorilhmthrough
LZW 压缩算法 是一种常用的数据压缩算法,由于它不依赖于任何数据格式,而且
具有很高的综合性能指标 (解码速度与压缩 比率),因而得到广泛应用。象微机上的
PKzIP,PKARC等压缩程序以及CompuServe的GIF图象格式等,都采用Lzw压缩算
法.
LZW 压缩算法的核心是一个记录字符串代码的串表,串表是压缩/解压缩过程中动
态生成的 LZW 压缩算法规定,当串表达到4096项时便清除 对于全局相关性较强的数
据,串表清除后,先前建立的串表不能被充分利用,因而影响了压缩比率。为解决这一问
题 ,PKzIP,PKARc等压缩程序采用sHRINKING策略,即当串表满时,不清除串表中所
有项,只清除串表中的叶结点项,以提高压缩比率。
不同于LZW压缩算法和SHRINKING策略,借鉴操作系统页面管理的LUR淘汰原
则 ],本文提出了一种新的串表清除方法,即对每一表项的使用次数进行计数,只清除串
表中最近最少使用的项,这样可充分利用压缩数据全局相关性的特点,提高压缩比率
1 LZW压缩算法的思想
LZW 压缩算法通过用简单的代码来替换复杂的字串来实现压缩数据的,代码与字串
的对应关系是通过串表来记录的。串表不是事先定好的,而是在压缩过程中动态生成的.
并且这个串表仅在压缩过程中需要,一旦压缩完毕,串表就不需要了。而解压时,根据压缩
·收稿 日期l1998一Ol—O5
维普资讯
青 岛大 学 学 报 第 l3卷
的数据可以再形成与压缩时相同的串表 。
压缩开始时,初始化串表使其包括所有的单字 (代码从 0到 255),LZW 压缩算法规
定清串表代码为 256,结束代码为 257,由此串表中增加第一个表项时.对应的代码是
258。由于8位码的最大值是255,256用9位代码才能表示,因此开始输出的代码应为9
位代码,但当串表增加到512项时,需要输出10位代码。为限制串表的大小,LZW 压缩算
法规定串表不能超过 4096项,即当代码位数超过 l2位时,放弃这个串表,重新初始化串
表,同时输出一个清位码,并按新的串表继续进行压缩。
LZW 压缩算法需要两个工作变量,PrefixString(前缀串变量)和ReadChar(读人字
符变量),LZW 压缩算法如下:
(1)初始化串表并且置PrefixString为空
(2)当输入没结束时执行
1)读人字符到 ReadChar
2)若PrefixString+ReadChar在串表中
则 PrefixString=PrefixString+ReadChar
否则①输出PrefixString在串表中的代码
②在串表中增加项PrefixString+ReadChar
原创力文档

文档评论(0)