poj1521

哈夫曼树的应用
摘要由CSDN通过智能技术生成

在解决这道题之前需要掌握两个知识点。

1.无前缀编码:

就是任何一个数据的编码不能是其他数据编码的前缀。举个例子,将A编码为0,B编为01 这时候可以看出来A只要往后加1就是B,因此A为B的前缀。而无前缀编码就是以上例子的反义,同样举个例子,A编码为1,B编码为01,这里可以看出A是B的无前缀编码。

无前缀编码的作用,它主要作用不等长的编码中,举个例子,我们将AAAABBAA这段数据编码,如果按固定长度编码,每个字母占8位那么总共就要64位,如果我们将其按频率的大小来分配编码长度,例如将出现最多次数的A编码为1,B编码为01这样整段数据只需要占10位,至于为什么要使用无前缀编码,就是为了保证在读码时不会发生读错,举个例子,我们令A为0,B为01,C为001,当AB两个字母放在一起时,我们就不能区分他是AB两个字母还是单个字母C,因此我们在使用不等长的编码时,需要使用无前缀编码来保证我们能正确的读出数据段。

2.哈夫曼树:

前面我们所讲的不等长并且无前缀的编码其实也可以称作为哈夫曼编码,而哈夫曼树就是以字符的频率为权值来构建一个哈夫

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值