1.3 纠错码的界
定理 1 (汉明界) 如果存在 \(p\) 元纠错码, 参数为 \((n, K, d)\), 则
证明:
在向量空间 \(F_p^n\) 中, 对于正整数 \(r\) 和向量 \(\boldsymbol{v} \in F_p^n\), 考虑与 \(v\) 的汉明距离小于或等于 \(r\)的所有向量组成的集合 \(S(\boldsymbol{v} ; r)\), 叫做以 \(\boldsymbol{v}\) 为中心, 以 \(r\) 为半径的闭球. 也就是说,
由于整个向量空间 \(F_p^n\) 的向量总数 \(p^n\) 是有限的, 所以球 \(S(\boldsymbol{v} ; r)\) 中的向量个数 \(N(r)\) 也是有限的. 来计算这个数. 设 \(\boldsymbol{v}=\left(v_1, \cdots, v_n\right), v_i \in\) \(F_p\). 如果 \(d(\boldsymbol{v}, \boldsymbol{a})=i\), 则 \(\boldsymbol{a}\) 和 \(\boldsymbol{v}\) 有 \(i\) 个相异位. \(\boldsymbol{a}\)在这 \(i\) 个相异位上取值与 \(v\) 不同, 这表明在每个相异位上 \(\boldsymbol{a}\) 的分量取值均有 \(p-1\) 个可能,从而在 \(i\) 个相异位上 \(\boldsymbol{a}\) 的取值共 \((p-1)^i\) 个可能性.在另外 \(n-i\) 个位上, \(\boldsymbol{a}\) 和 \(v\) 的取值相同, 即 \(\boldsymbol{a}\)在这 \(n-i\) 位上取值由 \(v\) 所完全决定. 于是对于每 \(i\) 个固定的位置, 均有 \((p-1)^i\) 个 \(\boldsymbol{a}\), 使得 \(\boldsymbol{a}\) 和 \(v\) 的相异位恰好是这 \(i\) 位. 但是 \(i\) 个相异位的取法共有 \(\binom{n}{i}\) 种, 所以和 \(v\) 的汉明距离等于 \(i\) 的向量个数为 \((p-1)^i\binom{n}{i}\). 于是球 \(S(\boldsymbol{v} ; r)\) 中向量个数为
由这个公式看出, 球中元素个数与半径 \(r\) 有关,但是和球心 \(v\) 无关.
现在设存在参数为 \((n, K, d)\) 的 \(p\) 元码 \(C\).令 \(r=\left[\frac{d-1}{2}\right]\), 考虑以 \(C\) 中所有码字 \(c_1, c_2, \cdots\), \(c_K\) 为中心, 半径为 \(r\) 的 \(K\) 个球 \(S_i=S\left(c_i ; r\right)(1 \leqslant\) \(i \leqslant K)\). 这 \(K\) 个球两两不相交, 因为若有向量 \(\boldsymbol{a}\)同时属于 \(S_i\) 和 \(S_j(i \neq j)\), 则 \(d\left(\boldsymbol{a}, c_i\right) \leqslant r\), \(d\left(\boldsymbol{a}, \boldsymbol{c}_j\right) \leqslant r\). 于是由三角形不等式:
另一方面, 由于 \(c_i\) 和 \(c_j\) 是 \(C\) 中不同的码字, 应当 \(d\left(\boldsymbol{c}_i, \boldsymbol{c}_j\right) \geqslant d\). 这就导致矛盾. 这就表明上述 \(K\)个球两两不相交, 所以在整个空间 \(F_p^n\) 中可以填进这 \(K\) 个球, 并且彼此不相重叠. 特别地, 整个空间中的向量个数 \(p^n\) 要大于或等于这 \(K\) 个球的向量总和 \(K \cdot N(r)=K \cdot \sum_{i=0}^r(p-1)^i\binom{n}{i}\), 其中, \(r=\left[\frac{d-1}{2}\right]\). 这就证明了定理 1.3.1. 证毕.
注记 由定理 1 的证明可知, 汉明界中的不等式成为等式, 当且仅当证明中那 \(K\) 个球正好不重叠地把整个空间填满!如果纠错码的参数使汉明界的等式成立,称该码是完全码 (perfect code). 这是一类好码. 因为对于这种完全码, 码字个数 \(K\) 已达到最好, 不存在参数 \((n, K+1, d)\) 的码 ( \(K\) 个球已把空间填满,不能再放进一个球).
在通常欧氏平面 \(\mathbb{R}^2\) 或欧氏空间 \(\mathbb{R}^n(n \geqslant 3)\)中,不可能放入一些球 ( \(\mathbb{R}^2\) 中则是圆 ), 不相重叠并且填满整个空间,因为球之间一定有空隙.但是对于有限域 \(F_p\) 上的向量空间 \(F_p^n\), 却可以做到这一点,即完全码是存在的. 考虑 1.2 节中的例 1.2.6, 它是参数 \((n, K, d)=(7,16,3)\) 的二元码 \((p=2)\). 由于 \(2^n=2^7\), 而
由此可知例 1.2.6 中的码是完全码. 换句话说,以该码的 16 个码字为球心,以 1 为半径的 16 个球不重叠地填满整个空间 \(F_2^7!\) 在第 2 章还要构造出更多的完全码.
现在给出纠错码另一个表达式更简单的定理 Singleton 界.
定理 2(Singleton 界) 如果存在参数为 \((n, K, d)\) 的 \(p\) 元纠错码, 并且 \(1 \leqslant d \leqslant n\),则 \(K \leqslant p^{n-d+1}\) (即 \(k \leqslant n-d+1\) ).
证明:类似习题 1.2.7 的证明想法。反证,假设 \(K > p^{n-d+1}\),则观测这组码字的前 \(n-d+1\) 个位置,则由鸽笼原理,至少有两个码字 \(\boldsymbol{c_1}\) 和 \(\boldsymbol{c_2}\),它们的前 \(n-d+1\) 个位置是相同的。于是 \(d(\boldsymbol{c_1},\boldsymbol{c_2})\leq d-1\),与这组码的最小距离为 \(d\) 矛盾。
注记 若 Singleton 界中等式成立, 即若 \(C\)是参数 \([n, k, d]\) 的纠错码, 其中 \(n=k+d-1\), 则 \(C\) 叫做 “极大距离可分”码, 简记为 MDS 码 (maximum distance separable code). 这个名称来源于: 这种码相当于一种组合设计, 叫做“极大距离可分" 的.
现在可以给出 MDS 码的一个平凡的例子.考虑码
它的参数为 \([n, k, d]=[n, 1, n]\), 这是 MDS 码.进一步的 MDS 码例子参见第 2 章中的多项式码.
MDS 码也是一类好码, 因为若 \(C\) 是 MDS 码, 即参数为 \([n, k, d], n=k+d-1\), 则 3 个参数都不能再好. 因为由定理 2 可知不存在参数为 \([n-1, k, d],[n, k+1, d]\) 或者 \([n, k, d+1]\)的纠错码.
纠错码还有其他界. 现在再介绍一个界,它只适用于 2 元码的情形.
定理 3(二元码的 Plotkin 界) 如果存在参数为 \((n, K, d)\) 的二元码, 并且 \(2 d>n\), 则
证明:设 \(C=\left\{c_1, \cdots, c_K\right\}\) 是参数为 \((n, K\), \(d)\) 的二元码, \(2 d>n\), 它的 \(K\) 个码字 \(\boldsymbol{c}_i(1 \leqslant i \leqslant\) \(K)\) 都是长为 \(n\) 的二元向量: \(\boldsymbol{c}_i=\left(c_{i 1}, c_{i 2}, \cdots, c_{i n}\right)\left(c_{i j} \in F_2=\{0,1\}\right)\). 考虑元素属于 \(F_2\) 的如下 \(\binom{K}{2}\) 行 \(n\) 列矩阵:
其中, \(\binom{K}{2}\) 行分别是不同码字之差 \(\boldsymbol{c}_i-\boldsymbol{c}_j\left(=\boldsymbol{c}_i+\right.\) \(\left.\boldsymbol{c}_j\right)(1 \leqslant i<j \leqslant K)\). 用两种不同方式来计算矩阵 \(\boldsymbol{A}\) 中 1 的个数 \(N\). 由于 \(w\left(\boldsymbol{c}_i+\boldsymbol{c}_j\right)=d\left(\boldsymbol{c}_i, \boldsymbol{c}_j\right)\) \(\geqslant d\), 可知 \(\boldsymbol{A}\) 中每行都至少有 \(d\) 个 1 , 所以 \(N \geqslant\) \(d\binom{K}{2}\). 另一方面, 对于每个 \(l(1 \leqslant l \leqslant n)\), 设码字 \(\boldsymbol{c}_1, \cdots, \boldsymbol{c}_K\) 的第 \(l\) 位共有 \(N_l\) 个为 1 , 其余 \(K-\) \(N_l\) 个为 0 , 则 \(\boldsymbol{A}\) 中 \(\binom{K}{2}\) 个行 \(\boldsymbol{c_i}+\boldsymbol{c}_j(1 \leqslant i<j \leqslant\) \(K)\) 的第 \(l\) 位 (即 \(\boldsymbol{A}\) 的第 \(l\) 列) 共有 \(N_l\left(K-N_l\right)\)个为 1 (即 \(N_l\) 个 1 与 \(K-N_l\) 个 0 逐个相加所给出的 1). 于是 \(N=\sum_{l=1}^n N_l\left(K-N_l\right)\), 从而
如果 \(K\) 是偶数,由于 \(N_i\) 与 \(K-N_i\) 之和为 \(K\),熟知 \(N_i=\frac{K}{2}\) 时 \(N_i\left(K-N_i\right)\) 最大. 于是式 (1)给出
即 \(2 d(K-1) \leqslant n K\). 再由假设 \(2 d>n\) 可知 \(K \leqslant\) \(\frac{2 d}{2 d-n}\). 由于 \(K\) 是偶数, 所以 \(\frac{K}{2} \leqslant\left[\frac{d}{2 d-n}\right]\), 即
注意 \([nd]\geq n[d]\),所以这一段处理使得不等式更紧。
如果 \(K\) 是奇数,则当 \(N_i\) 和 \(K-N_i\) 分别是整数 \(\frac{K-1}{2}\) 和 \(\frac{K+1}{2}\) 时乘积最大. 这时式(1)给出
化简后得到 \(\frac{1}{2}(K+1) \leqslant \frac{d}{2 d-n}\). 由于左边是整数, 所以 \(\frac{K+1}{2} \leqslant\left[\frac{d}{2 d-n}\right]\), 即 \(K \leqslant 2\left[\frac{d}{2 d-n}\right]-1\).证毕.
达到 Ploktin 界的二元码也是一类好码.
例 4 码长为 9 并且最小距离为 5 的二元码, 最多能有多少码字?
解 设 \(C\) 是参数 \((n, K, d)=(9, K, 5)\) 的二元码. 如果直接用定理 3 中的 Plotkin 界,给出 \(K \leqslant 2\left[\frac{d}{2 d-n}\right]=2\left[\frac{5}{10-9}\right]=10\). 但是若由 \(C\) 构造一个新的二元码
即将 \(C\) 中每个码字后面加上 1 位 \(c_{10}\), 使得 1 的个数为偶数, 不难看出码 \(C^{\prime}\) 的参数为 \((n, K, d)\) \(=(10, K, 6)\).
由此我们可以知道,最小距离为奇数的码都可以像这样改造成一个码长+1,码字个数不变,最小距离+1的码
将定理 3 用于码 \(C^{\prime}\), 可得到 \(K\) 的更好上界 \(K \leqslant 2\left[\frac{6}{12-10}\right]=6\). 事实上, 达到 Plotkin 界的二元码 \((n, K, d)=(10,6,6)\) 和 \((9,6,5)\) 是存在的 (习题). 它们都是好的二元码, 因为码字个数不能再增加了.
例 5 (阿达玛码) 参数为 \((n, K, d)=\) \((4 m, 4 m, 2 m)\) 的二元码叫做阿达玛码(其中 \(m\)是正整数). 这个名称的来源是由于它们可由一种叫做阿达玛方阵的组合结构得到, 法国数学家阿达玛 (Hadamard) 最早研究这种方阵.一个 \(4 m\) 行 \(4 m\) 列的方阵 \(\boldsymbol{H}\)叫做阿达玛方阵, 是指方阵中元素均是实数 1 或者 -1 ,并且
这里 \(\boldsymbol{H}^{\mathrm{T}}\) 表示方阵 \(\boldsymbol{H}\) 的转置, 而 \(\boldsymbol{I}_{4 m}\) 表示 \(4 m\) 阶单位方阵 (即主对角线元素均为 1 , 其他元素为 \(0)\).例如,
是 4 阶阿达玛阵, 容易验证 \(\boldsymbol{H}_1^{\mathrm{T}} \boldsymbol{H}_1=4 \boldsymbol{I}_4\)(验证其为对称阵且不同行内积为0). 一般地, 递推地构造
则通过这种办法我们给出了一系列是 \(2^{m}(m\geq 2)\) 阶的阿达玛阵.利用数论知识和细致的组合方法,目前对于 \(10^4\) 以内的正整数 \(m\) 都构造出了 \(4 m\)阶阿达玛阵. 组合学中的一个著名的猜想是:对每个正整数 \(m, 4 m\) 阶阿达玛阵均存在.这个猜想至今未解决.
现在讲阿达玛阵和二元纠错码的关系. 设
是一个 \(n=4 m\) 阶的阿达玛阵. 由定义 \(\boldsymbol{H}^{\mathrm{T}} \boldsymbol{H}=\) \(n \boldsymbol{I}_n\), 从而由矩阵乘法给出:
当 \(j \neq k\) 时, 上式给出
若考虑方阵 \(\boldsymbol{H}\) 中第 \(j\) 行和第 \(k\) 行给出的两个向量 \(\left(a_{j 1}, a_{j 2}, \cdots, a_{j n}\right)\)和 \(\left(a_{k 1}, a_{k 2}, \cdots, a_{k n}\right)\), 可知这两个向量的相同位数(相乘得到1)和相异位数(相乘得到-1)都是 \(2 m=n / 2\) (各占一半). 如果再把 \(\boldsymbol{H}\) 中 \(n\) 个行向量的 1 和 -1 分别改成二元域 \(F_2\) 中的 0 和 1 , 便得到长为 \(n\) 的 \(n\) 个二元向量,这 \(n\) 个向量当中任意两个不同向量的相异位数仍是 \(n / 2\), 即任意两个不同向量的汉明距离都是 \(n / 2\). 这 \(n\) 个向量组成的二元码 \(C\), 参数为 \((n, K, d)=(4 m, 4 m, 2 m)\). 所以,由一个 \(4 m\) 阶的阿达玛阵, 均可以构造出参数为 \((n, K, d)=\) \((4 m, 4 m, 2 m)\) 的二元码 \(C\), 并且任意两个不同码字的汉明距离均是 \(2 m\).
例如, 由 \(4\) 阶阿达玛阵
将 1 和 -1 分别改成 0 和 \(1, \boldsymbol{H}\) 的 4 行分别成为 (0000), (0101), (0011), (0110), 它们组成参数 \((n, K, d)=(4,4,2)\) 的二元码 \(C\),并且任意两个不同码字的汉明距离都是 2 .
再作进一步讨论. 设 \(C\) 是由 \(n=4 m\) 阶阿达玛阵构造出的二元码, 参数为 \((n, K, d)=(4 m\), \(4 m, 2 m)\). 取 \(C\) 中的一个码字 \(\boldsymbol{c}=\left(c_1, \cdots, c_n\right) \in\) \(F_2^n\), 把它改成 \(\boldsymbol{c}^{\prime}=\boldsymbol{c}+(1,1, \cdots, 1)=(c_1+1, c_2+1, \cdots, c_n+1)\) , 而其余码字不变. 由于 \(c^{\prime}\) 是将 \(\boldsymbol{c}\)中的每个分量 \(c_i\) 分别改成 \(c_i+1\), 即 0 改成 1 而 1 改成 0 . 可知对于码 \(C\) 中每个 \(\boldsymbol{c}\) 以外的码字 \(c^{\prime \prime}, \boldsymbol{c}\)和 \(c^{\prime \prime}\) 之间的相同位(相异位)恰好是 \(c^{\prime}\) 和 \(c^{\prime \prime}\) 之间的相异位 (相同位). 这就表明 \(d\left(\boldsymbol{c}^{\prime}, \boldsymbol{c}^{\prime \prime}\right)=4 m-\) \(d\left(\boldsymbol{c}, \boldsymbol{c}^{\prime \prime}\right)=4 m-2 m=2 m\). 换句话说, 将 \(C\) 中码字 \(\boldsymbol{c}\) 改成 \(\boldsymbol{c}^{\prime}\) 而其余码字不变, 所得新的二元码参数仍为 \((n, K, d)=(4 m, 4 m, 2 m)\). 如果 \(\boldsymbol{c}\) 的第一个分量为 1 , 则 \(\boldsymbol{c}^{\prime}\) 的第 1 个分量为 0 . 所以用上述方法, 由 \(C\) 可得到一个二元码, 参数仍为 \((n, K, d)=(4 m, 4 m, 2 m)\), 并且每个码字的第 1 个分量均为 0 . 现在把这些码字的第 1 个分量都去掉, 成为长 \(n-1\) 的码字, 它们构成的二元码 \(C^{\prime}\) 参数为 \((4 m-1,4 m, 2 m)\), 并且任意两个不同码字的汉明距离仍旧都是 \(2 m\). 二元码 \(C^{\prime}\) 达到 Plotkin 界, 因为 \(K=4 m\), 而 \(2\left[\frac{d}{2 d-(4 m-1)}\right]=\) \(2\left[\frac{2 m}{4 m-(4 m-1)}\right]\) 也是 \(4 m\). 这就表明: 如果 \(4 m\)阶阿达玛阵存在,由 \(C\) 可构造出达到 Plotkin 界的二元码, 参数为 \((4 m-1,4 m, 2 m)\). 这是一类好码.
例如, 由前面的二元码 \(C=\{(0000),(0101)\), (0011), (0110) \(\}\) 可得到二元码 \(C^{\prime}=\{(000)\), \((101),(011),(110)\}\), 参数为 \((n, K, d)=(3,4\), 2), 达到 Plotkin 界. 如果关于阿达玛阵的猜想成立, 即对每个正整数 \(m\) 均存在 \(4 m\) 阶阿达玛阵, 则对于每个 \(m \geqslant 1\), 都可构造出一批好的二元纠错码 \(C^{\prime}\), 参数为 \((n, K, d)=(4 m-1,4 m\), \(2 m)\).
以上讲了用阿达玛阵构造纠错码的例子,是想向读者表明: 组合学和数论是纠错码理论中的重要数学工具 (构造阿达玛阵需要组合与数论方法). 但是本书从第 2 章开始, 主要介绍纠错码中的代数方法, 讲述线性代数工具的应用.
习题
\(1.\) 一个码长为 \(8\) 的二元码, 最小距离为 \(5\) ,试问最多能有多少码字?(提示:用例 \(1.3.4\) 的方法确定码字个数的上界,并尝试构造。事实上,仿照习题 \(1.2.6\) 可以证明取到码字个数上界的码在等价意义下是唯一的。)
\(2.\) 一个码长为 \(n\) 的 \(p\) 元码, 最小距离为 \(2\) ,试问最多能有多少码字?(提示:是否存在参数为 \([n-1,p^{n-1},1]\) 的码?)
\(3.\) 设 \(d\) 为偶数, \(2 \leqslant d \leqslant n\). 证明存在参数为 \((n, K, d)\) 的二元码当且仅当存在参数为 \((n-1\), \(K, d-1)\) 的二元码.(左推右思路:存在两个向量 \(c_1\) 和 \(c_2\),使得 \(d(c_1,c_2)=d\),只需证明这两个向量至少有一个位置处的分量是相等的,在这种情况下删除这个位置所在列就得到了参数为 \([n-1,K,d-1]\) 的码 )(“二元码”这一条件用于右推左)
\(4.\) 试构造参数为 \((n, K, d)=(9,6,5)\) 和 \((10,6,6)\) 的二元码.
解:使用和习题 \(1.2.6\) 同样的办法,可以说明参数为 \((n, K, d)=(9,6,5)\) 的码 \(C\) 必有以下等价形式,
从而我们已经确定了前两个码字,对于后四个码字,同样使用习题1.2.6的办法,可以说明它们的后四个位置中各自都至少有 3 个 1.于是不妨设码 \(C\) 为以下形式,
此时,观察左下局部 \(4\times 5\) 的子矩阵,(由 Plotkin 界知不存在参数为 \([5,4,4]\) 的码),易知其必为参数为 \([n,K,d]=[5,4,3]\) 的码,但由习题 \(1.2.6\) 的结果知这个参数的码只有一种等价形式。取一个等价形式进行恰当的等价变形(使得每行都有 \(2-3\) 个 \(1\) )即得,
\(5.\) 构造参数为 \((n, K, d)=(8,8,4)\) 和 \((7,8,4)\) 的二元码.
\(6.\) 证明完全码的最小距离 \(d\) 必是奇数. (提示:反证,三角不等式)

浙公网安备 33010602011771号