目录
主要思想
哈夫曼编码是一种贪心思想,主要是将一串序列构造成一棵树,使出现次数越多的节点的码长(及它所在层的深度)越短,以方便查找。
哈夫曼树的构造
既然要使出现越多的码长越短,那我们可以每次找两个最小的两两合并。
哈夫曼编码正误的判断
我们看真题,来自CSP-J 2023
假设有一组字符 {a,b,c,d,e,f}, 对应的频率分别为 5%,9%,12%,13%,16%,45%。请问以下哪个选项是字符abcdef分别对应的一组哈夫曼编码?
A. 1111,1110,101,100,110,0
B. 1010,1001,1000,011,010,00
C. 000,001,010,011,10,11
D. 1010,1011,110,111,00,01
虽然哈夫曼编码说是“左0右1”但是在此是一样的,因为不管左右,我如果想把左0右1“改成”左1右0,只需交换左右子树。
答案选A。具体我们只需画出来,把0和1做调整就可以,比如以第一个数为基准,把每一层的左0右1或左1右0定下来。
最小带权路径长度之和
这个很简单,就是将哈夫曼树中来自序列中的元素的 值×码长 加起来得到的和。
本文是对知识点的简单概括,如果没看懂可以评论私信,大家一起解答。
如果你觉得有什么可以补充的,麻烦评论或者私信,我看到会尽快补充,谢谢~