第六周作业——利用哈夫曼编码英文字母表
来源:互联网 发布:mac 铁锈红 编辑:程序博客网 时间:2024/04/29 21:44
1. 哈夫曼编码。对教材P167中习题5.18,思考并完成问题a-d。
(下表给出了英文字母(包括用于分割单词的空格)在某文集中的出现频率。
空格 18.3% | r 4.8% | y 1.6%
e 10.2% | d 3.5% | p 1.6%
t 7.7% | l 3.4% | b 1.3%
a 6.8% | c 2.6% | v 0.9%
o 5.9% | u 2.4% | k 0.6%
i 5.8% | m 2.1% | j 0.2%
n 5.5% | w 1.9% | x 0.2%
s 5.1% | f 1.8% | q 0.1%
h 4.9% | g 1.7% | z 0.1%
(a)这些字母的最优Huffman编码是什么?
空格: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,即每个字母的编码平均需要6位
(c)假设我们对以上的频率表计算其熵H您认为该值会比以上的计算结果大还是小?为什么?
熵约为5.74,结果肯定比熵(大约4.139)要大,因为在计算熵的时候允许有小数个比特,而实际上每个字符的编码长度都必需为整数。
(d)您是否认为这就是英文文本压缩的下线?除了字母及其出现频率,还有哪些英文本身的特征需要在文本压缩中被重点考虑?
不是,因为还可以把前缀,后缀或者整个单词的本身组合起来考虑。- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业——利用哈夫曼编码英文字母表
- 第六周作业—利用哈夫曼编码英文字母表
- 第六周作业—利用哈夫曼编码英文字母表
- 第六周作业——1.利用哈夫曼编码英文字母表,2哈夫曼编码实现
- 第六周作业——1.利用哈夫曼编码英文字母表,2哈夫曼编码实现
- 第六周作业1——利用哈夫曼编码英文字母表】
- 第六周作业1——利用哈夫曼编码英文字母表
- 第六周作业1——利用哈夫曼编码英文字母表
- 第六周作业1——利用哈夫曼编码英文字母表
- 第六周作业1——利用哈夫曼编码英文字母表
- 第六周作业1——利用哈夫曼编码英文字母表
- 第六周作业1——利用哈夫曼编码英文字母表
- 《算法概论》第六周作业——利用哈夫曼编码英文字母表
- Arcpy 第一个函数式的写法[纪念]
- proxool配置
- ExecutorService
- Struts2 submit 标签自动换行
- oracle数据库表空间扩容
- 第六周作业——利用哈夫曼编码英文字母表
- Java数据库连接池 Proxool
- Java中的流、字符流和字节流
- 【Unity 3D】学习笔记十四:控件偏移
- Spring返回text/plain出现中文乱码
- UIImageView 7种手势基本介绍
- 断言(ASSERT)的用法
- 资源管理框架(mesos/YARN/coraca/Torca/Omega)选型分析
- TNS-01201: Listener cannot find executablen 错误