欢迎来到天天文库
浏览记录
ID:19838529
大小:363.52 KB
页数:20页
时间:2018-10-06
《《数据结构与算法》课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、«数据结构与算法》课程设计(2013/2014学年第一学期H周)指导教师:杨东鹤王敏丽班级:12计算机科学与技术3班学号:2012329620060姓名:李卓妍《数据结构与算法》课程设计目录一、题
2、=
3、~赫夫曼编码/译码器1.问题描述2.基本要求3.测试要求4.实现提示二、需求分析三、概要设计四、程序说明五、详细设计六、实验心得与体会题目--赫夫曼编码/译码器1.问题描述利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传來的数据进行译码(复原)。对于双工信道
4、(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试力这样的信息收发站编写一个赫夫曼码的编/译码系统。2.基本要求一个完整的系统应具有以下功能:(1)1:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立赫夫曼树,并将它存于文件hfmTree巾。(2)E:编码(Encoding)。利用已建好的赫夫曼树(如不在内存,则从文件hfmTree巾读入),对文件ToBeTran巾的正文进行编码,然后将结果存入文件CodeFile巾。(3)D:译码(Decoding)。利用己建好的赫夫曼树将文件CodeF
5、ile巾的代码进行译码,结果存入文件Textfile中。以下为选做:⑷P:印代码文件(Print)。将文件CodeRle以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePHn巾。(5)T:印赫夫曼树(Treeprinting)。将己在内存巾的赫夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的赫夫曼树写入文件TreePHnt巾。3.测试要求(1)己知某系统在通信联络巾只可能出现八种字符,其频率分别力0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计赫夫曼编码。(2)川下
6、表给出的字符集和频度的实际统计数据建立赫夫曼树,并实现以下报文的编码和译码:“THISPROGRAMEISMYFAVORITE”。字符ABCDEFGHIJKLM频度1866413223210321154757153220字符N0PQRSTUVWXYZ频度57631514851802381811614.实现提示(1)编码结果以文本方式存储在文件Codefile屮。(2)用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“Q”为止。(3)在程序
7、的一次执行过程屮,第一次执行I,D或C命令之后,赫夫曼树己经在内存了,不必再读入。每次执行屮不一定执行I命令,因为文件hfmTree可能早已建好。二、需求分析在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,赫夫曼编码正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码是一种编码方式,以哈夫曼树,即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。哈弗曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概
8、率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。赫夫曼编码的应用很广泛,利用赫夫曼树求得的用于通信的二进制编码称为赫夫曼编码。树屮从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是赫夫曼编码。哈弗曼译码输入字符串可以把它编译成二进制代码,输入二进制代码时可以编译成字符串。对输入的一串电文字符实现赫夫曼编码,PJ对赫
9、夫曼编码生成的代码串进行译码,输出电文字符串。通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。电报通信是传递文字的二进制码形式的字符串。但在信息传递时,总希望总长度能尽可能短,即采用最短码。假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为ZWiLi。若将此对应到二叉树上,Wi为叶结点的权,Li为根结点到叶结点的路径长度。那么,ZWiLi恰好为二叉树上带权路径长度。因此,设计电文总长最短的二进制前缀编码,就是以n种字符出现的频率作权,构造一棵赫夫曼树,此构造过程称为赫夫曼编码。设计实现的功能:(1)赫
10、夫曼树的建立;(2)赫夫曼编码的生成;(3)编码文件的译码。三、概要设计哈夫曼编译码器的主要功能是先建立哈夫曼树,然后利
此文档下载收益归作者所有