哈夫曼编码的应用场景

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

背景


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


什么是哈夫曼编码


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


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

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


原理


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


怎么用


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


哈夫曼编码


是否适合我们的场景呢?


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


目录
相关文章
|
7月前
|
机器学习/深度学习 存储 算法
【算法与数据结构】复杂度深度解析(超详解)
【算法与数据结构】复杂度深度解析(超详解)
【算法与数据结构】复杂度深度解析(超详解)
|
存储 算法 C++
精选算法题(3)——奇偶数据分离
精选算法题(3)——奇偶数据分离
|
1月前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
32 0
|
2月前
|
算法 搜索推荐 数据挖掘
二分查找法的应用场景
【10月更文挑战第9天】
62 2
|
6月前
|
存储 算法 Java
Java数据结构与算法:用于高效地存储和检索字符串数据集
Java数据结构与算法:用于高效地存储和检索字符串数据集
|
7月前
|
Web App开发 存储 网络协议
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
354 3
|
7月前
|
算法 搜索推荐 数据挖掘
【可套用】15个应用场景的算法实现
那我们还需要去研究算法吗,答案是需要,在很多业务场景中,成熟的算法可以提高效率,减少不必要的问题出现,规避风险。
103 0
|
存储 算法 Python
哈夫曼树:优雅的数据编码之道
哈夫曼树:优雅的数据编码之道
172 0
|
7月前
|
存储 机器学习/深度学习 算法
深入探索数据压缩:哈夫曼编码与其同类技术的原理与C++ 实现
深入探索数据压缩:哈夫曼编码与其同类技术的原理与C++ 实现
271 0
|
7月前
|
存储 算法
算法题解-同构字符串
算法题解-同构字符串