哈夫曼树

霍夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。

1. 由给定结点构造哈夫曼树

  (1)先从小到大排序(nlogn)

  (2)先用最小的两个点构造一个节点,父节点=两个节点的和,将父节点加入排序数组

  (3)重复(2)直到排序数组中只有一个节点为止

2. 由哈夫曼树构成哈夫曼编码

遵循左子树为0,右子树为1的规则,从root node->leaf node的edge产生01编码,带权路径值为:深度*数值(ps: 数值即排序时的值)

每个带权leaf node到root node的带权路径长度 = leaf node  -> root node 路径上所有节点的包含该带权叶节点权值组成部分之和。

整棵哈夫曼树的带权路径长度 WPL = 所有节点数值和

3. 哈夫曼应用案例

哈夫曼树在压缩含有大量不等长重复字符的文本中能起到很大作用。
例:2, 2, 3, 4
二进制表示 10, 10, 11, 100
huffman 压缩法则(二进制) 2 -> 0, 3 -> 1, 4 -> 10。
huffman 压缩结果(二进制)0, 0, 1, 10
如此一来占用空间某种程度上减少了。
其他例子:

转载于:https://www.cnblogs.com/GW977/p/10422531.html

Huffman Coding相关推荐

  1. 赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  2. JAVA——赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  3. C++——赫夫曼编码-译码器(Huffman Coding)

    基本概念 哈夫曼编码(Huffman Coding):又称霍夫曼编码.赫夫曼编码-,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据 ...

  4. 哈夫曼编码(Huffman Coding)

    霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种. 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符 ...

  5. 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块

    [题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫 ...

  6. Huffman Coding 哈夫曼树

    一.实验名称:Huffman Coding 二.实验目的: 熟练掌握哈夫曼树的数据结构,结构的特点: 能够实现哈夫曼树的基本操作:如构造,插入等 利用最小堆降低哈夫曼树的时间复杂度. 熟练掌握最小堆的 ...

  7. TOJ 1225 数据结构练习题——Huffman Coding

    数据结构练习题--Huffman Coding 时间限制(普通/Java):1000MS/10000MS     运行内存限制:65536KByte 描述 以前,没有电话的时候,进行快速远距离通信的主 ...

  8. 2022黄文嵩商盛兰张阳徐铭信息论课程作业 哈夫曼编码(Huffman Coding)简介

    目录 5G,华为,土耳其--我花了两个月,搞懂了5G背后的秘密_哔哩哔哩_bilibili 一.什么是编码? 二.哈夫曼编码 1.编码过程 2.码方差 3.编码特点 4.人无完人,码无完码 三.总结 ...

  9. 霍夫曼编码(huffman coding) (java实现)

    文章目录 一.浅谈赫夫曼编码 二.获取赫夫曼编码 1.获取字符出现的次数 2.创建赫夫曼树 3.指定编码 三.代码实现 1.指定编码代码 2.完整代码 总结 提示:以下是本篇文章正文内容,下面案例可供 ...

  10. 霍夫曼编码(Huffman Coding)

    霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种. 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符 ...

最新文章

  1. 互联网之父公开拍卖万维网源代码,3400万买下后发现居然有bug
  2. 【深度学习笔记】F1-Score
  3. CPU缓存一致性动态图
  4. 原核表达常见问题解答
  5. 墨迹天气语音包_小米有品“智能AI翻译机”评测,还内置了语音助手,随身WiFi功能...
  6. merge函数_c语言中的merge函数
  7. linux 子目录 挂载,linux – NFS4 – 挂载多个子目录
  8. 【RobotStudio学习笔记】(九)坐标偏移设置
  9. 把Windows Phone应用发布到中国
  10. ZOJ-3103 Cliff Climbing 最短路
  11. 如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴
  12. SpaceClaim功能解析与应用介绍
  13. cartpole 离散型动作 A3C
  14. 用画图工具制作背景透明的图片总结
  15. html div 怎么排版,请html大神解决一个div排版的问题
  16. 计算机软件工程专业大学排名专科,2020软件工程专业大学排名一览表
  17. Oracle数据库查询语句去重,Oracle数据库之SQL---select查询
  18. redis发布/订阅模式
  19. 计算机视觉的应用,计算机视觉新手指南
  20. vue移动端项目微信公众号授权登录

热门文章

  1. 设计模板类,使得在创建一个对象时可以动态确定它的基类(public)
  2. synchronized不能锁静态变量_多线程编程不可错过——彻底理解synchronized
  3. 箱形图适用于哪种数据_盘点 | 十分钟进阶Excel数据可视化
  4. 获取并编译linux源码,android获取源代码、编译、命令
  5. layer.open 模态弹窗, 隐藏关闭按钮, 隐藏按钮组
  6. 如今网络营销行业火爆网络营销外包专员如何做好整合营销?
  7. 网络推广中网络推广专员如何培养与搜索引擎的友好度和信任度
  8. 企业官网建设搞清三个定位
  9. wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  10. 开发日记-20190426 关键词 无限分级界面