问题
无前缀(prefix-free)编码是无歧义(decodable)编码的真子集,但是一个不那么显然的结论是,无歧义编码在平均码长的意义下并不优于无前缀编码。
命题
任何无歧义的二进制编码方式均可找到一个等价的prefix-free编码,使得平均码长不增加
证明
假设code words为c1,c2,…,cn, 码长为 li=∣ci∣,i=1,2,…,n
引理1:若∑i=1n2−li≤1,则存在码长为 li 的prefix-free编码c~1,c~2,…,c~n
证明:利用二叉树表示可见
引理2:若c1,c2,…,cn是无歧义编码,则码长 li 满足∑i=1n2−li≤1
证明:定义A(s)表示二进制串s在上述编码方式下的合法解码种数,则由无歧义性可知,A(s)∈{0,1}.
定义:
am=Es∈{0,1}mA(s)
表示长度为n的串平均解码种数,其中s在{0,1}m中均匀分布;
对s开头的code word进行讨论可得,
A(s)=s=ciw∑A(w)
两边取期望得,
Es∈{0,1}mA(s)=i=1∑nEwA(w)⋅P(s=ciw)
其中P(s=ciw) 表示s以ci为前缀的概率,显然是2−li,因此得到:
am=i=1∑nam−li⋅2−li
倘若∑i=1n2−li>1,容易得到am以指数增长到无穷,但是由于A(s)∈{0,1},所以am≤1对任意m成立,因此产生矛盾!
利用上面两个引理,命题得证.