
- •Лекции по Теории информации
- •Введение
- •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.9 Построение циклических кодов
4.9.1 Общие понятия и определения
Любой групповой код (n, k) может быть записан в виде матрицы, включающей k линейно независимых строк по n символов и, наоборот, любая совокупность k линейно независимых n-разрядных кодовых комбинаций может рассматриваться как образующая матрица некоторого группового кода. Среди всего многообразия таких кодов можно выделить коды, у которых строки образующих матриц связаны дополнительным условием цикличности.
Все строки образующей матрицы такого кода могут быть получены циклическим сдвигом одной комбинации, называемой образующей для данного кода. Коды, удовлетворяющие этому условию, получили название циклических кодов.
Сдвиг осуществляется справа налево, причем крайний левый символ каждый раз переносится в конец комбинации. Запишем, например, совокупность кодовых комбинаций, получающихся циклическим сдвигом комбинации 001011:
Число возможных циклических (n, k)-кодов значительно меньше числа различных групповых (n, k)-кодов.
При описании циклических кодов n-разрядные кодовые комбинации представляются в виде многочленов фиктивной переменной х. Показатели степени у x соответствуют номерам разрядов (начиная с нулевого), а коэффициентами при х в общем случае являются элементы поля GF(q). При этом наименьшему разряду числа соответствует фиктивная переменная х0 = 1. Многочлен с коэффициентами из поля GF(q) называют многочленом над полем GF(q). Так как мы ограничиваемся рассмотрением только двоичных кодов, то коэффициентами при х будут только цифры 0 и 1. Иначе говоря, будем оперировать с многочленами над полем GF(2). Запишем, например, в виде многочлена образующую кодовую комбинацию 01011:
G(x) = 0·x4 + 1·x3 + 0·x2 + 1·x + 1
Поскольку члены с нулевыми коэффициентами при записи многочлена опускаются, образующий многочлен:
G(x) = x3 + x + 1
Наибольшую степень х в слагаемом с ненулевым коэффициентом называют степенью многочлена. Теперь действия над кодовыми комбинациями сводятся к действиям над многочленами. Суммирование многочленов осуществляется с приведением коэффициентов по модулю два.
Указанный циклический сдвиг некоторого образующего многочлена степени n - k без переноса единицы в конец кодовой комбинации соответствует простому умножению на х. Умножив, например, первую строку матрицы (001011), соответствующую многочлену g0(х) = x3 + x + 1, на х, получим вторую строку матрицы (010110), соответствующую многочлену х • g0(x).
Нетрудно убедиться, что кодовая комбинация, получающаяся при сложении этих двух комбинаций, также будет соответствовать результату умножения многочлена x3 + x + 1 на многочлен x+1. Действительно,
Циклический сдвиг строки матрицы с единицей в старшем (n-м) разряде (слева) равносилен умножению соответствующего строке многочлена на х с одновременным вычитанием из результата многочлена хn + 1= хn – 1, т. е. с приведением по модулю хn + 1.
Отсюда ясно, что любая разрешенная кодовая комбинация циклического кода может быть получена в результате умножения образующего многочлена на некоторый другой многочлен с приведением результата по модулю xn + l. Иными словами, при соответствующем выборе образующего многочлена любой многочлен циклического кода будет делиться на него без остатка.
Ни один многочлен, соответствующий запрещенной кодовой комбинации, на образующий многочлен без остатка не делится. Это свойство позволяет обнаружить ошибку. По виду остатка можно определить и вектор ошибки.
Умножение и деление многочленов весьма просто осуществляется на регистрах сдвига с обратными связями, что и явилось причиной широкого применения циклических кодов.