哈夫曼编码的应用场景

简介: 哈夫曼编码的应用场景

背景

上周评审的时候,做需求的同事有一个点是,把客户的名字提取拼音,然后保存起来,说是为了便于查询,然后组长提出来,是否可以用哈夫曼编码来做这个需求

什么是哈夫曼编码

1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,寻找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,哈夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。

哈夫曼编码,又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。是一种高效的编码方式,在信息存储和传输过程中用于对信息进行压缩。

具体介绍可以看这篇文章:哈夫曼编码

原理

构造哈夫曼编码的原理,是首先拿到给定的文本,然后统计文本中出现的各个字符的出现频率,然后给这个频率,构造一个二叉树,构造完成二叉树之后,就可以得到各个字符的编码,然后使用编码的方式,来把这段文本进行传输。

怎么用

这块我还没敲,回头补上,可以先看这篇文章:

哈夫曼编码

是否适合我们的场景呢?

再来描述一下我们的场景,我们的场景是,我们会在数据库保存一批数据,然后每条数据都会有一个名称属性,一个名称的拼音属性,我们的出发点是认为,存拼音占地方,想要将这个属性缩短,如果使用哈夫曼编码的的话,不可避免要存两个东西,一个是原文中字符和频率的对照,一个是拼音加工后得到的哈夫曼编码,感觉并没有省多少事儿,所以我觉得不太合适。

以上是我的理解,请大家指正。

目录
相关文章
算法:图解递归算法的应用场景和使用途径
算法:图解递归算法的应用场景和使用途径
|
8天前
|
算法 搜索推荐 数据挖掘
二分查找法的应用场景
【10月更文挑战第9天】
12 2
|
5月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
102 0
|
5月前
|
人工智能 算法 BI
【算法基础】基础算法(二)--(高精度、前缀和、差分)(下)
【算法基础】基础算法(二)--(高精度、前缀和、差分)(下)
|
5月前
|
Web App开发 存储 网络协议
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
300 3
|
5月前
|
存储 机器学习/深度学习 算法
深入探索数据压缩:哈夫曼编码与其同类技术的原理与C++ 实现
深入探索数据压缩:哈夫曼编码与其同类技术的原理与C++ 实现
209 0
|
存储 算法 Python
哈夫曼树:优雅的数据编码之道
哈夫曼树:优雅的数据编码之道
154 0
|
5月前
|
存储 算法
算法题解-同构字符串
算法题解-同构字符串
|
5月前
|
算法 JavaScript 测试技术
动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本
动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本
|
存储 算法 索引
8.线性搜索算法和二进制搜索算法
8.线性搜索算法和二进制搜索算法