[管理学]六树.ppt

[管理学]六树

要理解哈夫曼编码,先要理解 (一)哈夫曼树的定义 (二)如何构造哈夫曼树 (三)如何构造哈夫曼编码 二、哈夫曼编码 (一)哈夫曼树的定义 例1:一个数据文件仅包含字符a, b, c, d, 字符的权值分别为6, 4, 1, 2,可构造如下一棵二叉树。 a 6 c 1 d 2 b 4 结点的带权路径长度:结点的路径长度与该结点权值的乘积。 结点的路径长度:从根结点到该结点的路径上分支的数目。 0 0 0 1 1 1 (一)哈夫曼树的定义 在所有含 n 个叶子结点、并带相同权值的二叉树中,带权路径长度取最小值的二叉树,即最优二叉树,又称哈夫曼树。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。 a 6 c 1 d 2 b 4 0 0 0 1 1 1 WPL =6+4*2+(1+2)*3=23 WPL =1+2*2+(4+6)*3=35 例1:字符a, b, c, d分别带权6, 4, 1, 2, 可构造出如下三棵二叉树(还有许多棵),它们的WPL分别为: WPL =(6+4+1+2)*2=26 (2) c 1 d 2 b 4 a 6 (3) c 1 d 2 b 4 a 6 (1) c 1 d 2 b 4 a 6 (二)构造哈夫曼树 构造哈夫曼树的原理 权值越大的叶子结点离根越近 权值越小的叶子结点离根越远 (二)构造哈夫曼树 a 6 c 1 d 2 b 4 构造哈夫曼树的方法 (1) 初始化 (2) 选择与合并 (3) 删除与加入 (4) 重复2,3直到F中只有一棵树。 (二)构造哈夫曼树 例2:假设有一个包含1 000 000个字符的数据文件仅包含字符a-e,每个字符出现的频度如下表中所示。请构造哈夫曼树。 (二)构造哈夫曼树 字 符 a b c d e 频度(万字) 62 13 12 8 5 (二)构造哈夫曼树 (1)初始化:根据给定的n个权值wl,w2,…,wn构成n棵二叉树的森林F={T1,T2,…,Tn},其中每棵二叉树Ti中都只有一个权值为wi的根结点。 字 符 a b c d e 频度(万字) 62 13 12 8 5 62 a 13 b 12 c 5 e 8 d T1 T2 T3 T4 T5 (二)构造哈夫曼树 (2)选择与合并:从F中选根权最小的两棵二叉树Ti和Tj,分别作为左右子树,根结点r的权为wi+wj 。 13 5 e 8 d 62 a 13 b 12 c 5 e 8 d T1 T2 T3 T4 T5 (二)构造哈夫曼树 62 a 13 b 12 c 5 e 8 d (3)删除与加入:从F中删除Ti和Tj ,新的树加入F。 13 5 e 8 d T1 T2 T3 T4 T5 (二)构造哈夫曼树 13 5 e 8 d T1 T2 T3 T4 62 a 13 b 12 c (3)删除与加入:从F中删除Ti和Tj ,新的树加入F。 (二)构造哈夫曼树 (4) 重复2,3 直到F中只有一棵树。 13 5 e 8 d T1 T2 T3 T4 62 a 13 b 12 c (二)构造哈夫曼树 13 b 12 c 25 13 5 e 8 d 62 a (4) 重复2,3 直到F中只有一棵树。 T1 T2 T3 (二)构造哈夫曼树 (4)重复2,3 直到F中只有一棵树。 13 5 e 8 d T1 T2 T3 T4 62 a 13 b 12 c (二)构造哈夫曼树 (4) 重复2,3 直到F中只有一棵树。 13 5 e 8 d T1 62 a 13 b 12 c 25 T3 T2 (二)构造哈夫曼树 13 5 e 8 d 13 b 12 c 25 38 (4) 重复2,3 直到F中只有一棵树。 T2 T1 62 a (二)构造哈夫曼树 62 a 13 5 e 8 d 13 b 12 c 25 38 T1 (4) 重复2,3 直到F中只有一棵树。 100 (二)构造哈夫曼树 (4)重复2,3 直到F中只有一棵树。 62 a 13 5 e 8 d 13 b 12 c 25 38 T1 100 13 b 12 c 25 13 5 e 8 d 62 a T1 T2 T3 (二)构造哈夫曼树 (4) 重复2,3 直到F中只有一棵树。 13 b 12 c 25 13 5 e 8 d 62 a T1 T2 38 62 a 13 5 e 8 d 13 b 12 c 25 38 T1 100 (二)构造哈夫曼树 (4)重复2,3 直到F中只有一棵树。 13 b 12 c 25 13 5 e 8 d 6

文档评论(0)

1亿VIP精品文档

相关文档