
- •Основы Теории Информации Гордеев э.Н.
- •Содержание
- •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Рекомендованная литература
10.4.3Вероятностное доказательство теоремы.
Теорема Шеннона: для любого R: 0 < R < C(ρ) P*(M, n, P) → 0, n → ∞
Доказательство: Пусть передаем xi, принято некое y, оцениваем ошибку декодирования. Ошибочное декодирование:
xj
Б
y
xi
лиже,
чем xi
ни одной точки к y нет
y декодируется
в xi.
Кодовые точки упали как угодно, на них строим шар радиуса ρ.
Декодируем так: если точка у попала в шарик радиуса ρ вокруг кодовой точки, то декодируем ее в данную кодовую точку, если в этом шаре нет других точек; если есть, то у декодируем в произвольно заданную точку. Это будет ошибкой. Вводим функцию (1), тогда вероятность ошибки оценивается суммой (2)
Применяем лемму ( ): Rn = log M, M = 2Rn
1\n log (P*(M, n, P) – ε\2) ≤ 1\n log |Sρ|M\2n = 1\n log |Sρ|2Rn-n ≤ R – C(ρ) – 1 – O(n-1\2) + 1 → P*(M, n, P) < ε\2 + 2-δn. Теорема доказана.
10.4.4Комбинаторное доказательство теоремы.
Теорема Шеннона:
*(M,n,p)
1,
R < 1 – H(p).
Доказательство:
Пусть
(есть
,
код
,
где Vk
– коды C.
Тогда *( Vk) – вероятность правильного декодирования для Vk .
Рассмотрим 3 функции:
Тогда
*( Vk)
=
- вероятность правильного декодирования.
- если выполняются все три условия
,
расстояние от a до b
равно i, b
декодируется в a,
вероятность правильного декодирования
– это число точек в
,
которые находятся на расстоянии i
от некоторого кодового слова и
декодируются в это кодовое слово.
//Всего таких кодов
:
.
*( M,n,p)
=
О
стальную
(M-1) точку выбирают
произвольно:
a – ближайшая из всех кодовых точек.
,
где
- количество точек из
в шаре радиуса
.
Так сколько же кодов, где
?
Есть несколько моментов:
Функция Cx выпукла вверх.
Сумма выпуклых функций выпукла.
Выпуклая функция от выпуклой функции выпукла.
- выпукла тоже вверх.
- выпукла вниз.
В качестве αi
возьмем
,
где
αi =
Используя
и
получим
.
*(M,n,p)
=
,
где
10.5Линейные коды
Опр.: Код C Bn называется групповым, если для любых α, β C: α + β C; групповому
коду обязательно принадлежит нулевой вектор.
Если код не является бинарным, то понятия
линейного и групповых кодов не совпадают.
В случае бинарного кода: Bn
– линейное пространство; зададим в нем
подмножество векторов C
Bn,
и для любых α, β
C:
α + β
C
→ подмножеству принадлежит линейная
комбинация → C –
подпространство Bn.
Пусть dimC =k,
|C| = 2k.
Согласно определению: если C
– групповой код, d(c)
= min |α| (α
С,
α
0).
Для любого линейного кода существуют 2 матрицы: G – порождающая, H – проверочная.
Для
любого β *принадлежит* C:
β – линейная комбинация строк G.
Если dimC = k,
то G должна содержать
k строк.
При построении кода (алгоритмов кодирования и декодирования) C не используется, чаще используется матрица H.
Опр.: Код С* Bn называется ортогональным C, если для любых α, β: α С*, β С,
αβ = 0. Если dimC = k, то dimC* = n – k. При этом порождающей матрицей С*
является проверочная матрица кода С H.
Свойства H: для любого α С, αHT = 0.
Пример: Код с проверкой на четность.
dimC = n – 1, dimH = 1, H = (11…1)1xn
Вся алгоритмика – решение систем уравнений на линейных полях.
Элементарные преобразования матриц:
Перемена местами строк.
Умножение строки на число.
Сложение строки с линейной комбинацией других строк.
Перемена столбцов местами.
Опр.: Коды C и D называются эквивалентными, если G(C) можно получить из G(D) с
помощью элементарных преобразований.
Утверждение: Для любого С существует эквивалентный код С’ такой, что
В
находятся информационные столбцы, в
- проверочные столбцы.
Опр.: Код с порождающей матрицей вида ( ) называется систематическим.
В систематическом коде именно первые k символов являются информационными, без P G(C’) является просто порождающей матрицей всего кода. Проверочных символов (n – k). В H(C’) (n – k) строк, каждая строка – соотношение, задающее линейную комбинацию: 1-я – 10…0, 2-я – 01…0 и т.д.
Пример:
n = 5, k = 3 и
//Пусть α1,α2, α3 – информационные символы, α4, α5 – проверочные.
Алгоритм кодирования осуществляется следующим образом: любая строка H дает проверочную комбинацию.
d(C) = 2
Утверждение: d(C)
= d,
любые (d – 1) столбцов
H линейно-независимые.
Для линейных кодов используется алгоритм декодирования «стандартная расстановка».
Опр.: Синдром линейного кода S = αHT.
Если v C → S = 0.
Пусть вектор 11110, S = (1 0)T.
Для кодирования используется матрица стандартной расстановки. 1-я строка – код, 2-я строка – некодовые вектора с минимальным количеством единиц, складываем ее со всеми кодовыми векторами.
00000 10011 01010 11001 00101 10110 01111 11100
00001 10010 01011 11000 00100 10111 01110 11101
00010 10001 01000 11011 00111 10100 01101 11110
10000 00011 11010 01001 10101 00110 11111 01100
Разбиваем Bn с помощью С на смежные классы, образующие этих классов – 1-й столбец. Когда декодируем, вектор, попавший в 1 столбец, декодируем в верхнее кодовое слово.
У
тверждение:
U – кодовое слово,
U→ U+
e, e
– вектор ошибки; стандартная расстановка
правильно декодирует тогда и только
тогда, когда вектор ошибки – образующая
смежного класса. Целью построения
является нахождение таких кодов, которые
при минимальном числе строк содержали
бы максимальное число линейно-независимых
столбцом.
Приведем теперь два примера известных кодов.