文章标题

来源:互联网 发布:牛股选股器源码 编辑:程序博客网 时间:2024/05/21 09:30

Huffman Encoding(哈夫曼编码)

我们在软工导论课上学习了Huffman编码,根据百度百科的定义,哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。相比较与RUN-LENGTH ENCODING 和 KEYWORD ENCODING,平均下来哈夫曼编码使用的字符更少。

这里写图片描述

从图中可以看到,哈夫曼编码用概率大小选择相应的编码,出现越频繁的字符往往用更短的编码进行存储,这样使得相同的字符由哈夫曼编码存储的体积更小。而重要的一点是,在计算机的信息处理中,哈夫曼编码是一种无损耗的编码。若能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。

哈夫曼编码涉及到二叉树的原理,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。而二叉树是树的一种,树在计算机中起到了降低复杂度简化计算的作用,它为哈夫曼编码的诞生提供了工具。

原创粉丝点击