Reed-Solomon 错误算法是否仅在输入数据部分发生错误时才允许更正?

Does Reed-Solomon Error algorithm allow correction only if error occur on input data part?

Reed-Solomon 算法正在向输入添加额外的数据,因此可以将此类损坏输入的潜在错误(特别是 size/quantity)纠正回原始状态。正确的?该算法是否也保护不属于输入但被算法使用的此类添加数据?如果不是,如果错误发生在这样的非输入数据部分会怎样?

一个重要的方面是 Reed-Solomon (RS) 码是循环的:码字集通过循环移位是稳定的。

结果是代码字的特定部分没有受到更多或更少的保护。

RS码的纠错能力等于t = (n-k)/2,其中n为码长(一般以字节表示),k为信息部分长度。

如果错误总数(两部分)小于t,RS解码器将能够纠正错误(更准确地说,t 一般情况下的错误字节)。如果它更高,则无法纠正错误(但可以检测到,另一个故事)。

错误的放置,无论是信息部分还是附加部分,都不会影响纠错能力。

编辑:我提到的规则 t = (n-k)/2 对 Reed-Solomon 代码有效。此规则对于 BCH 代码通常不正确:t <= (n-k)/2。然而,关于你的问题,这并没有改变答案:这些代码族有一个给定的容量校正,对应于码字之间的最小距离,解码器可以校正 t 错误, 无论代码字中错误的位置如何

只要添加的数据只有一半或更少的错误,那么只在添加的数据中的错误就可以被纠正。


加上附加数据,数据+附加数据构成了所谓的码字,符合码字规则的。请注意,Reed Solomon 代码有两种基本类型,"original view" 和 "BCH view"。什么构成有效代码字取决于所使用的 Reed Solomon 代码类型。 Link 到对此进行解释的 Wiki 文章:

https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction


对于只擦除代码,所有错误的位置都是通过其他方式确定的,在这种情况下,即使已知所有附加数据都是错误的,也可以更正(或重新生成)。