120 likes | 257 Views
9.5.3 哈夫曼树. 树的带权路径长度 ( Weighted Path Length, WPL) 所有 叶子 结点的带权路径长度之和为 树的带权路径长度 ,记为: wpl= 其中: n 为叶子结点数目, w i 为第 i 个叶子结点的权值, l i 为第 i 个叶子结点的路径长度。. a. b. c. d. 7. 5. 2. 4. c. 2. 7. a. 4. d. 5. b. a. b. 2. 4. c. d. 7. 5. 举例 :
E N D
9.5.3 哈夫曼树 树的带权路径长度(Weighted Path Length, WPL) • 所有叶子结点的带权路径长度之和为树的带权路径长度,记为: wpl= • 其中: • n为叶子结点数目, • wi为第i 个叶子结点的权值, • li为第i 个叶子结点的路径长度。
a b c d 7 5 2 4 c 2 7 a 4 d 5 b a b 2 4 c d 7 5 举例 : 有4个结点,权值分别为7,5,2,4,构造有4个叶子结点的二叉树 WPL=(7+5+2+4)*2=36 WPL=(7+5)*3+2*1+4*2=46 WPL=7*1+5*2+(2+4)*3=35 带权路径长度达到最小
7 a 5 b 2 4 c d 二、构造哈夫曼树 1.哈夫曼树的定义 设有n个带权的叶子结点,想构造一棵二叉树,使WPL(带权路径长度)为最小,该树称为最优二叉树,也称为哈夫曼树(Huffman tree)。 • 特点: • 权值大的叶子离根最近; • 只有0度和2度结点 • 若叶子有n个,则: 总结点数=2n-1
2.哈夫曼树的构造 假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1,w2,…,wn,则Huffman树的构造算法: (1) 将w1,w2,…,wn看成是有n 棵(仅有根结点的)二叉树的森林; (2) 在森林中选出两个根的权值最小的和次小的二叉树,作为新二叉树的左、右子树,且新二叉树的根权值为其左、右子树根权值之和;约定:权值小者为左子树,权值大者为右子树 (3)从森林中删除选取的两棵二叉树,并将新二叉树加入森林; (4)重复(2)、(3)步,直到森林中只剩一棵二叉树为止,该树即为所求的哈夫曼树。
举例:已知叶子结点{A,B,C,D}的权值序列为{1,5,7,3},则构造Huffman树过程如下:举例:已知叶子结点{A,B,C,D}的权值序列为{1,5,7,3},则构造Huffman树过程如下: 5 7 1 5 7 3 4 4 4 初始的森林 1 1 1 3 3 3 1与3合并 16 7 9 9 7 5 5 4与5合并 7与9合并 WPL =7*1+5*2+(1+3)*3 =29 Huffman树构建练习: 权值序列为 {9,8,4,6,7}
三、哈夫曼编码——哈夫曼树的应用 在远程通讯中,要将待传字符转换成由二进制组成的字符串: 设要传送的字符为: ABACCDA 若编码为: A—00 B—01 C—10 D---11 00010010101100 若将编码设计为长度不等的二进制编码,即让待传字符串中出现次数较多的字符采用尽可能短的编码,则转换的二进制字符串便可能减少。
设要传送的字符为:ABACCDA 若编码为: A—0 B—00 C—1 D---01 ABACCDA 但: 0000 AAAA ABA BB 重码 000011010 关键:要设计长度不等的编码,则必须使任一字符的编码都不是另一个字符的编码的前缀。这种编码称作前缀编码。
1 0 A 1 0 C 0 1 B D 设要传送的字符为: ABACCDA 若编码为 :A—0 B—110 C—10 D---111 0110010101110 规定: 左分支用“0”表示 右分支用“1”表示 采用Huffman树设计二进制前缀编码
1 0 A 1 0 C 0 1 B D 译码过程:分解接收字符串:遇“0”向左,遇“1”向右;一旦到达叶子结点,则译出一个字符,反复由根出发,直到译码完成。 0110010101110 ABACCDA
14 8 6 4 3 3 4 A T B 2 2 C S 例:已知某系统在通讯时,只出现C,A,S,T,B五种字符,它们出现的频率依次为2,4,2,3,3,试设计Huffman编码。 • 先构建Huffman 树 字符{C, A, S, T, B}对应的权值为:{2,4,2,3,3} 构造的Huffman树
14 1 0 8 6 1 0 1 0 4 3 3 4 0 1 A T B 2 2 C S • 由构建的Huffman树得出HUffman编码: • 约定:左分支用“0”表示;右分支用“1”表示 Huffman编码为: T—00 B —01 A —10 C —110 S —111 出现频率越大的字符,其Huffman编码越短。