通过 1.1 节对纠错进行的直观描述, 现在给出纠错码的确切数学定义.
设 是 元有限域. 所有元素属于 的长为 的向量 组成的集合表示成 , 叫做 上的 维向量空间. 由于向量共有 个分量 , 每个分量 均可取 中 个元素中的任何一个, 所以 中共有 个向量.
定义 1 向量空间 中的任何非空子集 都叫做一个 元纠错码, 其中 叫做码长, 中向量叫做码字, 中码字个数 表示成 , 而 叫做纠错码 的信息位数.
如果不考虑纠错, 中码字表示的 个信息:在 上用 位即可, 现在由于要纠错,采用了 位向量. 由于 , 可知 . 比值 叫做纠错码 的信息率或效率.
码长 和信息位数 (或用 ) 是纠错码的两个基本参数. 还应当有一个重要的参数来反映纠错能力. 从 1.1 节看到,一个纠错码有好的纠错能力, 是要求不同码字都有很多的位是不一样的. 对于 中任意两个不同的向量 和 . 如果 , 称 是它们的相异位. 所以,要求不同码字都有很多的相异位. 这就给出如下的概念:
定义 2 设 和 为 中两个向量. 定义 的汉明 (Hamming) 重量 为 的非零分量的个数, 即
而 和 之间的汉明距离 是指它们的相异位个数,即
由上述定义可知
今后汉明重量 和汉明距离 分别简写为 和 .
定义 3 设 是码长为 的 元纠错码(即 是 的一个子集合, 至少包含两个码字). 的最小距离 定义为 中所有不同码字之间汉明距离的最小值,即
例如, 在例 1.1 .2 中, 纠错码 为重复码 .
任意两个不同码字至少有 3 个相异位, 即汉明距 离均 . 而码 字 (000000000) 和 (100100100)的汉明距离为 3 , 所以这个重复码的最小距离为 3.
汉明距离给出有限域上两个向量“远近”的一个衡量标准. 任意两个向量之间的汉明距离都是非负整数,这和通常熟知的欧氏平面或欧氏空间中两点距离不同. 但是汉明距离也有以下性质和通常的距离是一样的:
性质 4 设 , 则
, 并且 当且仅当 . 换句话说,每个向量和自身的汉明距离为 0 ,而任意两个不同向量的汉明距离为正整数.
对称性: . 于是可以谈 和 彼此之间的汉明距离.
三角形不等式: , 即三角形两边之和大于 (等于) 第三边.
证明: 和 是显然的,仅需证明 .仅需证 ,这是显然的。
有了性质 4 给出的汉明距离性质, 现在给出纠错码理论的第一个基本结果. 这个结果表明汉明距离确实是反映纠错能力的恰当概念.
定理 5 设 是码长为 的 元纠错码, 是 的最小距离,则 可以检查 位错, 也可以纠正 位错. 这里对每个实数 表示 的整数部分, 即
证明:显然。
在这里, 读者可能会提出一个问题: 纠错码能够纠正 位错的前提是信道的错误本身不超过 个,在这个前提下我们才能够正确的进行纠错,纠错码才具有 位的纠错能力。如果信道出现的错位多于 个时怎么办? 一般来说,信道在工程设计上要比较可靠. 假设信道传输时每位出错的概率为 , 则不出错的概率为 . 通常 很小 (如果 , 这个通信系统不能用, 要在技术上加以改进). 如果 , 那么有两位同时出错的概率为 . 若码长为 , 那么在 位当中有 位出错的概率为 , 这里 是 位中取 位的组合数, 即
于是一个 位的码字出现错位 的概率为
当 较大时, 的值很小. 换句话说,一个好的通信系统 (即 很小时), 信道中发生多位错误的概率 很小. 这时即使译错也关系不大, 就像一封信中, 大部分字都写对了, 极少数字看不清, 根据上下文的意义,通常可以把看不清的字猜出来.
以上介绍了纠错码 的 3 个基本参数: 码长 、码字个数 (或者用信息位数 和最小距离 ). 这样参数的纠错码今后表示成 或者 .
纠错码的基本数学问题有如下 2 个:
构造好的纠错码. 也就是说, 希望有大的 值 (效率高) 和大的 值 (好的纠错能力).
要有可以实用的纠错译码算法.
对于问题(1), 要注意 3 个基本参数 和 是相互制约的. 例如, 对于固定的码长 , 当 很大时(即码字很多时), 一般来说, 最小距离 不能很大. 类似地, 当 和 固定时, 码字个数也不会太多, 即 值(或 值)也不会太大. 例如, 对于一个极端情形, 当 时,即 从而 , 即所有向量都是码字, 这时 达到最大值, 但是 达到最小值, 这个码完全没有纠错能力. 反过来, 如果 达到最大值 , 则码字个数 (习题), 即 . 在 1.3 节将要给出纠错码 3 个基本参数和 之间的一些相互制约的不等式关系, 叫做纠错码的界.如果一个纠错码 的参数使这些不等式变成为等式, 那么 就是某种意义上的好的纠错码. 构做好的纠错码是第 1 个重要问题. 举一个例子.
例 6 考虑以下 16 个码字构成的二元码 (码长 , 码字个数 , 信息位数 ):
可以验证这个码的最小距离为 . 从而此二元码为 . 例 1.1.2 中给出的重复码, 其参数为 . 二者的纠错能力一样, 但是这里的效率 比重复码的效率 要好. 所以例 1.2.6 中的纠错码比例 1.1.2 中的重复码要好. 事实上,在第 2 章中可以知道例 1.2.6 中的码是一种性能最好的纠错码, 构造好的纠错码是很有学问的.
一个性能良好的纠错码要在实际中被采用, 还需要纠错编码和纠错译码能够在工程上容易实现. 否则, 即使在数学上构造了好的纠错码也不被采用. 一般来说, 纠错编码是容易实现的 (关于线性码的纠错编码见 2.1 节), 而纠错译码常常比较困难. 当信道出错位数不超过 时,定理 1.2.5 给出了一个译码算法. 这个方法是说: 收方收到 之后, 要计算 和所有 个码字之间的汉明距离, 然后找到和 距离最近的一个码字 , 把 纠正成 .收到每个 都要这样做一遍, 这是很花时间的.对于工程师来说, 这个译码算法不能令人满意.因此, 寻求好的译码算法也是纠错码理论的一个重要课题. 从历史上看, 在 1960 年前后人们用抽象代数方法构造了一种好码, 叫 BCH 码,这种码的最小距离可以很大, 即纠错能力很强.不久, 美国数学家 Berlekamp 和瑞士数学家 Massey 各自独立地给出 码好的译码算法, 所以 码在工程上一直应用至今. 在 1980 年前后, 人们用更高深的数学 (代数几何)构造出来性能比 BCH 码还要好的纠错码, 叫代数几何码. 但是到目前仍没有完全满意的译码算法, 所以代数几何码至今还没有到完全实用的阶段.
构造好的纠错码和发现好的译码算法, 都需要采用更多的数学工具. 这就需要考虑纠错码 不仅是 的一个子集合, 而要赋予它更多的代数性质, 在第 2 章考虑 为 的向量子空间,从而可以使用线性代数工具. 将向读者展示如何用线性代数的基本知识构造好的纠错码,并且用简单的矩阵计算给出好的纠错编码和译码算法.
习题
能否构造一个参数为 的二元码? (提示:将例 1.2.6 中的码 的每个码字适当地加上 1 位).
设 和 分别是参数为 和 的 元码, 将 中每个码字和 中每个码字相连而得到新的 元码
证明此码的参数为 .
关于码的等价
设 是 元码 . 对于集合 , 的每个置换 , 把 中每个码字 变成 , 从而给出一个新的码 . 证明纠错码 具有和 同样的参数 , 称 为 的码字 个分量进行了置换 .
设 是 元码 . 对于 中任意一个固定向量 , 考虑新的子集合
证明纠错码 和 有同样的参数 . 叫做码 的平移.
设 是一一映射, 并且 (从而当 时, ). 设 是 元码 , 将 中每个码字 , 变成 . 证明新的码 和 有同样的参数 . 叫做对 中码字作元素置换.
注: 两个 元码 和 叫做等价的, 是指通过有限次的前 3 种变换 (即分量置换、平移或元素置换) 可以将 变成 . 由习题 3〜5 可知, 等价的纠错码具有相同的参数 或 ().
证明存在参数为 的二元码, 并且所有这种参数的二元码均彼此等价.
证明:我们构造这个二元码 。由习题 3 和 4,可不妨设 的前两个码字为
考察第三个码字的最后两个位置的可能情况,由于第三个码字的前三个位置无论如何选取,其与第一个码字和第二个码字的前三个位置的汉明距离之和总是 3.由此可知, 一定具有如下形式:
再考虑第三个码字和第四个码字间的汉明距离,可知他们的前三个对应位置都是不同的,所以在码的等价的意义下, 只有一种可能的形式:
经验证, 确实具有参数 。
如果 元纠错码 满足 , 证明 (即码字最多有 个).
证明:若有 个码字,观测每个码字的第一个位置,由于是 元域,由鸽笼原理必有两个码字的第一位置是相同的,此时这两个码字的汉明距离严格小于 ,矛盾。取等容易构造验证。
对于 中 3 个向量 , 试问何时
解:等价于问何时 ,显然当且仅当向量 和 的非零分量所在位置不重合时取等。回到原问题即 和 不能同时发生,即 .
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!