↓ 跳过正文
  1. 文章/

信息论4 信源编码的基本概念与方法

信息论 学习笔记

目录
信息论 - 这篇文章属于一个选集。
§ 4: 本文

🌟 欢迎来到第4讲!—— 信源编码的基本概念与方法
#

本讲基于《数字通信原理》(冯穗力等编著,电子工业出版社2023年版)第四章第5节内容,聚焦信源编码的核心目标(提高传输效率),系统讲解离散无记忆信源(DMS)的定义、等长编码、不等长编码(含异字头码)及工程中常用的霍夫曼(Huffman)编码,揭示"去冗余、优码长"的编码逻辑。

📝 本讲主要内容
#

  1. 信源编码的核心目的与思路(去冗余、最大化符号信息量、不等长码设计);
  2. 离散无记忆信源(DMS)的定义与编码基础(符号独立性、单符号/分组编码、唯一可译码);
  3. 离散无记忆信源的等长编码(单符号/扩展编码、典型序列理论、可达速率);
  4. 离散无记忆信源的不等长编码(异字头码、Kraft不等式、不等长编码定理、联合编码);
  5. 霍夫曼编码的原理、步骤与优化(最优码设计、虚拟符号、码长均匀性)。

🔍 相关缩写
#

缩写 英文全称 中文含义
DMS Discrete Memoryless Source 离散无记忆信源
L Size of Source Symbol Set 信源符号集大小
D Size of Code Symbol Set 码元集大小
J Length of Joint Coding Sequence 联合编码的符号分组长度
$\bar{n}$ Average Code Length 平均码长(单位:码元/信源符号)
$\eta$ Coding Efficiency 编码效率
$\sigma\_C^2$ Variance of Code Length 码长方差

📚 4.5 信源编码的基本概念与方法(对应PPT第4.5节)
#

信源编码的本质是去除信源输出中的冗余信息,使编码后的符号序列"信息量密度最大化",最终提升传输效率(单位时间/带宽传输更多有效信息)。

4.5.1 离散无记忆信源(DMS)(对应PPT第4.5.1小节)
#

DMS是信源编码的基础模型,其核心特征是"符号间无统计关联",简化了编码设计;有记忆信源可通过去冗余处理转化为DMS。

1. DMS的基本定义
#

  • 输出序列:$\dots X\_{-2}X\_{-1}X\_0X\_1X\_2\dots X\_n\dots$,其中每个符号$X\_i \in S = \\{S\_1, S\_2, \dots, S\_L\\}$($L$为信源符号数);
  • 核心特性:任意符号$X\_i$与其他符号统计独立($P(X\_iX\_j) = P(X\_i)P(X\_j)$,$i \neq j$);
  • 有记忆信源转化:通过"去冗余处理"(如差分编码、预测编码)消除符号间关联,可等效为DMS。

2. DMS的编码与译码基础
#

信源编码需将"信源符号集"映射到"码元集",核心是保证译码唯一性,主要分为两类编码方式:

编码类型 定义 数学描述
单符号编码 对每个信源符号$S\_i$单独分配码字 $S\_i \to \overline{Y}\_{n\_i}$($\overline{Y}\_{n\_i}$为长度$n\_i$的码序列,$Y\_k \in C = \\{C\_1,\dots,C\_D\\}$)
分组编码(联合编码) 将$J$个信源符号分为一组$\overline{X}\_J = (X\_1,X\_2,\dots,X\_J)$,对每组分配码字 $\overline{X}\_J \to \overline{Y}\_{n\_J} = C(\overline{X}\_J)$;译码:$\overline{X}\_J' = C^{-1}(\overline{Y}\_{n\_J})$
关键概念:唯一可译码
#
  • 定义(定义4.5.1):若不同信源符号/符号组对应不同码字,则为唯一可译码(避免译码歧义);
  • 唯一性必要条件:码元集大小为$D$、分组长度为$J$时,码字数需覆盖信源符号组数:
    $\boxed{D^{n\_J} \geq L^J}$
    ($n\_J$为每组码字长度,$L^J$为$J$个信源符号的组合数)。

3. 编码速率与编码效率
#

  • 编码速率$R$(定义4.5.2):单位信源符号携带的最大信息量(码元潜在信息量):
    • 等长编码(码字长度均为$n\_J$):$R = \frac{1}{J} \cdot n\_J \log\_2 D$
    • 不等长编码(平均码长$\overline{n}\_J$):$R = \frac{1}{J} \cdot \overline{n}\_J \log\_2 D$
      (单位:bits/信源符号,$\log\_2 D$为单个码元的最大信息量);
  • 编码效率$\eta\_C$(定义4.5.3):信源实际熵(平均信息量)与编码速率的比值,反映编码有效性:
    $\boxed{\eta\_C = \frac{H(S)}{R}}$
    ($H(S)$为信源熵,$H(S) \leq \log\_2 L$;无信息丢失需$R \geq H(S)$,故$\eta\_C \leq 1$)。

4.5.2 离散无记忆信源的等长编码(对应PPT第4.5.2小节)
#

等长编码的所有信源符号/符号组均采用相同长度的码字,设计简单但需通过"扩展编码"(增大$J$)提升效率。

1. 单符号等长编码
#

  • 场景:对单个信源符号$S\_i$编码($J=1$);
  • 唯一性条件:码字长度$n\_1$需满足:
    $n\_1 \geq \frac{\log\_2 L}{\log\_2 D}$(若$\frac{\log\_2 L}{\log\_2 D}$非整数,取上整:$n\_1 = \lfloor \frac{\log\_2 L}{\log\_2 D} \rfloor + 1$);
  • 编码效率:$\eta\_C = \frac{H(S)}{n\_1 \log\_2 D}$(因$n\_1$固定,若$H(S) < \log\_2 L$,效率较低)。

2. 扩展编码(联合等长编码)
#

  • 核心思路:将$J$个信源符号联合编码($J>1$),利用符号间独立性降低冗余;
  • 唯一性条件:每组码字长度$n\_J$需满足:
    $n\_J \geq \frac{J \log\_2 L}{\log\_2 D}$(非整数时取上整);
  • 平均每符号码元数:$\overline{n}\_1 = \frac{n\_J}{J}$($J$越大,$\overline{n}\_1$越接近$\frac{H(S)}{\log\_2 D}$,效率越高);
例4.5.1:扩展编码效率对比
#

对两个信源采用二进制($D=2$)$J=4$联合编码:

信源 符号概率分布 信源熵$H(S)$ $n\_J$(码字长度) $\overline{n}\_1$(每符号码元数) 编码效率$\eta\_C$
信源1 8个符号等概
($P(S\_i)=1/8$)
$3$ bits $12$
($2^{12} \geq 8^4$)
$3$ $3/(3 \times 1) = 1$(理想)
信源2 $P(S\_1' \sim S\_4')=1/16$,$P(S\_5' \sim S\_6')=1/8$,$P(S\_7' \sim S\_8')=1/4$ $11/4=2.75$ bits $12$
(同信源1)
$3$ $2.75/(3 \times 1) \approx 0.917$

结论:信源熵越接近$\log\_2 L$(符号越等概),编码效率越高;$J$增大可缩小效率差距。

3. 典型序列与有损等长编码
#

等长编码效率低的根源是"对所有符号序列编码",而$J$足够大时,大部分序列为低概率非典型序列,可通过"只对高概率典型序列编码"实现有损压缩。

(1)典型序列的定义(定义4.5.4)
#

对$J$长信源序列$\overline{X}\_J$,若其"平均自信息量"满足:
$\boxed{H(S) - \varepsilon \leq \frac{I(\overline{X}\_J)}{J} \leq H(S) + \varepsilon}$($\varepsilon>0$为小正数),
则$\overline{X}\_J$属于**$\varepsilon$-典型序列集**$T\_S(J,\varepsilon)$,否则为非典型序列集$\overline{T\_S(J,\varepsilon)}$。

(2)信源划分定理(定理4.5.1)
#

核心结论:当$J$足够大时,典型序列集的概率趋近于1:
$\lim\_{J \to \infty} P(\overline{X}\_J \in T\_S(J,\varepsilon)) = 1$
(非典型序列概率$\leq \varepsilon$,可忽略)。

(3)典型序列的关键特性
#
  1. 概率近似等概:$2^{-J[H(S)+\varepsilon]} \leq P(\overline{X}\_J) \leq 2^{-J[H(S)-\varepsilon]}$($J$越大,越接近$2^{-J H(S)}$);
  2. 数量近似:$|T\_S(J,\varepsilon)| \approx 2^{J H(S)}$(远小于总序列数$L^J$,占比$\alpha \to 0$);

【典型序列集与非典型序列集示意图(标注"高概率小集合"与"低概率大集合")】 file-20251013014031180.png

4. 可达速率(定义4.5.5)
#

  • 定义:若存在$J\_0$,当$J>J\_0$时,编码译码误差概率$P\_E \leq \delta$($\delta>0$任意小),则编码速率$R$为可达速率;
  • 可达速率定理(定理4.5.2):
    • 若$R \geq H(S)$,则$R$可达(可实现低误差编码);
    • 若$R < H(S)$,则$R$不可达(误差无法消除);
  • 工程局限:$J$需极大(如例中$J \approx 10^6$)才能使$\eta\_C \to 1$,硬件实现困难,故等长编码较少单独使用。

4.5.3 离散无记忆信源的不等长编码(对应PPT第4.5.3小节)
#

不等长编码对高概率信源符号分配短码字、低概率符号分配长码字,无需极大$J$即可实现高效率,是工程主流方案。

1. 不等长编码的核心概念
#

概念 定义 示例
逗点码(定义4.5.6) 用特定符号标识码字起点(如"0"为分隔符:0, 01, 011) 译码简单,但浪费码元
异字头码(定义4.5.7) 任一码字不是其他码字的前缀(无分隔符也可即时译码) 0, 10, 110(无歧义)
平均码长(定义4.5.9) 所有信源符号的码长加权平均:$\boxed{\overline{n} = \sum\_{i=1}^L n\_i P(S\_i)}$ $P(S\_1)=3/4,n\_1=1;P(S\_2)=1/4,n\_2=2$,则$\overline{n}=1.25$

2. 异字头码的设计:编码树
#

异字头码可通过"编码树"直观设计,确保无前缀歧义:

  • 编码树结构:根节点→分支($D$个,对应$D$个码元)→端节点(对应信源符号,无后续分支);
  • 关键原则:端节点(码字)不位于其他端节点的路径上(避免前缀);

【三进制编码树示意图(标注"根节点"“分支"“端节点"“码字”)】 file-20251013014031244.png

异字头码的编码步骤
#
  1. 将信源符号按概率分组,使每组概率尽可能等概(匹配$D$个分支);
  2. 对每组分配1位码元,再对每组内符号递归分组,直至每个分组仅含1个符号;
例:三进制($D=3$)异字头编码
#

信源符号:$S\_1(1/3), S\_2 \sim S\_7(1/9), S\_8 \sim S\_{15}(1/27)$,编码结果如下:

信源符号 概率 第一次分组(码元) 第二次分组(码元) 第三次分组(码元) 码字
$S\_1$ 1/3 0(单独分组) - - 0
$S\_2 \sim S\_4$ 1/9 each 1(3个符号,概率和1/3) 0,1,2 - 10,11,12
$S\_5 \sim S\_7$ 1/9 each 2(前3个符号,概率和1/3) 0,1,2 - 20,21,22
$S\_8 \sim S\_{15}$ 1/27 each 2(后8个符号,概率和8/27,补1个0概率符号) 2(概率和9/27=1/3) 0~2 220~222

3. 异字头码的存在条件:Kraft不等式
#

  • 定理4.5.3(充要条件):$D$元异字头码存在,当且仅当码长$n\_1,n\_2,\dots,n\_L$满足:
    $\boxed{\sum\_{i=1}^L D^{-n\_i} \leq 1}$;
  • 推论(定理4.5.4):任一唯一可译码必满足Kraft不等式(异字头码是唯一可译码的"最小表示”)。

4. 不等长编码定理(定理4.5.5)
#

核心结论:对$D$元编码,唯一可译码的平均码长满足:

  1. 下界:$\boxed{\overline{n} \geq \frac{H(S)}{\log\_2 D}}$(无法突破信源熵的极限);
  2. 上界:$\boxed{\overline{n} < \frac{H(S)}{\log\_2 D} + 1}$(平均码长最多比下界大1个码元,效率高);

5. 联合不等长编码
#

  • 思路:将$J$个信源符号联合编码(类似扩展编码),进一步降低$\overline{n}\_1$;
  • 单符号平均码长:$\overline{n}\_1 = \frac{\overline{n}(\overline{X}\_J)}{J}$($\overline{n}(\overline{X}\_J)$为$J$长序列的平均码长);
  • 效率提升:$J$增大时,$\overline{n}\_1 \to \frac{H(S)}{\log\_2 D}$,$\eta\_C \to 1$($J$无需极大,工程易实现);
例4.5.7:联合不等长编码效率对比
#

信源:$S\_1(3/4), S\_2(1/4)$,二进制编码($D=2$):

编码方式 信源熵$H(S)$ 平均码长$\overline{n}$ 编码速率$R$ 编码效率$\eta\_C$
单符号编码 0.811 bits $\overline{n}=1$(0→S1,1→S2) $1 \times 1=1$ bits $0.811/1=0.811$
双符号联合编码 0.811 bits $\overline{n}(\overline{X}\_2)=27/16 \approx 1.6875$(S1S1→0,S1S2→10,S2S1→110,S2S2→111) $\frac{27}{32} \times 1 \approx 0.8438$ bits $0.811/0.8438 \approx 0.961$

结论:联合不等长编码可显著提升效率,且$J$无需过大(如$J=2$即可从0.811提升至0.961)。

4.5.4 霍夫曼(Huffman)编码(对应PPT第4.5.4小节)
#

霍夫曼编码是最优不等长编码(平均码长最短),严格遵循"高概率短码、低概率长码”,工程实现简单。

1. 霍夫曼编码的基本思想
#

  • 核心:通过"反复合并$D$个最小概率符号",构建编码树,确保概率越大的符号路径越短(码长越短);
  • 优势:平均码长$\overline{n}$最接近下界$\frac{H(S)}{\log\_2 D}$,是唯一可译码中的最优方案。

2. 霍夫曼编码的实现步骤($D$进制)
#

标准步骤(符号数$L$满足$L = a(D-1) + 1$)
#
  1. 排序:将$L$个信源符号按概率从大到小排序;
  2. 合并与编码:取$D$个最小概率符号,分别赋予码元$1,2,\dots,D$,合并为1个新符号(概率为$D$个符号概率和);
  3. 递归:对新符号集(数量减少$D-1$)重复步骤1-2,直至剩余$D$个符号;
  4. 生成码字:从最后一次编码反向追溯,拼接码元得到每个信源符号的码字;
特殊处理($L \neq a(D-1) + 1$)
#
  • 问题:若不满足上述条件,最后一次合并时符号数不足$D$,会导致码长方差增大;
  • 解决方案:添加$m = D - [L - a(D-1)]$个概率为0的虚拟符号,使总符号数$L+m = a(D-1) + 1$,再按标准步骤编码(虚拟符号的码字丢弃);

3. 霍夫曼编码示例(三进制$D=3$)
#

信源符号:$S\_1(0.24), S\_2(0.20), S\_3(0.18), S\_4(0.16), S\_5(0.14), S\_6(0.08)$($L=6$,需添加$m=1$个虚拟符号$S\_7(0)$):

步骤 符号集(概率排序) 合并操作($D=3$个最小概率) 码元分配 新符号概率
初始 $S1(0.24), S2(0.20), S3(0.18), S4(0.16), S5(0.14), S6(0.08), S7(0)$ 合并$S6(0.08), S7(0), S5(0.14)$ 2,1,0 $0.08+0+0.14=0.22$
第一次递归 $S1(0.24), 新1(0.22), S2(0.20), S3(0.18), S4(0.16)$ 合并$S4(0.16), S3(0.18), S2(0.20)$ 2,1,0 $0.16+0.18+0.20=0.54$
第二次递归 $新2(0.54), S1(0.24), 新1(0.22)$ 合并3个符号(剩余$D=3$个) 2,1,0 -
生成码字 - 反向追溯码元 - 最终码字:$S1→1, S2→20, S3→21, S4→22, S5→00, S6→02$

4. 码长均匀性:方差优化
#

  • 码长方差(定义4.5.13):$\boxed{\sigma\_C^2 = \sum\_{i=1}^L P(S\_i)(n\_i - \overline{n})^2}$(反映码长波动程度);
  • 优化原则:合并符号时,将"概率和"置于相同概率的最高位置,减少重复编码次数,降低方差;
例:码长方差对比(二进制编码,信源$S1(0.4), S2(0.2), S3(0.2), S4(0.1), S5(0.1)$)
#
编码方式 平均码长$\overline{n}$ 码长方差$\sigma\_C^2$ 关键操作
方式1(概率和置低位) 2.2 1.36 合并后符号排在相同概率的下方
方式2(概率和置高位) 2.2 0.16 合并后符号排在相同概率的上方

结论:相同平均码长下,方差越小,传输越稳定(适配FIFO缓存,避免码长波动导致的溢出/空等)。

5. 多符号联合霍夫曼编码
#

  • 思路:将$J$个信源符号视为一个"超级符号",对超级符号进行霍夫曼编码;
  • 优势:进一步降低平均码长,提升编码效率($J$增大,$\overline{n}\_1 \to \frac{H(S)}{\log\_2 D}$);
  • 局限:$J$过大会导致超级符号数$L^J$激增,存储与计算复杂度升高(工程中$J$通常取2~8)。

📌 本讲小结
#

  1. 信源编码目标:去冗余、最大化信息密度,核心指标是编码效率$\eta\_C$;
  2. DMS模型:符号独立,是编码设计的基础;有记忆信源需先去冗余转化为DMS;
  3. 等长编码:结构简单,但需极大$J$才能高效(工程难实现),典型序列理论为其提供有损压缩思路;
  4. 不等长编码:高概率短码、低概率长码,效率高;异字头码是主流形式,满足Kraft不等式即可实现;
  5. 霍夫曼编码:最优不等长编码,平均码长最短;通过合并最小概率符号生成,需注意虚拟符号与方差优化;
编码方式 优点 缺点 适用场景
等长编码 译码简单、无码长波动 效率低、需极大$J$ 简单低速场景(如控制信号)
不等长编码(异字头) 效率高、$J$小 译码需缓冲 中高速数据传输
霍夫曼编码 最优平均码长、效率最高 方差需优化、复杂度略高 主流数据压缩(如JPEG、ZIP)

核心公式汇总:

  • 唯一可译码条件:$D^{n\_J} \geq L^J$
  • 编码效率:$\eta\_C = \frac{H(S)}{R}$
  • Kraft不等式:$\sum\_{i=1}^L D^{-n\_i} \leq 1$
  • 不等长编码定理:$\frac{H(S)}{\log\_2 D} \leq \overline{n} < \frac{H(S)}{\log\_2 D} + 1$
  • 码长方差:$\sigma\_C^2 = \sum\_{i=1}^L P(S\_i)(n\_i - \overline{n})^2$
信息论 - 这篇文章属于一个选集。
§ 4: 本文

相关文章