如何计算CRC码的汉明距离

How to Calculate Hamming Distance of CRC code

我的研究生课程教授给了我们一个任务,计算他在幻灯片中演示的 CRC 方法的汉明距离

他向我们展示了 CRC 协议如何捕获所有单比特、双比特、奇数比特错误、突发错误 2 <= k <= n、n+1 的突发错误,其中余数为 0 和消息被错误地接受为 1/2^(n-1),因为第一位和最后一位总是固定为 1,最后大于 n+1 的错误突发,余数为 0 的概率为 1/2^n

到目前为止,这是我对他的两部分问题的回答:

问题 5

a) 考虑带有 p、q 和附加 r 位的奇偶校验位协议。这个协议的汉明距离是多少?简要说明原因

我们知道 Hamm(code) >= x + 1。使用 p 的 q 和 r 的奇偶校验位协议为我们提供了 3 位错误检测能力。因此 x = 3。这意味着该协议的汉明距离 >= x + 1 = 3 + 1 = 4.

b) 假设我们有一个 CRC 协议,它满足我们在幻灯片中描述的所有理想属性。这个协议的汉明距离是多少?简要说明原因。

如上所述,代码的汉明距离为 x + 1,其中 x 是 x 位错误检测能力。如果我们的 CRC 协议满足我们在幻灯片中讨论的所有理想属性,即: 1)所有单比特错误 2)所有双位错误 3)全奇数位错误 4) k比特的错误突发,2 <= k <= n

如果我们使用这些因素,我们可以看到 CRC 协议满足所有错误突发,最多包括 2 <= k <= n 个突发。这意味着 Hamm(Code) >= x+1 = (n-2) + 1 = n-1.

c) 对于a)和b),这些协议是否可以用于纠错,如果可以,它们可以纠正多少位? (即,他们可以执行 x 位校正吗?如果可以,x 是什么?)解释你是如何达到这个值的。

对于一个) 因为我们知道所讨论的奇偶校验位协议可以检测所有 3 个或更少的位错误,所以 x = 3。我们还知道,为了执行 x 位校正: Hamm(代码) >= 2x + 1 = 2(3) + 1 = 7,


。我不确定这是否正确

但是对于b)部分,我对CRC协议的纠错感到困惑。我对汉明修正的回答是 Hamm(code) >= 2x+1 <= 2(n-1)+1 = 2n - 2 + 1 = 2n - 1 我什至不确定这是否正确,或者我如何确定它可以纠正的位数。

实际上我最终发现了我大部分知识不足的地方,但仍然不确定我对 a) 和 b) 的回答是否正确。有人可以告诉我我是否在正确的轨道上吗?我不是在寻找 "this is the answer"。如果我是正确的,很高兴听到是的,但如果不是简单的指导,将非常非常感谢。

对于一个) 因为我们知道所讨论的奇偶校验位协议可以检测所有 3 个或更少的位错误,所以 x = 3 因为 Hamm(code) >= 4。我们还知道,为了执行 x 位校正: Hamm(code) >= 2x + 1。因此我们只能检测单个比特错误,因为 2(1) + 1 = 3。任何更多都会大于 4。

对于 b) 我们知道 CRC 协议有 Hamm(code) >= n+2 where x = n+1。为了使 Hamm(code) >= 2x+1,x <= floor(n/2)。然后该协议可以使用纠错。