第6章 树和二叉树4(赫夫曼树及其应用).ppt

第6章 树和二叉树4(赫夫曼树及其应用).ppt

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

6.6 赫夫曼树及其应用 【本节主要内容】 最优二叉树——赫夫曼树( Huffman ) 赫夫曼编码 【教学要求】 了解最优树的特性,掌握建立最优树和赫夫曼编码的方法并灵活应用。 6.6.1 最优二叉树(赫夫曼树) ——带权路径长度最短的树 1. 基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的~ 路径长度:路径上的分支数 树的路径长度:从树根到每一个结点的路径长度之和 树的带权路径长度:树中所有带权结点的路径长度之和 Huffman(赫夫曼 / 哈夫曼)树: 设有n个权值{w1,w2,……wn},构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则wpl最小的二叉树叫Huffman树。特点: 一棵有n个叶子结点的Huffman树有2n-1个结点 采用顺序存储结构——动态分配数组存储 2. 构造Huffman树的方法——Huffman算法 构造Huffman树步骤: (1) 根据给定的n个权值{w1,w2,……wn},构造n棵只有根 结点的二叉树,令起权值为wj; (2) 在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和; (3) 在森林中删除这两棵树,同时将新得到的二叉树加入森林中重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树。 6.6.2 哈夫曼编码 ——数据通信用的二进制编码 1. 编码思想 根据字符出现频率,设计长度不等的编码,出现频率高的字符采用尽可能短的编码,从而使电文总长最短。且保证任何一个字符的编码都不是另一个字符编码的前缀,即成为前缀编码。 2. 编码方法 根据字符出现频率构造Huffman树,然后将树中结点引向其左孩子的分支标“0”,引向其右孩子的分支标“1”;每个字符的编码即为从根到每个叶子的路径上得到的0、1序列 例: 要传输的字符集 D={C,A,S,T, ; } 字符出现频率 w={2,4,2,3,3} 例6-2 已经某系统在通信中只可能出现8种字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试分别写出各字符在等长编码与Huffman编码时所对应的编码。 小 结 哈夫曼树 基本概念 构造Huffman树的方法——Huffman算法实现 Huffman树应用——最佳判定树 哈夫曼编码 编码思想 编码方法 译码方法 练习 12.哈夫曼(Huffman)树和哈夫曼编码 『经典例题解析』 1.给定集合{15,3,14,2,6,9,16,17} (1)用□表示外部结点,用○表示内部结点,构造相应的Huffman树: (2)计算它的带权路径长度: (3)写出它的Huffman编码: (4) Huffman编码常用来译码,请用语言叙述写出其译码的过程。 【解析】 (2)wpl=(2+3)*5+6*4+(9+14+15)*3+(16+17)*2=229 (3) 编码为:15:111, 3:10101, 14:110, 2:10100, 6:1011, 9:100, 16:00, 17:01 (4) 常用哈夫曼树为通讯用的字符编码,本题中集合的数值解释为字符发生的频率(次数)。由哈夫曼树构造出哈夫曼编码。译码时,进行编码的“匹配”,即从左往右扫描对方发来的“编码串”,用字符编码去匹配,得到原来的元素(本题中的数)。 * 烟台职业学院 数据结构课程 引例:编程序统计各分数段的人数,如何做效率最高? 等级 分数段 比例 A B C D E 0~59 60~69 70~79 80~89 90~100 0.05 0.15 0.40 0.30 0.10 a60 a90 a80 a70 E Y N D Y N C Y N B Y N A 设有10000个数据要统计,需要比较的次数: (0.1*4 +0.3*4 + 0.4*3+0.15*2+0.05*1)*10000 =3.15*10000=31500 如何改进? (0.1*2 +0.3*2 +0.4*2+0.15*3+0.05*3)*10000=2.2*10000=22000 a80 a70 a60 a90 E Y N D Y N C Y N B Y N A 这样次数最少吗? 等级 分数段 比例 A B C D E 0~59 60~69 70~79 80~89 90~100 0.05 0.15 0.40 0.30 0.10

文档评论(0)

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

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

1亿VIP精品文档

相关文档