КОД ХЕММИНГА

Пусть количество сообщений, которые тре­буется передавать абоненту, равно 16. Для их без избыточ­ного кодирования можно использовать двоичные слова дли­мы 4, но тогда код не будет корректировать ошибки. При использовании слов длины 5, как мы уже знаем, можно об­наружить, но не исправить любую одиночную ошибку. Впрочем, из дополнения 3 предыдущего параграфа вытекает, что если добавить 5 проверочных символов, то код сможет не только исправлять одиночные, но и обнаруживать двойные ошибки. Возникает вопрос: нельзя ли для этой цели обойтись меньшим количеством проверочных символов?

Вычислим сначала, каково минимальное число прове­рочных символов, необходимое для исправления любых одиночных ошибок. Нетрудно убедиться, что двух добавоч­ных символов для этого недостаточно (предлагаем читате­лю проверить это самостоятельно).

Попробуем обойтись тремя проверочными символами, т. е. будем использовать для кодирования сообщений двоич­ные словаclip_image002длины 7, Наша задача — опреде­лить, произошла ли ошибка, и если произошла, то в каком месте. Но это то же самое, что указать одно из восьми чисел от 0 до 7 (0 соответствует отсутствию ошибки).

Пусть требуется передать сообщение, кодируемое словом aia2a3a4. Добавим к этому слову три символа а5, ай, а7, определяемые равенствами (здесь и до конца параграфа все равенства берутся по модуле 2):

clip_image004

Если теперь нужно выяснить, допущена ли при передаче слова ада2а8а4С1бага7 одиночная ошибка в одном из симво­лов a4> ctf)l а7, то для этого достаточно вычислить сумму:

clip_image006

Ее значение, равное 1, соответствует ответу «да», значение О — ответу «нет» (почему?).

В случае «да» проверим, нет ли ошибки в символах ав, а , в случае «нет» — не содержится ли ошибка в символах а2, ая. В каждом из этих случаев ответ дает значение суммы:clip_image008

Г.слп, например, значения обеих сумм (2) и (3) равны 1, то ошибка содержится либо в а„, либо в а7. Всего имеется четыре комбинации значений сумм Si, s2; они приведены в следующей таблице:

Таблица 18

clip_image010

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

clip_image012

Итак, мы имеем три проверочных соотношения:

clip_image014

которые позволяют либо установить, что ошибки нет, либо однозначно указать ее место.

Отметим особо, что если произошла одиночная ошибка, то ее положение указывается числом с двоичной записью SjSaSe. Пусть, например, = I, Sa=0, S3=l. Согласно табли­це 18 ошибка допущена в четвертом или пятом разрядах; поскольку s3=l, она — в пятом разряде, ноclip_image016 как раз и есть двоичная запись числа 5.

Изученный здесь код — это код Хемминга длины 7 с четырьмя информационными символами.

В общем случае кодовые слова двоичного кода Хеммин­га, позволяющего исправить одиночную ошибку, имеют длину 2т—1 (т — натуральное). Для определения поло­жения ош ;бки тогда уже нужно т проверок, т. е. т прове- рочиых символов. Оставшиесяclip_image018символов явля­ются информационными. Проверки строятся по анг.-югип с рассмотренным случаем. Значения т проверок, как ч вы­ше, образуют номер положения ошибки.

Вернемся, однако, к вопросу, поставленному в начале этого параграфа. Добавим к кодовым словам кода Хеминга длины 7 еще один проверочный символ а0, а к провероч­ным соотношениям (5) еще одно (общую проверку на чет­ность):clip_image020

Новый код по-прежнему будет содержать 16 кодовых слог, потому что, как и раньше, символы аи а2, а3, а4 могут быть взяты какими угодно; по ним из соотношений (1) опреде­ляются символы а6, а6» аa из равенства (6) и символ а0. В случае одиночной ошибки добавленное соотношение (6) нарушается, а значения su s2, s3 образуют номер положения ошибки. Если же произошла двойная ошибка, то соотно­шение (6) будет выполнено, а хотя бы одно из равенств (5) нарушится (почему?). Это и позволяет обнаружить любую двойную ошибку. Итак, для исправления одиночных и об­наружения двойных ошибок к четырем информационным символам достаточно добавить четыре проверочных симво­ла. Можно показать, что обойтись меньшим числом прове­рочных символов невозможно.

Построенное множество кодовых словclip_image022 удовлетворяющих соотношениям (5) и (6),— пример рас­ширенного кода Хемминга (длины 8 с четырьмя информаци­онными символами).

Предлагаю ознакомиться с аналогичными статьями: