# 通信路

通信路不断地传输信息 0,10,1,然而天底下几乎没有不损失信息的通信路,这样的损失我们一般称为杂音
实际上,杂音小的通信路成本会很高,并且是高于一次函数的提高,这意味着如果想要降低一半的杂音往往需要增加超过两倍的成本
这就需要我们尝试使用更多的高杂音通信路来传输信息,并尽量提高通信效率


假设一个通信路中,

  • 顺利接受信号 00 的概率为 p0p_0
  • 顺利接受信号 11 的概率为 p1p_1

我们可以考虑这样一个简单的方法:将一个信号重复发送三次,并定义

  • 对方收到两个或者三个 00 就认为发送的是 00
  • 对方收到两个或者三个 11 就认为发送的是 11

这样一来,考虑发送 00 的情况

  • 三个都是 00 的概率为 p03p_0^3
  • 两个是 00 一个是 11 的情况对称地有三种,总概率为 3p02(1p0)3p_0^2 (1-p_0)

那么,整体来说成功的概率为 p03+3p02(1p0)p_0^3 + 3p_0^2 (1-p_0),同样的道理,发送 11 的成功概率为 p13+3p12(1p1)p_1^3 + 3p_1^2 (1-p_1)
即使原先我们的通信路成功发送 00 的概率 p0p_0 只有 0.90.9,通过上述方法我们可以将成功发送 00 的概率提升到大概 0.9720.972
并且显然可以验证的是,增加重复次数就可以再进一步提升成功概率

然而,重复太多次会导致信息的无用部分过多,一个很长的信息串中包含较少真正信息
真实信息与实际发送的信息长度比值为通信效率
例如重复发送 nn 次的通信效率为 \dfrac{1}


除了上述的重复,我们还可以想一些别的方法来提升通信效率
将信息进行一些处理并发送的过程称为编码,而对方收到信息进行处理的过程称为解码
例如,一种可行的编码方式是将信息文每三个重复一次

001001001,101101101,001 \mapsto 001001,\quad 101 \mapsto 101101,\quad \cdots

这样一来传输 00 时的成功概率为

p0=p04+4p054p06p_0' = p_0^4 + 4p_0^5 - 4p_0^6

一般地,给定文字全体的集合 QQ,总共具有 qq 个元素。再定义 V:=QnV := Q^n,即 VV 中的元素是 QQ 中元素的长度为 nn 的串
称子集 CVC \subseteq V 为一个长度为 nn 的编码,定义编码效率

eff(C):=logqCn\mathrm{eff}(C) := \frac{\log_q |C|}{n}

我们想要考察,当接收到某个信息时(VV 中的一个元素),它是由哪个编码元素(CC 中的一个元素)发送过来的。也就是映射 f:CVf: C \to V

令 Hamming 距离 dHd_H,一般来说该映射应该满足

dH(a,f(a))=minbCdH(a,b)d_H(\boldsymbol a, f(\boldsymbol a)) = \min_{\boldsymbol b \in C} d_H(\boldsymbol a, \boldsymbol b)

d(C):=mina,bC,abdH(a,b)d(C) := \min_{\boldsymbol a, \boldsymbol b \in C, \boldsymbol a \neq \boldsymbol b} d_H(\boldsymbol a, \boldsymbol b)

为编码 CC 的最小距离

若一个 nn 位编码中,至多有 tt 位发生错误,那么该编码的最小距离至少为 2t+12t + 1,反过来,如果一个编码的最小距离至少为 2t+12t + 1,那么它就可以纠正 tt 位错误

# Shannon 定理

给出 tt 个事件 e1,e2,,ete_1, e_2, \cdots, e_t,每个事件发生的概率为 pip_i,称这些事件的
熵 (Entropy)「不確実度」

H(p1,p2,,pt):=i=1tpilog2piH(p_1, p_2, \cdots, p_t) := -\sum_{i=1}^t p_i \log_2 p_i

熵(实际上此处也可以说是信息熵)反映了事件发生的平均不确定度,或者说平均信息量
例如,抛一枚均匀的硬币,事件 e1e_1e2e_2 分别为正面朝上和反面朝上,发生的概率均为 0.50.5,此时熵为 H(0.5,0.5)=1H(0.5, 0.5) = 1,也就是说每次抛硬币我们平均获得 11 bit 的信息
如果抛一枚不均匀的硬币,事件 e1e_1e2e_2 分别为正面朝上和反面朝上,发生的概率分别为 0.90.90.10.1,此时熵为 H(0.9,0.1)0.469H(0.9, 0.1) \approx 0.469,也就是说每次抛硬币我们平均获得 0.4690.469 bit 的信息
可以看出,事件发生的概率越均匀,熵越大,平均获得的信息量也越大
反过来,事件发生的概率越不均匀,熵越小,平均获得的信息量也越小


现在假设这样一个信道:我们有 rr 种符号 a1,a2,,ara_1, a_2, \cdots, a_r,接收端会收到 ss 种符号 b1,b2,,bsb_1, b_2, \cdots, b_s
发送 aia_i 的概率为 xix_i,并且在发送 aia_i 的情况下,接收 bjb_j 的概率为 p_

如果接收端知道 xix_i 的值,那么发送信息前的熵为

E=i=1rxilog2xiE = -\sum_{i=1}^r x_i \log_2 x_i

根据 Bayes 定理,当接收端收到信号 bjb_j 时,对方发送了 aia_i 的概率为

P(aibj)=xipijk=1rxkpkjP(a_i \mid b_j) = \frac{x_i p_{ij}}{\sum_{k=1}^r x_k p_{kj}}

因此,在接收到信号 bjb_j 的情况下,发送信息的熵可以代入 xi=P(aibj)x_i = P(a_i \mid b_j) 来计算,即

EAfter=i=1rxipijk=1rxkpkjlog2xipijk=1rxkpkjE_{\text{After}} = -\sum_{i=1}^r \frac{x_i p_{ij}}{\sum_{k=1}^r x_k p_{kj}} \log_2 \frac{x_i p_{ij}}{\sum_{k=1}^r x_k p_{kj}}

这样一来,接收到一个信号时,熵的期望值为

EAfter=j=1s((i=1rxipijk=1rxkpkjlog2xipijk=1rxkpkj)Conditional entropy given bjk=1rxkpkjProbability of receiving bj)=j=1si=1rxipij(log2xi+log2pijlog2(i=1rxipij))=j=1s(i=1rxipij)log2(i=1rxipij)i=1rxilog2xij=1si=1rxipijlog2pij\begin{aligned} E_{\text{After}} &= \sum_{j=1}^s \left( \underbrace{(-\sum_{i=1}^r \frac{x_i p_{ij}}{\sum_{k=1}^r x_k p_{kj}} \log_2 \frac{x_i p_{ij}}{\sum_{k=1}^r x_k p_{kj}})}_{\text{Conditional entropy given } b_j} \cdot \underbrace{\sum_{k=1}^r x_k p_{kj}}_{\text{Probability of receiving } b_j} \right) \\ &= -\sum_{j=1}^s \sum_{i=1}^r x_i p_{ij} \left(\log_2 x_i + \log_2 p_{ij} - \log_2 \left( \sum_{i=1}^r x_i p_{ij} \right)\right) \\ &= \sum_{j=1}^s \left( \sum_{i=1}^r x_i p_{ij} \right) \log_2 \left( \sum_{i=1}^r x_i p_{ij} \right) - \sum_{i=1}^r x_i \log_2 x_i - \sum_{j=1}^s \sum_{i=1}^r x_i p_{ij} \log_2 p_{ij} \end{aligned}

定义信息量为收到信息时,基于熵的减少量,那么在这个背景下,每个信号所包含的信息量期望值为

EBeforeEAfter=j=1s(i=1rxipij)log2(i=1rxipij)+j=1si=1rxipijlog2pijE_{\text{Before}} - E_{\text{After}} = -\sum_{j=1}^s \left( \sum_{i=1}^r x_i p_{ij} \right) \log_2 \left( \sum_{i=1}^r x_i p_{ij} \right) + \sum_{j=1}^s \sum_{i=1}^r x_i p_{ij} \log_2 p_{ij}

对于一个通信路来说,通过修改 xix_i 的值可以最大化信息量。
一个信道上,信息量的期待值的最大值被称为该信道的容量