哈夫曼编码树.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 哈 夫 曼 树 数据结构与算法 哈 夫 曼 树 与 哈 夫 曼 编 码 最优树的定义 如何构造最优树 前缀编码 * * 最优树的定义 树的路径长度定义为: 树中每个结点的路径长度之和。 结点的路径长度定义为: 从根结点该结点的路径上 分支的数目。到 * 树的带权路径长度定义为: 树中所有叶子结点的带权路径长度之和 WPL(T) = ?wklk (对所有叶子结点)。 在所有含 n 个叶子结点、并带相同权 值的 m 叉树中,必存在一棵其带权路径 长度取最小值的树,称为“最优树”。 例如: * 2 7 9 7 5 4 9 2 WPL(T)= 7?2+5?2+2?3+4?3+9?2 =60 WPL(T)= 7?4+9?4+5?3+4?2+2?1 =89 5 4 * 根据给定的 n 个权值 {w1, w2, …, wn}, 构造 n 棵二叉树的集合 F = {T1, T2, … , Tn}, 其中每棵二叉树中均只含一个带权值 为 wi 的根结点,其左、右子树为空树; 二、如何构造最优树 (1) (赫夫曼算法) 以二叉树为例: * 在 F 中选取其根结点的权值为最 小的两棵二叉树,分别作为左、 右子树构造一棵新的二叉树,并 置这棵新的二叉树根结点的权值 为其左、右子树根结点的权值之 和; (2) * 从F中删去这两棵树,同时加入 刚生成的新树; 重复 (2) 和 (3) 两步,直至 F 中只 含一棵树为止。 (3) (4) 建立Huffman Tree (1) * Huffman Tree Construction (2) * * 指的是,任何一个字符的编码都 不是同一字符集中另一个字符的编码 的前缀。 前缀编码 利用赫夫曼树可以构造一种不等长的二进制编码,并且构造所得的赫夫曼编码是一种最优前缀编码,即使所传电文的总长度最短。 编码及其用法 * Letter Freq Code Bits C 32 1110 D 42 101 E 120 0 F 24 1111 K 7 111101 L 42 110 U 37 100 Z 2 111100 编码与解码 Code for DEED: Decode 1011001110111101: 如果一组代码中的任何一个代码都不是另一个代码的前缀,则称这组代码符合前缀特性prefix property. 每个字母预期的空间开销: * 带权路径长度定义为: 树中所有叶子结点的带权路径长度之和 WPL(T) = ?wklk (对所有叶子结点)。 * 要点回顾 树ADT的设计,包括树节点ADT和树ADT的设计 二叉树的性质是很重要的 物理存储(二叉)树是非常重要的! 树的遍历算法是基础和重点 基于各种特殊的树的研究和应用是重点 * * 建立Huffman树例子的前5个步骤 【P113最后一句到P114】 * * 编码方法:【P118 5.6.2下面】 --- 上例的结果 C: 1110 D: 101 E: 0 F: 1111 K: 111101 L: 110 U: 100 Z: 111100 * 编码,利用Huffman表 Code for DEED: 101 0 0 101 --- 解码,(反编码),【P118最后一段】 Decode: DUCK --- 前缀特性保证了代码串被反编码时不会有多种可能。因为任何一个代码(字母)的前缀对应于一个分支结点(不是叶结点,就不可能有解码) --- Expected cost: (1 * 120 + 3 * 121 + 4 * 32 + 5 * 24 + 6 * 9)/ 306 = 785/306 = 2.57 * 红色是提高能力 黑色是基本能力 * * 建立Huffman树例子的前5个步骤 【P113最后一句到P114】 * * 编码方法:【P118 5.6.2下面】 --- 上例的结果 C: 1110 D: 101 E: 0 F: 1111 K: 111101 L: 110 U: 100 Z: 111100 * 编码,利用Huffman表 Code for DEED: 101 0 0 101 --- 解码,(反编码),【P118最后一段】 Decode: DUCK --- 前缀特性保证了代码串被反编码时不会有多种可能。因为任何一个代码(字母)的前缀对应于一个分支结点(不是叶结点,就不可能有解码)

文档评论(0)

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

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

1亿VIP精品文档

相关文档