注:更新于2015/08/02,增加了博文打赏,见文章结束后的二维码。如果您觉得此博文帮助了您,愿意打赏,请您阅读博文一个艰难的决定 ,了解为何添加博文打赏。
在阅读Gallager的数字通信原理过程中,遇到了信息论上十分熟悉的克拉夫特不等式,不等式内容大致如下:
其中,Gallager给了我们一种非常好的理解方式,把码长对应到一个具体实数,具体说来就是先把码字表示为二进制数系统中以2为底的展开式。例如:码字011首先表示成0.011再以2为底展开得1/4+1/8=3/8。
有了上面的铺垫,其实我们就可以抓住定理的前提 无前缀 那么对于码字011和011110、01111110、011111110之间肯定是不满足前面那个条件的,意思是假如我们选择了011作为一个符号的码字,那么011110、0111110、011111110.......等都不能再被选取作为码字了。
那么我们就会想怎么用直观的方式来理解呢?其实,很简单!对于一个特定的码字,一旦我们选取了它,那么它其实就覆盖了一个区间,这个区间就是以这个码字作为前缀的所有其他码字的集合。定义区间如下:
区间的长度为2-L次方。
证明:正因为所有码字都是无前缀码,那么每次选定一个码字就排除了一个区间长度,例如我们选择了码字1,那么表示为0.1,以2为底展开为1/2,长度为1/2即区间[0.5,1),同时意味着着在区间[0.5,1)这些码字我们是不能选择的,因为那些对应过来都是以0.1为前缀的,例如0.11为1/2+1/4=3/4在区间内。
接着我们选择01作为码字,它的区间是[0.25,0.5),再选择00,它的区间是[0,0.25)都满足条件。
总结:无前缀码的本质是在[0,1]这个区间上,不断的划分区间,区间大小由码字长度决定,这些区间唯一要满足的条件就是不相交,那么不管你有多少码字,这些区间长度和的最大值其实就是单位长度1.
我的支付宝
转载自原文链接, 如需删除请联系管理员。
原文链接:无前缀码的Kraft不等式 一种理解,转载请注明来源!