《算法设计与分析》--哈夫曼编码随笔

1、概述:哈弗曼编码是广泛应用于数据文件压缩的十分有效的编码方法该算法使用的是字符在文件中出现的频率来建立一个用0,1表示各个字符的最优表示方式。

 

 

2、前缀码:对于每一个字符都要去规定一个0,1串代表其代码,并且要求每一个字符的代码都不是其他字符代码的前缀

所以对于上面的表中的给定的0,1串001011101我们可以唯一的分解成为0,0,101,1101,所以它的编码码为aabe。

3、表示前缀码:我们可以使用二叉树作为前缀码的数据结构,把树叶看作是给定的字符。并且把从树根到该字符的路径看做每个字符的前缀码。其实表示最有前缀码的二叉树总是一颗完全二叉树,也即树中的任意一个节点都有两个儿子节点。

哈夫曼编码的方式是以字底向上的方式构造表示最优前缀码的二叉树T,下面给出哈夫曼算法的代码段:

public static class Huffman implements Comparable{

Bintree tree;
float weight;//权值

private Huffman(Bintree tt,float ww){
tree = tt;
weight = ww;
}

public int compareTo(Object x){

float xw = ((Huffman)x).weight;
if(weight<xw)return -1;
if(weight==xw)return 0;
return 1;
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值