
- •0. Лекция: Введение
- •1. Лекция: Предмет и основные разделы кибернетики
- •Формальное представление знаний
- •Виды информации
- •Хранение, измерение, обработка и передача информации
- •2. Лекция: Базовые понятия теории информации
- •Способы измерения информации
- •Вероятностный подход к измерению дискретной и непрерывной информации
- •3. Лекция: Смысл энтропии Шеннона
- •Семантическая информация
- •4. Лекция: Сжатие информации
- •Простейшие алгоритмы сжатия информации
- •5. Лекция: Арифметическое кодирование
- •Адаптивные алгоритмы сжатия. Кодирование Хаффмена
- •Адаптивное арифметическое кодирование
- •6. Лекция: Подстановочные или словарно-ориентированные алгоритмы сжатия информации. Методы Лемпела-Зива
- •Особенности программ-архиваторов
- •7. Лекция: Сжатие информации с потерями
- •Информационный канал
- •Помехозащитное кодирование
- •8. Лекция: Математическая модель системы связи
- •Матричное кодирование
- •9. Лекция: Групповые коды
- •Совершенные и квазисовершенные коды
- •Полиномиальные коды
- •10. Лекция: Понятие о кодах Боуза-Чоудхури-Хоккенгема
- •Циклические избыточные коды
- •11. Лекция: Основы теории защиты информации
- •Криптосистема без передачи ключей
- •Криптосистема с открытым ключом
- •Электронная подпись
- •Стандарт шифрования данных
- •12. Лекция: Информация в Internet
- •Дополнительные материалы: Управляющие коды ascii
Полиномиальные коды
При полиномиальном кодировании каждое сообщение отождествляется с многочленом, а само кодирование состоит в умножении на фиксированный многочлен. Полиномиальные коды - блочные и отличаются от рассмотренных ранее только алгоритмами кодирования и декодирования.
Пусть
-
двоичное сообщение. Тогда сопоставим
ему многочлен
.
Все вычисления происходят в поле классов
вычетов по модулю 2, т. е. от результата
любой арифметической операции берется
остаток от его деления на 2.
Например,
последовательности 10011 при
соответствует
многочлен
.
Зафиксируем некоторый многочлен степени ,
Полиномиальный
код
с кодирующим многочленом
кодирует
слово сообщения
многочленом
или
кодовым словом из коэффициентов этого
многочлена
.
Условия
и
необходимы,
потому что в противном случае
и
не
будут нести никакой информации, т.к. они
всегда будут нулями.
Пример.
Рассмотрим кодирующий многочлен
.
Сообщение 01011, отвечающее многочлену
,
будет закодировано коэффициентами
многочлена
,
т.е.
.
Полиномиальный
код с кодирующим многочленом
степени
является
матричным кодом с кодирующей матрицей
размерности
:
Т
е. ненулевые элементы в
-й
строке - это последовательность
коэффициентов кодирующего многочлена,
расположенных с
-го
по
-й
столбцах.
Например,
-код
с кодирующим многочленом
отвечает
матрице
или
отображению:
;
;
;
;
;
;
;
.
Полиномиальные коды являются групповыми.
Это следует из того, что коды, получаемые матричным кодированием, - групповые.
Рассмотрим
-код
с кодирующим многочленом
.
Строка ошибок
останется
необнаруженной в том и только в том
случае, если соответствующий ей многочлен
делится
на
.
Действительно,
делится
на
тогда
и только тогда, когда
делится
на
.
Поэтому любая ошибка, многочлен которой
не делится на
,
будет обнаружена и, соответственно,
любая ошибка, многочлен которой делится
на
,
не может быть обнаружена.
Таким образом, обнаружение ошибки при использовании полиномиального кода с кодирующим многочленом может быть реализовано при помощи алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче произошло искажение данных.
Коды
Хэмминга можно строить как полиномиальные,
например, кодирующий многочлен
определяет
совершенный
-код,
отличный от рассмотренного ранее.
Вообще
же, если кодирующий многочлен
,
порождающий соответствующий
-код,
не является делителем ни одного из
многочленов вида
при
,
то минимальное расстояние между кодовыми
словами порожденного им кода не меньше
3.
Пусть
-
минимальное расстояние между кодовыми
словами, оно равно минимуму среди весов
ненулевых кодовых слов. Предположим
.
Тогда существует
такой,
что
и
степень
не
больше
.
Вес
равен
2, поэтому
и
.
Следовательно,
,
что означает, что
должен
делиться на
,
а это невозможно по условию. Если
предположить, что
,
то это приведет к утверждению о том, что
должен
делиться на
,
что тоже противоречит условию. Итак,
.
Кодирующий
многочлен
определяет
совершенный
-код
Голея (Golay) с минимальным расстоянием
между кодовыми словами 7.
В 1971 году финскими и советскими математиками было доказано1), что кроме кодов Хэмминга и Голея других совершенных кодов нет.
Наиболее
интересными среди полиномиальных кодов
являются циклические коды, в которых
вместе с любым кодовым словом вида
есть
кодовое слово
.
Упражнение
43 По кодирующему многочлену
построить
полиномиальные коды для двоичных
сообщений 0100, 10001101, 11110.
Упражнение 44 Принадлежат ли коду Голея кодовые слова 10000101011111010011111 и 11000111011110010011111?