Алгоритм для 3-мерного кода проверки четности? - PullRequest
0 голосов
/ 30 сентября 2010

Это объясняет это, но только для двух измерений: http://en.wikipedia.org/wiki/Multidimensional_parity-check_code

Хотя для 2-мерного это довольно просто, как бы вы кодировали его для 3 или более измерений?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 октября 2013

Как говорится в статье в Википедии, многомерная проверка четности измерений 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<br>
9  0   1  2       0f
3  4   5  6<br>
4c 2d<br>
0g     6h

Примечания для массива 2 × 2 × 2 × 2:
a.Сумма 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) - вертикальное измерение.
д.Сумма 2, 6, 0, 4, 4, 8, 2, 6 (по модулю 10).
е.Сумма 1, 2, 3, 4, 5, 6, 7, 8 (по модулю 10) - размер, который не помещается на двухмерном экране;верхние два блока 2 × 2.
е.Сумма 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<br>
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<br>
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<br>
0 7 4<br>
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<br>
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<br>
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<br>
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<br>
8 2 6 0<br>
0        6        2        8
Поскольку массив 4 × 4 × 4 × 4 - это расширение только на 6,25%, я не вижу большого смысла идти дальше, но шаблон должен быть очевиден, если вы хотите это сделать.

(Я знаю, что опаздываю на вечеринку. Но я надеюсь, что это полезно, если кто-то другой задаст тот же вопрос.)

1 голос
/ 30 сентября 2010

Пример 2D из википедии распределяет цифры по нескольким строкам и вычисляет четность для каждой строки и столбца.

3D-версия будет распределять цифры по строкам, столбцам и слоям (представьте, что несколько сеток сложены друг на друга, образуя куб).Тогда вам просто нужно вычислить биты четности для компонента слоя, и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...