资源描述:
《基于哈弗曼的编码实现-学年论》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、学年论文题目:基于哈弗曼的编码实现学生:学号:院(系):专业:指导教师:年月日基于哈弗曼的编码实现摘要:Huffman编码是一种应用广泛的可变长编码方式,是二叉树的一种特殊转化形式。利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。哈弗曼树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个对应的字符的编码,这就是哈夫曼编码。哈弗曼编码的原理是:将使用次数多的代码转换成长度较短的编码,而使用次数少的可以使
2、用较长的编码,并且保持编码的唯一可解性。数据压缩的过程称为编码,解压缩的过程称为译码。哈夫曼编码是一种根据字母的使用频率而设计的变长码,能提高信息的传输效率,至今仍有广泛的应用。关键词:Huffman编码,数据压缩,编码,译码,二进制码BasedontheHuffman'scodedABSTRACT:Huffmancodingisawidelyusedwayofvariablelengthcoding,isakindofspecialtransformationformofbinarytree.UseHuffm
3、antreeseekstocommunicatethebinarycodingasHuffmanencoding.Harvardmaninthetreefromtheroottoeachleafhasapath,thepathbranchesagreed:"0"referstothebranchoftheleftsubtreesaid,pointingtotherightsubtreeofbranchsaid"1"code,takeeachpathof"0"or"1"onthesequenceasandthec
4、orrespondingcharactercoding,thatistheHuffmanencoding.Harvard,codingprincipleis:willusemorecodeconversiongrowshorterencoding,andusefewercanuselongerencoding,andkeeponlysolvabilityofcoding.Processknownasencodingdatacompression,decompressionprocessknownasdecodi
5、ng.Huffmanencodingisadesignedaccordingtotheuseoflettersfrequencyvariablelengthcode,canimprovetheefficiencyofinformationtransmission,therearestillwidelyused.KEYWORDS:Huffmancoding,datacompression,coding,decoding,binarycode11哈弗曼原理通常我们把数据压缩的过程称为编码,解压缩的过程称为译码。本文
6、根据Huffman编码原理,在详细设计中,根据权值和最小的根本原则,输入要编码的字符集及其它的权值,再根据节点Node类,建立哈夫曼树,并进行编码,最后输出哈夫曼编码。在完成Huffman编码后,利用其构建的哈夫曼编码树来进行译码。与编码过程不同,译码过程中,将用户输入的二进制代码串依次与字符集中的每个字符的编码进行比较,译出一个字符后,循环比较下一个字符的编码,直到所有二进制码全部译出为止。哈夫曼编码方法的具体过程是:首先把信源的各个输出符号序列按概率递降的顺序排列起来,求其中概率最小的两个序列的概率之和,并
7、把这个概率之和看做是一个符号序列的概率,再与其他序列依概率递降顺序排列(参与求概率之和的这两个序列不再出现在新的排列之中)。然后,对参与概率求和的两个符号序列分别赋予二进制数字0和1。继续这样的操作,直到剩下一个以1为概率的符号序列。最后,按照与编码过程相反的顺序读出各个符号序列所对应的二进制数字组,就可分别得到各该符号序列的码字。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层
8、数)。树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明哈夫曼树的WPL是最小的。2哈弗曼编码步骤一、对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集。F={T1,T2,T3,...,T