LZ77算法实现.doc 18页

  • 11
  • 0
  • 0
  • 约8.9千字
  • 2017-08-29 发布
文档工具:
    1. 1、本文档共18页,可阅读全部内容。
    2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
    3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
    4. 文档侵权举报电话:19940600175。
    LZ77算法实现

    LZ77压缩算法的实现 专 业: 班 级: 学 号: 姓 名: 报告日期: LZ77压缩算法的实现 学生姓名: 指导老师: 摘 要 文本压缩是根据一定方法对大量数据进行编码处理以达到信息压缩存储过程,被压缩的数据应该能够通过解码恢复到压缩以前的原状态,而不会发生信息丢失现象。发展到现在已经有很多关于文本压缩的算法,主要有LZ编码、Huffman 编码、算术编码等无损压缩和预测编码、量化、变换编码等有损压缩。本文将讨论LZ77算法实现过程,以及LZ77算法的优劣性和改进方法。 关键词 多媒体技术;文本压缩算法;LZ77算法;C++程序设计;数据结构;字符串查找;文本匹配; 目 录 1 引 言 3 1.1课程设计目的 3 1.2课程设计内容 3 2 算法基本原理 4 2.1算法概述 4 2.2 LZ77压缩 4 2.3 LZ77解压缩 5 3 LZZ算法实现 6 3.1三元组的设计 6 3.2查找匹配串 6 4 实验结果和结果分析 8 4.1 实验结果 8 4.2 实验结果分析 9 5 结束语 10 参考文献 11 附录1:LZ77主要代码清单 12 1 引 言 随着计算机技术的快速发展,各种系统数据量越来越大,给信息存储特别是网络传输带来诸多的困难,己成为有效获取和使用信息的瓶颈。为了节省信息的存储空间和提高信息的传输效率,必须对大量的实际数据进行压缩。实践证明,采用数据压缩技术可以节省80%以上的费用,且一些难点问题通过压缩技术能够实现。 数据压缩技术种类繁多、应用广泛,技术不断发展,一些分支已成为当今研究的焦点。按照编码的失真程度数据压缩可以分为有损压缩和无损压缩。有损压缩即原始数据不能完全恢复,主要应用于图像和数字化的语音方面。无损压缩就是经过一个压缩后,能够产生和输入完全一致的压缩技术,主要用于存储数据库记录或处理文本文件。其中,LZ77算法是无损压缩中常用到的算法。 1.1课程设计目的 研究多媒体数据压缩技术是实现实时有效地处理、传输和存储庞大的多媒体数据的关键技术。许多应用领域对多媒体信息的实时压缩提出了更高的要求,快速、高效的压缩算法是解决这一问题的关键。针对多媒体数据在空间、时间、结构、视觉、知识等方面所产生的冗余,利用有损压缩和无损压缩等方法,对图像、音频、视频等多媒体数据进行压缩,以保留尽可能少的有用信息。本文主要是把所学的数据结构和算法设计的知识应用于实践,对LZ77压缩算法加以研究。 通过课程设计,可以更好地掌握和理解文本压缩算法,学习常用的压缩算法,并通过比较压缩算法,来加深对多媒体技术的理解。 1.2课程设计内容 本次课程设计为LZ77算法的实现,通过用C++语言来这个算法,然后用随机生成的数据来分别对程序进行压缩和解压,检验压缩结果是否正确和测试程序压缩的效率。 2 算法基本原理 2.1算法概述 这一算法是由Jacob Ziv 和 Abraham Lempel 于 1977 年提出,所以命名为 LZ77。静态字典模型并不 图 2.1 LZ77算法举例 2.2 LZ77压缩 LZ77算法使用"滑动窗口"的方法,来寻找文件中的相同部分,也就是匹配串。,是指一个任意字节的序列,而不仅仅是可以在文本文件中显示出来的那些字节的序列。这里的串强调的是它在文件中的位置,它的长度随着匹配的情况而变化。 LZ77从文件的开始处开始,一个字节一个字节的向后进行处理。一个固定大小的窗口(在当前处理字节之前,并且紧挨着当前处理字节),随着处理的字节不断的向后滑动。对于文件中的每个字节,用当前处理字节开始的串,和窗口中的每个串进行匹配,寻找最长的匹配串。窗口中的每个串指,窗口中每个字节开始的串。如果当前处理字节开始的串在窗口中有匹配串,就用(之间的距离,匹配长度) 这样一对信息,来替换当前串,然后从刚才处理完的串之后的下一个字节,继续处理。如果当前处理字节开始的串在窗口中没有匹配串,就不做改动的输出当前处理字节。 处理文件中第一个字节的时候,窗口在当前处理字节之前,也就是还没有滑到文件上,这时窗口中没有任何内容,被处理的字节就会不做改动的输出。随着处理的不断向后,窗口越来越多的滑入文件,最后整个窗口滑入文件,然后整个窗口在文件上向后滑动,直到整个文件结束。 图 2.2 LZ77算法示意图 算法基本流程: 1、从当前压缩位置开始,考察未编码的数据,并试图在滑动窗口中找出最长的匹配字符串,如果找到,则进行步骤 2,否则进行步骤 3。 2、输出三元符号组 ( off, len, c )。其中 off 为窗口中匹配字符串相对窗口边界的偏移,len 为可匹配的长度,c 为下一个字符。然后将窗口向后滑动 len +

    文档评论(0)

    • 内容提供方:xjj2017
    • 审核时间:2017-08-29
    • 审核编号:6143042154001050

    相似文档