哈夫曼编码

时间:2024-09-08 20:17:17 分类:信息学

给定一个字符集(a,b,c,d,e,f},它们的出现频率分别是(6,3,8,2,10,4}首先,将所有字符及其频率放入一个列表,并按频率排序。初始列表为:[(d,2),(b,3),(f, 4),(a, 6),(c,8),(e,10)]。

然后,取出频率最低的两个元素,将它们合并成一个新的节点,其频率为这两个元素的频率之和,然后将新节点插入列表中的适当位置以保持排序。我们重复此步骤,直到列表中只剩下一个元素。


左分支通常表示0,右分支通常表示1.

对于字符a,我们从根节点开始,向左再向左,所以a的哈夫曼编码是00

对于字符b,我们从根节点开始,向右,然后向左,再向右,最后向右,所以b的哈夫曼编码是1011;

以此类推