栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

哈夫曼树定义与原理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

哈夫曼树定义与原理

哈夫曼树定义与原理



图上两棵二叉树可以简化为叶子结点带权的二叉树,A表示不及格、B表示及格、C表示
中等、D表示良好、E表示优秀。每个叶子的分支线上的数字就是成绩所占比例。

  • 路径长度:树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。
  • 树的路径长度:从树根到每一结点的路径长度之和。
  • a树的路径长度:1+1+2+2+3+3+4+4 = 20
  • b树的路径长度:1+2+3+3+2+1+2+2 = 16
  • 结点的带权路径长度:该结点到树根之间的路径长度与结点上权的乘积。
  • 树的带权路径长度:树中所有叶子结点的带权路径长度之和。用WPL表示

带权路径长度WPL最小的二叉树称做哈夫曼树,也叫最优二叉树。

  • a树WPL:315
  • b树WPL:220
  • 上述结果意味着:10000个学生,a树需要31500次比较,b树只需要22000次比较,少了三分之一的量,性能明显提升。
如何构造哈夫曼树


上图虽然是哈夫曼树,但是每次判断需要比较两次。比如根结点(T < 80 && T >= 70 )效率上不如下图的高:

哈夫曼编码


如上,数据被压缩了,节约了大约17%的存储或传输成本。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883948.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号