
- •Основы Теории Информации Гордеев э.Н.
- •Содержание
- •1Введение
- •1.1Предмет курса
- •1.2Основная цель курса
- •1.3Теория информации и смежные дисциплины
- •1.4Подходы к определению понятия информация.
- •2Алфавит. Слово. Язык. Информация.
- •3Информация и алгоритм.
- •3.1Задачи, алгоритмы
- •3.1.1Задача
- •3.2Алгоритм
- •3.2.1Нормальные алгорифмы Маркова (нам).
- •3.2.2Машины Тьюринга
- •4Кодирование информации. Количество информации. Сжатие информации.
- •4.1Кодирование информации.
- •4.1.1Примеры кодировок
- •4.1.2Свойства кодировок
- •4.2Наиболее распространенные способы кодирования и их свойства. Алгоритмы кодирования.
- •4.2.1Кодирование слов и поиск минимального кода
- •4.2.2Признаковое кодирование.
- •4.2.3Признаковое кодирование и проблема распознавания.
- •4.2.4Сериальное кодирование
- •4.2.5Алфавитное кодирование.
- •4.2.5.1Неравенство Крафта.
- •4.2.5.2Префиксные коды.
- •4.2.6Кодирование натурального ряда.
- •4.2.6.1Код Элайеса.
- •4.2.6.2Код Левенштейна
- •5Количество информации. Энтропия.
- •5.1.1Энтропия по Хартли.
- •5.1.2Энтропия по Шеннону.
- •5.1.2.1Математическая модель: алфавитное кодирование случайного источника.
- •5.1.2.2Энтропия по Шеннону
- •5.1.2.3Энтропия по Шеннону и энтропия по Хартли.
- •6Теорема Шеннона
- •7Свойства энтропии.
- •8Алгоритмы кодирования
- •8.1Алгоритм Шеннона (Фано)
- •8.2Алгоритм Хаффмана
- •8.3Блочное кодирование
- •8.4Алгоритм арифметического кодирования
- •8.5Код Элайеса
- •8.6Код Левенштейна
- •9Блочное кодирование и теорема Шеннона.
- •10Канал с шумом.
- •10.1Модели каналов.
- •10.2Передача информации по двоичному симметричному каналу с шумом
- •10.2.1Схема и принципы кодирования.
- •10.3Корректирующие способности кодов. Границы мощности.
- •10.4Теорема Шеннона для канала с шумом.
- •10.4.1Факты из теории вероятности.
- •10.4.2Схема кодирования и декодирования. Вспомогательные утверждения.
- •10.4.3Вероятностное доказательство теоремы.
- •10.4.4Комбинаторное доказательство теоремы.
- •10.5Линейные коды
- •10.5.1Пример. Код Хемминга.
- •10.5.2Замечание. Совершенные коды и теорема Шеннона.
- •10.5.3Бчх – коды
- •10.6Спектр кода. Эквидистантные коды
- •11Рекомендованная литература
3.2.1Нормальные алгорифмы Маркова (нам).
Они были предложены в качестве формального подхода к понятию алгоритма выдающимся русским математиком А.А.Марковым в 1950-х годах.
Рассматривается некоторый алфавит A и слова в этом алфавите.
Конкатенацией двух слов Q и R назовем слово QR, то есть в конкатенации сначала идут последовательно все символы слова Q, а затем все символы слова R. (Не зная слов Q и R, мы воспринимаем слово QR как единое целое).
Любую подпоследовательность идущих друг за другом символов слова назовем подсловом.
Слово, не имеющее букв, называется пустым словом и обозначается через .
Слова, состоящие из одинаковых последовательностей символов, считаются эквивалентными. Заметим, что слова PQ, PQ, PQ, PQ эквивалентны в рамках формализма НАМ.
НАМ состоит из последовательности шагов работы. При определении шагов работы НАМ используются понятия преобразования, обычного и завершающего.
Обычным преобразованием слова P назовем переход от слова P к слову S. Завершающее преобразование состоит из обычного преобразования и команды остановки, которая обозначается точкой – (). То есть после выполнения конечного преобразования работа заканчивается.
Преобразование i обозначается или в виде PiSi (обычное), или в виде PiSi (завершающее).
Формально НАМ - это четверка {A,B,, }, где A - входной алфавит ,B - надалфавит А, - пустое слово, - конечный упорядоченный набор преобразований ={1,…,n}. В каждом таком преобразовании присутствуют слова над алфавитом A (в алфавите B). Входное и выходное слова - это слова в алфавите A.
Если для слова P не существует ни одного преобразования такого, что Pi является его подсловом, то эту ситуацию обозначим следующим образом: P. Если в результате применения НАМ к слову P образовалось слово R, то обозначим это через PR.
НАМ преобразует входное слово P в выходное Q. Работа НАМ осуществляется шаг за шагом. На первом шаге в качестве входного слова используется слово P. На каждом следующем шаге в качестве входного слова используется результат предыдущего шага. На каждом шаге во входном слове поочередно для i=1,…,n ищутся крайние левые подслова, эквивалентные Pi . Если такое подслово найдено, то выполняется преобразование i. Если это преобразование завершающее, то работа НАМ заканчивается. В противном случае переход к следующему шагу. И так для всех i=1,…,n. Если ни для какого из этих i упомянутое выше подслово не найдено, то работа НАМ заканчивается.
Задача для НАМ выглядит в виде требования построить НАМ, который преобразует данное входное слово (условие любой индивидуальной задачи данной массовой задачи) в выходное слово (решение индивидуальной задачи данной массовой задачи). Естественно, что может быть много различных НАМ, решающих каждую конкретную задачу.
Входной алфавит - это алфавит, в котором написано входное слово. Составление НАМ - это нахождение B и ={1,…,n}. Предполагается, что пустое слово не входит ни в один из рабочих алфавитов НАМ.
Перейдем теперь к рассмотрению конкретных примеров. Договоримся о некоторых обозначениях. Целые числа задаются в алфавите {1, *}. Целое число n кодируется последовательностью из n+1 единицы. Несколько аргументов функции разделяются символом *. Например, при вычислении значения функции F(x,y,z) от трех переменных x=2, y=5, z=1 входное слово НАМ имеет вид 111*111111*11.
Для сокращения записи схемы алгоритма буквами , , будем обозначать любые буквы входного алфавита A, а буквами , , обозначаются конкретные буквы, не входящие в A. Например, имеем алфавит из 10 букв, а в схеме алгоритма идут подряд 10 преобразований стирания каждой одной буквы, которые могут выполняться в произвольном порядке. Все эти преобразования можно обозначать как .
Рассмотрим несколько примеров.
Пример. Построить НАМ для прибавления 1 к числу X.
То есть задан алфавит A={*,1}.
Число
k представляется в виде
.
Алгоритм осуществляет преобразование B(X)=X+1.
В этом случае весь набор преобразований состоит из единственного преобразования:
.
Пример. Построить НАМ для стирания слова.
A={a1…an}
B(X)=
Этот набор преобразований, как выше
было сказано, можно кратко обозначить
следующим образом:
Пример. Построить НАМ, записывающий буквы любого слова в некотором конечном алфавите в обратном порядке.
Алфавит A={a1…an}.
Требуется
осуществить преобразование
,
где
ai1…aik
,
aik…ai1.
Алфавит
А расширяем до алфавита В=А
{
}
Пусть
- любые буквы алфавита A.
Пример. Для входного алфавита {b, c} построить НАМ, "различающий" слова, содержащие b от остальных.
Входной алфавит А={b,c}
Выходной алфавит состоит из 0 и 1. Результатом задачи будет: 0 - нет во входном слове буквы b, 1 - b присутствует.
Пример. Построить НАМ, который для любой пары слов определяет, содержат ли они равное количество букв.
Разделение слов L*R.
Выходной алфавит состоит из трех букв: a, b, c. На выходе буква появляется а, если длина слова L больше длины слова R, буква b, если длина слова L меньше длины слова R, и буква c, длина слова L равна длине слова R.