小樱知识 > 生活常识霍夫曼树(图解霍夫曼编码)

霍夫曼树(图解霍夫曼编码)

提问时间:2022-08-09 10:58:28来源:小樱知识网


简明易懂的霍夫曼编码来啦,用图片的形式解答霍夫曼是不是很简单呢,浏览完本文就去动手试一试吧!

编辑|张洪运

来源|沉默国王二

今天我们来普及一下霍夫曼编码,这是一种无损数据压缩的熵编码算法,由美国计算机科学家大卫·霍夫曼于1952年提出——这样的专业解释,不用说,来自维基百科。

说实话,我听说霍夫曼编码已经很久了。除了知道它通常用于GZIP、BZIP2、PKZIP等常规压缩格式外,我还知道它通常用于高重复率的字符数据压缩。

大家想一想。英语是26个字母的无限组合。重复率这么高!常用汉字不多,2500左右。别问我怎么知道的,我已经问过搜索引擎了。

字符重复频率越高,霍夫曼编码的工作效率就越高!

是时候和大家一起学习霍夫曼编码的工作原理了。毕竟,一个优秀的程序员应该能够知道为什么和为什么——请允许我再次使用这个短语。

假设以下字符串将通过网络发送。

图解霍夫曼编码

众所周知,每个字符占用8位,上面的字符串总共有15个字符,所以占用15*8=120位。毫无疑问,对吧?有疑问的同学,请见谅。

如果我们使用霍夫曼编码,我们可以将这个字符串压缩到更小的大小。你是怎么做到的?

首先,霍夫曼编码将使用字符的频率创建一棵树,然后通过树的结构为每个字符生成一个特定的代码。高频的字符使用较短的代码,而低频的字符使用较长的代码,这将减少编码字符串的平均长度,从而达到无损数据压缩的目的。

用上面的开头字符来一步步解释霍夫曼编码的工作步骤。

图解霍夫曼编码

计算字符串中每个字符的频率。

图解霍夫曼编码

b出现一次,C出现6次,A出现5次,D出现3次。

图解霍夫曼编码

按字符出现频率排序,组成队列q。

图解霍夫曼编码

最低频率在前面,最高频率在后面。

图解霍夫曼编码

开始用这些字符作为叶节点构建一棵树。

首先创建一个空节点Z,将频率最低的字符分配到Z的左侧,将频率第二的字符分配到Z的右侧,然后将Z分配为两个字符频率之和。

图解霍夫曼编码

b的频率最低,所以在左边,然后是频率为3的D,在右边;然后将父节点的值设置为4,即子节点频率的总和。

然后从队列Q中删除B和D,将它们的和加到队列中,位置如上图*所示。然后,重新创建空的节点Z,以4为左节点,以频率为5的A为右节点,以4和5之和为父节点。

图解霍夫曼编码

继续按照之前的思路构建树,直到所有的角色都出现在树的节点中。

以上内容就是为大家推荐的霍夫曼树(图解霍夫曼编码)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题

内容来源于网络仅供参考
二维码

扫一扫关注我们

版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。

本文标题:霍夫曼树(图解霍夫曼编码)

本文地址:https://www.xiaoyin02.com/shcs/619140.html

相关文章