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

un

访客
1 / ?
返回课程列表

信源→信道:两阶段编码

Hamming的第10章从Shannon的通信模型开始,该模型适用于每个移动信息的系统:电话、广播、硬盘、DNA复制、计算机内存。

Shannon Communication Model

两阶段结构

阶段1:信源编码(压缩)。将源消息转换为紧凑表示。目标:移除信源本身的冗余。摩斯码做到这一点:常见的字母用短码,稀有的字母用长码。

阶段2:信道编码(错误保护)。添加适应信道噪声特性的受控冗余。嘈杂的电话线需要比光纤电缆更多的冗余。两个阶段相互解耦:为各自的任务独立优化。

两个阶段之间的公共接口——标准化的比特流——意味着任何信源都可以与任何信道配对。这种模块性是Shannon的关键架构洞察。

存储即通信。 Hamming指出,通过空间发送消息(传输)和通过时间发送消息(存储)使用相同的模型。备份驱动器是时间上的一个嘈杂信道。

噪声的作用

Shannon的模型做出了一个激进的假设:噪声是不可避免的。每个信道、每个存储介质、每个交换电路都会引入某种错误概率。问题不是"我们如何消除噪声?"而是"我们如何在噪声存在的情况下恢复原始消息?"

这与古典物理学形成对比,后者中噪声作为事后才考虑的(测不准原理)。Shannon将噪声视为基础条件——所有理论都以它为基础。

现在,第10章关注无噪声情况:无错误的信源编码。信道编码问题(错误纠正)稍后再说。

Hamming说通过空间发送和通过时间发送使用相同的通信模型。举一个具体例子说明两种情况,并解释在时间存储例子中什么起"信道"的作用。

何时可以唯一解码?

要使可变长编码有用,接收器必须唯一地解码比特流。Hamming用一个4符号的编码来说明这个失败,然后引入修复:无前缀码。

无前缀条件

一个编码是无前缀的(或即时的),如果没有码字是任何其他码字的前缀。给定接收到的比特流,一旦到达解码树中的叶子,你就知道符号已经结束——不需要向前看。

例子:{s1, s2, s3, s4}的无前缀码:s1 = 0, s2 = 10, s3 = 110, s4 = 111。

验证:0不是10、110或111的前缀。10不是110或111的前缀(10后跟更多位给出100...或101...,都不以110或111开头)。该编码合格。

解码过程:遵循树、对每个传入比特分支、在到达叶子时发出符号、返回根。

Kraft不等式

对于任何具有码字长度 l_1, l_2, ..., l_n 的无前缀二进制编码:

Σ 2^(−l_i) ≤ 1

等号成立当编码是完全的(叶子铺砌整个二进制树,没有间隙)。这是必要条件:没有无前缀码可以违反它。相反,对于任何满足Kraft不等式的长度集合,存在无前缀码。

应用Kraft不等式

给定码字长度,验证Kraft:Σ 2^(−l_i) ≤ 1。

对于{s1=0, s2=10, s3=110, s4=111}:长度为1, 2, 3, 3。

Σ = 2^(−1) + 2^(−2) + 2^(−3) + 2^(−3) = 1/2 + 1/4 + 1/8 + 1/8 = 1。 ✓

5符号信源提出了编码:s1=0, s2=10, s3=110, s4=1110, s5=1111。验证或反驳无前缀可解码性,然后计算Kraft和。Kraft = 1告诉你这个编码什么?

Shannon熵

可变长编码的平均码字长:L = Σ p_i · l_i,其中p_i是符号s_i的概率,l_i是其码字长度。

L最多能有多短?Shannon的答案:不低于信源熵。

Shannon熵: H = −Σ p_i · log₂(p_i) (单位:比特/符号)

熵衡量每个符号的平均信息。高熵意味着符号大致同样可能(最大不可预测性)。低熵意味着某些符号占主导地位(高可预测性,更可压缩)。

无噪声编码定理

对于任何无前缀码,H(信源) ≤ L ≤ H(信源) + 1。

没有码可以打败熵。Huffman编码(下一章)实现上界:L < H + 1。对于在n个符号上的块编码,界变得更紧:H ≤ L/n < H + 1/n。

熵也是理论压缩极限:你不能压缩信源低于每符号H比特而不失去信息。

计算熵

例子:4个符号,概率为p = [1/2, 1/4, 1/8, 1/8]。

H = −(1/2)·log₂(1/2) − (1/4)·log₂(1/4) − (1/8)·log₂(1/8) − (1/8)·log₂(1/8)

= (1/2)·1 + (1/4)·2 + (1/8)·3 + (1/8)·3

= 0.5 + 0.5 + 0.375 + 0.375 = 1.75 比特/符号

而Huffman编码{0, 10, 110, 111}恰好实现L = 1.75 = H。

计算3符号信源的H:p(A) = 1/2, p(B) = 1/3, p(C) = 1/6。显示所有项。然后提出一个无前缀码并验证L ≥ H。

为什么熵是下界

无噪声编码定理的下界不仅仅是一个公式——它反映了关于信息的深层东西:你不能压缩已经最大不可预测的东西。

当所有符号同样可能时(均匀分布),熵H = log₂(n)对于n个符号。长度为log₂(n)比特的块编码恰好实现H。没有码可以做得更好。

当一个符号占主导(比如p(A) = 0.99, p(B) = 0.01)时,H很小——接近0。可变长码可以为A分配一个非常短的码,非常有效地编码流。

实际的建议:只有当符号概率差异很大时,才存在大的压缩增益。如果信源已经"均匀"(看起来随机),Huffman编码没有任何收益。

两个信源:信源X有p = [0.5, 0.5](两个等概率符号)。信源Y有p = [0.99, 0.01](一个占主导符号)。计算每个的H。这告诉你每个信源的压缩潜力什么?