基于LZW算法的文本压缩-Read.PPT

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于LZW算法的文本压缩-Read

基于LZW算法的文本压缩 姓名:胡存英 班级:计算机应用 学号:20070130324 主要内容 1. LZW算法的原理 2.关键问题 3.实验结果 1. LZW算法的原理 编码原理: 1. 把字典中的0-255项预置为全部的256(ASCII)个8位字符 2.输入地一个字符,将其设为s,在字典中肯定存在。 3. 编码器逐个输入字符,每输入一个字符c,然后在字典中查找s+c,只要在字典中找到s+c,则s=s+c,该过程就继续进行。直到在某一点,添加下一个字符c导致搜索失败;字符串s在字典中,而s+c却不在,这时编码器: (1)输出指向字符串s的字典指针到输出流; (2)在下一个可用的字典词条中,存储字符串s+c; (3)把字符串s预置为c。 4. 如果还有尚未压缩的字符,返回步骤3 5. 输出流即为压缩文本 从上可知:添加到字典中的每个字符串仅仅有效的增加了一个新字符,所以采用树的结构,把字符串添加到字典中,只需增加一个节点c,并且每个节点可以拥有任意个子节点。 设计的数据结构:把树驻留在一个节点数组中,每个节点必须有两个字段:一个字符和一个指向母节点的指针,一个节点没有任何指向其子节点的指针。 例:字符串“ababa” 1〉s=a, 2 s=a , c=b, ab不在字典中,则out=(97) s=b(98), 将ab添加到字典中99 3 s=b,c=a,ba不在字典中,则out=(97,98) s=a(97), 将ba添加到字典中100 4 s=a,c=b, ab 在字典中,s=ab 5 s=ab(99),c=a(97),aba不在字典中,则out=(97,98,99)将aba添加到字典中101。 s=a(97), 6没有输入,将s=a,添加到输出 out=(97,98,99,97); 解码原理: 1. 把字典中的0-255项预置为全部的256(ASCII)个8位字符 2.输入第一个指针p,在字典中肯定存在,用其取回第一个字典词条s。将其写进解码器的输出流中,需要把s+c保存到字典中,c未知,是下一个从字典中读取的字符串的第一个字符。 3. 解码器输入下一个指针p, (1)取出下一个字符串,记为J (2)将J记录到输出流中 (3) s+firstchar(J) 添加到字典中 (4)s=J, 4. 如果还有尚未解压的指针,返回步骤3 5. 输出流即为原始文本 例: out=(97,98,99,97); 1 初始化字典 2 p=97, s=a(97), out=(a); 2 s=a, p=98, J=b, out=(a, b) 将ab添加到字典 中99,s=b(98) 3 s=b, p=99, J=ab(99), out=(a, b, ab),将ba添加到字典中100,s=J=ab(99) 4 s=ab, p=97, J=a, out=(a, b,ab,a) ,将aba添加到字典中101,s=a(97), 5没有指针,解压结束 out=(a,b,ab,a); 主要内容 1. LZW算法的原理 2.关键问题 3.实验结果 字典结构 字典的大小 字典的前256项一开始就被占用了,字典的指针必须长于8位,这里采用16位指针,有64k个词条,当字典填满时,重新建立字典。 字符串,插入位置的查找 字典非常大,采用哈希函数来查找字符串是否存在,以及插入到字典的位置:hashcode=hash(s,c); 1、当hashcode位置的为未被使用时,则s+c不存在,添加到hashcode 位置; 2、当该位置被使用,且为(s,c)说明s+c存在; 3、如果该位置含有其他内容,产生“冲突”,采用简单的处理,是指针逐 渐加一检查后继位置,直到找到一个没有过的节点,或者含有(s,c)的节点为止。 字典的节点结构 由于存在冲突,所以将字典的节点加入了一个字段index,由散列过程生成的指针或者索引。作用: 1. 当index=65537;表示为基本的ASCII码, 2. 表示该节点未被使用index=65538; 3. 检查是否发生了冲突,index=hashcode, parent=s;是否成立 字典的节点结构如下: 主要内容 1. LZW算法的原理 2.关键问题 3.实验结果 实验结果 * * - - b a 99 98 97 - - a a b b a 98 97 - - a b b a 97 -

您可能关注的文档

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档