三维奇偶校验码的算法?

时间:2010-09-30 15:59:51

标签: c# algorithm

这解释了它,但仅适用于2个维度:http://en.wikipedia.org/wiki/Multidimensional_parity-check_code

虽然对于二维来说相当容易,但是如何为3维或更多维度编码呢?

谢谢。

2 个答案:

答案 0 :(得分:3)

正如维基百科文章所述, d 维度的多维奇偶校验可以纠正 d / 2错误。因此,三维奇偶校验检查与二维奇偶校验相比没有明显的优势。 (文章不清楚如何处理奇怪的维度,所以有可能有一些优势,但我找到的唯一一篇文章是支付墙,我没有时间自己推导它。)

无论如何,这是一个四维奇偶校验的图形示例,用于1×1×1×1阵列的平凡情况,其次是更有趣的阵列大小为2×2×2×2,3×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)。
℃。 1,5,9,3,3,7,1,5(模10)的总和 - 垂直尺寸。
d。总和为2,6,0,4,4,8,2,6(模10)。
即1,2,3,4,5,6,7,8(模10)的总和 - 不适合二维屏幕的尺寸;上面两个2×2块。
F。总和为9,0,1,2,3,4,5,6(模10);降低两个2×2块。
克。 1,5,9,3,2,6,0,4(模10)的总和 - 不适合二维屏幕的另一维度;留下两个2×2块。
小时。 3,7,1,5,4,8,2,6的总和(模10);右两个2×2块。

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
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
由于4×4×4×4阵列只有6.25%的扩展,所以我认为走得更远没有多大意义,但如果你想这样做,模式应该是明显的。

(我知道我迟到了。虽然其他人提出同样的问题,但我希望这很有用。)

答案 1 :(得分:1)

维基百科的2D示例将数字分配到多行,并计算每行和每列的奇偶校验。

3D版本会将数字分配到行,列和图层中(想到多个网格堆叠在一起,形成一个立方体)。然后你只需要计算图层组件的奇偶校验位就可以了。