Обнаружение ошибки в коде Хэмминга.
Пусть по каналу связи передавался код , на выходе канала связи было принято слово , т.о. произошло искажение s-го разряда. Заметим, что s может быть номером как информационного, так и контрольного разряда. Пусть – запись числа S в двоичной системе исчисления . Сформируем число , двоичные разряды которого вычисляются следующим образом:
есть сумма по модулю 2 содержимого всех разрядов кода на выходе канала связи с номерами, принадлежащими первой последовательности, включая ее первый элемент. При подсчете аналогичное суммирование ведется по 2,…,k-й последовательности.
Теорема. Число является номером искаженного разряда, т.е. .
Доказательство. Покажем, что числа равны, потому что поразрядно равны их двоичные представления, т.е. для всех .
Пусть . Т.к. в первую последовательность включаются числа, имеющие в двоичном представлении первый разряд, равный 1, то это означает, что S не принадлежит первой последовательности. Это означает также, что все разряды кода с номерами, принадлежащими первой последовательности, не искажены, поэтому получим
, т.к. для разрядов Хэмминга выполняется (2.8). Таким образом, из того, что следует . Пусть теперь , тогда номер S искаженного разряда принадлежит первой последовательности. Т.к. искаженный разряд кода есть и , получим:
Получим, что из того, что следует . Тогда .
Аналогично доказывается, что .
Замечание. Если при передаче кода нет искажений, то . После определения номера S в том случае, когда , производится коррекция ошибки, т.е. заменяется на .
Пример 3. Пусть на вход канала связи поступил код и в нем в результате помех был искажен 6-ой разряд, т.е. на выходе канала связи был получен код . Убедимся, что по коду можно вычислить номер искаженного разряда. Поскольку , то согласно неравенству (2.6) находим , тогда . Вычислим
Следовательно, в двоичной системе счисления, т.е. . Т.к. , то 6 – номер искаженного разряда. После этого, заменяя в 6-ом разряде 0 на 1, получим код .
Пример 4. Пусть на выходе канала связи получен код . Определим, было ли искажение при передаче, и если да, то в каком разряде. Т.к. , то из (2.6) получаем . Тогда
Таким образом, , т.е. код был передан без искажений.
Декодирование.
Декодирование состоит в построении исходного сообщения по коду . Для этого из кода извлекается содержимое информационных разрядов.
Пример 5. Для кода информационными являются разряды 3, 5, 6, 7, остальные – контрольные. Отсюда .
Пример 6. Для кода информационные разряды – 3, 5, 6, 7, 9. Отсюда .