题目:有一个字符串:cabcedeacacdeddaaaba,问题:
(1)采用霍夫曼编码画出编码的过程,并写出各字符的编码
(2)根据求得的编码,求得各编码需要的总位数
(3)求出整个字符串总编码长度,并计算出字符串位数在编码前与编码后的比值

解答:
(1)各字符出现频率统计如下表所示。
|符号 |出现次数 |出现频率|
|--|--|--|
| a |7|0.35|
|b|2|0.1|
|c|4|0.2|
|d|4|0.2|
|e|3|0.15|
编码过程如下图所示:

各字符编码如下表所示:
|符号|编码(码字) |
|--|--|
| a | 11 |
| b| 100 |
| c| 00 |
| d| 01|
| e|101 |
(2)由(1)可进一步知道字符编码的码长和需要的位数
|符号|符号出现次数 |概率|编码(码字)|码长|需要的位数
|--|--|--|--|--|--
| a |7|0.35|11|2|14
|b|2|0.1|100|3|6
|c|4|0.2|00|2|8
|d|4|0.2|01|2|8
|e|3|0.15|101|3|9
根据求得的编码,求得各编码需要的总位数是:45位(14+6+8+8+9=45)。
(3)字符串总编码长度:60bit(20 x 3 = 60)。
编码前与编码后的比值:4/3(编码前是60,编码后是45)

最新文章

  1. Coding4Fun Toolkit支持本地化解决办法
  2. 十五天精通WCF——第一天 三种Binding让你KO80%的业务
  3. Java swing项目-图书管理系统(swing+mysql+jdbc)
  4. Oracle11G 卸载步骤
  5. ORM框架是什么
  6. oracle索引使用时注意
  7. Dreamweaver 8
  8. leetcode Remove Duplicates from Sorted Array python
  9. twitter接口开发
  10. [UWP]如何使用Fluent Design System (上)
  11. XMPP 测试工具
  12. 对于jQuery的了解
  13. 找到排序矩阵中从小到大第K个数字
  14. Java简单操作Zookeeper
  15. C#常量和字段以及各种方法的语法总结
  16. CAS跳转流程
  17. Android style 继承
  18. Python学习笔记第二十七周(Bootstrap)
  19. 【17】有关python面向对象编程的提高【多继承、多态、类属性、动态添加与限制添加属性与方法、@property】
  20. JS判断浏览器种类

热门文章

  1. webservice的soap
  2. 在win10环境下配置spark和scala
  3. C++中的平方、开方、绝对值怎么计算
  4. Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1)
  5. 详解DLX及其应用
  6. 【spring源码分析】IOC容器初始化——查漏补缺(五)
  7. IO流——常用IO流详解
  8. Debian/Ubuntu/CentOS开机启动
  9. Go --- 七牛云 上传文件 & Token demo
  10. python代码-leetcode2 链表-两数相加