Huffman 编码 | 学习笔记

简介: 快速学习 Huffman 编码,介绍了 Huffman 编码系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算Huffman 编码】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15683


Huffman 编码


内容介绍:

一、编码思想

二、哈夫曼编码的步骤

三、例题讲解

四、采用哈夫曼编码时注意


一、编码思想

统计中应用的最广泛的编码是 Huffman 编码。

1. 哈夫曼编码方法于1952年问世

2. 算法思想

按照概率出现大小的顺序,对输出码字分配不同码字长度的变字长编码方法

输出码字的平均码长最短,与信息嫡值接近,编码方法最佳(因为最小长度的编码是信息熵,有比其更接近的但是相比哈夫曼编码其效率更低。)

3. 迄今为止仍经久不衰,广泛应用于各种数据压缩技术中,且仍不

失为嫡编码中的最佳编码方法


二、哈夫曼编码的步骤

哈夫曼编码核心思想是概率大的得到的码字短,概率小的得到的码字长。

编码步骤就是看如何实现该核心思想,并且让其效率更高。

Step 1:概率统计(如对一幅图像作灰度信号统计)得到 n 个不同概率的信息符号(在语音中可以对其采样点的本身幅值进行统计)

Step 2:将 n 个信源信息符号的 n 个概率按概率大小排序

Step 3:将 n 个概率中最后两个小概率相加,这时概率个数减为 n-1个

Step 4:将 n-1个概率按大小重新排序(原因是最小的两个相加的和未必是最小的)

Step 5:重复( 3),将新排序后的最后两个小概率再相加,相加和与其余概率再排序

Step 6:如此反复重复 n-2次,得到只剩两个概率

Step 7:以二进制码元(0,1)赋值,构成哈夫曼码字

编码结束


三、例题讲解

假设有7个符号,分别为 X1、X2、X3、X4、X5、X6、X7。其他信息和步骤图如下图所示:

image.png

第一步将最小的两个概率相加得到0.10,然后继续将最小的两个概率相加,然后排序,重复该步骤。

最后得到0.60和0.40。

然后编码,将0.60用0表示,0.40用1表示。

发现0.60是由0.35和0.25相加得到,所以0.35用00表示,0.25用01表示。0.40是0.20和0.20相加得到,因为0.40是用1表示,所以0.20是在1的后面加0,也就是10表示,另一个0.20用11表示。

继续回溯,0.25由0.15和0.10得到,分别用010和011表示,依此类推,得到 X1、X2、X3、X4、X5、X6、X7 各自的码字:

image.png

发现概率最大用了两位表示,概率最小用了4位表示。

这就是哈夫曼编码。

其码长分别为2、2、3、3、3、4、4。

根据其概率可以统计出最终的实际码长。


四、采用哈夫曼编码时注意

采用哈夫曼编码时有两个问题值得注意:

1.口哈夫曼码没有错误保护功能

在译码时,如果码串中没有错误,那么就能一个接一个地正确译出代码

如果出错,无法查出

2. 哈夫曼码是可变长度码

很难随意查找或调用压缩文件的中间内容,然后再译码,这就需要在存储代码之前加以考虑。

思考题:

信息符号及其概率如下:

image.png

求其 Huffman 编码、信息嫡和平均码长。

相关文章
|
前端开发 数据库 数据安全/隐私保护
【项目实战】登录与注册业务的实现(前端+后端+数据库)
【项目实战】登录与注册业务的实现(前端+后端+数据库)
3064 0
【项目实战】登录与注册业务的实现(前端+后端+数据库)
|
JSON 数据挖掘 API
各大电商平台的商品详情数据接口(API接口系列)
各大电商平台的商品详情数据接口(API接口系列)是开发者在构建电商应用或进行数据分析时的重要工具。这些接口允许开发者通过编程方式获取商品的详细信息,如商品ID、标题、价格、库存、属性、描述、图片等。以下是对淘宝、京东、拼多多等电商平台商品详情数据接口的汇总,以及开发者在使用这些接口时需要注意的事项。
各大电商平台的商品详情数据接口(API接口系列)
|
11月前
|
搜索推荐 API 开发者
深度解析:利用商品详情 API 接口实现数据获取与应用
在电商蓬勃发展的今天,数据成为驱动业务增长的核心。商品详情API接口作为连接海量商品数据的桥梁,帮助运营者、商家和开发者获取精准的商品信息(如价格、描述、图片、评价等),优化策略、提升用户体验。通过理解API概念、工作原理及不同平台特点,掌握获取权限、构建请求、处理响应和错误的方法,可以将数据应用于商品展示、数据分析、竞品分析和个性化推荐等场景,助力电商创新与发展。未来,随着技术进步,API接口将与人工智能、大数据深度融合,带来更多变革。
392 3
|
11月前
|
JSON API 数据安全/隐私保护
淘宝商品评价 API 的获取与应用
淘宝商品评价API是电商数据分析的重要工具,帮助商家和开发者获取淘宝平台上的商品评价信息。通过注册淘宝开放平台账号、申请AppKey和AppSecret、获取API权限等步骤,用户可以调用该API进行市场分析、竞品研究及店铺运营优化。API支持HTTP GET/POST请求,返回JSON或XML格式的评价数据,包括评价内容、时间、评分等。本文详细介绍API的使用方法,并提供Python代码示例,助力用户更好地利用这一资源。注意遵守请求频率限制、数据隐私保护等相关规定,确保合法合规使用数据。
404 3
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
JSON API 开发工具
淘宝实时 API 接口丨淘宝商品详情接口(Taobao.item_get)
淘宝商品详情接口(Taobao.item_get)允许开发者获取商品的详细信息,包括基本信息、描述、卖家资料、图片、属性及销售情况等。开发者需注册账号、创建应用并获取API密钥,通过构建请求获取JSON格式数据,注意遵守平台规则,合理使用接口,确保数据准确性和时效性。
1151 9
|
Java 关系型数据库 MySQL
springboot+vue“智慧食堂”设计与实现
springboot+vue“智慧食堂”设计与实现
|
缓存 监控 API
淘宝API接口注意事项及要点
淘宝API接口的使用需注意以下要点:首先注册并认证开发者账号,获取API密钥;深入理解接口文档,确保参数合法准确;遵守调用频率限制,必要时申请提额;确保数据安全与隐私保护;合理处理错误与异常;优化缓存与性能;关注版本更新与兼容性;遵守合规性与法律要求;建立日志记录与监控机制。
|
Java 测试技术 API
如何利用 1688 API 接口获取商品信息?
利用 1688 API 获取商品信息的步骤包括:注册开发者账号并创建应用,申请 API 权限,获取 API 密钥,了解 API 文档,编写代码调用 API,并进行测试与调试。最终在生产环境中上线应用,确保合法合规使用。
|
数据可视化 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
2193 1