哈夫曼树及其应用教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
授课时间11.9 第17 次课
学院审核意见
该教案教学目的明确,教学内容先进,课时设计合理,重点那点把握准确,符合信
息学院教学要求,同意实施。
学院负责人签字刘方爱
年月日
哈夫曼树的构造过程中应注意的问题
2007-07-18
哈夫曼树(Huffman树)是带权路径长度最小的二叉树。根据哈夫曼树的定义,一棵二叉树要使其带权路径长度最小,必须使权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。哈夫曼依据这一特点提出了哈夫曼算法,其基本思想是:
⑴初始化:由给定的n个权值{w1,w2,…,wn}构造n棵只有一个根结点的二叉树,从而得到一个二叉树集合F={T1,T2,…,Tn};
⑵选取与合并:在F中选取根结点的权值最小的两棵二叉树分别作为左、右子树构造一棵新的二叉树,这棵新二叉树的根结点的权值为其左、右子树根结点权值之和;
⑶删除与加入:在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树加入到集合F中;
⑷重复⑵、⑶两步,当集合F中只剩下一棵二叉树时,这棵二叉树便是哈夫曼树。
通过上述Huffman树的构造过程,我们可以得到如下要点:
⑴当有n个权值(相应的Huffman树中有n个叶子),共需合并n-1次;
⑵每合并一次产生一个分支结点,经过n-1次合并后得到的Huffman树中共有2n-1个结点,其中有n-1个分支结点;
⑶在Huffman树中只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为1的结点;
⑷算法要求选取根结点权值最小的两棵二叉树作为左右子树构造一棵新的二叉树,但并没有要求哪一棵作左子树,哪一棵作右子树,所以左右子树的顺序是任意的;
⑸对同一组权值可以构造出不同的huffman树,但是他们的带权路径长度相同。
在建立Huffman树的过程中有以下三种常见的错误:
⑴在合并中不是选取根结点权值最小的两棵二叉树(包括已合并的和未合并的),而是选取未合并的根结点权值最小的一棵二叉树与已经合并的二叉树合并,如图5-10所示。
⑵每次都是在未合并的二叉树中选取根结点的权值最小的两棵子树,如图5-11所示。
⑶有时没有严格按照哈夫曼算法也构造出带权路径长度与哈夫曼树相同的二叉树,但那只是巧合,没有规律性,而没有规律性的解法不利于用计算机进行处理。
哈夫曼树就是最优二叉查找树,对于带权的二叉树的查找,权值最大的离根结点最近,按照这一思路,带权结点所构成的所有二叉树中带权路径长度WPL最小的二叉树,将其应用于计算机通信中数据编码技术可大大缩短电文代码的长度。
数据编码技术在计算机数字通信中一直占据着重要的地位。而在数字通信过程中,往往存在问题:信息传递的速度和所传递信息的可靠性这对不可调和的矛盾,所传递的数据编码的长度和数据译码容易产生的二义性等。以上问题,使得数据编码技术的优劣在很大程度上影响着通信的质量。