哈夫曼(Huffman)编码 ÷哈夫曼编码也是用码树来分配各符号的码字。 费诺编码是从树根开始,把各节点分给某子集,若 子集已是单点集,它就是一片树叶而作为码字。 冬哈夫曼编码是先给每一符号一片树叶,逐步合并 成节点直到树根。 冬哈夫曼编码是一种效率比较高的变长无失真信源 编码方法。 16
16 哈夫曼(Huffman)编码 v哈夫曼编码也是用码树来分配各符号的码字。 v费诺编码是从树根开始,把各节点分给某子集,若 子集已是单点集,它就是一片树叶而作为码字。 v哈夫曼编码是先给每一符号一片树叶,逐步合并 成节点直到树根。 v哈夫曼编码是一种效率比较高的变长无失真信源 编码方法
哈夫曼编码 冬哈夫曼编码的步骤如下: 1.将信源消息符号按其出现的概率大小依次排列 p(x1)≥p(X2)≥.≥p(Xn) 2.取两个概率最小的字母分别配以0和1两码元,并将这两 个概率相加作为一个新字母的概率,与未分配的二进符 号的字母重新排队。 3.对重排后的两个概率最小符号重复步骤2的过程。 4.不断继续上述过程,直到最后两个符号配以0和1为止。 5,从最后一级开始,向前返回得到各个信源符号所对应的 码元序列,即相应的码字。 17
17 v哈夫曼编码的步骤如下: 1.将信源消息符号按其出现的概率大小依次排列 p(x1)≥p(x2)≥…≥ p(xn) 2.取两个概率最小的字母分别配以0和1两码元,并将这两 个概率相加作为一个新字母的概率,与未分配的二进符 号的字母重新排队。 3.对重排后的两个概率最小符号重复步骤2的过程。 4.不断继续上述过程,直到最后两个符号配以0和1为止。 5.从最后一级开始,向前返回得到各个信源符号所对应的 码元序列,即相应的码字。 哈夫曼编码
哈夫曼编码 例设单符号离散无记忆信源如下,要求对信源编二进制哈 夫曼码。编码过程如下表 X 2x3 p(x) 0.200.190.180.170.150.100.01 倍源符 符号概 号x 率px) 编码过程 码字 X1 0.20 0.20 0.26 0.35 0.39 0.610 10 0.19 0.20 0.26 0.35 0.39 X2 0.19 0.18 0.19 0.2016 0.26 11 0.17 0.18 0.191 X3 0.18 0.15100.17 000 XA 0.17 0.111 00D X5 0.15 010 在图中读取码字的时候,要从后向前读,此 X6 0.10 0110 时编出来的码字是可分离的异前置码。 X7 0.01 0111 18
18 0.26 0.20 0.19 0.18 0.17 例 设单符号离散无记忆信源如下,要求对信源编二进制哈 夫曼码。编码过程如下表 ( ) 0.20 0.19 0.18 0.17 0.15 0.10 0.01 1 2 3 4 5 6 7 x x x x x x x p x X 信源符 号xi 符号概 率p(xi) 编码过程 x1 0.20 x2 0.19 x3 0.18 x4 0.17 x5 0.15 x6 0.10 x7 0.01 0 1 0.20 0.19 0.18 0.17 0.15 0.11 0 1 0 1 0.35 0.26 0.20 0.19 0 1 0.39 0.35 0.26 0 1 0.61 0.39 0 1 码字 10 11 000 001 010 0110 0111 在图中读取码字的时候,要从后向前读,此 时编出来的码字是可分离的异前置码。 哈夫曼编码