- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本科毕业论文 计算机科学系
PAGE
PAGE 1
LZ77算法与模式匹配KMP算法的结合及算法实现
[ 摘要 ]
基于字典的数据压缩算法是目前大多数通用文本压缩工具的首选。本文深入探讨了基于字典的压缩算法LZ77,创造性地提出了把LZ77与模式匹配的KMP算法相结合的思想,解决LZ77的性能瓶颈问题,并编程实现了LZ77算法。
本文首先简单介绍了数据压缩的意义,理论基础和LZ77算法的背景,然后第二章深入探讨了LZ77算法,指出了LZ77算法的性能瓶颈,并提出一种不同于目前流行的通用压缩算法的方案,即把LZ77与KMP算法相结合。接下来第三章深入分析了KMP算法,并研究了它要应用于LZ77必须作出哪些调整。第四章具体介绍了如何实现本文提出的算法,并指出编程实现算法时进一步作出三方面的改进:将窗口虚拟“滑动”;对匹配串的进行变长编码;单个字符和表示匹配串的元组混合输出,从而进一步改进程序的压缩性能。第五章分析了本文的算法并提出进一步的研究工作。附录给出了本文实现的压缩程序的源代码。
目前大多数的通用压缩程序是通过建立特殊数据结构来解决匹配串的快速查找,如二叉搜索树,hash表,trie树等,要付出一定的代价去维护这些复杂的数据结构。本文提出的算法截然不同,不需要建立和维护任何特殊的数据结构,只需巧妙地把KMP和LZ77结合,这正是本算法的特色所在。
一、 前 言
(一) 数据压缩的简介、必要性和意义
数据压缩技术在当今这个信息化时代得到了广泛的应用。究竟,什么是“数据”?什么是“数据压缩”?所谓“数据”,通常是指信源所发信号的数字化表示或记录,包括数值、文本、图象、声音和影像等类型。“数据压缩”,就是以较少的数码表示信源所发的信号,减少容纳给定信息集合或数据采样集合的信号空间,或者更简单来说,就是去掉信息中的冗余,以更少的数码来“进一步”地“表示”信号的原始数据表示。
数据压缩的过程是怎样的呢?可以说:数据压缩=模型+编码。一般来说,数据压缩包括取得一个符合流并将它们变换成代码,如果代码的结果流规模比原始符号总的规模小,就成功实现了压缩。模型用于处理输入符号并确定输出哪个或那些代码的数据和规则的一个集合。编码程序用来产生基于模型所确定的概率的适当代码,以得到尽可能紧凑的压缩码流。研究表明,大多数信息的表达都存在着一定的冗余度,通过采用一定的模型和编码方法,可以降低这种冗余度,从而达到压缩的效果。
当今时代是一个“信息爆炸”的时代,数据压缩已经成为了非常必要的技术。看看一些具体的数字:一张A4(210mm×297mm) 幅面的照片,若用中等分辨率(300dpi)的扫描仪按真彩色扫描,共有(300×210/25.4) ×(300×297/25.4)个象素,每个象素占3个字节,其数据量为26M字节;一颗卫星每半小时即可发回一次全波段数据(5个波段),每天的数据量可达1.1GB;采样率较低的数字电话,按每一取样用8位压扩量化,通常其数码率也需要8×8=64kbps。
由此可见,面对当今如此大量的数据,存储器的存储,通信干线信道的带宽,以及计算机的处理速度都受到了极大的压力。尽管计算机的存储能力越来越大,但在这个信息时代,人们仍常常感到存储空间不够用,节省每一比特都是有实际意义的。另一方面,如此大量的数据传输,给本来就已经非常紧张的网络带宽变得更加不堪重负。因此,无论从存储还是传输的角度看,数据压缩都是有意义的。数据压缩的好处有:
节省存储空间:数据压缩后能节省存储器、磁盘、磁带、光盘等数据存储介质的空间,降低存储费用。
提高传输效率:压缩数据,意味着能减少传输给定消息集合所需要的时间,较快地传输各种信源,降低信道占有费用。
节省网络带宽:把数据压缩能节省传输给定消息集合所要求的带宽,在现有通信干线上开通更多的并行业务。
总之,这个时代人们更迫切地要求减少数据存储空间,数字系统的成本几乎按位计算,如果不进行数据压缩,无论存储或传输都很难实用化,数据压缩的作用及其社会效益、经济效益将越来越明显。
(二) 信息理论基础
经典的数据压缩技术,建立在信息理论的基础上。信息论是数学的一个分支,40年代由在贝尔实验室工作的Claude Shannon首创。数据压缩涉及到冗余问题,一条消息中的冗余信息要占用额外的位来编码,如果去除这些额外信息,将减少消息的量,因此数据压缩进入信息论领域。下面探讨一下与有关数据压缩的理论。
信息论使用术语Entropy(“熵”)来表示一条信息中真正需要编码的信息量,消息的熵越高,所含的信息就越多。记字符Ak出现的概率为Pk,按概率的公理化定义,必须有:
0≤Pk≤1 (k=1,2,3,…m), ∑ Pk=1
则字符Ak的熵定义为:
I(Ak)= - log2(Pk)
整条消息的熵就是所有单个符号熵
您可能关注的文档
- (毕业设计论文)《800辊距型钢矫直机的设计与开发》.doc
- (毕业设计论文)《1000kV级交流特高压单回和同塔双回输电线路导线在特定区域下的最小对地距离》.doc
- (毕业设计论文)《1000kV级交流特高压输电线路的对地距离的选取研究》.doc
- (毕业设计论文)《900mm平整机组开卷机结构设计》.doc
- (毕业设计论文)《1000m3氧气球罐应力分析设计》.doc
- (毕业设计论文)《1000MW火力发电厂电气部分及继电保护》.doc
- (毕业设计论文)《1000t内河油船的方案设计》.doc
- (毕业设计论文)《1000大卡有机热载体加热炉盘管组件焊接工艺设计》.doc
- (毕业设计论文)《1000吨成品油船方案设计》.doc
- (毕业设计论文)《1000吨级中国沿海成品油船的方案设计》.doc
文档评论(0)