0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法科普:有趣的霍夫曼编码

算法与数据结构 来源:杨湘祁 作者:电子发烧友 2019-03-14 19:24 次阅读

霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码。霍夫曼编码使用的算法是 David A. Huffman 还是在MIT 的学生时提出的,并且在 1952 年发表了名为《 A Method for the Construction of Minimum-Redundancy Codes 》的文章。

编码这种编码的过程叫做霍夫曼编码,它是一种普遍的熵编码威廉希尔官方网站 ,包括用于无损数据压缩领域。

霍夫曼编码过程

霍夫曼编码使用一种特别的方法为信号源中的每个符号设定二进制码。出现频率更大的符号将获得更短的比特,出现频率更小的符号将被分配更长的比特,以此来提高数据压缩率,提高传输效率。

以字符串 ” ABAABACD “ 为例进行说明。

接下来,按照字符出现的比例从高往低对字符进行排序。

图 1

然后,按出现比例低的顺序查找两个字母。在这种情况下,它是 “ C ” 12.5% 和 “ D ” 12.5% 。

通过一条线连接两个字母拼构成一个树状结果。将两个字母合并为 “ C 或 D”,并将出现比率相加起来。

动画 2

按照同样的操作,将合并后的 “ C 或 D ” 视为一个字符,重复相同的操作。

在 “ A " "B" " C 或 D " 三个中,按照出现比例低的顺序查找两个字母。

图 3

图 4

这样,所有的字母都变成了 " A 或 B 或 C 或 D" ,出现的比率为 100% 。

图 4 就是霍夫曼编码的树结构。

接下来再次显示各个字母出现的比率,同时使用 0 和 1 进行编码,代码 0 和 1 分别分配给上下延伸的分支。

图 5

分配完毕后,从树的根部遍历每个字符并确定相应的代码。

在 " A " 的情况下,被分配的代码为" 0 "

在 " B " 的情况下,被分配的代码为 " 10 "

在 " C " 的情况下,被分配的代码为 " 110 "

在 " D " 的情况下,被分配的代码为 " 111 "

动画 6

就这样,通过这样的编码规则, " ABAABACD " 的二进制编码就变成了 " 01000100110111 ",只需要 14 个比特就能表示,比单纯的使用 2 比特表示一个字符缩短了很多。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4612

    浏览量

    92870
  • 编码
    +关注

    关注

    6

    文章

    942

    浏览量

    54825

原文标题:算法科普:有趣的霍夫曼编码

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    威廉希尔官方网站 科普 | 芯片设计中的LEF文件浅析

    威廉希尔官方网站 科普 | 芯片设计中的LEF文件浅析
    的头像 发表于 11-13 01:03 250次阅读
    威廉希尔官方网站
<b class='flag-5'>科普</b> | 芯片设计中的LEF文件浅析

    如何优化base64编码的性能

    产生影响,特别是在处理大量数据时。以下是一些优化Base64编码性能的方法: 1. 选择合适的库和算法 使用高效的库 :不同的编程语言和库在Base64编码和解码方面有不同的性能表现。选择一个经过优化的库可以显著提高性能。
    的头像 发表于 11-10 14:17 786次阅读

    Huffman压缩算法概述和详细流程

    Huffman压缩算法是一种基于字符出现频率的编码算法,通过构建Huffman树,将出现频率高的字符用短编码表示,出现频率低的字符用长编码
    的头像 发表于 10-21 13:48 260次阅读

    科普时报》:探索量子奥秘,跟着院士去“追光”

    科普时报》:探索量子奥秘,跟着院士去“追光”
    的头像 发表于 10-12 08:06 234次阅读
    《<b class='flag-5'>科普</b>时报》:探索量子奥秘,跟着院士去“追光”

    科技少年梦 科普粤海行|芯海科技科普基地启迪智慧未来

    9月28日,由深圳市南山区粤海街道办事处主办,深圳市高科技协同创新促进会、深爱人才馆策划执行的“科技少年梦科普粤海行”系列活动之“芯片探秘链启未来”芯海科技产品体验日成功举行,吸引了众多青少年及家长
    的头像 发表于 10-01 08:07 280次阅读
    科技少年梦 <b class='flag-5'>科普</b>粤海行|芯海科技<b class='flag-5'>科普</b>基地启迪智慧未来

    短文6:关于功率因素的有趣问答

    2个关于功率因素的有趣问答。
    的头像 发表于 09-23 12:22 192次阅读

    科普 EVASH Ultra EEPROM 晶圆生产过程

    科普 EVASH Ultra EEPROM 晶圆生产过程
    的头像 发表于 06-26 10:16 464次阅读

    科普EEPROM 科普 EVASH Ultra EEPROM 科普存储芯片

    科普EEPROM 科普 EVASH Ultra EEPROM 科普存储芯片
    的头像 发表于 06-25 17:14 571次阅读

    全网最有趣的光模块科普,请告诉我牛不牛!

    相信很多通信人,都听说过光模块的大名。但对于各种光模块的种类、性能指标、命名方式却总是记不住,到处搜索,难以找全~所以今天文档君就为大家全方位“盘一盘”光模块,搞了超多有趣的例子,让你一次性记住
    的头像 发表于 06-24 08:04 164次阅读
    全网最<b class='flag-5'>有趣</b>的光模块<b class='flag-5'>科普</b>,请告诉我牛不牛!

    电感科普篇:电感的特性有哪些?

    电感科普篇:电感的特性有哪些?
    的头像 发表于 06-16 10:31 1140次阅读

    【RTC程序设计:实时音视频权威指南】音视频的编解码压缩威廉希尔官方网站

    音视频所载有的信息在通过传输的时候就需要压缩编码。 其中,文本压缩是指通过使用各种算法和威廉希尔官方网站 ,将文本数据表示为更紧凑的形式,以减少存储空间。 霍夫曼编码是一种无损压缩
    发表于 04-28 21:04

    FPGA压缩算法有哪些

    在图像压缩算法中可以采用哈夫曼编码的方式对编码冗余的信息进行压缩,可以采用预测的方式来减少像素间冗余,可以采用量化的方式完成心理视觉冗余信息的去除
    的头像 发表于 04-15 11:48 646次阅读
    FPGA压缩<b class='flag-5'>算法</b>有哪些

    开关电源短路的测试方法科普

    开关电源是否短路可以用电流表、万用表和示波器进行检测。如果发现开关电源短路,要及时排查造成短路的因素,并及时修复或更换,解决短路问题。
    的头像 发表于 03-07 16:14 2099次阅读

    哈夫曼编码怎么算 哈夫曼编码左边是0还是1

    哈夫曼编码是一种基于频率的变长编码方式,常用于数据压缩和信息传输领域。它是由美国数学家大卫·哈夫曼在1952年发明的,被广泛应用于无损压缩领域。 哈夫曼编码算法的基本思想是根据字符出现
    的头像 发表于 01-30 11:27 2939次阅读

    编码器:受干扰的方法及解决方案

    编码器:受干扰的方法及解决方案!解决编码器受干扰的方法主要包含使用错误纠正威廉希尔官方网站 、改进编码器的设计和算法,减少干扰源等方法。通过综合运用这些方法,能够在实际应用中帮助我们获得更准确和可靠
    的头像 发表于 12-28 09:39 3536次阅读
    <b class='flag-5'>编码</b>器:受干扰的方法及解决方案