霍夫曼编码

霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

霍夫曼编码具体步骤:

1、将信源符号的概率按减小的顺序排序
2、把两个最小的概率相加,始终将比较大的概率的分支放在右边,继续这一步骤(选取根节点权重最小的两棵树合并)
3、画出到每个信源符号的路径,(左0右1)得到每个信源符号的霍夫曼码

如:由6个不同字母组成的30个的字符串:CCABD EAFDD AACEE BBACA EFAAB CCCEA

1、计算每个字母的概率

A-----------------9
C-----------------7
E-----------------5
B-----------------4
D-----------------3
F-----------------2

2、将概率最小的相加并将较大概率分支放在右边

3、按左0右1的原则画出每个信源符号路径,得下图

获得每个字符的编码:

A-----------------9-----------------10
C-----------------7-----------------01
E-----------------5-----------------111
B-----------------4-----------------110
D-----------------3-----------------001
F-----------------2-----------------000

EG:

某通信码中只会出现8中字符,其概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,若对其进行霍夫曼编码,其霍夫曼树的高度是?

计算字符概率:

b-----------------29
f-----------------23
e-----------------14
h-----------------11
d-----------------8
c-----------------7
a-----------------5
g-----------------3

霍夫曼树为:

所以高度是4

posted @ 2018-03-28 18:15  第五  阅读(769)  评论(0编辑  收藏  举报