鱼C论坛

 找回密码
 立即注册
楼主: 高山

[技术交流] [参与有奖]给你一串编码,你有什么办法把他压到最短?【哈夫曼编码】

[复制链接]
发表于 6 天前 | 显示全部楼层
以前学哈夫曼树的时候困扰我很久
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
## ①

**答:** 文本只有一种字符如`AAAAAA`时,哈夫曼树退化为单个叶子节点,递归`genCode`会生成空字符串`""`作为该字符的编码。
`path == ""`是根节点特判:根节点初始路径为空,若不加该判断,会把根(同时是叶子)输出空编码。空编码是非法前缀码,解码器无法区分空串和字符,这个特判用来处理只有单个符号的边界情况,避免生成空码。

点评

我很赞同!: 5.0
我很赞同!: 5
正确~!  发表于 6 天前

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
高山 + 5 + 5 + 3 这波必须支持一下!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
数据结构用的?

点评

是的  发表于 6 天前
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 6 天前 | 显示全部楼层
对于很多东西还不知道的我———小萌新,来说,今天的扩展知识真是让人头晕脑胀啊。。。
但是,今天的哈夫曼编码让我有了一个大概的了解。不过最感慨的还是,原来树状分析图能这么有用处。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
看一看有没有新想法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
YY芋圆 发表于 2026-10-5 09:40
对于很多东西还不知道的我———小萌新,来说,今天的扩展知识真是让人头晕脑胀啊。。。
但是,今天的哈夫 ...

嗯嗯,二叉树也是数据结构的一个很大的要点哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
本帖最后由 捭阖jacky 于 2026-10-5 11:05 编辑

学习了。还是新手,正在努力提升中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
着实让我看不明白了

点评

可以看下帖子开头引用的视频~  发表于 6 天前
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
精华贴,谢谢分享
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少要 1 个比特。如果某个符号的概率高达 0.9,熵算下来只需要 0.15 bit,可哈夫曼最少也得给 1 bit”,所以我想:当一串长字符,且概率高度倾斜时,哈夫曼码长会长于定长编码的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
Sora-空 发表于 2026-10-5 14:04
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少 ...

≡ω≡萌新在读代码时发出SOS的叫声。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
Sora-空 发表于 2026-10-5 14:04
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少 ...

是的,但对于重复率高的编码哈夫曼就有优势啦~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 6 天前 | 显示全部楼层
数据结构的回旋镖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
怎么是这个打卡,是不是发错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
按出现频率/价值分配资源,自底向上合并最小项,才能以最小代价逼近最优极限。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
学到了!哈夫曼精髓就是自底向上,每次取最小两个合并,叶子路径即前缀码。ABRACADABRA 压到 23 bit,离熵 22.44 只差一点。编码方案不唯一,左右分支和同权值顺序可换,码长/总长不变。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
打卡
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
只看懂了通信原理里面学的熵,好难啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 From FishC Mobile | 显示全部楼层
有点懵懵的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-10-11 01:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表