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

    文章

    4760

    浏览量

    97126
  • 编码
    +关注

    关注

    6

    文章

    1015

    浏览量

    56645

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    科普系列】DTC深度剖析

    作为汽车故障诊断的核心标识,如同车辆的“医疗档案”,可以让工程师精准定位故障。从简单的传感器故障到复杂的网络通信问题,DTC系统通过精密的编码规则、状态管理和老化机制,构建了一套完整的故障生命周期
    的头像 发表于 11-26 10:07 494次阅读
    【<b class='flag-5'>科普</b>系列】DTC深度剖析

    Booth编码的原理及选择

    和硅片面积都花费在对部分积的累加求和上。减少部分积的个数是减少部分积的累加求和的有效手段。Booth 算法是目前用于缩减部分积个数最常用、最有效的算法。基4 Booth编码可以将部分积的个数减少一半
    发表于 10-22 07:53

    北京科技创新促进中心文科与科普部李守勇部长一行莅临昱栎技术科普基地实地踏勘

    10月14日,北京科技创新促进中心文科与科普部部长李守勇一行莅临北京昱栎技术有限公司(以下简称“昱栎技术”),围绕科普基地建设运营开展实地踏勘与专题座谈。昱栎技术董事长栗旭锦全程陪同,通过“实景参观
    的头像 发表于 10-16 09:48 521次阅读
    北京科技创新促进中心文科与<b class='flag-5'>科普</b>部李守勇部长一行莅临昱栎技术<b class='flag-5'>科普</b>基地实地踏勘

    量子机器学习入门:三种数据编码方法对比与应用

    在传统机器学习中数据编码确实相对直观:独热编码处理类别变量,标准化调整数值范围,然后直接输入模型训练。整个过程更像是数据清洗,而非核心算法组件。量子机器学习的编码完全是另一回事。传统
    的头像 发表于 09-15 10:27 472次阅读
    量子机器学习入门:三种数据<b class='flag-5'>编码</b>方法对比与应用

    新思科技青少年芯片科普公开课武汉开讲

    8月10日,由新思科技芯片设计行业顶尖专家团队与中学教师联合开发的青少年芯片科普公开课,在武汉成功开讲!
    的头像 发表于 08-25 15:36 610次阅读

    科普|通信射频接头学习

    科普|通信射频接头学习
    的头像 发表于 08-19 17:09 728次阅读
    <b class='flag-5'>科普</b>|通信射频接头学习

    机器人如何选择编码器方案?

    电子发烧友网报道(文/梁浩斌) 在人形机器人控制系统中,每个关节都需要通过传感器去确定关节的位置和状态,从而通过算法去对多个关节进行相应的控制,多个关节联动实现复杂的动作执行。   那么如何确定关节
    的头像 发表于 07-19 00:04 5801次阅读

    磁性编码器非线性误差补偿及在重型机床高精度伺服控制中应用

    重型机床加工精度面临磁性编码器非线性误差挑战,误差来源包括磁栅刻划误差、磁头偏心及温度漂移。创新补偿技术如双读头差分、智能算法及双反馈系统,将定位误差控制在微米级,推动国产编码器技术从跟跑到并跑。
    的头像 发表于 05-16 17:29 937次阅读

    优先编码器:高效数据选择与编码的解决方案

    在现代数字电路设计中,数据的选择与编码是不可或缺的重要环节。面对众多输入信号,如何高效地选择并编码所需数据,成为设计师们面临的一大挑战。优先编码器,作为一种独特的数字电路组件,凭借其高效、灵活的特点
    的头像 发表于 03-25 08:33 854次阅读

    伺服电机编码器怎么选型

    伺服电机编码器的选型是一个综合性的过程,需要考虑多个因素以确保所选编码器能够满足系统的性能要求。以下是一些关键的选型步骤和考虑因素: 一、明确应用需求 首先,需要明确伺服电机编码器的应用需求,包括
    的头像 发表于 03-11 12:01 1458次阅读
    伺服电机<b class='flag-5'>编码</b>器怎么选型

    医疗科普新助力!华为云 Flexus 数字人引领行业变革

    在医疗科普领域,医生肩负重任,但其本职工作繁重,精力有限,且传统视频制作繁琐难以跟上融媒体步伐,如何以更高效、创新的方式传播专业知识,进一步提升内容创作效率、降低成本,并确保内容质量?全新推出的华为
    的头像 发表于 03-10 11:09 2692次阅读
    医疗<b class='flag-5'>科普</b>新助力!华为云 Flexus 数字人引领行业变革

    信道编码和信源编码的区别

    信道编码和信源编码是数字通信系统中两个至关重要的环节,它们各自承担着不同的功能和角色。
    的头像 发表于 01-29 16:29 2868次阅读

    编码器与译码器:功能、原理及应用解析

    挥关键作用的神秘面纱。 编码器:信息的精密编码编码器,顾名思义,是将一种形式的信息转换成另一种特定编码形式的设备或算法。在信息科学领域,
    的头像 发表于 01-17 08:37 2253次阅读

    第二届电力电子科普作品创作大赛斩获殊荣——荣获2024年全国科普日优秀活动表彰

    2024年12月27日,中国科协办公厅正式发布了《关于表彰2024年全国科普日优秀组织单位与活动的通知》,由中国电源学会科普工作委员会携手英飞凌科技(中国)有限公司精心策划的第二届电力电子科普作品
    的头像 发表于 01-11 09:05 671次阅读
    第二届电力电子<b class='flag-5'>科普</b>作品创作大赛斩获殊荣——荣获2024年全国<b class='flag-5'>科普</b>日优秀活动表彰

    bcd编码的优缺点 bcd编码的常见错误

    BCD(Binary-Coded Decimal)编码是一种二进制编码方式,用于将十进制数(0-9)直接转换为二进制形式。这种编码方式在数字系统中非常常见,尤其是在需要处理数字数据的硬件和软件中
    的头像 发表于 12-20 17:17 2379次阅读