数据结构—基础知识(16):哈夫曼编码

数据结构---基础知识(16):哈夫曼编码

哈夫曼编码的主要思想

在进行数据压缩时,为了使压缩后的数据文件尽可能短,可采用不定长编码。其基本思想是:为出现次数较多的字符编以较短的编码。为确保对数据文件进行有效的压缩文件和对压缩文件进行正确的解码,可以利用哈夫曼树来设计二进制编码。

有关编码的概念

  1. 前缀编码:如果在一个编码方案中,任一个编码都不是其他任何编码的前缀(最左子串),则称编码是前缀编码。
  2. 哈夫曼编码:对一棵具有n个叶子的哈夫曼树,若对树中的每个左分支赋予0,右分支赋予1,则从根到每个叶子的路径上,各分支的赋值分别构成一个二进制串,该二进制串就称为哈夫曼编码。

哈夫曼编码满足两个性质:

性质1:哈夫曼编码是前缀编码。

性质2:哈夫曼编码是最优前缀编码。

例题:假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为7,19,2,6,32,3,21,10,试为这8个字母设计哈夫曼编码

字母编码 出现频率 哈夫曼编码
1 7 1100
2 19 00
3 2 11110
4 6 1110
5 32 10
6 3 11111
7 21 01
8 10 1101
相关推荐
知产xiao_xin1 小时前
商标权的内容和限制
经验分享·笔记·知识产权
陈年老古董1 小时前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习
喜欢打篮球的普通人2 小时前
MiniMind 学习笔记(十八):速通强化学习——从 MDP 到 PPO 的概念与算法地图
笔记·深度学习·学习
志尊宝3 小时前
Vue3 零基础每日笔记(076):防抖节流的正确使用——搜索框、按钮防重复提交、滚动监听
javascript·vue.js·笔记
海绵宝宝转agent3 小时前
2026-10-9 leetcode100刷题+面经整理
笔记·算法·面试
yi0113 小时前
DAY24: LeetCode 167:两数之和 II|从暴力枚举到左右双指针
笔记·python·算法·leetcode·二分查找·双指针
Logic1013 小时前
C语言/数据结构数位DP题解:平滑排列数字统计——区间内相邻位差不超过K的数字个数
c语言·数据结构·动态规划·时间复杂度·数位dp·算法题·前导零处理
yi0114 小时前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
北风toto4 小时前
数据库笔记:Armstrong 公理系统与集合论的深度辨析
数据库·笔记
EasyBr指纹浏览器4 小时前
我的开源项目:小红书笔记归档,把来源和缺项一起留下
笔记·小红书·开源工具·素材管理·内容归档