哈夫曼编码

本文介绍了哈夫曼编码的算法过程,包括构建哈夫曼树和编码分配的详细步骤。通过示例展示了如何对不同概率的符号进行编码,以实现数据的无损压缩。并提及了算法在实际中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 伪代码

HUFFMAN(C)

N=|C|;

 Q=C;

for i=1 to n-1 

allocate a new node z

z.left=x=EXTRACT-MIN(Q);

z.right=y= EXTRACT-MIN(Q);

z.freq=x.freq+y.freq;

INSERT(Q,z);

return EXTRACT-MIN(Q); 

二、算法分析

 哈夫曼编码是一种无损压缩方法,其一般算法如下:  

A、首先统计信源中各符号出现的概率,按符号出现的概率从大到小排序;

B、把最小的两个概率相加合并成新的概率,与剩余的概率组成新的概率集合;

C、对新的概率集合重新排序,再次把其中最小的两个概率相加,组成新的概率集合。如此重复进行,直到最后两个概率的和为l;

D、分配码字:码字分配从最后一步开始反向进行,对于每次相加的两个概率,给大的赋¨O",小的赋¨1¨(也可以全部相反,如果两个概率相等,  则从中任选一个赋¨O¨,  另一个赋"l¨即可),读出时由该符号开始一直走到最后的概率和¨1¨,将路线上所遇到的¨O¨和¨l¨按最低位到最高位的顺序排好,就是该符号的哈大曼编码。

 例:设一幅灰度级为6(分别用a 1、a2、a3、a4、a5、a6表示)的图像中,各灰度所对应的概率分别为O.40、O.30、O.1 O、O.1 O、O.06、O.O4。现对其进行哈大曼编码,具体步骤如下:

(1)首 先对信源概率从大到小排序,选出最小的两个概率(O.06和O.04),相加得O.1,与其他概率组成新的概率集合(O.4,O.3,O.1,O.1,O.1);

(2)对新的概率集合重新排序,选出最小的两个概率(O.1和O.1),相加得O.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fullstack_lth

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

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

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

打赏作者

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

抵扣说明:

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

余额充值