哈夫曼树等长编码怎么求 怎样求哈夫曼树的平均编码长?怎样求哈夫曼树?
怎样求哈夫曼树的平均编码长?怎样求哈夫曼树?假设用于通信2113的消息由字符集{a、B、C、D、e、F、G、H}中的5261个字母组成,消息中出现这八个字母的概率为4102,即{0.07、0.19、0
怎样求哈夫曼树的平均编码长?怎样求哈夫曼树?
假设用于通信2113的消息由字符集{a、B、C、D、e、F、G、H}中的5261个字母组成,消息中出现这八个字母的概率为4102,即{0.07、0.19、0.02、0.06、0.32、0.03、0.21、0.10}。哈夫曼码1653可以从上面的编码表中得到:A:1001 B:01 C:10111 D:1010 e:11 F:10110 G:00 h:1000,三位二进制等长编码的平均长度为3,哈夫曼树编码的平均长度为4*0.07 2*0.19 5*0.02 4*0.06 2*0.32 5*0.03 2*0.21 4*0.10=2.61 2.61/3=0.87%,平均码长为等长码的87%,平均压缩比为13%。由于定长码已经使用了相同的位数,这个条件保证了任何字符的码都不会成为其他码的前缀,所以这种情况只发生在变长码中,我们必须用一个条件来制作常规长度码。这个条件是,如果我们想成为压缩码,可变长度的代码必须是前缀码。所谓前缀码,是指任何一个字符的编码不能是另一个字符编码的前缀。
哈夫曼编码和二进制编码优缺点比较?
(1)哈夫曼编码形成的码字不是唯一的,但编码效率是唯一的。当给两个最小概率符号赋值时,可以指定大符号为“1”,小符号为“0”,反之亦然。如果两个符号的出现概率相等,那么不管哪个符号在前面,它都是可以排列的,因此哈夫曼构造的码字是不唯一的。对于同一信源,无论序列如何排列,其平均码长都不会改变,因此编码效率是唯一的。(2) 只有当信源中每个符号的概率非常不均匀时,哈夫曼编码的效果才明显。(3) 哈夫曼编码必须精确计算原始文件中每个符号的频率。没有这些精确的统计数据,就无法达到预期的压缩效果。霍夫曼编码通常要经过两次运算,第一次用于统计,第二次用于编码,因此编码速度相对较慢。另外,电路的实现比较复杂,各种长度编码的解码过程也比较复杂,所以解压过程比较慢。(4) 哈夫曼编码只能用整数来表示单个符号,不能用小数来表示,这大大限制了压缩效果。(5) 哈夫曼的所有片段都放在一起了。如果其中一个被更改,它的数据将被更改得无法识别