纠错码上限

时间:2009-11-04 12:57:51

标签: information-theory error-correction

如果我想发送一个d位数据包并添加另一个r位用于纠错码(d> r)
我能找到多少错误并最多纠正?

2 个答案:

答案 0 :(得分:2)

您有2 ^ d种不同类型的长度为d位的数据包要发送。将r位添加到它们使它们成为长度为d + r的代码字,因此现在您可以发送2 ^ d个可能的代码字。接收器可以获得2 ^(d + r)个不同的接收字(具有可能错误的码字)。那么问题就是,你如何将这些2 ^(d + r)个接收的字映射到2 ^ d码字?

这归结为代码的minimum distance。也就是说,对于每对码字,找到它们不同的位数,然后取这些值中的最小值。

假设您的最小距离为3.您收到了一个字,并且您注意到它不是代码字之一。也就是说,有一个错误。因此,由于缺少更好的解码算法,您可以翻转第一位,看看它是否是一个代码字。如果不是你翻转它并翻转下一个。最终,你会得到一个代码字。由于所有代码字在3个位置上不同,因此您知道此代码字与接收字“最接近”,因为您必须在接收字中翻转2位才能获得另一个代码字。如果你没有得到一次只翻一个码的代码字,你就无法弄清楚错误的位置,因为你可以通过翻转两位来获得多个代码字,但是你知道至少有两个错误。

这导致一般原则,即对于最小距离md,您可以检测md-1错误并纠正楼层((md-1)/ 2)错误。计算最小距离取决于生成代码字的详细信息,也称为代码。您可以使用各种界限来计算基于d和(d + r)的md的上限。

保罗提到了汉明码,这是一个很好的例子。它实现了Hamming bound。对于(7,4)汉明码,你有4位消息和7位码字,你达到最小距离3.显然*,你永远不会得到一个大于你添加的位数的最小距离所以这是你能做的最好的事情。尽管如此,不要太习惯。汉明码是非平凡perfect code的少数几个例子之一,其中大多数的最小距离小于你添加的位数。

*这不是很明显,但我很确定这对于非平凡的纠错码是正确的。添加一个奇偶校验位可使您最小距离为2,从而可以检测到错误。由{000,111}组成的代码通过仅添加2位使得最小距离为3,但这是微不足道的。

答案 1 :(得分:0)

您应该阅读维基百科页面:

http://en.wikipedia.org/wiki/Error_detection_and_correction

听起来你特别想要汉明码:

http://en.wikipedia.org/wiki/Hamming_code#General_algorithm

使用该方案,您可以从链接表中查找一些示例值。