4.设在一篇文章中各字母出现的频率为: a :83: b :14: c :28: d :38: e :131: f :29: g :20: h :53. 给出其定长编码和哈夫曼编码方案,并计算分别需要多少位字符对该文章编码。
时间: 2023-05-25 09:02:05 浏览: 87
用哈夫曼编码统计一段英文中字母的频率
5星 · 资源好评率100%
定长编码方案:每个字母都分配一个相同的长度为 8 位的编码。
需要编码的总字符数 = 83 + 14 + 28 + 38 + 131 + 29 + 20 + 53 = 396
编码长度 = 8 位/字符
总共需要的位数 = 396 x 8 = 3168 位
哈夫曼编码方案:
首先,将各字母按出现频率从小到大排序,构建哈夫曼树:
接着,从哈夫曼树根节点开始,给左边的分支标上 0,给右边的分支标上 1,依此沿着树向下,给每个字母确定哈夫曼编码。最后,可以得到如下的哈夫曼编码:
a:1111
b:110110
c:101010
d:100100
e:0
f:101011
g:11010
h:1110
按照上表的哈夫曼编码,对文章进行编码:
需要编码的总字符数 = 396
总共需要的位数 = 83 x 4 + 14 x 6 + 28 x 6 + 38 x 6 + 131 x 1 + 29 x 6 + 20 x 5 + 53 x 4 = 2116 位
因此,使用哈夫曼编码方案可以将文章编码成 2116 位字符。相比较定长编码方案,哈夫曼编码方案可节省 1052 位字符,编码效率更高。
阅读全文