题目:将霍夫曼编码推广至三进制编码,并证明它能产生最优编码
※将霍夫曼编码推广至三进制编码 设一个数据文件包含Q 个字符:A1,A2,……,Aq,每个字符出现的频度对应为 P:P1,P2,……,Pq
将字符按频度从大到小顺序排列,记此时的排列为排列 1
用一个新的符号(设为 S1)代替排列 1 中频度值最小的 Q-2k(k 为(Q-1)/2 取整)个字符,并记其频度值为排列 1 中最小的 Q-2k 个频度值相加,再重新按频度从大到小顺序排列字符,记为排列 2
(注:若 Q-2k=0,则取其值为 2,若 Q-2k=1,则取其值为 3
对排列 2 重复上述步骤 2,直至最后剩下 3 个概率值
从最后一个排列开始编码,根据3 个概率大小,分别赋予与 3 个字符对应的值:0、1、2,如此得到最后一个排列 3 个频度的一位编码
此时的 3 个频度中有一个频度是由前一个排列的 3 个相加而来,这 3 个频度就取它的一位编码后面再延长一位编码,得到二位编码,其它不变
如此一直往前,直到排列 1 所有的频度值都被编码为止
举例说明如下(假设Q=9): 字符 A1 A2 A3 A4 A5 A6 A7 A8 A9 频度 0
03 字符 频度 编码 频度 编码 频度 编码 频度 编码 A1 0
22 2 0
22 2 0
30 1 0
48 0 A2 0
18 00 0
18 00 0
22 2 0
30 1 A3 0
15 02 0
15 01 0
18 00 0
22 2 A4 0
13 10 0
15 02 0
15 01 A5 0
10 11 0
13 10 0
15 02 A6 0
07 12 0
10 11 A7 0
07 010 0
07 12 A8 0