采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用
2024-09-03 13:28:54
题目:有一个字符串: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)
最新文章
- Coding4Fun Toolkit支持本地化解决办法
- 十五天精通WCF——第一天 三种Binding让你KO80%的业务
- Java swing项目-图书管理系统(swing+mysql+jdbc)
- Oracle11G 卸载步骤
- ORM框架是什么
- oracle索引使用时注意
- Dreamweaver 8
- leetcode Remove Duplicates from Sorted Array python
- twitter接口开发
- [UWP]如何使用Fluent Design System (上)
- XMPP 测试工具
- 对于jQuery的了解
- 找到排序矩阵中从小到大第K个数字
- Java简单操作Zookeeper
- C#常量和字段以及各种方法的语法总结
- CAS跳转流程
- Android style 继承
- Python学习笔记第二十七周(Bootstrap)
- 【17】有关python面向对象编程的提高【多继承、多态、类属性、动态添加与限制添加属性与方法、@property】
- JS判断浏览器种类
热门文章
- webservice的soap
- 在win10环境下配置spark和scala
- C++中的平方、开方、绝对值怎么计算
- Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1)
- 详解DLX及其应用
- 【spring源码分析】IOC容器初始化——查漏补缺(五)
- IO流——常用IO流详解
- Debian/Ubuntu/CentOS开机启动
- Go --- 七牛云 上传文件 &; Token demo
- python代码-leetcode2 链表-两数相加