Skip to content

6 Lossless Source Coding

字数 5,470阅读时间 11 分钟Ayaskt
2026/07/07 15:56:38 CST
Chinatown Blues - Karma Wears White Ties / GUMI / ODDEEO 封面图
No matter what you do, I'll stay. This isn't up to you, today.
无论你在何处我都在,今天这不取决于你。
It hasn't always been, this way. I've got a lot to prove, today.
并非总是如此,今天我将证明。

Chinatown Blues

Karma Wears White Ties / GUMI / ODDEEO

章节目录

6-1 信源编码基础 Fundamentals of Source Coding

6-1-1 通信系统里的编码位置 Coding in Communication System

一个通信系统可以被如下框图描述:

通信系统中的信源编码位置

在这条链路里,三类编码的目标不同:

编码 Coding主要目标 Main Goal熵的变化
信源编码 Source Coding减少冗余,用更低速率传输同样信息压缩冗余,接近信源熵
信道编码 Channel Coding增加冗余,提高抗噪声能力主动加入冗余
加密编码 Cryptogram提高传输安全性加密增加不确定性,解密恢复可读信息

信源编码讨论的是信息被送入信道之前的压缩问题。


6-1-2 信源编码与无失真要求 Source Coding and Lossless Requirement

信源编码 Source Coding

信源编码 Source Coding 指使用更适合传输或存储的码序列 Code Sequence 表示信源产生的原始消息。

这一步由 编码器 Encoder 完成。

设离散信源产生长度为 的随机序列:

信源编码把它映射成长度为 的码序列:

其中 是编码系统可识别的码元集合。二进制编码时 ,码元就是

无失真编码 Lossless Coding

无失真编码 Lossless Coding 要求信源产生的每个消息都能映射到唯一的码字,且每个码字也只能被译码成唯一的原消息。

从熵的角度看,无失真对应:

给定码字 后,原消息 没有剩余疑义。


6-1-3 唯一可译码 Unique Decodability

唯一可译码 Unique Decodability

若任意一串信源符号

经过编码后得到的码串,与任意另一串信源符号的编码结果都不同,则该编码是唯一可译码 Unique Decodable 的。

唯一可译码比“每个单独符号码字不同”更强。码字拼接后仍不能产生歧义。

例如:

则:

译码器看到 时无法判断原消息是 还是 ,因此该码不是唯一可译码。

6-2 定长信源编码 Fixed-Length Source Coding

6-2-1 消息、码元与信息率 Message, Code Element and Rate

消息 Message 是信源产生的抽象符号,例如字母、标点、天气状态或设备状态。

码元 Code Element 是通信系统可以识别的编码基本单位,例如二进制码中的

对长度为 的信源序列,若编码后得到 元码元,则平均到每个信源符号的信息率为:

时:

定长码和变长码的区别在于 的处理方式:

类型 Type码字长度 Codeword Length目标
定长码 Fixed-Length Code每个码字长度固定找到能低错误译码的最小固定长度
变长码 Variable-Length Code不同消息可用不同长度最小化平均码长

6-2-2 定长编码定理 Fixed-Length Coding Theorem

是平稳无记忆信源,单符号熵为 。把 个信源符号一起编码为 元码元,其信息率为:

定长无失真信源编码定理 Fixed-Length Lossless Source Coding Theorem

该定理又称香农第一定理 Shannon's First Theorem

对任意

则当 足够大时,译码错误概率可以低于

则当 足够大时,译码错误无法避免。

这个定理给出的是极限结论。只要允许把足够长的符号序列作为整体编码,定长编码的效率可以任意接近

实际中不可能真的取 。序列越长,编码器需要维护的典型序列集合越大,复杂度和延迟都会上升。

理想定长编码器的思路是:

  1. 给定 ,估计需要一起编码的序列长度
  2. 列出所有长度为 的可能符号序列;
  3. 按发送概率从大到小排序;
  4. 只给高概率集合 分配码字,使

其中常用的长度估计式为:

PROBLEM IT6-E1

设平稳无记忆信源 的概率分布为:

用二进制定长码分别编码单符号消息和二符号消息,讨论编码效率与错误概率。

SOLUTION

信源熵为:

若对每个单符号使用二进制定长码,需要:

编码效率为:

此时四个单符号都能被编码,译码错误率为

若把两个符号作为一个消息,则共有 个二符号消息。若只使用 位二进制码,最多只能表示 个消息,无法覆盖全部消息。

二符号信源熵为:

位定长码的信息率低于二符号块的熵。若只编码概率最大的 个二符号消息,其总概率为:

因此未被覆盖的概率约为:

这里效率高于 的表象来自“丢掉了低概率消息”,不是无失真编码真正突破了熵下界。

6-3 变长码与前缀码 Variable-Length and Prefix Codes

6-3-1 变长编码定理 Variable-Length Coding Theorem

变长码的基本原则是:

  • 高频消息用短码字;
  • 低频消息用长码字;
  • 最终降低平均码长。

设离散无记忆信源 的熵为 。用 元变长码对单符号编码时,存在无失真编码,使平均码长 满足:

若每次把长度为 的信源序列一起编码,则:

对应的平均信息率为:

因此:

增大时,变长编码也能逼近熵下界。区别在于,它通常不需要像定长典型序列编码那样取非常大的


6-3-2 编码效率与同步问题 Coding Efficiency and Synchronisation

变长码编码效率定义为:

由上一节的不等式可得下界:

对二进制码,若某信源熵为:

要求 ,则只需:

代入可得:

因此取:

变长码的代价是译码复杂度更高。译码器需要判断一个码字何时结束,这涉及同步译码 Synchronous Decoding译码延迟 Decoding Delay


6-3-3 前缀码与 Kraft 不等式 Prefix Code and Kraft Inequality

前缀码 Prefix Code

若任意一个码字都不是另一个码字的前缀,则该编码称为前缀码 Prefix Code

前缀码也称为即时码 Instantaneous Code,因为译码器读到一个完整码字后可以立刻译码,不需要等待后续码元。

前缀码一定是唯一可译码,但唯一可译码不一定是前缀码。

前缀码可以用树图表示:

前缀码树图

定长码对应满树,变长码对应非满树。每个叶节点是一个码字,内部节点不能作为码字,否则会成为其他码字的前缀。

Kraft 不等式 Kraft Inequality

存在一个 元前缀码,其码字长度分别为 的必要充分条件为:

若对每个消息 取码长:

则:

于是:

因此这种码长分配满足 Kraft 不等式,可以构造前缀码。

6-4 经典无失真编码 Classic Lossless Coding Schemes

6-4-1 Shannon 编码 Shannon Code

Shannon 编码 Shannon Code 直接按照消息概率确定码长,再用累积概率生成码字。

二进制 Shannon 编码步骤:

  1. 按概率从大到小排列信源符号;
  2. 计算第 个符号之前的累积概率
  1. 取码长
  1. 写成二进制小数,取小数点后 位作为 的码字。

PROBLEM IT6-E2

对如下单符号信源进行二进制 Shannon 编码:

SOLUTION

符号Shannon 码字

平均码长为:

信源熵为:

编码效率为:


6-4-2 Fano 编码 Fano Code

Fano 编码 Fano Code 通过反复分组构造码字。

元 Fano 编码步骤:

  1. 按概率从大到小排列信源符号;
  2. 将符号分成 组,使各组概率和尽量接近;
  3. 给每组分配一个码元;
  4. 对每组继续递归分组,直到每组只剩一个符号。

对 6-4-1 中的同一信源,一种二进制 Fano 编码为:

符号Fano 码字

平均码长为:

编码效率为:

Fano 编码的分组通常不唯一。若某次分组概率和比较接近,编码效果会很好;若分组不理想,平均码长会被拉高。


6-4-3 Huffman 编码 Huffman Code

Huffman 编码 Huffman Code 每次合并最低概率的符号,最终从合并树回溯得到码字。

二进制 Huffman 编码步骤:

  1. 按概率从大到小排列信源符号;
  2. 取概率最低的两个符号,分别赋码元
  3. 合并这两个符号,合并后概率为二者概率之和;
  4. 对新的缩减信源重复上述过程,直到只剩两个符号;
  5. 沿合并路径回溯,得到原符号的码字。

对 6-4-1 中的同一信源,一种二进制 Huffman 编码为:

符号Huffman 码字

平均码长同样为:

编码效率为:

Huffman 编码不一定唯一。若缩减信源中出现相同概率,合并后的新符号可以排在相同概率符号之前或之后。不同排法可能得到相同平均码长,但码长方差不同。

元 Huffman 编码,最后一轮缩减信源应有 个符号。若原信源符号数不满足完整 叉树条件:

则需要加入若干零概率虚符号,或在第一轮合并时少合并几个真实符号。


6-4-4 三种编码方法对比 Comparison

三种编码方法都利用信源统计特性:概率大的符号分配短码字,概率小的符号分配长码字。

方法是否唯一主要特点适用情况
Shannon Code通常唯一由累积概率直接生成,步骤固定计算简单,但效率不一定高
Fano Code不唯一递归分组,依赖分组质量分组后概率和接近时效果较好
Huffman Code不唯一每次合并最低概率符号平均码长通常最优,工程上最常用
概率码长累积概率码字排序近似等概率分组递归最小概率合并构造树回溯码字

除特别注明外,本站原创内容采用 CC BY-NC-SA 4.0 协议授权;引用的歌词、课程材料、图片等第三方内容版权归原权利人所有。
Built with VitePress.