如果我想发送一个d位数据包并添加另一个r位用于纠错码(d> r)
最多可以找到和纠正多少个错误?错误校正码上限
错误校正码上限
回答
你或许应该阅读维基百科页面上这样的:
http://en.wikipedia.org/wiki/Error_detection_and_correction
这听起来像你特别想要一个汉明码:
http://en.wikipedia.org/wiki/Hamming_code#General_algorithm
使用方案,你可以看一下来自链接表的一些示例值。
你有2^d个不同种类的你想发送的长度为d位的数据包。把你的r位加到它们中,使它们成为长度为d + r的码字,所以现在你有2^d个可能的码字可以发送。接收器可以得到2 ^(d + r)个不同的接收字(可能有错误的码字)。那么问题就变成了,你如何将2 ^(d + r)个接收到的字映射到2^d个码字?
这归结于代码的minimum distance。也就是说,对于每对码字,找出它们不同的位数,然后取这些值中的最小值。
假设您的最小距离为3.您收到一个单词,并且您注意到它不是代码字之一。也就是说,有一个错误。所以,对于缺乏更好的解码算法,你翻转第一位,看看它是否是一个码字。如果不是,则将其翻转并翻转下一个。最终,你会得到一个代码字。由于所有码字在3个位置上都不相同,因此您知道该码字与接收到的字“最接近”,因为您必须翻转接收字中的2个位才能到达另一个码字。如果你一次没有得到一个代码字翻转一个位,你不能找出错误的位置,因为你可以通过翻转两位来获得多个代码字,但是你知道至少有两个代码字错误。
这导致了一般原则,即对于最小距离md,您可以检测md-1错误并纠正floor((md-1)/ 2)错误。计算最小距离取决于您如何生成代码字的细节,也称为代码。根据d和(d + r),可以使用各种界限来确定md的上限。
保罗提到了汉明码,这是一个很好的例子。它达到Hamming bound。对于(7,4)汉明码,你有4位信息和7位码字,并且你的最小距离为3。显然*,你永远不会得到大于你正在添加的位数的最小距离所以这是你能做的最好的事情。不要太习惯于这个。汉明码是非重要的少数例子之一perfect code,其中大多数的最小距离小于您添加的位数。
*这不是很明显,但我非常确定这是非常重要的纠错码。添加一个奇偶校验位可使您获得至少两个距离,从而可以检测到错误。由{000111}组成的代码通过添加2位来获得最小距离为3,但这很简单。
- 1. 校正代码
- 2. 错误校验
- 3. 奇偶校验错误上缺少“126”
- 4. 限制错误代码
- 5. OpenCV上抖动校正的图像校正
- 6. Range.deserializeSelection校验和错误?
- 7. 错误执行校验
- 8. java的郎校验错误
- 9. 错误预校验类oauth.signpost.commonshttp.CommonsHttpOAuthConsumer
- 10. FTP上传权限错误
- 11. OCR号码格式校正和转换
- 12. jQuery的:链接事件 - 代码校正
- 13. 栅格步行算法代码校正
- 14. R:转换试验和错误校正自动化
- 15. 梯形校正错误 - 你不能更新人口的关系
- 16. SignalR/malloc错误 - 释放对象的校验和不正确?
- 17. 字段必须用型功能错误指定 - 梯形校正
- 18. Malloc错误不正确的校验和为释放的对象
- 19. Malloc错误:释放对象的校验和不正确
- 20. Installshield的错误:“vstor40_x86.exe的校验和不正确”
- 21. 红眼校正
- 22. 响应的极限错误代码
- 23. 限制校验器的角
- 24. 错误的TCP校验和计算Scapy
- 25. IO错误:CRC校验失败0xffca51ff = 0x3679ba0L
- 26. JAVA NullPointerException异常错误(学校项目)
- 27. C#串行rs232奇偶校验错误
- 28. 的ARToolKit校准结果保存错误
- 29. C#Indexoutofrange Arrays学校项目错误
- 30. 军刀EnhancedAirBookRS校验段0003错误
为什么downvote?这是正确的答案。 – 2009-11-09 23:40:46