哈夫曼编码。对教材P167中习题5.18,思考并完成问题a-d。
====
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。[2]
====
(a)
哈夫曼树
百度网盘:http://pan.baidu.com/s/1mg0pKQc
====
哈夫曼编码:
空格:111
a:1010
b:100101
c:00101
d:10111
e:010
f:110100
g:100110
h:0001
i:0111
j:1101110011
k:11011101
l:10110
m:110110
n:0110
o:1000
p:100100
q:1101110001
r:0000
s:0011
t:1100
u:00100
v:1101111
w:110101
x:1101110010
y:100111
z:1101110000
====
(b)每个字母的编码平均需要多少位?
(3*2+4*8+5*4+6*7+7+8+10*4)/27≈6
====
(c))假设我们对以上的频率表计算其熵H。您认为该值会比以上的计算结果大还是小?为什么?
计算所得的熵约为5.73,上面所得的结果比熵大,因为熵的运算用的是频率而编码用的是整数
====
(d)您是否认为这就是英文文本压缩的下限?除了字母及其出现频率,还有哪些英文本身的特征需要在文本压缩中被重点考虑?
不是英文文本压缩的下限;英文不仅仅是字母组成,更加有意义的事,每个英文单词以及构成单词的词根,这些都可能应该可以作为英文文本压缩的特征吧。
====