2.2 汉明码
首先,我们有两类平凡的完全线性码:
\((1)\) \(q\) 元线性码 \([n, n, 1]\), 即 \(C=\mathrm{F}_q^n\) 。易知这是完全码。
\((2)\) 对于 \(n=2 l+1, q=2, C\) 由码长为 \(2 l+1\) 的零向量和全 \(1\) 向量 \((1,1, \cdots, 1)\) \(\in \mathrm{F}_2^{2 l+1}\) 两个码字组成的二元线性码, 参数为 \([n, k, d]=[2 l+1,1,2 l+1]\) 。由于
可知它们为完全码。
在 \(2.1\) 节知道,给了线性码的一个生成矩阵 \(\boldsymbol{G}\) 或者一个校验矩阵 \(\boldsymbol{H}\), 可以决定这个线性码的参数 \([n, k]\). 因为 \(n\) 和 \(k\) 分别是 \(\boldsymbol{G}\) 的列数和行数, 而 \(\boldsymbol{H}\) 的列数和行数分别是 \(n\) 和 \(n-k\).一个重要的问题是: 如何由 \(\boldsymbol{G}\) 或者 \(\boldsymbol{H}\) 来决定这个线性码的最小距离? 已经知道, 校验矩阵可以判别一个向量 \(\boldsymbol{a} \in F_p^n\) 是否为码字 (即 \(\boldsymbol{H a}^{\mathrm{T}}\) 是否为零向量). 现在给出校验矩阵 \(\boldsymbol{H}\) 的另一个功能, 由 \(\boldsymbol{H}\) 可决定最小距离. 为此, 将 \(\boldsymbol{H}\) 表成列向量的形式
定理 1 设 \(C\) 是参数为 \([n, k, d]\) 的 \(p\) 元线性码, 则
\((1)\) \(\boldsymbol{H}\) 的任意 \(d-1\) 个不同的列都是 \(F_p\) 上线性无关的;
\((2)\) \(\boldsymbol{H}\) 中存在 \(d\) 个不同的列, 它们在 \(F_p\) 上线性相关.
证明: 设 \(\boldsymbol{c}=\left(c_1, \cdots, c_n\right)\) 是 \(C\) 中一个非零码字, \(w(\boldsymbol{c})=\) \(l \geqslant 1\), 则 \(\boldsymbol{H} \boldsymbol{c}^{\mathrm{T}}=0\). 为了符号简单, 不妨设 \(\boldsymbol{c}\) 的前 \(l\) 个分量不为零, 而其余分量为零, 即 \(c=\) \(\left(c_1, \cdots, c_l, 0, \cdots, 0\right)\), 其中 \(c_i \neq 0(1 \leqslant i \leqslant l)\). 于是
这就表示 \(\boldsymbol{u}_1, \cdots, \boldsymbol{u}_l\) 是线性相关的. 所以设 \(C\) 中有非零码字, 汉明重量为 \(l \geqslant 1\), 若第 \(i_1, \cdots, i_l\) 个分量不为零而其余分量为零, 就得到 \(\boldsymbol{H}\) 中第 \(i_1, \cdots, i_l\) 列是线性相关的. 反过来推理可知, 如果 \(C\) 中不存在汉明重量 \(\leqslant l\) 的非零码字,那么 \(\boldsymbol{H}\)中任意 \(l\) 列都是线性无关的. 由于 \(d\) 是线性码 \(C\) 中非零码字汉明重量的最小值, 便可知道定理中的性质(1)和 (2)成立. 因为 \(C\) 中不存在非零码字 \(\boldsymbol{c}\) 使得 \(w(\boldsymbol{c}) \leqslant d-1\), 这相当于说 \(\boldsymbol{H}\) 的任何 \(d-1\) 列都线性无关. 而 \(C\) 中存在汉明重量为 \(d\) 的码字, 这相当于说 \(\boldsymbol{H}\) 中存在线性相关的 \(d\) 个列. 证毕.
例如, 如果使线性码的最小距离 \(d \geqslant 2\), 它的校验矩阵的每列都不能线性相关, 即每列都不能是零向量. 进而, \(d=2\) 当且仅当 \(\boldsymbol{H}\) 有两个不同的 (非零)列向量 \(\boldsymbol{u}\) 和 \(\boldsymbol{u}^{\prime}\) 是线性相关的, 即存在 \(0 \neq a \in F_p\), 使得 \(\boldsymbol{u}=a \boldsymbol{u}^{\prime}\) (两个非零列向量成比例).
现在用这个想法来构造一批最小距离为 \(3\) 的二元码. 取 \(m\) 为正整数, \(m \geqslant 2\), 把长为 \(m\) 的 \(F_2^m\) 中所有非零列向量 (共 \(2^m-1\) 个) 组成一个 \(F_2\) 上 \(m\) 行 \(2^m-1\) 列的矩阵
例如, \(m=3\) 时可取
设 \(C_m\) 是以 \(\boldsymbol{H}_m\) 为校验矩阵的二元线性码 (注意 \(\boldsymbol{H}_m\) 有单位阵 \(\boldsymbol{I}_m\) 为它的子阵, 从而 \(\operatorname{rank}\left(\boldsymbol{H}_m\right)=\) \(m)\). 于是 \(C_m\) 的码长为 \(n=2^m-1\), 而 \(\boldsymbol{H}_m\) 的行数 \(m\) 等于 \(n-k\), 所以 \(C_m\) 的信息位数为 \(k=n-\) \(m=2^m-1-m . \boldsymbol{H}_m\) 的每列都是非零向量, 并且任意两个不同列的向量都不相等, 所以在 \(F_2\) 上 \(\boldsymbol{H}\) 的任意两列都线性无关. 于是 \(C_m\) 的最小距离 \(d \geqslant 3\). 进而设 \(\boldsymbol{u}\) 和 \(\boldsymbol{u}^{\prime}\) 是 \(\boldsymbol{H}\) 中两个不同列的向量, 则 \(\boldsymbol{u}+\boldsymbol{u}^{\prime} \neq \mathbf{0}\), 所以 \(\boldsymbol{u}+\boldsymbol{u}^{\prime}\) 是 \(\boldsymbol{H}\) 中某个列 \(\boldsymbol{u}^{\prime \prime}\)(因为所有非零向量都已列在 \(\boldsymbol{H}\) 之中). 于是 \(\boldsymbol{u}+\boldsymbol{u}^{\prime}+\boldsymbol{u}^{\prime \prime}=\mathbf{0}\). 这表明 \(\boldsymbol{H}\) 中有 3 列是线性相关的. 由定理 1 可知 \(d=3\). 于是证明了二元线性码 \(C_m\) 的参数为 \([n, k, d]=\left[2^m-1,2^m-1\right.\) \(-m, 3]\).
这些码 \(C_m(m \geqslant 2)\) 都是完全码, 因为
于是给出了一批二元完全码 \(C_m(m \geqslant 2)\). 它们叫做二元汉明码.
可以把 \((10 \cdots 0),(010 \cdots 0), \cdots,(0 \cdots 01)\) 的转置放在 \(\boldsymbol{H}_m\) 的最后 \(m\) 列, 从而有形式 \(\boldsymbol{H}_m=\) \([\boldsymbol{P I}_m]\). 于是 \(C_m\) 的生成阵为 \(\boldsymbol{G}_m=\left[\boldsymbol{I}_k \boldsymbol{P}^{\mathrm{T}}\right]\). 例如, 对于前面给出的 \(\boldsymbol{H}_3=\left[\mathrm{PI}_3\right]\), 其中
于是参数为 \([n, k, d]=[7,4,3]\) 的二元汉明码 \(C_3\) 有生成矩阵
由这个生成阵不难看出, \(C_3\) 就是例 \(1.2.6\) 中的那个二元码.
现在,试图将 \(2\) 元情形推广到一般的 \(p\) 元情形,其中 \(p\) 是任意素数. 仍希望构造 \(d=3\) 的 \(p\) 元线性码, 所以校验矩阵的每列都应当是非零向量,并且任意两个不同的列都应当线性无关,即彼此不能相差一个非零常数因子. 对于 \(m \geqslant 2\), 若 \(u\) 是 \(F_p^m\) 中一个非零向量,则 \(p-1\) 个向量 \(\alpha u(1 \leqslant \alpha \leqslant p-1)\) 当中只能取一个代表作为校验矩阵 \(\boldsymbol{H}\) 的一列. \(F_p^m\) 中非零向量共有 \(p^m-1\) 个,每 \(p-1\) 个彼此相差常数倍的向量当中取一个代表,一共有 \(n=\frac{p^m-1}{p-1}\) 个代表向量. 把这 \(n\) 个代表向量作为列向量, 得到一个矩阵 \(H_m\), 这是 \(F_p\) 上一个 \(m\) 行 \(n\) 列的矩阵. 与 \(2\) 元情形类似, \(\boldsymbol{H}_m\) 的秩为 \(m\). 用 \(C_m\) 表示以 \(\boldsymbol{H}_m\) 为校验矩阵的 \(p\) 元线性码, 它的参数为 \([n, k, d]=\left[\frac{p^m-1}{p-1}, \frac{p^m-1}{p-1}-m, 3\right]\). 这些 \(p\) 元线性码都叫做p元汉明码. 它们都是完全码, 因为
再谈定理 \(1\) 的一个简单的应用. 已经知道一个纠错码满足 \(Singleton\) 界: \(n \geqslant k+d-\) 1. 如果 \(C\) 是线性码, 参数为 \([n, k, d]\), 可以给出定理 \(1.3.2\) 的另一种证明: 由于 \(\boldsymbol{C}\) 的校验矩阵 \(\boldsymbol{H}\) 的秩为 \(n-k\), 可知 \(\boldsymbol{H}\) 的任意 \(n-k+1\) 列都是线性相关的. 由定理 1 便知 \(d \leqslant n-k+1\), 即 \(n \geqslant k+d-1\) .
习题
\(1.\) 对于 \(n \geqslant 3,0 \leqslant k < n\), 证明 : \(q\) 元线性码 \([n, k, 3]\) 存在, 当且仅当 \(Hamming\) 界成立, 即 \(q^{n-k} \geqslant 1+n(q-1)\) 。(提示 \(1\):\(q^{n-k} = 1+n(q-1)\) 的整数解只有 \([n,k]=\left[\frac{p^m-1}{p-1}, \frac{p^m-1}{p-1}-m\right]\) 这种形式,随着 \(m\) 增大 \(n,k\rightarrow \infty\))(提示 \(2\):已知参数为 \([n,k,d]\) 的线性码,可以容易的造出参数为 \([n,k-1,d]\) 和 \([n+1,k+1,d]\) 的线性码)

浙公网安备 33010602011771号