English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

访客
1 / ?
返回课程列表

码作为树

前缀无关码映射到二进制树:根表示解码的开始,左分支表示比特0,右分支表示比特1,叶子节点表示完整的码字。

几何约束:每个叶子终止一条从根到叶子的路径。没有叶子可以有后代节点(如果有,它的码字将是后代码字的前缀,违反前缀无关性)。

Prefix-Free Decoding Tree

这给了Kraft不等式一个几何解释:

深度d处的每个叶子'占据'总树容量的2^(−d)的分数。 深度D处的完全二进制树的总容量是1。前缀无关码在各种深度使用叶子;Kraft和测量总占用。

Kraft和 = 1:完整码(每条路径都以叶子结尾——完美打包)。

Kraft和 < 1:不完整码(某些树容量未使用——可以添加更多符号)。

Kraft和 > 1:对于前缀无关码不可能(某些路径将不得不共享叶子)。

更深的叶子 = 更长的码 = 更少的容量

深度1处的叶子使用树容量的一半(2^(−1) = 0.5)。

深度3处的叶子使用八分之一(2^(−3) = 0.125)。

在树中高处放置一个短码字会阻止所有其后代被使用——您用一个短码换取许多潜在的较长码。

构建前缀无关树

考虑5个符号,长度l = {1, 2, 3, 3, 3}。Kraft和 = 2^(−1) + 2^(−2) + 3·2^(−3) = 0.5 + 0.25 + 0.375 = 1.125 > 1。

这超过了1:这些长度与前缀无关码不兼容。至少有一个长度必须增加。

修复:将l_1从1改为2。新长度{2, 2, 3, 3, 3}:Kraft = 2·2^(−2) + 3·2^(−3) = 0.5 + 0.375 = 0.875 < 1。有效,但不完整。

修复:将l_1从2改为2,添加l_2 = 3以使用剩余容量。Kraft = 0.875;剩余 = 0.125 = 2^(−3):有空间添加一个深度3的叶子。

一个6符号信源提出码长l = {1, 2, 3, 3, 4, 4}。计算Kraft和。如果它超过1,找到最小调整(改变一个长度的最少量)以将Kraft ≤ 1,同时保持所有长度 ≥ 1。显示您的工作。

为什么熵限制码长

Kraft不等式约束码的结构(长度必须适应树)。Shannon的熵约束码的效率(平均长度不能超过理论下界)。

最优码长。 对于概率为p_i的符号,理想的码长是log₂(1/p_i)。稀有符号应该有长码;频繁符号应该有短码。这反映了Kraft等式:当l_i = log₂(1/p_i)时,2^(−l_i) = p_i。

但log₂(1/p_i)很少是整数。向上舍入到⌈log₂(1/p_i)⌉给出Huffman长度,其满足H ≤ L < H + 1。

几何读法。 在深度l_i处将每个符号绘制为二进制树上的一点。Kraft和测量总叶子覆盖。熵测量加权平均深度,按概率加权。Shannon定理:概率加权的平均深度≥概率加权的信息含量。

熵界验证

已做的示例:符号{A, B, C, D}的p = [1/2, 1/4, 1/8, 1/8]。

最优长度:l_A = log₂(2) = 1,l_B = log₂(4) = 2,l_C = log₂(8) = 3,l_D = log₂(8) = 3。

这些都是整数——完美匹配。Huffman码:A=0,B=10,C=110,D=111。

L = 0.5·1 + 0.25·2 + 0.125·3 + 0.125·3 = 0.5 + 0.5 + 0.375 + 0.375 = 1.75。

H = 0.5·1 + 0.25·2 + 0.125·3 + 0.125·3 = 1.75。L = H恰好:最优码。

对于p = [1/2, 1/4, 1/8, 1/8],验证Kraft不等式,计算H,为给定的码{A=0, B=10, C=110, D=111}计算L,并确认L = H。然后用一句话解释为什么这些长度在2^(−l_i) = p_i对于每个符号的意义上是'理想的'。

一个完整的已做示例

完整的流程:给定概率,计算熵,验证码满足界限。

信源:p(A)=0.5,p(B)=0.25,p(C)=0.125,p(D)=0.125。

H = 1.75比特(上面计算的)。

一个朴素的块码:4个符号→每个2比特→L = 2.0。相对于熵的开销:2.0 − 1.75 = 0.25比特/符号 = 12.5%浪费。

与定长码相比,变长码节省12.5%。对于大消息,这是可观的。

英文的熵率。 Shannon估计书面英文的熵约为每字符1.0到1.3比特,尽管使用了5比特ASCII码。这个4:1的比率反映了自然语言中的巨大冗余——常见字母聚集,单词重复,语法约束序列。

压缩无法超越熵

压缩比:H /(块码长度)。对于我们的示例:1.75/2.0 = 0.875——87.5%的效率。

您可以进一步压缩吗?只有通过使用上下文:如果您一起编码符号对或三元组,由于统计依赖性,联合熵H(X,Y)可能小于2·H(X)。这是无噪声编码定理向n-grams的扩展。

信源Z有8个等概率符号(i=1..8时p_i = 1/8)。计算H(Z)。每个符号的最优码长是多少?这对比我们的[1/2, 1/4, 1/8, 1/8]信源,您可以压缩均匀信源多少说了什么?