一、霍夫曼编码基本思想
霍夫曼编码的基本思想是:对出现概率较大的符号取较短的码长,而对于概率较小的符号取较长的码长,它是一种变长码,通常称其为最优码。
二、霍夫曼编码原理
设某信源有几个符号,对应于各自拥有的概率。首先,将所有的符号按照它们的概率大小由大到小排列。编码时,从概率最小的两个符号开始选其中一路为0,一路为1,将这两个符号的概率相加,再将所有的概率按从大到小排列,多次重复上述步骤直到合并概率归一为止。
下面举个例子:
设有一个由5个不同符号组成的30个符号的字符串:BABACACADADABBCBABEBEDDABEEEBB,求该字符串的霍夫曼编码。
①首先,我们算出各个符号的概率:
P(A) = 8/30; P(B) = 10/30; P(C) = 3/30; P(D) = 4/30; P(E) = 5/30
②将上面五个符号按概率从大到小排列:
B:10/30
A:8/30
E:5/30
D:4/30
C:3/30
③接下来按上述方法合并,具体如下图所示:
从右往左读,以C为例,与C相关的有7/30,12/30,所以C的码字为:010;以此类推,D的码字为011,E的码字为00,A的码字为10,B的码字为11。
因此该字符串的霍夫曼码为:
111011100101001010010100111001110111101011101100110001101110110000001111