霍夫曼编码是一种被广泛应用而且非常有效的数据压缩技术,它使用一张字符出现频度表,根据它来构造一种将每个字符表示成二进制串的最优方式,一般可压缩掉20%~90%。
|---------+-----+-----+-----+-----+------+------|
| letter | a | b | c | d | e | f |
|---------+-----+-----+-----+-----+------+------|
| count | 45 | 13 | 12 | 16 | 9 | 5 |
| code | 000 | 001 | 010 | 011 | 100 | 101 |
| huffman | 0 | 101 | 100 | 111 | 1101 | 1100 |
|---------+-----+-----+-----+-----+------+------|
如上表所示,假设一篇文章包含45个字母a、13个字母b……,如果用长度相同的编码000、001等去存储这些信息,则需要(45+13+12+16+9+5)×3=300位空间。
但如果换成可变长编码,即编码长度不固定的霍夫曼编码,则仅需要45×1+13×3+12×3+16×3+9×4+5×4=224位空间。
现在给你这些原始数据,请你计算改用霍夫曼编码之后需要多少位空间。