1. 压缩算法部分
A 核心算法:
Huffman 编码是一种可变长编码方式,是由美国数学家 David Huffman
创立的,是二叉树的一种特殊转化形式。编码的原理是:将使用次数多的代码
转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码
的唯一可解性。 Huffman 算法的最根本的原则是:累计的 (字符的统计数字 *字
符的编码长度)为最小,也就是权值 (字符的统计数字*字符的编码长度)的和最
小。
B 哈夫曼树构造算法:
Huffman 树是二叉树的一种特殊转化形式。以下是构件 Huffman 树的例
子:比如有以下数据, ABFACGCAHGBBAACECDFGFAAEABBB 先进行统计 A(8) B(6)
C(4) D(1) E(2) F(3) G(3) H(1) 括号里面的是统计次数
生成 Huffman 树:每次取最小的那两个节点 (node) 合并成一个节点
(node),并且将累计数值相加作为新的接点的累计数值,最顶层的是根节点
(root) 注:列表中最小节点的是指包括合并了的节点在内的所有节点,已经
合并的节点不在列表中
运算的过程如下:
1:D+H(2)
2:DE+H(4)
3:F+G(6)
4:C+DEH(8)
5:B+FG(12)
6:A+CDEH(16)
7:ACDEH+BFG(28)
那么转化为 Huffman 树就是
Huffman 树 层数
Root
┌┴┐
ACDEH BFG 1
┌┴┐┌┴┐
CDEH A B FG 2
┌┴┐ ┌┴┐
DEH C F G 3
┌┴┐
DH E 4
┌┴┐
D H 5
4