第六周作业1-利用哈夫曼编码英文字母表

该博客讨论了课本中5.18习题,涉及英文字母在某文集中的频率分布,并给出了这些字母的最优Huffman编码。分析指出实际编码长度因整数约束会大于计算熵时的长度。
摘要由CSDN通过智能技术生成

课本167页的习题5.18

5.18:下表给出了英文字母(包括用于分割单词的空格)在某文集中的出现的频率

空格      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%

### 回答1: 根据哈夫曼编码的原理,我们需要先将出现频率较小的字母进行合并,形成一棵树,直到最终形成只有一个根节点的树。在这个过程,每次合并的两个节点会分别被标记为0和1,最终形成的路径就是该字母哈夫曼编码,其左子树路径标记为0,右子树路径标记为1。 下面是该电文字母哈夫曼编码: | 字母 | 出现频率 | 哈夫曼编码 | |------|----------|------------| | A | 1 | 1111 | | B | 1 | 1110 | | C | 1 | 1101 | | D | 1 | 1100 | | E | 2 | 10 | | F | 2 | 11 | | G | 3 | 0 | | H | 3 | 1 | 可以看出,经过合并后,出现频率较高的字母的编码较短,而出现频率较低的字母的编码较长。这样可以有效地减少整个电文的编码长度。 ### 回答2: 哈夫曼编码是一种变长编码方式,根据字母出现频率不同来确定其对应的编码,频率越高的字母编码越短。对于给定的8个字母,根据其出现频率,我们可以进行以下步骤来得到字母哈夫曼编码。 第一步,计算每个字母出现频率字母 频率 A 20% B 30% C 10% D 15% E 5% F 6% G 9% H 5% 第二步,将频率用二叉树示,每次选择频率最低的两个字母,构建一个二叉树,节点的权值是两个字母频率之和。 第一轮:E (5%)和H (5%) 第二轮:C (10%)和G (9%) 第三轮:F (6%)和D (15%) 第四轮:C (19.5%)和G (9%) 第五轮:B (30%)和A (20%) 最后得到的二叉树如下所示: C+G+E+H (28%) / \ C+G(19.5%) E+H(10.5%) / \ C(10%) G(9%) 第三步,向左子树的路径标记为0,向右子树的路径标记为1。根据二叉树的路径即可以得到字母哈夫曼编码。 A: 1 B: 00 C: 10 D: 110 E: 1110 F: 1101 G: 01 H: 1111 通过以上步骤,我们得到了8个字母哈夫曼编码,这样编码后的电文长度更短,节省了传输空间。 ### 回答3: 哈夫曼编码是一种变长编码方法,用于将出现频率较高的字符赋予较短的编码,以提高编码效率。下面是某电文8个字母频率字母 | 频率 -------------- A | 0.2 B | 0.1 C | 0.1 D | 0.1 E | 0.2 F | 0.1 G | 0.1 H | 0.1 首先,将频率从小到大进行排序: 字母 | 频率 -------------- B | 0.1 C | 0.1 D | 0.1 F | 0.1 G | 0.1 H | 0.1 A | 0.2 E | 0.2 接下来,使用哈夫曼树的构建方法,将频率最小的两个字母合并为一个节点,频率为这两个字母频率之和。不断重复此过程,直到所有字母都合并为一个节点。 第一步,合并频率为0.1的B和C,得到节点BC,频率为0.2。 字母 | 频率 -------------- BC | 0.2 D | 0.1 F | 0.1 G | 0.1 H | 0.1 A | 0.2 E | 0.2 第二步,合并频率为0.1的D和F,得到节点DF,频率为0.2。 字母 | 频率 -------------- BC | 0.2 DF | 0.2 G | 0.1 H | 0.1 A | 0.2 E | 0.2 第三步,合并频率为0.1的G和H,得到节点GH,频率为0.2。 字母 | 频率 -------------- BC | 0.2 DF | 0.2 GH | 0.2 A | 0.2 E | 0.2 第四步,合并频率为0.2的BC和DF,得到节点BCDF,频率为0.4。 字母 | 频率 ---------------- BCDF | 0.4 GH | 0.2 A | 0.2 E | 0.2 第五步,合并频率为0.2的GH和A,得到节点GHA,频率为0.4。 字母 | 频率 ----------------- BCDF | 0.4 GHA | 0.4 E | 0.2 第六步,合并频率为0.4的BCDF和GHA,得到根节点。 字母 | 频率 -------------------------------- BCDFGHA | 0.8 E | 0.2 最后,根据哈夫曼树的结构,为各个字母分配编码。从根节点开始,向左的路径标记为0,向右的路径标记为1。根据此规则,得到字母哈夫曼编码如下: 字母 | 频率 | 哈夫曼编码 ------------------------------- A | 0.2 | 10 B | 0.1 | 000 C | 0.1 | 001 D | 0.1 | 010 E | 0.2 | 11 F | 0.1 | 011 G | 0.1 | 100 H | 0.1 | 101 经过哈夫曼编码后,出现频率较高的字母得到了较短的编码,从而提高了编码效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值