
- •1. Обзор теории информации. Разновидности кодеков
- •1.1 История теории информации
- •1.2 История кодирования информации
- •1.3 Передача информации: принципы, определения, особенности
- •1.4 Методы цифрового физического кодирования
- •1.5 Обзор существующих принципов построения кодеков и систем логического кодирования
- •2. Обнаружение и исправление ошибок в канале с шумом. Коды Хэмминга.
- •2.1 Математические основы обнаружения и исправления ошибок
- •2.2 Коды Хэмминга
- •2.3 Декодирование кода Хэмминга
2.2 Коды Хэмминга
Пусть количество сообщений, которые требуется передавать абоненту, равно 16. Для их безызбыточного кодирования можно использовать двоичные слова длины 4, но тогда код не будет корректировать ошибки. При использовании слов длины 5 можно обнаружить, но не исправить любую одиночную ошибку. Если добавить 5 проверочных символов, то код сможет не только исправлять одиночные, но и обнаруживать двойные ошибки. Возникает вопрос: нельзя ли для этой цели обойтись меньшим количеством проверочных символов?
Вычислим сначала, каково минимальное число проверочных символов, необходимое для исправления любых одиночных ошибок. Нетрудно убедиться, что двух добавочных символов для этого недостаточно.
Попробуем обойтись тремя проверочными символами, т. е. будем использовать для кодирования сообщений двоичные слова длины 7. Наша задача — определить, произошла ли ошибка, и если произошла, то в каком месте. Но это то же самое, что указать одно из восьми чисел от 0 до 7 (0 соответствует отсутствию ошибки).
Пусть требуется передать сообщение, кодируемое словом а1а2а3а4. Добавим к этому слову три символа а5, а6, а7, определяемые равенствами (по модулю 2):
а5=а2+а3+а4,
а6 = а1+а3+а4,
а7 = а1+а2+а4.
Если теперь нужно выяснить, допущена ли при передаче слова а1а2а3а4а5а6а7 одиночная ошибка в одном из символов а4, а5, а6, а7, то для этого достаточно вычислить сумму:
s1 = а4+а5+а6+а7.
Ее значение, равное 1, соответствует ответу «да», значение 0 — ответу «нет». В случае «да» проверим, нет ли ошибки в символах а6, а7, в случае «нет» — не содержится ли ошибка в символах а2, а3. В каждом из этих случаев ответ дает значение суммы:
s2 = а2+а3+а6+а7.
Если, например, значения обеих сумм равны 1, то ошибка содержится либо в a6, либо в а7. Всего имеется четыре комбинации значений сумм s1, s2. Наконец, в каждом из четырех случаев нужно выбрать одну из двух возможностей. Это позволит сделать значение суммы
s3=a1+a3+a5+a7.
Отметим особо, что если произошла одиночная ошибка, то ее положение указывается числом с двоичной записью s1s2s3. Пусть, например, s1=l, s2=0, s3=l. Тогда ошибка допущена в пятом разряде; но 101 как раз и есть двоичная запись числа 5.
Рассмотренный здесь код — это код Хемминга длины 7 с четырьмя информационными символами . В общем случае кодовые слова двоичного кода Хемминга, позволяющего исправить одиночную ошибку, имеют длину 2m—1 (m — натуральное). Для определения положения ошибки тогда уже нужно m проверочных символов. Оставшиеся 2m—1—m символов являются информационными. Проверки строятся по аналогии с рассмотренным случаем. Значения m проверок, как и выше, образуют номер положения ошибки. Вернемся к вопросу, поставленному в начале данного подраздела. Добавим к кодовым словам кода Хемминга длины 7 еще один проверочный символ а0, а к проверочным соотношениям еще одно (общую проверку на четность). Для исправления одиночных и обнаружения двойных ошибок к четырем информационным символам достаточно добавить четыре проверочных символа. Можно показать, что обойтись меньшим числом проверочных символов невозможно.
Построенное множество кодовых слов а0а1а2а3а4а5а6а7 — пример расширенного кода Хемминга (длины 8 с четырьмя информационными символами) .
С точки зрения строгой математики для построения линейного кода Хэмминга с m проверками на четность, исправляющего одну ошибку, код определяется посредством проверочной матрицы, столбцами которой являются все ненулевые векторы длины m. Очевидно, что любые два столбца этой матрицы линейно независимы и найдутся три линейно зависимых столбца, следовательно, кодовое слово равно 3, и значит, код исправляет одну ошибку. Этот код – код Хэмминга, далее обозначаем .
По построению его мощность равна
где m = log(n + 1). Следовательно, он достигает границы Хэмминга и потому является совершенным .
Параметры кодов Хэмминга длины 7.
Рассмотрим три различных представления кода Хэмминга длины 7.
1.Код Хэмминга длины 7 задан проверочной матрицей в каноническом виде, т.е. проверочная матрица имеет вид
2.
Код Хэмминга длины 7 в циклическом виде.
Линейный вид С длины n называется
циклическим, если для любого кодового
слова
слово
принадлежит
коду С.
Проверочная матрица кода Хэмминга длины 7 в циклическом представлении имеет вид:
3. Во многих случаях полезно определять код Хэмминга через проверочную матрицу, заданную в лексикографическом виде:
т.е. столбцы проверочной матрицы записаны в лексикографическом порядке возрастания двоичных представлений натуральных чисел.