




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/6LHARC中的动态限长编码压缩算法摘要该文对DOS下常用的数据压缩软件LHARC的算法进行了分析。该算法中采用了一种动态限长变化的不等长编码方法,使最短码2位,而最长码不超过8位,达到了最佳压缩效果。一、前言LHARC是DOS下的数据压缩软件之一,与同类软件如ARJ、PKZIP、PKARC等相比,具有如下几个特点。1压缩比高LHARC采用先进的字符串自适应压缩与单个字符的限长变化编码压缩相结合的方法,对文件进行双重压缩,尽可能地减少了冗余,对各类文件的压缩效果都很好。2保密性好除应具有保存文件、节约存储空间的功能外,提高数据的保密性也是压缩软件的一个重要功能。LHARC由于采取了与众不同的动态限长编码压缩技术,使字符与其压缩代码之间无固定的对应关系,压缩后的数据更具保密性。3软件短小精悍LHARC整个软件集压缩、还原于一身,只有30余K,而其它同类软件均有100余K。LHARC的基本压缩原理是,将待压缩文件看作是字符流字2/6节流,将其中的冗余信息分成两类1同一字符的离散出现如ABCDA这里,字符A出现了两次。2字符串的重复出现如ABCDABCD或ABCDABCD这里,字符串ABCD出现了两次。值得说明的是,这里串的概念是LZW方法意义下的,即将字符流中每一字符均看作是一个串的起始字符。压缩时,首先对字符流中的字符串进行识别,将其中的重复串用压缩格式记载,然后再将处理后的数据用不等长编码进行代码变换及压缩。下面仅就其中的动态限长变化编码方法进行介绍。二、动态限长编码方法1基本原理经重复串压缩后的数据中,重复串已大大减少,而同一字符的分布式冗余问题则比较突出。由于256个字符的使用概率一般不同,往往相差悬殊,若采用不等长编码,将高频字符用较短代码表示,低频字符用较长码表示,则提高了整体的压缩比。HAFFMAN编码是最佳不等长编码,它根据文件中各字符的统计概率来分配代码长度。如设文件中不同字符数为N,第3/6I个字符的概率为PI,代码长度为LI,则当概率满足P1P2PN时,HAFFMAN编码的码长满足L1L2LN,此时,代码平均长度的数学期望NI1PILI达到最小。在一般的数据压缩过程中,HAFFMAN编码的算法实现为先统计出待压文件中各字符的出现概率,据此动态建立一棵HAFFMAN树,并以二分树的序列形式存入压缩数据文件首部以用于还原过程。在压缩过程中,由HAFFMAN树实现字符的ASCII码等长码与其压缩代码HAFFMAN不等长码的转换。这种处理方法需对待压缩文件进行两遍扫描,且HAFFMAN树须保存于压缩数据文件中而占用额外的存储空间。在LHARC的算法中,对HAFFMAN编码的实现采用了新的方法。其基本原理是在压缩前动态建立一棵初始译码树,在压缩过程中不断调整译码树的结构,使各字符的压缩代码长度随字符出现的次数增加而逐步缩减。最短码的长度可达到2位,而最长码不超过8位二进制,从而获得很高的压缩比。该算法的其它优点还有1无须事先统计各字符的出现概率,一次扫描即可2译码树须保存在压缩数据文件中,还原时同样生成即可3字符与其压缩代码之间无固定对应关系,使压缩后的数据具有一定的保密性。2压缩的实现及码树的调整压缩前动态建立一棵初始译码树,每个叶结点对应一个字4/6符。由于压缩前可以认为各字符的出现概率相等,故初始码树应为一有256片叶子的平衡二叉树,如图1所示。显然每个字符的初始代码长度均为8位。图1初始译码树当压缩开始,第一个字符出现时,将其对应第一个叶结点,沿码树向上的通路至根,所经各边标号左0右1组成的0、1序列构成该字符的初始代码。输出代码后,调整码树,将该字符对应的叶结点之值与上一层某一结点之值互换,当该字符再次出现时,其路径长度就会减少一结点。如字符原对应8位长代码,则再次出现后就对应7位代码了。如该字符继续不断地出现,其所对应的叶结点将逐级上升到第6层、第5层、甚至第2层,而此字符的码长随之减至6位、5位、直至2位。代码长度缩减的规律是设N为字符当前所在层数,则当字符的重复出现次数为28N时,代码长度减少1位。代码长度的缩减会带来一个十分关键的问题当码树各结点值是静态的时候,一字符对应了某一高层结点后,此结点的所有下层枝叶将不能再对应其它字符,否则一些代码将是另一些代码的前缀,这将使还原过程无法进行。因此代码缩减将使编码路径数减少,一些后继字符将无法由码树编码。为此,该算法采取的策略是按字符出现的次序将它们集中排列在码树的一侧叶子上,通过移动和交换分枝点之值的方5/6法,使各层结点之值重新组合,从而使被占用结点的下属枝叶可“稼接”到未用的结点上。因此,当高层结点被占用后,其下属结点仍可使用,不会减少编码路径数。具体来说,当一后继字符出现并且其对应叶子的父结点已被占用,它将改变原有的编码路径,通过搜索找出一个未用的上层结点并由此得到其代码。同样,当一字符须上升一层时,并不是升到其父结点中,而是升到上层中一个未用过的结点之中。当该字符再度出现时,它将沿新路径得到其代码,此代码的长度不仅为原代码长度减1,而且此代码的各个位也与原代码不同。下面以一具体例子加以说明。设字符串为ABABCABDABC各字符的编码路径如图2所示。其中的XI表示X的第I次出现。图字符编码路径示意图由此可看出,由该算法给出的编码方法是逐步达到最佳码长的。一字符的压缩代码不仅与字符出现的次数有关长度不同,而且与字符在文件中的位置有关编码路径不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州遵义医科大学附属口腔医院第十三届贵州人才博览会引进急需紧缺专业人才6人考前自测高频考点模拟试题及完整答案详解
- 2025黑龙江东北大学非专任教师岗位招聘65人考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年上海市宝山区罗店中心校实习生招募考前自测高频考点模拟试题及完整答案详解
- 2025春季四川省人民政府科学城办事处直属事业单位第二批次考核招聘教师6人考前自测高频考点模拟试题及完整答案详解
- 2025贵州省农业科学院引进高层次人才16人模拟试卷及答案详解(名师系列)
- 2025江苏苏州市相城市政建设投资(集团)有限公司人员招聘模拟试卷及参考答案详解一套
- 2025贵州铜仁市石阡县参加第十三届贵州人才博览会引进事业单位高层次及急需紧缺人才26人考前自测高频考点模拟试题及完整答案详解
- 2025江西中小学教师招聘考试南昌考区考前自测高频考点模拟试题及参考答案详解1套
- 景观工程可持续发展与生态设计方案
- 堤防生态恢复与绿化方案
- 2025年入党积极分子培训考试题(含参考答案)
- 2024年深圳市公务员考试行测真题及答案详解(新)
- 小学心理健康课:男生女生的青春期成长
- 现代化农业与农业机械化新技术
- DB37∕T 5263-2023 《民用建筑氡检测与防治技术标准》
- 弯沉试验培训
- 国家社科基金项目2025年度课题指南
- 公司适用法律法规标准清单2025年08月更新
- 创伤的呼吸道管理
- 护理气压治疗课件
- 医院信息化建设中长期规划(十五五规划2025年)
评论
0/150
提交评论