我正在阅读有关错误检测的内容,偶然发现了一个我不太理解的声明。声明说“对于 ak 位字符串,我们需要 lg k 奇偶校验位来检测 2 位错误”。其中 lg 是以 2 为底的日志
我不太明白为什么这是真的,是否有任何正式的推导可以证实这一点。
这本书的名字是加拉赫格的数据网络。
我并不怀疑这本书所说的,但我只是好奇地看到了一个推导。
谢谢,钱德
我正在阅读有关错误检测的内容,偶然发现了一个我不太理解的声明。声明说“对于 ak 位字符串,我们需要 lg k 奇偶校验位来检测 2 位错误”。其中 lg 是以 2 为底的日志
我不太明白为什么这是真的,是否有任何正式的推导可以证实这一点。
这本书的名字是加拉赫格的数据网络。
我并不怀疑这本书所说的,但我只是好奇地看到了一个推导。
谢谢,钱德
当接收端重新计算奇偶校验位,并将重新计算的奇偶校验位与接收到的奇偶校验位进行比较时,差值称为校正子。当没有错误时,综合症为零。
In other words, syndrome = recalculated_parity XOR recieved_parity.
证明需要 n 个奇偶校验位来检测 2^n 位有效载荷数据位帧中的 2 位错误:
当整帧只有1个错误时,接收端重新计算奇偶校验位时,有两种情况:
当整个帧中恰好有 2 个错误时,生成的校正子是每个单独错误引起的校正子的 XOR。当接收端重新计算奇偶校验位时,有3种情况:
如果假设存在一些有效载荷位,因此翻转它会产生一些校正子 S,并且存在任何其他有效载荷位会产生完全相同的校正子 S,那么命中这两个位的两位错误将是不可检测的。换句话说,两位错误会产生S xor S == zero
. 换句话说,每个奇偶校验要么是情况(a),要么是情况(b),两者都不能检测到这样的错误。那会很糟糕。
因此,为了检测帧中每一个可能的两位错误,我们必须设计错误检测代码,使得每个单位错误必须产生不同的校正子。换句话说,对于帧中两个错误位的每种可能情况,必须至少有一个类型为 (c) 的奇偶校验位。
使用 n 个奇偶校验位给出 n 个校正子位。对于 n 个校正子位,最多有 2^n 个可能的不同校正子。因此,为了确保帧中的每一位(当它是唯一错误时)给出不同的校正子,我们必须在帧中最多有 2^n 位。
我敢打赌,如果你在https://math.stackexchange.com/上发布这个问题,你会得到一个更短、更优雅的证明 :-)。