实验2 Huffman编码对英文文本的压缩和解压缩
《信息论与编码》
实验报告
班级:
学号:
姓名:
完成时间:2011年6月2日
实验2 Huffman编码对英文文本的压缩和解压缩
一、实验内容
根据信源压缩编码——Huffman编码的原理,制作对英文文本进行压缩和解压缩的软件。要求软件有简单的用户界面,软件能够对运行的状态生成报告,分别是:字符频率统计报告、编码报告、压缩程度信息报告、码表存储空间报告。
二、实验环境
计算机
Windows 2000 或以上
Microsoft Office 2000 或以上
VC++ 6.0
MSDN 6.0
三、实验目的
掌握Huffman编码的原理
掌握VC开发环境的使用(尤其是程序调试技巧)
掌握C语言编程(尤其是位运算和文件的操作)
掌握数据结构的内容:链表、顺序表、堆栈、最优二叉树
掌握结构化程序分析和开发的软件工程原理
四、实验要求
提前预习实验,认真阅读实验原理。
认真高效的完成实验,实验过程中服从实验室管理人员以及实验指导老师的管理。
认真填写实验报告。要求有实验问题、实验原理、Matlab的源程序以及实验结果(实验内容中)。
每个同学必须独立完成实验(不能抄袭,否则两人均为零分),实验成绩是该门课程成绩的主要依据。
五、实验原理
压缩/解压缩流程
压缩流程:
读取扫描文本文件——〉统计字符频率——〉生成码字——〉保存压缩文件
解压缩流程:
读取扫描压缩文件——〉提取字符频率——〉生成码树——〉保存文本文件
Huffman编码算法(略)
文件操作和位运算(略)
六、Huffman 算法的8种不同实现方式
1. huffman_a 使用链表结构生成Huffman树的算法,这是最基本的实现方法,效率最低。
2. huffman_b 使用《数据结构》(严蔚敏,吴伟民,1997,C语言版)中给出的算法,将二叉树存放在连续空间里(静态链表),空间的每个结点内仍有左子树、右子树、双亲等指针。
3. huffman_c 使用Canonical Huffman编码,同时对huffman_b的存储结构进行改造,将二叉树存放在连续空间tree里,空间的每个结点类型都和结点权值的数据类型相同,空间大小为2*num,tree[0]未用,tree[1..num]是每个元素的权值,生成Huffman后,tree[1..2*num-1]中是双亲结点索引。
4. huffman_d 在huffman_c的基础上,增加预先排序的功能先用QuickSort算法对所有元素的权值从小到大排序,这样,排序后最前面的两个元素就是最小的一对元素了。我们可以直接将它们挑出来,组合成一个子树。然后再子树的权值用折半插入法插到已排序的元素表中, 保证所有结点有序。为了保证初始元素的顺序不变,我们另外使用了一个索引数组,所有排序中的交换操作都是在索引数组中进行的。
5. huffman_e 在huffman_d的基础上,将索引数组放在tree的内部。为编码方便,将元素权值放在tree[num..2*num-1]处。将tree[0..num-1]作为索引数组。排序改为从大到小。对索引数组排序后,每次从最后选出2个最小值,相加后的结点权值放在索引数组最后,结点索引放在索引数组中倒数第2个位置,然后索引数组大小减1,并将最后一个索引值插入到前面的有序表中,保证索引数组仍然有序。
6. huffman_f 在huffman_e的基础上,将排序改为利用堆排序原理选择最小的两个权值。也即,将所有元素的权值组织成堆后,每次堆内的根结点就是最小值了。每取出一个根结点后,就把堆尾元素调到根结点重建堆。取出两个最小值合并成一个子树后,再把子树作为叶子结点放到堆中,并让其上升到合适的位置,保持堆性质不变。因为每次不必完成整个排序过程,而只是组织成堆,因此,这种方法要比使用快速排序更快。上述算法参考了mg-1.2.1中Huffman编码的实现,见http://www.cs.mu.oz.au/mg/
7. huffman_g 当元素权值已经有序时,可以使用A. Moffat和J. Katajainen设计的在权值数组内部构建Huffman的方法。A. Moffat和J. Katajainen对该算法的描述见http://www.cs.mu.oz.au/~alistair/abstracts/inplace.html
8. huffman_h 在huffman_f的基础上,增加限制码长的功能。限制码长的算法参考了zlib-1.1.4中构造限制码长的Huffman编码的源代码。zlib的源代码见/zlib/,其中限制长度的算法在tree.c的gen_bitlen()函数中。
七.Huffman 的java 实现:
界面类
public class ComFileFrame {
p
您可能关注的文档
- 安徽省宣城市郎溪中学2015-2016学年高二数学上学期第三次月考试卷 理(含解析).doc
- 安徽省马鞍山市和县2016届九年级(上)第三次月考数学试卷(解析版).doc
- 安徽省望江四中2013届高三开学月考语文试题.doc
- 安泰钢铁环评报告表.doc
- 安生产标准化.ppt
- 安瓿蒸汽灭菌器性能确认报告.doc
- 安监报表每半月.doc
- 安全防护规范培训.ppt
- 安徽省淮北市2014-2015学年八年级下期期末考试物理试卷(word版_含解答).doc
- 安规学习五.ppt
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 《城市食品安全规制问题与对策研究》8800字.docx VIP
- DB37_T 4814-2025 高速公路路基超厚度施工技术规范.docx VIP
- DB37_T 4811.4-2025 工业互联网标识解析 仪器仪表 第4部分:应用服务平台运营规范.docx VIP
- DB37_T 4811.1-2025 工业互联网标识解析 仪器仪表 第1部分:被动标识载体应用指南.docx VIP
- 安川变频器技术手册V1000 中文.pdf VIP
- 五四以来反动派、地主资产阶级学者尊孔复古言论辑录-北京出版.pdf VIP
- GB_T 15558.2-2023 燃气用埋地聚乙烯(PE)管道系统 第2部分:管材.pdf VIP
- 2026年河北体育学院辅导员招聘备考题库必考题.docx VIP
- 海洋养殖网箱框架系统用高密度聚乙烯(HDPE)管材及配件.pdf VIP
- F108012【复试】2023东南大学085400电子信息《复试559微机在生物医学中的应用之单片机.pdf VIP
原创力文档

文档评论(0)