纠错算法

更新时间:2024-05-07 22:14

纠错算法(Error correction algorithm)是建立在概率统计的基础上的:出现2个差错的概率远小于出现1个差错的概率,而出现3个差错的概率又远小于出现2个差错的概率。从而有理由认为:当接收到的代码是一个非法的代码时,它的正确代码应该是在逻辑空间中离它最近的有效代码。

概念

各有效编码之间的间距必须等于2才能具有检出一个差错的能力,这时如果发生两个差错,就会将一个有效编码变成另一个有效编码,从而造成不能发现的差错。如果将有效编码之间的最小码距加大为3,在发生一个差错时形成的代码离各有效代码的距离就不相等,我们就可以将这个出错的代码按离得最近的有效代码来看待,从而具有纠正一个差错的能力。

工作原理

汉明码

如果某种编码的合法代码之间的最小码距为1(所有的顺序编码都是如此),显然没有检错能力,更没有纠错能力。要想使得其具有纠错能力,必须进行改造,或者按某种纠错码格式重新编码,或者在原编码的基础上附加一部分代码,使其满足纠错码的条件。后一种方法比较方便,只是在发送时临时附加一部分代码,接收端利用它进行纠错处理后就舍弃,使原代码部分维持不变,汉明码就是这一类型的纠错码。

检二纠一码

包含4位有效信息的汉明码只能发现并纠正一个差错,如果出现两个差错,就会被它强行“纠正”成另外一个合法代码,造成不被发现的错误。例如发方将十六进制数6按7位汉明码66H发出,在接收过程中如果出现两个差错而变成60H,经纠错处理使得到68H,还原后就成为十六进制数8,这就产生了错误。能否进一步提高编码的性能,使它在出现两个差错时能够及时发现而不乱加纠正呢?根据检错理论,只要将有效编码之前的最小码距加大到4就可以达到这个目的,这就是“检二纠一码”。

7位汉明码在实际使用中是用1字节来表示的,如果把浪费了的1位也利用起来,无疑会进一步提供抗干扰性能。

要想在不加大码距的前提下,纠正连续多位差错,提供抵抗突发干扰的能力,方法就是将编码后的汉明码重新进行组织排列。以16位的汉明码为例,把11字节的数据编码为16字节的汉明码后再按高低字节分成两组。把每组字节8个汉明码的第1位分别取出,组成1字节;然后再把这8字节吗的第2位取出,组成第2字节;依此类推,将这组8字节汉明码处理完毕,得到新的8字节编码。只要在纠错前把受干扰的编码恢复原来正常的排列顺序,就可通过计算校验码完成差错的定位及纠错。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}