这解释了它,但仅适用于 2 个维度:http://en.wikipedia.org/wiki/Multidimensional_parity-check_code
虽然对于 2 维来说相当容易,但您如何为 3 维或更多维编码?
谢谢。
最佳答案
正如维基百科文章所说,d 维的多维奇偶校验可以纠正 d/2 错误。因此,三维奇偶校验与二维奇偶校验相比没有明显的优势。 (这篇文章不清楚如何处理奇数维度,所以可能有一些优势,但我找到的唯一一篇文章是在付费墙后面,我没有时间自己推导。)
无论如何,这是一个 1×1×1×1 数组的简单情况的四维奇偶校验的图形示例,接下来是更有趣的大小为 2×2×2×2、3× 的数组情况3×3×3 和 4×4×4×4。我用连续的十进制数字和相应的奇偶校验值填充了每个数组。
1×1×1×1 (5/1 original size; 5× expansion) 1 1 1 1 1
此示例后的字母“a”到“h”是解释如何计算每个奇偶校验码的脚注。
2×2×2×2 (24/16 original size; 1.5× expansion) 1 2 3 4 2a 6e 5 6 7 8 4b
9 0 1 2 0f 3 4 5 6
4c 2d
0g 6h
2×2×2×2数组的注释:
一个。 1、2、3、4、9、0、1、2 的总和(模 10)——水平维度。
乙。 5、6、7、8、3、4、5、6 的和(模 10)。
c。 1、5、9、3、3、7、1、5 的总和(模 10)——垂直维度。
d。 2、6、0、4、4、8、2、6 的总和(模 10)。
即。 Sum of 1, 2, 3, 4, 5, 6, 7, 8 (modulo 10) -- 二维屏幕放不下的维度;上面两个 2×2 block 。
9、0、1、2、3、4、5、6 的总和(模 10);降低两个 2×2 block 。
克。 1, 5, 9, 3, 2, 6, 0, 4 (modulo 10) 的总和——二维屏幕上放不下的另一个维度;留下两个 2×2 的 block 。
3、7、1、5、4、8、2、6 的和(模 10);右边两个 2×2 block 。
3×3×3×3 (93/81 original size; 1.148× expansion) 1 2 3 4 5 6 7 8 9 4 8 0 1 2 3 4 5 6 7 8 7 9 0 1 2 3 4 5 6 7 0
8 9 0 1 2 3 4 5 6 7 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
5 6 7 8 9 0 1 2 3 6 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
0 7 4
6 7 8
4×4×4×4 (272/256 original size; 1.0625× expansion) 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 8 0 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 6 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0由于 4×4×4×4 阵列只有 6.25% 的扩展,我看不出比这更进一步的意义,但如果你想这样做,模式应该很明显。
5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 6 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 2 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
8 2 6 0
0 6 2 8
(我知道我迟到了。但我希望这对其他人问同样的问题有用。)
关于c# - 3维奇偶校验码的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832451/