Коды проверки горизонтальной и вертикальной четности - PullRequest
1 голос
/ 17 октября 2010

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

Я не понял, почему это правда.Я могу видеть их в примерах, но я действительно не могу придумать никаких формальных / интуитивных доказательств того же.

Любая помощь / подсказки будут оценены.

Спасибо, Чандер

Ответы [ 2 ]

1 голос
/ 17 октября 2010

Это потому, что каждый неправильный бит распространяет четность либо по горизонтали, либо по вертикали.

подумайте о том, чтобы ваша матрица битов:

A B C D
E F G H
I J K L
M N O P

теперь некоторые из этих битов передаются неправильно,таким образом, у вас есть в общей сложности y ошибок, которые лежат вокруг, но вы не знаете, где внутри матрицы.

Если вы идете по строкам (таким образом, вы вычисляете горизонтальную четность), вы будете уверены, что сумма каждой четности строк по модулю 2 будет 0, если у вас есть четное количество ошибок в этой строке, 1 в противном случае.Вы также будете уверены в том, что рассматриваете все из них, поскольку выполняете эту работу для каждой строки.

Наконец, если вы предполагаете исправить бит из строки и изменить другой в другом, последнийрезультат не изменится, так как вы в основном удаляете 1 из строк, чтобы добавить его в другом месте.

Затем подумайте о том, чтобы сделать это по столбцам, в результате вы получите точно такое же поведение, единственное отличие состоит в том, что ошибки могутраспределяться по-другому, но сложение вертикальной четности по модулю 2 будет учитывать те же соображения.Поскольку общее количество ошибок одинаково, оно будет четным или нечетным числом для строк и столбцов.

1 голос
/ 17 октября 2010

Каждая строка и столбец является суммой по модулю 2. И результат является суммой всех чисел мод 2. Не имеет значения, как вы считаете.

Правило:
((мод с) + (b mod c)) mod c == (a + b) mod c

...