1.2 纠错码的基本概念和主要数学问题

通过 1.1 节对纠错进行的直观描述, 现在给出纠错码的确切数学定义.

Fpp 元有限域. 所有元素属于 Fp 的长为 n 的向量 v=(v1,,vn)(viFp) 组成的集合表示成 Fpn, 叫做 Fp 上的 n 维向量空间. 由于向量共有 n 个分量 vi(1in), 每个分量 vi均可取 Fpp 个元素中的任何一个, 所以 Fpn中共有 pn 个向量.

定义 1 向量空间 Fpn 中的任何非空子集 C 都叫做一个 p纠错码, 其中 n 叫做码长, C 中向量叫做码字, C 中码字个数 |C| 表示成 K, 而 k=logpK 叫做纠错码 C信息位数.
如果不考虑纠错, C 中码字表示的 K 个信息:在 Fp 上用 k=logpK 位即可, 现在由于要纠错,采用了 n 位向量. 由于 1K=|C||Fpn|= pn, 可知 0k=logpKlogppn=n. 比值 k/n 叫做纠错码 C 的信息率或效率.

码长 n 和信息位数 k (或用 K ) 是纠错码的两个基本参数. 还应当有一个重要的参数来反映纠错能力. 从 1.1 节看到,一个纠错码有好的纠错能力, 是要求不同码字都有很多的位是不一样的. 对于 Fpn 中任意两个不同的向量 a= (a1,,an)b=(b1,,bn). 如果 aibi, 称 i 是它们的相异位. 所以,要求不同码字都有很多的相异位. 这就给出如下的概念:
定义 2a=(a1,,an)b= (b1,,bn)Fpn 中两个向量. 定义 a汉明 (Hamming) 重量 wH(a)a 的非零分量的个数, 即

wH(a)=#{i1in,ai0}.

ab 之间的汉明距离 dH(a,b) 是指它们的相异位个数,即

dH(a,b)=#{iaibi,1in}.

由上述定义可知

dH(a,b)=#{iaibi0,1in}=wH(ab).

今后汉明重量 wH(a) 和汉明距离 dH(a,b)分别简写为 w(a)d(a,b).

定义 3C 是码长为 np 元纠错码(即 CFpn 的一个子集合, 至少包含两个码字). C最小距离 d=d(C) 定义为 C 中所有不同码字之间汉明距离的最小值,即

d(C)=min{d(a,b)a,bC,ab}.


例如, 在例 1.1 .2 中, 纠错码 C 为重复码 C={(a1a2a3a1a2a3a1a2a3)a1,a2,a3F2}.
任意两个不同码字至少有 3 个相异位, 即汉明距 离均 3. 而码 字 (000000000) 和 (100100100)的汉明距离为 3 , 所以这个重复码的最小距离为 3.
汉明距离给出有限域上两个向量“远近”的一个衡量标准. 任意两个向量之间的汉明距离都是非负整数,这和通常熟知的欧氏平面或欧氏空间中两点距离不同. 但是汉明距离也有以下性质和通常的距离是一样的:
性质 4a,b,cFpn, 则
(1) d(a,b)0, 并且 d(a,b)=0 当且仅当 a=b. 换句话说,每个向量和自身的汉明距离为 0 ,而任意两个不同向量的汉明距离为正整数.
(2) 对称性: d(a,b)=d(b,a). 于是可以谈 ab 彼此之间的汉明距离.
(3) 三角形不等式: d(a,c)d(a,b)+ d(b,c), 即三角形两边之和大于 (等于) 第三边.
证明:(1)(2) 是显然的,仅需证明 (3).仅需证 w(a+b)w(a)+w(b),这是显然的。

有了性质 4 给出的汉明距离性质, 现在给出纠错码理论的第一个基本结果. 这个结果表明汉明距离确实是反映纠错能力的恰当概念.
定理 5C 是码长为 np 元纠错码, d=d(C)C 的最小距离,则 C 可以检查 d1 位错, 也可以纠正 [d12] 位错. 这里对每个实数 α0,[α] 表示 α的整数部分, 即

[d12]={d12,d 为奇数. d21,d 为偶数. 

证明:显然。

在这里, 读者可能会提出一个问题: 纠错码能够纠正 [d12] 位错的前提是信道的错误本身不超过 [d12] 个,在这个前提下我们才能够正确的进行纠错,纠错码才具有 [d12] 位的纠错能力。如果信道出现的错位多于 l=[d12] 个时怎么办? 一般来说,信道在工程设计上要比较可靠. 假设信道传输时每位出错的概率为 q(0<q<1), 则不出错的概率为 q1=1q. 通常 q 很小 (如果 q=12, 这个通信系统不能用, 要在技术上加以改进). 如果 q=0.01, 那么有两位同时出错的概率为 q2=0.0001. 若码长为 n, 那么在 n 位当中有 l 位出错的概率为 ql(nl), 这里 (nl)n 位中取 l 位的组合数, 即

(nl)=n!l!(nl)!.

于是一个 n 位的码字出现错位 l 的概率为

Pl=i=lnqi(ni)=(0.01)l(nl)+(0.01)l+1(nl+1)++(0.01)n.

l 较大时, Pl 的值很小. 换句话说,一个好的通信系统 (即 q 很小时), 信道中发生多位错误的概率 Pl 很小. 这时即使译错也关系不大, 就像一封信中, 大部分字都写对了, 极少数字看不清, 根据上下文的意义,通常可以把看不清的字猜出来.

以上介绍了纠错码 C 的 3 个基本参数: 码长 n 、码字个数 K=|C| (或者用信息位数 k= logpK 和最小距离 d). 这样参数的纠错码今后表示成 (n,K,d) 或者 [n,k,d].
纠错码的基本数学问题有如下 2 个:
(1) 构造好的纠错码. 也就是说, 希望有大的 k/n 值 (效率高) 和大的 d 值 (好的纠错能力).
(2) 要有可以实用的纠错译码算法.
对于问题(1), 要注意 3 个基本参数 n,kd 是相互制约的. 例如, 对于固定的码长 n, 当 k很大时(即码字很多时), 一般来说, 最小距离 d不能很大. 类似地, 当 nd 固定时, 码字个数也不会太多, 即 K 值(或 k 值)也不会太大. 例如, 对于一个极端情形, 当 k=n 时,即 K=pk= pn 从而 C=Fpn, 即所有向量都是码字, 这时 k/n达到最大值, 但是 d=1 达到最小值, 这个码完全没有纠错能力. 反过来, 如果 d 达到最大值 n, 则码字个数 Kp (习题), 即 k1. 在 1.3 节将要给出纠错码 3 个基本参数和 p 之间的一些相互制约的不等式关系, 叫做纠错码的.如果一个纠错码 C 的参数使这些不等式变成为等式, 那么 C 就是某种意义上的好的纠错码. 构做好的纠错码是第 1 个重要问题. 举一个例子.
例 6 考虑以下 16 个码字构成的二元码 (码长 n=7,p=2, 码字个数 K=16, 信息位数 k=log2K=4):

(0000000)(1111111)(0010111)(1101000)(1001011)(0110100)(1100101)(0011010)(1110010)(0001101)(0111001)(1000110)(1011100)(0100011)(0101110)(1010001)

可以验证这个码的最小距离为 d=3. 从而此二元码为 [n,k,d]=[7,4,3]. 例 1.1.2 中给出的重复码, 其参数为 [n,k,d]=[9,3,3]. 二者的纠错能力一样, 但是这里的效率 4/7 比重复码的效率 1/3 要好. 所以例 1.2.6 中的纠错码比例 1.1.2 中的重复码要好. 事实上,在第 2 章中可以知道例 1.2.6 中的码是一种性能最好的纠错码, 构造好的纠错码是很有学问的.

一个性能良好的纠错码要在实际中被采用, 还需要纠错编码和纠错译码能够在工程上容易实现. 否则, 即使在数学上构造了好的纠错码也不被采用. 一般来说, 纠错编码是容易实现的 (关于线性码的纠错编码见 2.1 节), 而纠错译码常常比较困难. 当信道出错位数不超过 [d12] 时,定理 1.2.5 给出了一个译码算法. 这个方法是说: 收方收到 y 之后, 要计算 y 和所有 K 个码字之间的汉明距离, 然后找到和 y 距离最近的一个码字 c, 把 y 纠正成 c.收到每个 y 都要这样做一遍, 这是很花时间的.对于工程师来说, 这个译码算法不能令人满意.因此, 寻求好的译码算法也是纠错码理论的一个重要课题. 从历史上看, 在 1960 年前后人们用抽象代数方法构造了一种好码, 叫 BCH 码,这种码的最小距离可以很大, 即纠错能力很强.不久, 美国数学家 Berlekamp 和瑞士数学家 Massey 各自独立地给出 BCH 码好的译码算法, 所以 BCH 码在工程上一直应用至今. 在 1980 年前后, 人们用更高深的数学 (代数几何)构造出来性能比 BCH 码还要好的纠错码, 叫代数几何码. 但是到目前仍没有完全满意的译码算法, 所以代数几何码至今还没有到完全实用的阶段.

构造好的纠错码和发现好的译码算法, 都需要采用更多的数学工具. 这就需要考虑纠错码 C 不仅是 Fpn 的一个子集合, 而要赋予它更多的代数性质, 在第 2 章考虑 CFpn 的向量子空间,从而可以使用线性代数工具. 将向读者展示如何用线性代数的基本知识构造好的纠错码,并且用简单的矩阵计算给出好的纠错编码和译码算法.

习题

1. 能否构造一个参数为 [8,4,4] 的二元码? (提示:将例 1.2.6 中的码 [7,4,3] 的每个码字适当地加上 1 位).

2.CC 分别是参数为 (n,K,d)(n K,d)p 元码, 将 C 中每个码字和 C 中每个码字相连而得到新的 p 元码

CC={(c,c)cC,cC}.

证明此码的参数为 (n+n,KK,min(d,d)).

关于码的等价
3.Cp 元码 (n,K,d). 对于集合 {1, 2,,n} 的每个置换 σ, 把 C 中每个码字 c= (c1,,cn) 变成 σ(c)=(cσ(1),,cσ(n)), 从而给出一个新的码 σ(C)={σ(c)cC}. 证明纠错码 σ(C) 具有和 C 同样的参数 (n,K,d), 称 σ(C)C 的码字 n 个分量进行了置换 σ.

4.Cp 元码 (n,K,d). 对于 Fpn 中任意一个固定向量 v, 考虑新的子集合

C+v={c+vcC}.

证明纠错码 C+vC 有同样的参数 (n,K,d). C+v 叫做码 C平移.

5.f:FpFp 是一一映射, 并且 f(0)=0 (从而当 aFp,a0 时, f(a)0 ). 设 Cp元码 (n,K,d), 将 C 中每个码字 c=(c1,c2,, cn) 变成 f(c)=(f(c1),,f(cn)). 证明新的码 f(C)={f(c)cC}C 有同样的参数 (n,K,d). f(C) 叫做对 C 中码字作元素置换.

注: 两个 p 元码 CC 叫做等价的, 是指通过有限次的前 3 种变换 (即分量置换、平移或元素置换) 可以将 C 变成 C. 由习题 3〜5 可知, 等价的纠错码具有相同的参数 (n,K,d) 或 ([n,k,d]).

6. 证明存在参数为 (n,K,d)=(5,4,3) 的二元码, 并且所有这种参数的二元码均彼此等价.
证明:我们构造这个二元码 C。由习题 3 和 4,可不妨设 C 的前两个码字为

(0 0 0 0 01 1 1 0 0)

考察第三个码字的最后两个位置的可能情况,由于第三个码字的前三个位置无论如何选取,其与第一个码字和第二个码字的前三个位置的汉明距离之和总是 3.由此可知,C 一定具有如下形式:

(0 0 0 0 01 1 1 0 0 1 1 1 1)

再考虑第三个码字和第四个码字间的汉明距离,可知他们的前三个对应位置都是不同的,所以在码的等价的意义下,C 只有一种可能的形式:

(0 0 0 0 01 1 1 0 00 0 1 1 11 1 0 1 1)

经验证,C 确实具有参数 (n,K,d)=(5,4,3)

7. 如果 p 元纠错码 C 满足 n=d, 证明 K p (即码字最多有 p 个).
证明:若有 p+1 个码字,观测每个码字的第一个位置,由于是 p 元域,由鸽笼原理必有两个码字的第一位置是相同的,此时这两个码字的汉明距离严格小于 n,矛盾。取等容易构造验证。

8. 对于 Fpn 中 3 个向量 a,b,c, 试问何时 d(a,c)=d(a,b)+d(b,c)?
解:等价于问何时 w(a)+w(b)=w(a+b),显然当且仅当向量 ab 的非零分量所在位置不重合时取等。回到原问题即 aibibici 不能同时发生,即 bi=ai or ci,1in.

posted @   Pizixsr  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示