哈夫曼编码

news/2024/10/9 9:49:09/

文章目录

  • 🍊自我介绍
  • 🍊哈夫曼编解码
  • 🍊哈夫曼树介绍
  • 🍊哈夫曼编码思想


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


  哈夫曼编码在当前的编码过程中已经不怎么流行了,此次给大家介绍一下它的有关内容,给大家的扩充一下有关哈夫曼的思想。望大家共同学习。(此文章大家了解即可)

🍊哈夫曼编解码

生活中的例子
  我们上学的时候,基本上都是以分数来评定一个人的成绩的。目前国家提倡了素质教育,我们把成绩模糊化,以优秀,良好,中等,及格,不及格这样的词语来模糊我们的分数,我们写代码的时候,可以把分数转换为代码形式(默认成绩都是合法的,不会出现低于零分,超过最高分的情况):

if(a < 60)b = "不及格";
else if(a < 70)b = "及格";
else if(a < 80)b = "中等";
else if(a < 90)b = "良好";
elseb = "优秀";

好的,上面的成绩粗略的来看没什么太大的问题。若是我们把它转换成我们二叉树的形式:
在这里插入图片描述
我们把班级的学生成绩做一个百分比,如下:
在这里插入图片描述
我们发现70-79这个阶段的人数最多。若是按照我们上面的代码形式进行判断的的话,我们需要经过3个if语句的判断,才能得到我们的结果。这样效率太低了,我们可以重新分配二叉树:
在这里插入图片描述
这个时候,我们访问[70-80]之间的学生,相对来说,效率就高了不少了。

🍊哈夫曼树介绍

基本概念:
哈夫曼树:它叫最优二叉树,指的是对于一组具有确定权值的叶子结点的具有最小带权路径长度的二叉树。
路径:从树中的一个结点到另一个结点之间的分支构成两个结点间的路径。
路径长度:路径上的分支数。
树的路径长度:从树的根节点到每个节点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。
结点的权:在一些应用中,赋予树中结点的一个有实际意义的数。
结点的带权路径长度:从该结点到树的根节点的路径长度与该节点的权的乘积。
树的带权路径长度(WPL):树中所有叶子节点的带权路径长度之和。
在这里插入图片描述

路径:A->B
B的路径长度:1
D的路径长度:2
树的路径长度:
1+2+2+1+2+2 = 10
D结点的带权路径长度2 * 3 = 6树的带权路径长度:2 * 3 + 2 * 4 + 2 * 5 + 2 * 6 = 36

🍊哈夫曼编码思想

原则
哈夫曼编码,就是可以用来对我们的数据进行编码,以提高压缩效率。
实战
问题:假设char a[] = “ABABCAA”,思考上述字符串应该定义多少字节存储?
答案:8字节

编码和解码过程
1.统计相同字符出现的次数,字符当作数据存储,次数当作权值
A:4
B:2
C:1
2.把结点按照权值两两合并,小的放左边,大的放右边,形成huffman树
在这里插入图片描述
3.对上图数据进行左0,右1的编码活动
A:1
B:00
C:01

4.对原始数据进行编码
原始数据:ABABCAA
编码数据:1 01 1 01 00 1 1
注:2字节即可存储编码后的数据

5.通过huffman树和密码数据解码
在这里插入图片描述
密码:1011010011
解码方法:从根节点开始访问,根据huffman树来依次访问,有字符数据的肯定是我们的叶子节点。


http://www.ppmy.cn/news/1536580.html

相关文章

广州wms智能仓储管理系统 盈致WMS系统服务商

wms智能仓储管理系统是一种用于管理仓库操作和库存流动的软件系统&#xff0c;旨在提高仓库管理效率、降低成本、减少错误和优化库存控制。以下是WMS智能仓储管理系统的主要功能和特点&#xff1a; 入库管理&#xff1a;WMS系统可以实现对入库货物的接收、分拣、上架和入库操作…

JavaScript数字精度丢失问题解决方案

JavaScript数字精度丢失问题 JavaScript使用64位浮点数表示数字&#xff08;基于IEEE 754标准&#xff09;&#xff0c;这导致某些十进制数字在计算过程中出现精度丢失。常见的场景包括小数运算&#xff0c;如 0.1 0.2 的结果并非精确的 0.3&#xff0c;而是 0.3000000000000…

springboot-网站开发-linux服务器部署jar格式图片存档路径问题

springboot-网站开发-linux服务器部署jar格式图片存档路径问题&#xff01;近期在部署自己的网站源码&#xff0c;使用的是jar格式的编码格式。发布到远程服务器后&#xff0c;发现客户捐款的证书图片存在异常。 经过排查代码&#xff0c;找到了原因。下面分享给大家。 1&…

轻量服务器和云服务器ecs哪个好用一些?

轻量服务器和云服务器ecs哪个好用一些&#xff1f;轻量服务器与云服务器ECS在多方面存在显著差异&#xff0c;对于需要高性能计算和大规模数据处理的用户来说&#xff0c;ECS可能是更好的选择&#xff1b;而对于预算有限且需求较为简单的用户来说&#xff0c;轻量服务器可能更为…

N1从安卓盒子刷成armbian

Release Armbian_noble_save_2024.10 ophub/amlogic-s9xxx-armbian (github.com) armbian下载&#xff0c;这里要选择905d adb 下载地址 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 提示信息 恩山无线论坛 使用usb image tool restet a…

数据分析 | 热度编码和标签编码

热度编码&#xff08;One-Hot Encoding&#xff09;和标签编码&#xff08;Label Encoding&#xff09;是两种常用的将分类变量转换为数值型变量的方法。下面是对这两种编码 方式的详细解释及Python代码示例。 1. 热度编码&#xff08;One-Hot Encoding&#xff09; 定义&…

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…

Python之openpyxl读写 Excel 文件教程

目录 1. 安装 openpyxl2. 创建一个新的 Excel 文件3. 读取 Excel 文件ws.iter_rows 方法参数解释 4. 修改 Excel 文件5. 添加样式6. 删除行和列小结 openpyxl 是一个用于读写 Excel 文件的 Python 库。以下是一些基本用法&#xff0c;包括创建、读取、修改和保存 Excel 文件。 …