什么是汉明距离,我如何为 CRC 方案确定它?

Posted

技术标签:

【中文标题】什么是汉明距离,我如何为 CRC 方案确定它?【英文标题】:What is the hamming distance, and how do I determine it for a CRC scheme? 【发布时间】:2011-04-17 13:53:47 【问题描述】:

在学习计算机网络课程时,教授谈到了示例代码中两个有效代码字之间的汉明距离。我已经阅读了有关汉明距离的信息,从告诉 2 个字符串之间的差异距离的角度来看,这是有道理的。例如:

Code Word 1 = 10110 

发送方发送代码字 1,引入了一个错误,接收方收到 10100。所以您看到第 4 位已损坏。这将导致汉明距离为 1,因为:

Valid Code Word: 10110
Error Code Word: 10100
                 -----
XOR              00010

2 个字符串的 XOR 得到一个 1,因此汉明距离为 1。我理解到这一点。但随后教授问:

标准 CRC-16 位协议的汉明距离是多少? 标准 CRC-32 位协议的汉明距离是多少?

我有点困惑,想知道是否有人可以提供帮助。谢谢。

【问题讨论】:

【参考方案1】:

您现在可能已经弄清楚了,但他要求的很可能是 CRC 码无法检测到的最小误码数。答案取决于消息的宽度、多项式和长度。例如,最著名的 CRC-32 多项式 (0x1EDC6F41) 的汉明距离为 6 或更高,用于最多 5,275 位的消息(Castaglioni, Bräuer, Herrmann: Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits, IEEE Transactions on Communications,第 41 卷第 6 期,1993 年 6 月),这意味着它保证在 5,275 位或更少的单个消息中检测到多达 5 个翻转位。

顺便说一句,代码字包括校验和,所以你的例子不正确。

【讨论】:

关于最知名多项式的部分不正确。多项式 0x741B8CD7 的汉明距离 6 最多 16360 位,汉明距离 4 最多 114663 位。 [Philip Koopman,互联网应用的 32 位循环冗余码] @Řrřola 最好的办法可能就是参考:Koopman's website。它似乎是 CRC 性能最新的地方之一。

以上是关于什么是汉明距离,我如何为 CRC 方案确定它?的主要内容,如果未能解决你的问题,请参考以下文章

算法 - 计算汉明距离

汉明距离

汉明距离

计算汉明距离的索引访问

算法

数据库中的汉明距离/相似性搜索