N叉哈夫曼树算法研究.doc_第1页
N叉哈夫曼树算法研究.doc_第2页
N叉哈夫曼树算法研究.doc_第3页
N叉哈夫曼树算法研究.doc_第4页
全文预览已结束

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目的阐述:以进制编码方式对一个英文字串中的字符进行编码,每个不同的字符其编码不同使得由新的编码替代原串后总码长最小,且输入,构成的数字串后,依照该编码方式可以正确的对译出唯一的英文原串如:英文原串为其对应的一种编码方式为:原串对译后的编码为其码长为若输入编码串则对应的英文原串为分析:假设英文原串中的字符存放于字符集中,每个字符在字串中出现的概率为,为字符的编码长依题意得,对集合中的不同字符进行进制编码后要求)新字串的码长最短()使得在是所有编码方式中的最小值)编码无二义性任意一字符编码都不为其它字符编码的前缀此题以哈夫曼树来解答是非常适宜的为此哈夫曼树的分叉数,字符集里的元素即为此叉哈夫曼树的叶子,概率即为叶子结点的权重,从根结点到各叶子结点的路径长即为该叶子结点的编码长由哈夫曼树的思想可以知道哈夫曼树的建立是一步到位的贪心法,即权重越大的结点越靠近该树的根,这样,出现频率越大的字符其编码就越短但具体应该怎样建立起此叉哈夫曼树呢?我们首先以为例:,首先从中选出两个最小权,将其删去,并以(即)替代,;再从新的中取出两个最小权,将其删去,并以(即)替代,;依此类推,直到中只一个值时合并结束,此时以上两两合并的过程即为二叉哈夫曼树的建立过程,每一次的合并即是将两棵子树归于一个根结点下,于是可以建立二叉树如下:mmmmmmm从某一根结点出发走向其左子树标记为,走向其右子树标记为,则可以得到以下编码,对应的编码为: 时又是怎样一种情况呢?设,则按权重排序可得,那么此哈夫曼树的树形应为怎样呢?是以下的左图,还是右图,或是两者均不是mmmmllmlllllmlmll 显然,要带权路径长最短,那么,此树的高度就应尽可能的小,由此可知将此树建成丰满叉树是最合理的,于是我们尽量使树每一层都为个分枝对于这道题的情况,我们具体来分析按照哈夫曼树的思想,首先从中取出权最小的三个值,即,并以()来代替,得到新的,;再将这三个值合并成这个结点于是得到三叉哈夫曼树如下:mllmlll以依次标记每个根结点的个分枝,则可以得到每个字符相对应的编码:我们发现对于这种情况恰巧每层均为个分枝,但事实上并非所有的叉哈夫曼树都可得到每层个分枝例于当,时就不可能构成一棵每层都为三个分枝的三叉树如何来处理这种情况呢?最简单的处理方式就是添加若干出现概率为的空字符填补在叉树的最下一层,这些权为的虚结点并无实际意义但却非常方全便于这棵叉树的建立空字符的添加个数的计算如下:()()()()虚结点的加入使得权重最小的个字符构成了距根结点最远

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论