Метод контрольных сумм

 

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

Пример:

Будем из входной последовательности символов брать по четыре информационных символа а1а2а3а4, дополнять их тремя контрольными символами а5а6а7 и получившееся семисимвольное слово посылать в канал. Контрольные символы будем подбирать так, чтобы были четными следующие суммы:

s1= а1 2 3 + a5,

s2= а1 2 4 + a6,

s3= а1 3 4 + a7.

 

В каждую сумму входит по оному контрольному символу, поэтому данное требование всегда выполнимо.

Благодаря «маленьким хитростям», предусмотренным при формировании контрольных сумм, проверка их четности на выходе канала позволяет однозначно установить, была ли допущена при передаче однократная ошибка и какой из разрядов был при этом искажен (ошибками большей кратности пренебрегаем).Действительно, если один из семи символов был искажен, то по крайней мере одна из сумм обязательно окажется нечетной, т.е. четность всех контрольных сумм s1, s2, s3 свидетельствует об отсутствии однократных ошибок. Далее, лишь одна сумма будет нечетной в том, (и только в том) случае, если искажен входящий в эту сумму один из трех контрольных символов (a5, a6 или a7). Нечетность двух сумм означает, что искажен тот из информационных символов а2, а3 или а4, который входи в обе эти суммы. Наконец, нечетность всех трех сумм означает, что неверно принят входящий во все суммы символ а1.

Итак, в данном примере метод контрольных сумм, увеличивая длину кода в 7/4=1,75 раза за счет введения избыточности, позволяет исправить любую однократную ошибку (но не ошибку большей кратности). Основываясь на этой идее, в принципе, можно построить коды, исправляющие все ошибки большей (но всегда ограниченной) кратности.