Код Хэмминга исправляет одну ошибку, т.е. относится к классу самокорректирующихся кодов. В алфавите записываются все сообщения в виде слов длины m. Эти сообщения кодируются двоичными наборами где длина кода, > m. Пусть Предположим, что при прохождении кодового слова через канал связи произошла одна ошибка, в таком случае код сообщения на выходе может иметь вид:
вариант.
Для того, чтобы дополнительных разрядов в коде хватало для кодировки варианта, необходимо, т.е. Выберём как наименьшее целое число, удовлетворяющее неравенству
Алгоритм кодирования. Пусть натуральное число , его двоичная запись. Построим последовательности:
П0 = все числа с
П1 = все числа с
П2 = все числа с
П3 = все числа с
… … … … … … … … … …
Пк-1 = все числа с
Члены набора у которых i Î{1, 2, 4, …, }, называют контрольными, а остальные – информационными. Слово кодируется словом так:
Затем определяются контрольные члены:
Обнаружение ошибки в кодах Хэмминга. Пусть при передаче кода произошла ошибка в S- м члене, т.е. на выходе принято слово и пусть запись S в двоичном исчислении. Рассмотрим число , где
|
|
Тогда В самом деле, если , то S не принадлежит первой последовательности и для имеем Если то S принадлежит последовательности П0
Следовательно, для обнаружения и исправления ошибки достаточно построить
Декодирование. Требуется по коду построить слово Для этого достаточно взять информационные члены в .
Пример 1. Закодировать по Хэммингу слово (111011100).
Решение. Заполнив информационные ячейки, получим??1?110?11100. Ответ: (0010110111100).
Пример 2. В коде была допущена одна ошибка: 0010100111100. Найти её.
Решение.