版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

总得来说,如果给出了一些待编码的项和它们的出现频率,就可以通过哈夫曼编码来给每个项设置一个编码值,这个编码值可以保证是唯一的,且编码后的总长度最短,也就是sum{每个项的长度 * 出现频率}值最小。以下是一个示例,针对字符进行哈夫曼编码:

字符abcdef
频率0.050.320.180.070.250.13

编码后的结果:

字符abcdef
频率10001100100101101

假设一篇文档只包括这几个字符,那么以上面的编码来进行保存,可以保证得到的文档大小一定是最小的,而且能够无歧义地反解析出文档的内容。假设一篇文档只包括这几个字符,那么以上面的编码来进行保存,可以保证得到的文档大小一定是所有编码中最小的,而且能够无歧义地通过唯一前缀来解析出文档的内容。


哈夫曼编码将所有的待编码字符作为叶子节点,将该字符的频率作为叶子节点的权值,以自底向上的方式,通过n哈夫曼编码将所有的待编码字符作为叶子节点,将该字符的频率作为叶子节点的权值,然后自底向上通过n-1次“合并”构造哈夫曼树。

哈夫曼编码的核心思想权值大的离根近

...