CRC 多项式的原始性

Primitivity of CRC polynomials

我在网上找到了以下关于 CRC 性能的信息:

Primitive polynomial. This has optimal length for HD=3, and good HD=2 performance above that length.

我不明白。 HD=3 的最佳长度是可以理解的;但良好的 HD=2 性能意味着什么?据我所知,所有 CRC 在 HD=2 时都具有无限数据长度。

那么本原多项式的"good HD=2 performance above that length"是什么意思?

... has optimal length for HD=3, and good HD=2 performance above that length.

该声明措辞不当。我在这个网页的底部 "Notation:"

下找到了它

https://users.ece.cmu.edu/~koopman/crc

在我找到的这篇文章和其他文章中,缩写 "HD" 表示 CRC 的最小汉明距离:对于 HD=k+1,则 CRC 可以检测消息中 k 位错误的任何模式达到一定长度(如表中所示)。正如您所说,"all CRCs have infinite data length at HD=2".

短语 "good HD=2 performance above that length" 的用法令人困惑。上面的网站链接到下面的网站,其中包含声明 "HD=2 lengths are always infinite, and so are always left out of this list."

https://users.ece.cmu.edu/~koopman/crc/notes.html


Wiki hamming distance解释误码检测与汉明距离的关系:"a code C is said to be k error detecting if, and only if, the minimum Hamming distance between any two of its codewords is at least k+1" 正如您所说,"all CRCs have infinite data length at HD=2",这意味着无论消息长度如何,所有 CRC 都可以检测到任何一位错误。

至于"optimal length for HD=3",这意味着能够检测到2位错误,考虑一个基于CRC多项式的linear feedback shift register,用任何非零值初始化,如果循环寄存器足够多次,它最终会返回初始值。对于基于 n+1 位原始多项式的 n 位 CRC,寄存器将在重复之前循环遍历所有 2^n - 1 个非零值。消息的最大长度(即数据长度加上 CRC 的长度)不会发生检测 2 位错误的失败是 2^n - 1。对于长度为 2^n 或更大的消息,则对于any "i",如果bit[0+i] 和bit[(2^n)-1+i] 有错误,原始CRC 将无法检测到2 位错误。如果 CRC 多项式不是原始的,则 failproof 2 错误位检测的最大长度将减少,而不是 "optimal".

对于基于任何CRC多项式的线性反馈移位寄存器,初始化为任何非零值,无论它循环多少次,它都不会包含零值。这是解释为什么 "all CRCs have infinite data length at HD=2"(能够检测单位错误)的一种方法。

作者说:"Generally the primitive polynomials tend to have pretty good (i.e., low) weights at HD=2 compared to many other polynomials. It has been a while since I looked, but I think in all cases right above the HD=2 break point the lowest weight polynomial was always primitive."

对于某些算法实现,低权重可能会提供更快的计算。