![](https://csdnimg.cn/release/download_crawler_static/86960710/bg3.jpg)
课程设计说明书(论文)用纸
1 问题描述
哈夫曼在上世纪五十年代初就提出这种编码时,根据字符出现的概率来构造
平均长度最短的编码。它是一种变长的编码。哈夫曼编码应用广泛,如JPEG 中
就应用了哈夫曼编码。在编码中,若各码字长度严格按照码字所对应符号出现概
率的大小的逆序排列,则编码的平均长度是最小的。构造好哈夫曼树后,就可根
据哈夫曼树进行编码。然而怎样构造一棵哈夫曼树呢?最具有一般规律的构造方
法就是哈夫曼算法。字符根据其出现的概率作为权值构造一棵哈夫曼树后,经哈
夫曼编码得到的对应的码值。只要使用同一棵哈夫曼树,就可把编码还原成原来
那组字符。显然哈夫曼编码是前缀编码,即任一个字符的编码都不是另一个字符
的编码的前缀,否则,编码就不能进行翻译。
利用哈夫曼算法的编码和译码功能,重复地显示并处理以下项目,即构造哈
夫曼树,编码及译码几项功能,直到选择退出为止。本次设计就是为这样的一个
哈夫曼的编/译码器。
哈夫曼编码所以能产生较短的码文,是因为哈夫曼树具有最小加权路径长度
的二叉树。如果叶结点的权值恰好是某个需编码的文本中各字符出现的次数,则
编码后文本的长度就是该哈夫曼树的加权路径长度。译码过程为自做向右逐一扫
描码文,并从哈夫曼树的根开始,将扫到的二进制位串中的相邻位与哈夫曼树上
标的 0,1 相匹配,以确定一条从根到叶子结点的路径,一旦到达叶子,则译出
了一个字符。再回到树根,从二进位串的下一位开始继续译码。软件运行环境及
开发工具是 Visual C++6.0。
第 1 页 共 10 页
评论0
最新资源