数据压缩编码方法解析
1. Kraft - MacMillan不等式
Kraft - MacMillan不等式与明确的可变长度编码相关。它包含两部分:
- 第一部分表明,对于一个明确的可变长度编码,若有n个长度为$L_i$的编码,则$\sum_{i = 1}^{n} 2^{-L_i} \leq 1$。
- 第二部分则反之,给定一组满足上述等式的正整数$(L_1, L_2, \cdots, L_n)$,存在一个明确的可变长度编码,使得$L_i$为其各个编码的长度。
1.1 与熵的关系
编码长度$L_i$可表示为$L_i = -\log_2 P_i + E_i$,其中$E_i$是$L_i$比熵多出的长度。由此可得$2^{-L_i} = 2^{(\log_2 P_i - E_i)} = \frac{P_i}{2^{E_i}}$。当所有额外长度相同时($E_i = E$),Kraft不等式表明$1 \geq \sum_{i = 1}^{n} \frac{P_i}{2^{E}} = \frac{\sum_{i = 1}^{n} P_i}{2^{E}} = \frac{1}{2^{E}}$,即$2^{E} \geq 1$,所以$E \geq 0$。这意味着明确的编码具有非负的额外长度,其长度大于或等于由熵确定的长度。
1.2 示例
- 等长二进制编码 :对于n个等长二进制编码,每个编码的长度$L_i = \log_2 n$,Kraft - MacMillan和为$\sum_{i = 1}^{n} 2^{-L_i} = \sum_{i = 1}^{n} 2^{-\log_2 n}
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



