哈夫曼树(贪心)
1、基本概念
- 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法。其压缩率通常在20%~90%之间。哈夫曼编码算法用字符在文件中出现的频率来建立一个用0,1串表示各字符最优表示方式。
- 给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总代码长。
- 计算文件总码长
2、前缀码
- 对每一个字符规定一个0,1串作为其代码,并要求任一字符的代码都不是其他字符代码的前缀。这种编码称为前缀码。
- 前缀码与二叉树存在一一对应关系。
- 使平均码长达到最小的前缀码编码方案称为给定编码字符集C的最优前缀码。
- 哈夫曼提出一种构造最优前缀码的贪心方法,哈夫曼编码。
- 哈夫曼算法时间复杂度:O(nlogn)
3、算法正确定分析需要证明
- 最优前缀码问题具有贪心选择性质
- 最优前缀码问题具有最优子结构性质
- 算法每一步按照贪心选择构造二叉树,最终可得到前缀码问题的一个最优解(即生成一颗哈夫曼编码树)
4、三进制哈夫曼编码
三进制哈夫曼编码也是可以的,三个节点合并。