R.W.汉明于1950年首先给出可以纠正一个独立错误的线性分组码──汉明码。差不多与此同时E.戈雷给出一种可以纠正三个错误的完备码。完备码虽然十分罕见,但有较大实用意义。
1954年D.E.莫勒提出一种能纠正多个错误的码;I.S.里德则立即给出它的译码方法,用的是择多判决法,这种码常称为RM码。
1957年,E.普勒齐引入了循环码的概念。
1959~1960年出现了BCH码,引进有限域的概念,解决了循环码的构造和性能估计等基本问题。后来成为线性分组码中最重要的一类码。它能纠正多个错误,且在实用范围内接近信道编码定理所指出的误码率值。但当 n增大时,其误码率不能呈指数下降。BCH码的译码问题是W.W.彼得森解决的;钱天闻则提供了一种系统地搜索根的方法。
1967年,E.R.伯利坎普提出一种迭代算法,大大简化了译码,使纠错码趋于实用。
1970年,戈帕提出一种线性分组码的构造方法,原则上它可以达到吉尔伯特限,实现了理论上预期的目标。但至今仍未解决如何具体构造这种码的问题。
1955年由Elias提出了卷积码,也称为图格码卷积码具有动态图格结构,其主要的问题为解码。
1993年,法国的C.Berrou等人提出了一种新型的的纠错码——Turbo码。它采用一种并行级联的方法实现长码的编码,同时构造了相应的解码器来完成这种长码的解码。
1962年,Gallager提出了低密度分组校验码(LDPC)。由于当时计算机水平发展有限,硬件实现困难,直到1995年,Mackay和Neal重新发现LDPC码和Turbo码有着相似的优秀性能,而且在某些方面已经超过了Turbo码,随后LDPC码得到了大家的关注,称为新的研究热点。
随着计算机水平的发展,量子通信和量子计算的概念被提了出来,相应地对量子纠错码的研究就必不可少了。
1.2 本文的内容介绍
由于纠错码理论体系十分庞大,本文无法做到面面俱到,故仅基于本人对于纠错码的学习进行总结,其主要目的为通过本文的介绍让读者对纠错码有一定的了解。通过程序的实现,让读者对纠错码的作用有一个直观的感受。
本文第二章将会介绍一些纠错码理论中涉及到的基本概念以及一些数学基础知识。第三章将会主要介绍分组码中各种的编码理论以及译码步骤。另外介绍了一部分卷积码的知识。第四章将会介绍一些纠错码的应用领域。第五章主要介绍两种分组的程序实现( 和 )。
2 预备知识
2.1 名词解释
2.1.1 码
一个在 域上长度为n、码字个数为M的码集 是集合 的一个子集,其中,码集 中的每个元素称为码字
2.1.2 汉明重量和汉明距离文献综述
一个码字 的汉明重量记为 ,它定义为该码字中非零符号的个数。
两个码字 和 间可定义汉明距离,记为 ,定义为两个码字间不同符号的个数。
2.1.3 码的最小距离
一个码 的最小距离 定义为: ,即码 中任意两个码字间距离的最小值。
2.1.4 编码效率和编码速率
设编码序列长度与其包含的信息位数分别为 和 ,则编码效率定义为: 。
域上的码集 的编码速率定义为 。简称码率,单位为比特/码元。R越大,则每个码元所携带的信息量越大,编码效率越高。
2.1.5 随机错误、突发错误、混合错误
随机错误:错误的出现是随机的。各个码元是否发生错误是相互独立的,通常不是成片地出现错误。这种情况一般由信道的加性随机噪声引起的。
突发错误:错误的出现是一连串的。通常在一个突发错误持续时间内,开头和末尾的码元总是错的,中间的某些码元可能错也可能对,但错误的码元相对较多。这种情况如移动通信中的信号在某一时间内发生衰落,造成一串差错。