Информатика
1.5.4. Вычислимые функции, полнота формализации понятия вычислимости, универсальная вычислимая функция Кодирование с исправлением ошибок
Коды
Самоконтролирующиеся коды – это коды, которые позволяют обнаружить наличие ошибок.
Блочные коды – это коды, в которых информация передается по частям, блокам одинаковой длины.
Самокорректирующиеся коды – это коды, позволяющие обнаружить непосредственное место ошибки.
Код Хэмминга – самоконтролирующийся и самокорректирующийся код. В соответствии с ним к исходному сообщению добавляют контрольные биты, каждый из которых проверяет наличие ошибки в определенной группе битов сообщения.
Пронумеруем биты в результирующем сообщении. Контрольные биты размещают в нем на позициях, чьи номера являются степенями 2; остальные позиции занимают биты исходного сообщения. Рассмотрим номера всех позиций в двоичной системе счисления. Группы проверок организуют так: в первой группе – все позиции с номерами, в двоичной записи которых в младшем бите стоит 1; во второй группе – все позиции с номерами, в записи которых во втором по старшинству бите стоит 1; в третьей – если у номера в третьем по старшинству бите 1 и т.д. Для каждой группы заполним соответствующий ей проверочный бит, дополняющий сумму единиц в группе битов до четного числа.
Посмотрим, сколько же проверяющих разрядов понадобится. Пусть результирующее сообщение длиной n бит состоит из m информационных и k проверочных бит. Тогда k должно быть равно длине двоичной записи максимального номера последовательности:
\(k={{\log }_{2}}(n+1)\)
Количество m информационных бит определяется так:
\(k={{\log }_{2}}(m+k+1)\Leftrightarrow m+k+1={{2}^{k}}\Leftrightarrow m={{2}^{k}}-k-1\)
Таблица соответствия информационных и контрольных битов
k | 2 | 3 | 4 | 5 | 6 |
m | 1 | 2-4 | 5-11 | 12-26 | 27-57 |
Допустим, при передаче сообщения произошла ошибка с номером x. Достаточно узнать, в каких разрядах двоичного разложения x стоят единицы, чтобы получить весь номер x. Вычислим для принятого сообщения контрольные биты и выясним, какие из них не сходятся с полученными. Допустим, не сходится контрольный бит, отвечающий за группу битов, номера которых содержат единицу, например, в 4-м разряде. Значит, в числе x в 4-м разряде единица. Таким образом, можно восстановить весь номер x.
Другие материалы по данной теме
Определение
Самокорректирующиеся коды