- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
改进的 LZSS压缩算法
王娟 1 刘教民 2 檀柏红 2
(1 中国人民武装警察部队学院,河北廊坊 065000 ;2 河北省教育厅,河北石家庄 050000)
摘 要 :本文提出了 LZSS压缩算法在进行文本压缩时存在的问题,并给出了解决方法。改进后的算
法具有较高的压缩率,实验结果令人满意。
关键词 :LZSS;数据压缩
1 引言
随着计算机技术的高速发展, 各种系统数据量越来越大, 给信息存储特别是网络传输带来诸多的困难,
并己成为有效获取和使用信息的瓶颈。为了节省信息的存储空间和提高信息的传输效率,必须对大量的实
际数据进行压缩。实践中采用数据压缩技术,通常可以节省 80 %以上的费用,并且使得一些困难问题转而
在技术上能够实现。
目前常用的压缩编码方法分为两大类:一类是无损压缩法,也叫熵编码;另一类是有损压缩法,也叫
熵压缩法。熵压缩法压缩了熵,会减少信息量,因而不能完全恢复,对于图像、动画、和音频等多媒体信
息是有效的,但对于程序文件、数据库文件等就行不通了。
2 LZSS 压缩算法
LZSS 是词典编码无损压缩技术的一种 [1] 。词典编码无损压缩技术主要有 LZ77 、LZSS 、LZ78 、LZW 等几
种基本算法 ,它们一起垄断了当今的通用数据压缩领域。 LZ78 和 LZW 两种算法的编译码方法较为复杂 ,实现
起来较为困难 ,而 LZ77 的压缩率又相对较低 ,比较而言 LZSS 算法在单片机上实现起来较为理想 ,其压缩率较
高 ,编译码算法也较为简单。 LZSS 压缩算法的字典模型使用了自适应的方式 ,也就是说 ,将已经编码过的信息
作为字典 ,如果要编码的字符串曾经出现过 ,就输出该字符串的出现位置及长度 ,否则输出新的字符串。实际
使用时 ,由于被压缩的文件往往较大 ,一般使用“滑动窗口压缩”方式 ,就是将一个虚拟的 ,可以跟随压缩进程
滑动的窗口作为术语字典。
3 改进的 LZSS压缩算法
3.1 LZSS 算法存在的问题
LZSS算法是一种很好的算法, 但是在实现的过程中发现该算法仍有不少可改进之处。 改进算法的思路
有两条,一是从过程出发,即提高编码程序的效率,在压缩率保持不变的前提下尽量减少算法复杂度;二
是从结果出发,分析压缩代码对,尽量精简压缩代码对每个分量的表示方法,并尽量减少压缩代码所占用
的空间,以达到较好的压缩效果。下面分别从这两个方面出发,提出几个改进方案,并给出部分代码实现。
在匹配字符串长度编码时, 必须考虑到它在大多数情况下不会太大, 少数情况下才会发生大字符串的
匹配,因此,无论匹配长度为多长,代码对 (1 ,匹配位置,匹配长度 ) 的长度都是固定的,对于较小的匹配
长度来说,仍可能存在一定的冗余。例如,当偏移量的位数为 12 (文本窗口大小为 4096 字节)、匹配长度
的位数为 4 (匹配长度最大为 16)时,加上 1 位前缀,输出固定为 17 位。若匹配长度为 2 或 3,此时只用
2 位即可表示这个匹配长度,加上 12 位的偏移量和 1 位的前缀,只要输出 15 位,原理上输出代码可减少 2
位,从而实现了更高效的压缩。但这样一来,匹配长度不固定,在译码时无法正确识别匹配长度,也就无
法正确译码。因此需要寻找一种能正确识别变长的匹配长度的机制。
3.2 改进 LZSS 算法之一——前缀编码
在使用可变长的编码方式来表示匹配长度值时,必须设计出一种编码方式,使得译码程序可以方便地
分离每个字符的编码部分。于是有了一种叫“前缀编码”的技术,其主导思想是:任何一个字符的编码,
都不是另一个字符编码的前缀。即任何一个字符的编码,都不是由另一个字符的编码加上若干位 0 或 1 组
成。表 1 为前
文档评论(0)