- •Теория информации Учебное пособие
- •Введение
- •1. Информационные характеристики источников сообщений
- •Энтропия как мера неопределенности физической системы
- •1.2 Энтропия сложной системы
- •Сложение энтропии независимых систем
- •Условная энтропия
- •1.3. Количественные аспекты информации
- •1.4. Количество информации, как мера снятой неопределенности
- •1.5. Объем информации
- •1.6. Взаимная информация
- •Упражнения
- •Решение
- •Лабораторная работа Свойства энтропии
- •2. Неопределенность непрерывных случайных величин
- •2.1. Энтропия непрерывной случайной величины х
- •2.2. Количество информации для непрерывных систем
- •2.3. Принцип экстремума энтропии и экстремальные распределения
- •Подставим (2.9) в (2.6)
- •При взятии интеграла учтем, что имеется соответствующий табличный интеграл
- •Сравнительная оценка сообщений, передаваемых по нормальному закону и равновероятному закону распределений
- •2.4. Епсилон энтропия (ε-энтропия )
- •3. Передача информации по каналам связи
- •3.1. Источники сообщений
- •3.2. Избыточность информации
- •3.3. Передача информации по каналу связи. Пропускная способность канала
- •Матрица для нахождения условной вероятности
- •Матрица условных вероятностей имеет вид
- •3.4. Пропускная способность непрерывных каналов связи
- •Скорость передачи информации будет равняться
- •Тогда , (3.8) где p мощность сигнала, а n мощность помехи
- •3.5. Согласование скорости выдачи информации, выдаваемой источником, с пропускной способностью канала связи
- •3.6. Согласование оконечных устройств с каналами связи
- •Упражнения
- •Лабораторная работа
- •4. Кодирование информации
- •4.1. Префиксные коды
- •Коды 1,2,3 не обладают свойством префикса, а код 4 обладает.
- •4.2. Основные теоремы кодирования
- •4.3. Оптимальное кодирование
- •4.4. Код Шеннона – Фано
- •Средняя длина полученного кода будет равна
- •4.5. Блочное кодирование
- •4.6. Код Хаффмана
- •4.7. Совмещенный способ построения кода Хаффмана Совмещенный способ построения кода Хаффмана представляет объединение двух процессов: обычного алгоритма построения и метода дерева.
- •Лабораторная работа
- •5. Сжатие информации
- •5.1. Основные понятия
- •5.2. Методы сжатия без потерь
- •Кодирование длин серий (rle - кодирование)
- •Коды Фибоначчи
- •Методы энтропийного сжатия
- •Метод арифметического сжатия
- •Методы контекстного моделирования
- •Словарные методы сжатия
- •5.3. Методы сжатия с потерями
- •6. Помехоустойчивое кодирование
- •6.1 Коды с обнаружением ошибок
- •Код с проверкой на четность.
- •Код Грея записывается следующим образом
- •Обратный переход из кода Грея в двоичный код
- •6.2. Корректирующие коды
- •6.3. Код Хемминга
- •Проверяем ее
- •6.4. Техническая реализация кода Хэмминга
- •6.5 Циклические коды
- •Декодирование циклических кодов
- •Аппаратурная реализация циклических кодов.
- •Пусть на вход подается комбинация 1101001
- •Теперь пусть на вход подается комбинация с ошибкой 1100001
- •Упражнения
- •Лабораторная работа
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Задание 7
- •Задание 8
- •Задание 9
- •Задание 10
- •Задание 11
- •Задание 12
- •Задание 13
- •Задание 14
- •Задание 15
- •Задание 16
- •Задание 17
- •Задание 18
- •Задание 19
- •Задание 20
- •Список литературы
- •Оглавление
5.2. Методы сжатия без потерь
Методы сжатия без потерь обычно используются в системах сжатия дискретной информации, представляемой в виде последовательности символов некоторого алфавита.
Кодирование длин серий (rle - кодирование)
Методы RLE – кодирования (Run Length Encoding) являются одними из наиболее старых методов сжатия. Однако благодаря своей простоте и эффективности они до сих пор используются либо непосредственно либо в составе других методов.
При использовании простейшего метода RLE последовательность одинаковых символов заменяется на один символ и число его повторений.
Пример 5.1. Применить метод RLE для сжатия последовательности символов
aaaaaaaaabbbbaaaaabbaaaaaabbbbaaaaaabbaaaacccccddd.
В результате сжатия получается следующая последовательность кодов:
<a, 9>, <b, 4>, <a, 5>, <b, 2>, <a, 6>, <b, 4>, <a, 6>, <b, 2>, <a, 4>, <c, 5>, <d, 3>.
Если считать, что на каждый символ приходится 2 бита (используется четырехсимвольный алфавит), а на длину – 4 бита (длина не превышает 16), то входная и выходная последовательности имеют размеры:
Lвх = 50 2 бита = 100 бит и Lвых = 11 (2 бита + 4 бита) = 66 бит.
Коэффициент сжатия Kсж при этом равен
Kсж = Lвых / Lвх = 66 бит / 100 бит = 0.66.
Недостатком данного метода является увеличение размеров информации (вместо сокращения) в том случае, если сжимаемая последовательность содержит большое число одиночных символов. Поэтому на практике используют различные модификации RLE – кодирования для устранения указанного недостатка.
Пример 5.2. Применить метод RLE для сжатия последовательности символов
aaaaaaaaabbbbabababaaaacccccdaaaaa.
В простейшем случае на выходе будет образована последовательность кодов <a, 9>, <b, 4>, <a, 1>, <b, 1>, <a, 1>, <b, 1>, <a, 1>, <b, 1>, <a, 4>, <c, 5>, <d, 1> <a, 5>, которая имеет размер 12 (2 бита + 4 бита) = 72 бита, тогда как исходная последовательность символов имеет размер 34 2 бита = 68 бит. Однако можно ввести бинарный флаг (размером в 1 бит), нулевое значение которого показывает, что далее следует одиночный символ, а единичное значение – символ и число его повторений. Тогда на выходе появится следующая последовательность кодов: <1, a, 9>, <1, b, 4>, <0, a>, <0, b>, <0, a>, <0, b>, <0, a>, <0, b>, <1, a, 4>, <1, c, 5>, <0, d>, <1, a, 5>, которая имеет размер 5 (1 бит + 2 бита + 4 бита) + 7 (1 бит + 2 бита) = 35 бит + 21 бит = 56 бит. Очевидно, что во втором случае сжатие более эффективно.
Коды Фибоначчи
Методы, основанные на использовании кодов Фибоначчи, относятся к группе методов кодирования представлением целых чисел.
Применение кодов Фибоначчи основано на том, что любое натуральное число можно представить в виде двоичного числа, в котором вес каждой единицы соответствует некоторому числу Фибоначчи. При этом, во – первых, две подряд единицы в таком двоичном числе появиться не могут, а, во – вторых, номер разряда в числе соответствует только одному числу Фибоначчи.
Значения от 1 до 256 (размером в 1 байт) можно закодировать с помощью следующих чисел Фибоначчи: F1 = 1, F2 = 2, F3 = 3, F4 = 5, F5 = 8, F6 = 13, F7 = 21, F8 = 34, F9 = 55, F10 = 89, F11 = 144, F12 = 233.
Пример 5.3. Представить с помощью кодов Фибоначчи числа 1, 20, 150 и 255.
1. Число 1 можно представить как число F1. Тогда оно имеет код Фибоначчи 11.
2. Число 20 можно представить как сумму чисел Фибоначчи:
20 = F6 + F4 + F2 = 13 + 5 + 2.
Это значит, что число 20 имеет код Фибоначчи 1101010.
3. Число 150 можно представить как сумму чисел Фибоначчи:
150 = F11 + F4 + F1.
Это значит, что число 150 имеет код Фибоначчи 110000001001.
4. Число 255 можно представить как сумму чисел Фибоначчи:
255 = F12 + F7 + F1.
Это значит, что число 255 имеет код Фибоначчи 1100001000001.
Сжать данные с помощью кодов Фибоначчи можно следующим образом:
определить частоты каждого символа последовательности;
отсортировать символы в порядке убывания частот;
присвоить номерам символов соответствующие коды Фибоначчи.
В результате данного алгоритма чаще встречающимся символам будут присвоены более коротки коды, чем символам, встречающимся реже.
Пример 5.4. Выполнить сжатие с помощью кодов Фибоначчи последовательности символов
ccccaaccccabcccbbcabcabcacccccdacc.
Определим частоты каждого символа в последовательности:
Символ
a
b
c
d
Частота
7
5
21
1
Отсортируем символы в порядке убывания частот:
Символ
c
a
b
d
Частота
21
7
5
1
Присвоим номерам символов соответствующие коды Фибоначчи:
Символ |
c |
a |
b |
d |
Код |
11 |
110 |
1100 |
11000 |
Если каждый символ исходной последовательности имеет длину 1 байт (8 бит), то длина исходной последовательности равна 272 бита, тогда как после сжатия длина последовательности кодов Фибоначчи равна 21 2 бита + 7 3 бита + 5 4 бита + 1 5 бит = 88 бит. Коэффициент сжатия при этом равен 88 бит / 272 бита 0.32, т. е. на один бит исходной последовательности приходится в среднем 0.32 бита последовательности сжатых данных.
