c# - 3维奇偶校验码的算法?

标签 c# algorithm

这解释了它,但仅适用于 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
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% 的扩展,我看不出比这更进一步的意义,但如果你想这样做,模式应该很明显。

(我知道我迟到了。但我希望这对其他人问同样的问题有用。)

关于c# - 3维奇偶校验码的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832451/

相关文章:

arrays - 查找数组中的多数元素

在手中找到街道和同类的算法

c++ - 试图解析从输入文件中读取的一行

c# - 如何使用 C# 读取此 json 字符串?

c# - 我可以指定默认的 "using"由 resharper 添加吗?

javascript - 我无法转到 wwwroot ASP.NET 和 React.js 上的页面

python - 获取 3d 列表中唯一元素的最低索引的高效算法

c++ - 在堆栈中执行 POP 时下溢的异常处理

javascript - 使用 MomentJS 从 JavaScript 发布到 C# 时出现日期解析问题

c# - DataGridView/数据集更新