哈夫曼编码的应用场景

背景

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

什么是哈夫曼编码

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

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

原理

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

怎么用

这块我还没敲,回头补上,可以先看这篇文章:
哈夫曼编码

是否适合我们的场景呢?

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盖丽男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值