- •Э.Н.Гордеев основы теории информации
- •Раздел 1. Информация и Алгоритм. Коды объектов. 12
- •Раздел 2. Сжатие информации. 30
- •Раздел 3. Передача информации. Защита от искажений. 56
- •Раздел 1. Информация и Алгоритм. Коды объектов. 10
- •Раздел 2. Сжатие информации. 29
- •Раздел 3. Передача информации. Защита от искажений. 55
- •12 Рекомендованная литература 122
- •Введение.
- •Алгоритм
- •Представление (кодирование) информации.
- •Примеры кодировок
- •Свойства кодировок
- •Способы представления (кодирования) информации.
- •Кодирование слов и поиск минимального кода
- •Признаковое кодирование.
- •Раздел 2. Сжатие информации.
- •Кодирование информации. Количество информации. Сжатие информации.
- •Сериальное кодирование
- •Алфавитное кодирование.
- •Неравенство Крафта.
- •Префиксные коды.
- •Кодирование натурального ряда.
- •Код Элайеса.
- •Код Левенштейна
- •Количество информации. Энтропия.
- •Энтропия по Хартли.
- •Энтропия по Шеннону.
- •Математическая модель: алфавитное кодирование случайного источника.
- •Энтропия по Шеннону
- •Энтропия по Шеннону и энтропия по Хартли.
- •Теорема Шеннона
- •Алгоритмы кодирования
- •Алгоритм Шеннона (Фано).
- •Алгоритм Хаффмана
- •Блочное кодирование Хаффмена.
- •Алгоритм арифметического кодирования
- •Блочное кодирование и теорема Шеннона.
- •Раздел 3. Передача информации. Защита от искажений.
- •Передача информации по каналу с шумом.
- •Модели каналов.
- •Необходимые определения.
- •Пример кода для канала с выпадением.
- •Передача информации по двоичному симметричному каналу с шумом
- •Принципы построения кодов, исправляющих ошибки.
- •Декодирование на основе таблицы декодирования.
- •Корректирующие способности кодов. Границы мощности.
- •Теорема Шеннона для канала с шумом.
- •Факты из теории вероятности.
- •XI → канал → y
- •Вторая теорема Шеннона.
- •Комбинаторное доказательство теоремы.
- •Примеры кодов, исправляющих ошибки. Линейные коды.
- •Линейные коды.
- •Спектр кода.
- •Код Хэмминга.
- •Вопросы для самопроверки.
- •Примеры билетов для контрольных работ.
- •Приложение.
- •Рекомендованная литература
Способы представления (кодирования) информации.
В этом разделе мы будем рассматривать просто кодировки. (То есть такие, когда одно слово представляется в виде другого слова).
Во всех случаях рассматривается следующая модель. Есть два алфавита
А = (а1, … , аn) и B = (b1, … , bq).
Кодирование φ это отображение слов α в алфавите А в слова β=φ(α) в алфавите В.
Кодирование будет дешифруемым, если по слову β однозначно восстанавливается α. Тогда отображение φ – биекция.
Кодирование слов и поиск минимального кода
Пусть у нас есть кодируемые объекты x - слова в алфавите A.
Везде далее булев куб размерности n будем обозначать через Bn.
Нельзя ли найти минимальную длину K(x) кода объекта x, пусть даже в другом алфавите B?
Оказывается, эта задача алгоритмически неразрешима.
Теорема: Не существует МТ, которая строит код минимальной длины.
Доказательство. От противного.
Упорядочим все элементы всех булевых кубов Bn ( сначала по увеличению размерности, а потом в лексикографическом порядке):
0, 1, 00, 01, 11, 000, 001… (*)
Пусть есть МТ Т1, которая умеет по х строить К(х). Используя Т1, строим другую МТ Т2 = F(T1, …). Эта машина переводит натуральное m в первое по порядку (слева направо в последовательности (*) слово x такое, что K(x)>m. ( T2 в (*) идет слева направо и на каждом шаге применяет Т1.) Следовательно, m – код х, так как по m однозначно восстанавливается x. При этом длина m равна l(m)=log m, но K(x) – наименьшая возможная длина кода. Значит, K(x)≤log m.
Получили противоречие.
Теорема доказана.
Если информация связана с кодом объекта, то одной из мер информации является длина этого кода. Аналогичной мерой для алгоритма является его сложность.
Пример. Задача: Требуется найти количество единиц в двоичной записи целого числа.
Если число n задается в виде n+1 единицы *1...1*, то длина входа n+3. Если число задается в десятичной форме, это уже lgn. К этим двум способам добавим двоичную запись числа n. Ее длина log2n. Трудоемкость решения пропорциональная длине входа.
Но рассмотрим еще один подход к решению задачи. Пусть у нас есть 2n перенумерованных ячеек памяти, в каждой из которых содержится число, равное количеству единиц в двоичной записи номера ячейки. Тогда длина входа задачи для числа n равна 2n log2n. Трудоемкость решения равна константе.
Есть и обратные примеры, когда стремление к сжатию информации, т.е. минимизация длины входа задачи, может привести к непропорционально большому росту сложности алгоритма.
Признаковое кодирование.
Этот метод можно использовать в разных ситуация, но типичное его применение – кодирование неформализованных объектов.
Признаки:
Рассматривается множество объектов s1,…,sm (люди, болезни, месторождения и т.п.), которое нужно кодировать, т.е. каждому объекту нужно сопоставить слово в алфавите. При этом есть другое множество объектов, называемых признаками, которые мы умеем кодировать. Тогда кодом объекта при признаковом кодировании является вектор, компонентами которого являются коды (значения) признаков, применительно к данному объекту.
При признаковом кодировании
объекта
признаком
называется отображение
,
где Df
— множество допустимых значений
признака. Если заданы признаки f1,…,fn,
то вектор x=(f1(x),…,fn(x))
называется признаковым описанием
объекта x . Если признаковые
описания отождествляют с самими
объектами, то множество
называют признаковым пространством.
В зависимости от множества признаки делятся на следующие типы:
бинарный признак: Df =(0,1);
номинальный признак: Df - конечное множество;
порядковый признак: Df - конечное упорядоченное множество;
количественный признак: Df - множество действительных чисел.
Можно использовать характеристические вектора признаков, например,
α(si)=(
α1, … , αk)
.
Пример. s1 … sn – люди.
Признаки:
Цвет волос
Рост
Вес
p4 … pn – размеры частей тела человека.
В случае бинарных значений признаков или использовании характеристических векторов при признаковом кодировании объектом исследования является матрица векторов признаков.
Опр. Тест - это множество столбцов в T(A) такое, что все строки в подматрице, образованной этим множеством, попарно различны.
Выше мы уже говорили о стремлении строить неизбыточные коды. С этой задачей связана известная проблема дискретной математики – проблема поиска минимальных тестов таблицы.
Длина теста – количество столбцов в тесте.
Тест будет тупиковым, если никакое его подмножество уже не будет тестом.
Минимальный тест – тест с минимальным количеством столбцов. Длину минимального теста обозначим через t(A).
Когда таблица T(A) – это признаковая таблица множества объектов (строки таблицы – вектора признаков объектов), то длина теста указывает на количество признаков, которых достаточно для различения объектов. Эти признаки соответствуют стобцам теста. Но будет ли их достаточно, если количество объектов увеличиться? В связи с этим вопросом тестовая тематика возникает и при определении качества выбора множества признаков.
Конечно, как математический объект, тест – это скорее тема таких дисциплин как комбинаторика, дискретная математика, теория распознавания, но, так как он тесно связан с проблемой грамотного представления информации, то это объект и теории информации.
Для получения содержательных результатов в области построения минимальных тестов необходимо накладывать ограничение на вид и структуру векторов признаков. В качестве примеров приведем несколько утверждений, доказательство которых либо очевидно, либо является несложным упражнением. (Обозначение приведены выше. Если не оговорено обратное – основание логарифма равно двум).
Утв. Справедливо неравенство
t(A)≥log m.
Заметим, что данное утверждение тесно связано с приведенным ниже понятием энтропия по Хартли. Оно означает, что если объектам даются битовые идентификаторы, то число бит в таком идентификаторе для различения m объектов не может быть меньше log m.
Утв. Пусть строки матрицы Т(А) устроены так, что вместе с любой парой строк в матрице есть и строка, равная сумме этой пары по модулю два, тогда в такой матрице любой тупиковый тест будет минимальным и
t(A)=log m.
Данное утверждение станет для вас совершенно очевидным, если заметить, что в данном случае множество строк матрицы – подпространство булева куба.
(Ниже мы вернемся к этому вопросу, когда будем рассматривать, так называемые, линейные коды.)
Утв. Число
тупиковых тестов таблицы не превосходит
.
Утв. Если строками матрицы являются все наборы с четным числом единиц, то число тупиковых тестов такой таблицы равно числу ее столбцов.
Утв. Если строками матрицы являются все наборы с фиксированным числом единиц, то число тупиковых тестов такой таблицы равно числу ее столбцов.
