哈夫曼编码信息论大作业模板.docx

哈夫曼编码

哈夫曼编码

1.前言:

Haffman算法是个简单而高效的贪心算法,主要用来创建最优二叉树.可以在通讯时,对于

出现频率较高的字符,用较少的比特数便可以进行通讯.从而节省通讯线路的资源消耗。该算法在各类数据结构,算法,组合数学,离散数学,图论等主题的书籍中都有所涉及。故本文不再赘述,本文致力于用Haffman算法实现压缩与解压缩,采用的语言为C语言,编译环境VC++6.0.

下面给出[1]中实现的Haffman树的结构及创建算法,有两点说明:

这里的Haffman树采用的是基于数组的带左右儿子结点及父结点下标作为存储结点的二叉树形式,这种空间上的消耗带来了算法实现上的便捷。

由于对于最后生成的Haffman树,其所有叶子结点均为从一个内部树扩充出去的,所以,当外部叶子结点数为m个时,内部结点数为m-1.整个Haffman树的需要的结点数为2m-1.

2压缩过程的实现:

压缩过程的流程是清晰而简单的:

1创建Haffman树à2打开需压缩文件à3将需压缩文件中的每个ascii码对应的haffman编码按bit单位输出à4文件压缩结束。

其中,步骤1和步骤3是压缩过程的关键。

步骤1:这里所要做工作是得到Haffman数中各叶子结点字符出现的频率并进行创建.

统计字符出现的频率可以有很

文档评论(0)

1亿VIP精品文档

相关文档