电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

树和二叉树(5哈夫曼树及其应用).ppt

111页
  • 卖家[上传人]:灯火****19
  • 文档编号:135053963
  • 上传时间:2020-06-11
  • 文档格式:PPT
  • 文档大小:1.14MB
  • / 111 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、6 6哈夫曼树及其应用 1 相关概念路径 从树中一个结点到另一个结点所经过的分支序列或者说结点序列 如结点A到结点F的路径为 A B E F A B C D E F G 6 6 1最优二叉树 路径长度 路径上面的分支个数 如A F的路径长度为3 A B C D E F G 树的路径长度 从树根到每一个结点的路径长度之和 如左边树的路径长度为 Len A B Len A C Len A D Len A E Len A F Len A G 1 1 2 2 3 3 12 A B C D E F G 结点的权值 在某些应用中 树中结点往往要和一定的数值联系起来 那么这个数值通常称为该结点的权值 简称权 如左图 A B C D E F G 4 1 2 5 3 7 结点的带权路径长度 该结点到根结点的路径长度与该结点上权的乘积 如结点E的带权路径长度为 Len E A 3 2 3 6 A B C D E F G 4 1 2 5 3 7 树的带权路径长度 树中所有叶子结点的带权路径长度之和 记作 WPL w1 L1 w2 L2 wn Ln A B C D E F G w1 w2 w3 w4 最优二叉

      2、树 哈夫曼树 给定n个权值 w1 w2 wn 试构造一棵有n个叶子结点的二叉树 每个叶子结点带权为wi 构造出来的二叉树的形态可以有多个 我们把其中带权路径长度WPL最小的二叉树称作最优二叉树或者哈夫曼树 A B C D E F G w1 w2 w3 w4 2 哈夫曼算法 1 如何构造一棵哈夫曼树 我们首先通过一个例子来演示一下构造过程 当权值为 7 5 2 4 时 构造哈夫曼树 7 5 2 4 当权值为 7 5 2 4 时 构造哈夫曼树 7 5 2 4 6 当权值为 7 5 2 4 时 构造哈夫曼树 7 2 4 6 5 当权值为 7 5 2 4 时 构造哈夫曼树 7 2 4 6 5 11 当权值为 7 5 2 4 时 构造哈夫曼树 7 2 4 6 5 11 当权值为 7 5 2 4 时 构造哈夫曼树 7 2 4 6 5 11 18 2 哈夫曼算法的语言描述 根据给定的n个权值 w1 w2 wn 构成n棵二叉树的集合F T1 T2 Tn 其中每棵二叉树Ti中只有一个带权为wi的根结点 其左右子树为空 在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树 且置新的二叉树的根结

      3、点的权值为其左右子树上根结点的权值之和 在F中删除这两棵树 同时将新得到的二叉树加入F中 重复 和 直到F只含一棵树为止 这棵树便是哈夫曼树 6 6 2哈夫曼编码 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 现在要对字符串进行0 1编码 有哪些方法 哪一种编码的长度最短 1 各种编码方式 1 定长编码 根据出现的字符种数进行编码字符串 ABACCDA 中共出现4种字符 那么可以用2位表示 那么字符串 ABACCDA 的编码将为 00010010101100 总长度为7 2 14位 1 各种编码方式 1 定长编码 根据出现的字符种数进行编码这种编码方式可以对应到二叉树 如右图所式 A B C D 0 0 0 1 1 1 1 各种编码方式 2 变长编码当A B C D按照如下形式进行编码时 那么字符串 ABACCDA 的编码将为 0110010101110 总长度为13位 比第二种方式又要短 采取这种变长编码方式 需要遵循一个原则 即每一个字符的编码都不应该是另一个字符编码的前缀 否则就会出现二义性 1 各种编码方式 2 变长编码这

      4、种编码方式也可以对应到二叉树 如右图所式 A B C 0 0 1 1 D 0 1 1 各种编码方式 2 变长编码如当A B C D按照如下形式进行编码时 请将 0111 翻译成字符串 试一试 有哪些翻译方式 之所以会出现二义性 是因为出现了A的编码是C的编码的前缀 B的编码是D的编码的前缀 1 各种编码方式 2 变长编码这样 这些编码恢复成二叉树的形式时 不会形成A B C D恰好为二叉树的叶子结点 如右图 A C B 0 1 1 1 D 1 1 各种编码方式 从上面的分析可以看出 一个可用的编码必须满足每个字符的编码不能是其他编码的前缀 也可以看出 每一个可用的编码都可以转化成二叉树的形式 这样编码理论便可以与二叉树的一些性质结合起来 就可以应用二叉树的理论知识来解决编码问题 1 各种编码方式 3 哈夫曼编码假设编码过程中有以下对应关系 那么总的编码长度为 WPL w1 L1 w2 L2 w3 L3 w4 L4那么如何选择L1 L2 L3 L4的值 使得WPL最小呢 1 各种编码方式 3 哈夫曼编码 可以看出 该公式与哈夫曼树满足的公式一模一样 那么我们可以采取构造哈夫曼树的方式来求

      5、编码的长度 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 1 2 3 1 A B C D 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 2 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 2 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 2 4 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1

      6、根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 2 4 对于字符串 ABACCDA 共有7个字符 4种字符 其中A B C D出现的次数分别为3 1 2 1 根据权值 3 1 2 1 构造哈夫曼树 3 2 1 1 B D C A 2 4 7 下面对哈夫曼树进行编码 每一个结点的左分支上面标0 右分支上面标1 3 2 1 1 B D C A 2 4 7 下面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 0 下面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 0 1 下面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 0 1 0 下面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 0 1 0 1 下面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 0 1 0 1 0 下

      7、面对哈夫曼树进行编码 每一个结点的左分支上面标1 右分支上面标0 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 A 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 A 0B 1 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 0B 11 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 0B 110 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子

      8、结点所代表字符的编码 A 0B 110C 1 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 0B 110C 10 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 0B 110C 10D 1 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 0B 110C 10D 11 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 从根结点到各个叶子结点 所经分支上面的0 1序列 就是该叶子结点所代表字符的编码 A 1B 110C 10D 111 3 2 1 1 B D C A 2 4 7 1 0 1 0 1 0 思考 N个权值构造的哈夫曼树 树中结点总数是多少 哈夫曼树中 权值越大的结点越靠近根结点 该论断是否正确 2 哈夫曼编码的具体实现 输入字符及其权重根据权重构

      9、造哈夫曼树根据哈夫曼树编码 算法6 12的动态演示 1 存储结构的选择权值分别如下 这八个权值作为叶子结点 最终形成的哈夫曼树应共有2 8 1 15个结点 采用双亲孩子表示法来存储哈夫曼树 2 初始化 3 建树过程 第一步 第二步 第三步 第四步 第五步 第六步 第七步 4 编码过程 从叶子结点开始 向根回溯 来对叶子结点所代表的字符进行编码 以第一个叶子结点为例 1的双亲结点为9 且1是9的左孩子 故分支应该标 0 所以编码 0 入栈 以第一个叶子结点为例 0 以第一个叶子结点为例 9的双亲结点为11 且9是11的右孩子 故分支应该标 1 所以编码 1 入栈 0 以第一个叶子结点为例 0 1 以第一个叶子结点为例 11的双亲结点为13 且11是13的右孩子 故分支应该标 1 所以编码 1 入栈 0 1 以第一个叶子结点为例 0 1 1 以第一个叶子结点为例 13的双亲结点为15 且13是15的左孩子 故分支应该标 0 所以编码 0 入栈 0 1 1 以第一个叶子结点为例 0 1 1 0 以第一个叶子结点为例 15的双亲结点为0 所以可以判断15就是根结点 那么第一个结点编码完毕 编码应该从栈顶向栈底读 为 0110 0 1 1 0 同理可以写出其他叶子结点的编码 思考 1 写出字符串 abbccccdddddddeee 的最短编码 2 当选择二叉链表来作为哈夫曼树的存储结构时 算法过程该如何描述

      《树和二叉树(5哈夫曼树及其应用).ppt》由会员灯火****19分享,可在线阅读,更多相关《树和二叉树(5哈夫曼树及其应用).ppt》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.