哈夫曼树与哈夫曼编码

1.  哈夫曼(HUFFMAN)编码是哈夫曼树的一个应用。

2. 哈夫曼树又称为最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的相对值乘上其到根结点的路径和权值。

3. 图像JPG就是利用了哈夫曼编码。

4. 哈夫曼树是最优二叉树,子树有左右次序之分。

5. 哈夫曼树的形态不是唯一的,但是它的带权路径长度WPL是唯一的。

6. 哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

7. 路径:从一个结点往下可以达到孩子或孙子结点之间的通路,称为路径。通路中分支的数目为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。

8. 结点的权:树结点中有些某种含义的数值,称为结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。

10. 树的带权路径长度为所有叶子结点的带权路径长度之和,记为WPL。

11. 哈夫曼树是WPL最小的二叉树。

12. 有4个结点,权值分别为7,5,2,4,构造此4个结点为叶子结点的哈夫曼树:

WPL=7´1+5´2+2´3+4´3= 35 

WPL=7´1+5´2+2´3+4´3= 35 


13. 满二叉树不一定是哈夫曼树。

14. 给定n个权值{w1,w2,w3..,wn},构造哈夫曼树的过程:

(1)将权值构成森林F。

(2)从F中选取两个根结点权值最小的树作为左右子树构造新的二叉树。置新的二叉树的根结点为左右子树根结点的权值之和。

(3)从森林中删除已加入的子树。

(4)重复以上步骤,直至森林中只剩一棵树。

15. 哈夫曼树中权越大的叶子离根越近。

16. 具有相同带权结点的哈夫曼树不唯一。

17. 包含n个叶子结点的哈夫曼树共有2n-1个结点。

18. 哈夫曼编码可以用于数据文件压缩。

19. 用二叉树表示二进制。以电文中的字符作为叶子结点构造二叉树。将二叉树中结点引向其左孩子分支记0, 引向其右孩子分支记1,每个字符编码即为从根到每个叶子的路径上得到的0,1序列。

如:

 

编码: A:0, C:10,B:110,D:111 



20. 例:如果需传送的电文为 ‘ABACCDA’,即:A, B, C, D 

的频率(即权值)分别为 0.43, 0.14, 0.29, 0.14,试构造哈夫曼编码。

编码: A:0, C:10,  B:110, D:111 。电文 ‘ABACCDA’ 便为 ‘0110010101110’(共 13 位)。


笔试例题:

1. 设一组权值集合 W={15, 3, 14, 2, 6, 9, 16, 17} , 要求根据这些权值构造一棵哈夫曼树,则这棵哈夫曼树的带权路径长度为是多少?

    答案:229, WPL=16x2+17x2+14x3+15x3+9x3+6x4+2x5+3x5=229




参与资料:http://www.cnblogs.com/kubixuesheng/p/4397798.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值