信源编码与哈夫曼
哈夫曼树又叫最优二叉树,我先简单说一下按照哈夫曼编码的过程,灰常简单。
首先哈夫曼树的构造是自下而上的,这其实是它相对与香农编码等次优编码的优势的源头。而且由于是通过概率匹配的方式,也使哈夫曼编码的平均码长最优。
构造树(直接顺带编码):
1.首先,我们有a1,a2,a3,a4,a5...an个带有权值的节点,如果用于信源编码,此时的权值就可以是事件的发生概率,或者说是信源符号的概率。设为,p(1),p(2),p(3)....p(n),他们的和为1.
2.我们把这n个节点都看作是一个森林,那下一步就是找出其中最小的两个森林,给这两个森林分配二元符中的0和1,把他们用节点链接起来,构成一个新的森林,新森林的概率就是他们的和,此时我们有n-1个森林,且他们的概率和是1。
3,我们把这n-1个森林看作是新的信源,重复第2步,直到只剩下两个森林。
4.分配0和1。此时得到一个码树,每个信源符号都是叶子节点,从树根到信源符号节点经过的树枝就是码字。
------------------------------------------------
几个特征说明:
1.为什么哈夫曼码是即时码。
树图构造的码,一定是即时码。
通俗来说,由于我们从树根读起,即便是一开始经过的树枝是相同的,最后也总会在一个信源符号得出完整码字的时候发生分支,这使一个信源符号的完整码字不可能是另外一个码字的前缀,所以哈夫曼码是即时码。
2.平均码长
我们构造码树的时候,先挑出概率最小的信源符号作为节点,这使得概率越小的信源符号的码长越长,而概率越大的信源符号码长越小,从而使平均码长最小而最优。
3.不唯一
二元0和1分配的时候我们没有给予规则,他们是任意的,所以得到的码树可能不同,得到的具体编码也就可能有差异了。
----------------------------------------------
另外,
1.按照最优二叉树的编码是信源编码的二元编码,m进制哈夫曼编码就是编码符号集元素个数的改变。
2.在概率平均分布且信源符号是2的幂数个的时候,码树是满二叉树,编码将得到等长码。