
- •Лекции по Теории информации
- •Введение
- •1. Понятие информации. Задачи и постулаты прикладной теории информации
- •1.1 Что такое информация
- •1.2 Этапы обращения информации
- •1.3 Информационные системы
- •1.4 Система передачи информации
- •1.5 Задачи и постулаты прикладной теории информации
- •2. Количественная оценка информации
- •2.1 Свойства энтропии
- •2.2 Энтропия при непрерывном сообщении
- •2.3 Условная энтропия
- •2.4 Взаимная энтропия
- •2.5 Избыточность сообщений
- •3. Эффективное кодирование
- •4. Кодирование информации для канала с помехами
- •4.1 Разновидности помехоустойчивых кодов
- •4.2 Общие принципы использования избыточности
- •4.3 Связь корректирующей способности кода с кодовым расстоянием
- •000, 011, 101, 110 – Разрешенные комбинации;
- •001, 010, 100, 111 – Запрещенные комбинации.
- •4.4 Понятие качества корректирующего кода
- •4.5 Линейные коды
- •4.6 Математическое введение к линейным кодам
- •В результате применения операции к любым двум элементам группы образуется элемент этой же группы (требование замкнутости).
- •4.7 Линейный код как пространство линейного векторного пространства
- •4.8 Построение двоичного группового кода
- •4.8.1 Составление таблицы опознавателей
- •4.8.2 Определение проверочных равенств
- •4.8.3 Мажоритарное декодирование групповых кодов
- •4.8.4 Матричное представление линейных кодов
- •4.8.5 Технические средства кодирования и декодирования для групповых кодов
- •4.9 Построение циклических кодов
- •4.9.1 Общие понятия и определения
- •4.9.2 Математическое введение к циклическим кодам
- •4.9.3 Требования, предъявляемые к образующему многочлену
- •4.10 Выбор образующего многочлена по заданному объему кода и заданной корректирующей способности
- •4.10.1 Обнаружение одиночных ошибок
- •4.10.2 Исправление одиночных или обнаружение двойных ошибок
- •4.10.3 Обнаружение ошибок кратности три и ниже
- •4.10.4 Обнаружение и исправление независимых ошибок произвольной кратности
- •4.10.5 Обнаружение и исправление пачек ошибок
- •4.10.6 Методы образования циклического кода
- •4.10.7 Матричная запись циклического кода
- •4.10.8 Укороченные циклические коды
- •4.11 Технические средства кодирования и декодирования для циклических кодов
- •4.11.1 Линейные переключательные схемы
- •4.11.2 Кодирующие устройства
- •4.11.3 Декодирующие устройства
4.8.1 Составление таблицы опознавателей
Начнем для простоты с установления опознавателей для случая исправления одиночных ошибок. Допустим, что необходимо закодировать 15 команд. Тогда требуемое число информационных разрядов равно четырем. Пользуясь соотношением 2n-k - 1= п, определяем общее число разрядов кода, а следовательно, и число ошибок, подлежащих исправлению (n = 7). Три избыточных разряда позволяют использовать в качестве опознавателей трехразрядные двоичные последовательности.
В данном случае ненулевые последовательности в принципе могут быть сопоставлены с подлежащими исправлению ошибками в любом порядке. Однако более целесообразно сопоставлять их с ошибками в разрядах, начиная с младшего, в порядке возрастания двоичных чисел (табл. 4.6).
Таблица 4.6.
Векторы ошибок |
Опознаватели |
Векторы ошибок |
Опознаватели |
0000001 |
001 |
0010000 |
101 |
0000010 |
010 |
0100000 |
110 |
0000100 |
011 |
1000000 |
111 |
0001000 |
100 |
|
|
При таком сопоставлении каждый опознаватель представляет собой двоичное число, указывающее номер разряда, в котором произошла ошибка.
Коды, в которых опознаватели устанавливаются по указанному принципу, известны как коды Хэмминга.
Возьмем теперь более сложный случай исправления одиночных и двойных независимых ошибок. В качестве опознавателей одиночных ошибок в первом и втором разрядах можно принять, как и ранее, комбинации 0...001 и 0...010.
Однако в качестве опознавателя одиночной ошибки в третьем разряде комбинацию 0...011 взять нельзя. Такая комбинация соответствует ошибке одновременно в первом и во втором разрядах, а она также подлежит исправлению и, следовательно, ей должен соответствовать свой опознаватель 0...011.
В качестве опознавателя одиночной ошибки в третьем разряде можно взять только трехразрядную комбинацию 0...0100, так как множество двухразрядных комбинаций уже исчерпано. Подлежащий исправлению вектор ошибки 0...0101 также можно рассматривать как результат суммарного воздействия двух векторов ошибок 0...0100 и 0...001 и, следовательно, ему должен быть поставлен в соответствие опознаватель, представляющий собой сумму по модулю 2 опознавателей этих ошибок, т.е. 0...0101.
Аналогично находим, что опознавателем вектора ошибки 0...0110 является комбинация 0...0110.
Определяя опознаватель для одиночной ошибки в четвертом разряде, замечаем, что еще не использована одна из трехразрядных комбинаций, а именно 0...0111. Однако, выбирая в качестве опознавателя единичной ошибки в i-м разряде комбинацию с числом разрядов, меньшим i, необходимо убедиться в том, что для всех остальных подлежащих исправлению векторов ошибок, имеющих единицы в i-м и более младших разрядах, получатся опознаватели, отличные от уже использованных. В нашем случае подлежащими исправлению векторами ошибок с единицами в четвертом и более младших разрядах являются: 0...01001, 0...01010, 0...01100.
Если одиночной ошибке в четвертом разряде поставить в соответствие опознаватель 0...0111, то для указанных векторов опознавателями должны были бы быть соответственно
0…0111
0…0111
0…0111
0…0001 0…0010 0…0100
_______ ________ _______
0…0110 0…0101 0…0011
Однако эти комбинации уже использованы в качестве опознавателей других векторов ошибок, а именно: 0...0110, 0...0101, 0...0011.
Следовательно, во избежание неоднозначности при декодировании в качестве опознавателя одиночной ошибки в четвертом разряде следует взять четырехразрядную комбинацию 1000. Тогда для векторов ошибок
0...01001, 0...01010, 0...01100
опознавателями соответственно будут:
0...01001, 0...01010, 0...01100.
Аналогично можно установить, что в качестве опознавателя одиночной ошибки в пятом разряде может быть выбрана не использованная ранее четырехразрядная комбинация 01111.
Действительно, для всех остальных подлежащих исправлению векторов ошибок с единицей в пятом и более младших разрядах получаем опознаватели, отличающиеся от ранее установленных:
Векторы ошибок Опознаватели
0...010001 0…01110
0...010010 0…01101
0...010100 0…01011
0...011000 0…00111
Продолжая сопоставление, можно получить таблицу опознавателей для векторов ошибок данного типа с любым числом разрядов. Так как опознаватели векторов ошибок с единицами в нескольких разрядах устанавливаются как суммы по модулю 2 опознавателей одиночных ошибок в этих разрядах, то для определения правил построения кода и составления проверочных равенств достаточно знать только опознаватели одиночных ошибок в каждом из разрядов. Для построения кодов, исправляющих двойные независимые ошибки, таблица таких опознавателей определена с помощью вычислительной машины вплоть до 29-го разряда [Теория кодирования. Сборник. – М.:Мир, 1964]. Опознаватели одиночных ошибок в первых пятнадцати разрядах приведены в табл. 4.7.
По тому же принципу аналогичные таблицы определены и для ошибок других типов, например для тройных независимых ошибок, пачек ошибок в два и три символа.