- •Д.Е. Турчин
- •Лабораторный практикум
- •Кемерово 2013
- •Описание лабораторного практикума
- •1.2.2. Понятие кода и кодирования. Моделирование дискретных источников сообщений без памяти
- •1.3. Порядок выполнения работы
- •1.4. Контрольные вопросы
- •Марковские источники сообщений.
- •Эффективность, избыточность и производительность источника сообщений.
- •Кодовые деревья и префиксные коды.
- •2.3. Порядок выполнения работы
- •2.4. Контрольные вопросы
- •3.2.2. Пропускная способность дискретного канала связи. Кодеры и декодеры канала связи. Код с битом четности Пропускная способность дискретного канала связи.
- •Кодер и декодер канала связи. Код с битом четности.
- •3.3. Порядок выполнения работы
- •3.4. Контрольные вопросы
- •Метод Шеннона-Фано.
- •4.2.2. Методы кодирования источников сообщений по Хаффману Кодирование дискретного источника сообщений без памяти по Хаффману.
- •4.3. Порядок выполнения работы
- •4.4. Контрольные вопросы
- •Декодирование арифметического кода.
- •5.2.2. Метод адаптивного арифметического кодирования и его программная реализация
- •5.3. Порядок выполнения работы
- •5.4. Контрольные вопросы
- •6. Сжатие информации методами Лемпела-Зива
- •6.1. Цель работы
- •6.2. Основные теоретические сведения
- •Код Хэмминга.
- •7.2.2. Расширенный код Хэмминга. Программная реализация кода Хэмминга Расширенный код Хэмминга.
- •7.3. Порядок выполнения работы
- •7.5. Контрольные вопросы
- •8. Построение и декодирование линейных блоковых кодов
- •8.1. Цель работы
- •8.2. Основные теоретические сведения
- •8.3. Порядок выполнения работы
- •8.4. Контрольные вопросы
- •Приложение п.1. Понятие события и его вероятности. Теоремы сложения и умножения вероятностей Понятие события и вероятности события. Непосредственный подсчет вероятностей.
- •Теорема сложения вероятностей.
- •Теорема умножения вероятностей.
- •П.2. Данные для расчета энтропии и количества информации
- •П.3. Матрицы и операции над ними п.4. Многочлены и операции над ними
- •П.5. Вопросы к экзамену
Кодовые деревья и префиксные коды.
При посимвольном кодировании сообщений дискретного источника наиболее часто используются префиксные коды, обладающие свойством префикса: никакая более короткая кодовая комбинация не является начальной частью (префиксом) более длинной кодовой комбинации. Данное свойство префиксных кодов обеспечивает возможность их однозначного декодирования при низкой избыточности.
Для построения префиксных кодов с минимальной избыточностью применяют специальные методы (например, метод Хаффмана), которые основаны на использовании кодовых деревьев.
Кодовым деревом называется древовидный ориентированный граф, на котором из каждой вершины (узла) исходит число дуг (ветвей), равное основанию кода (рис. 2.6). Начальный узел называется корнем кодового дерева, конечные узлы называют листьями. Каждый узел кодового дерева, кроме корня, может соответствовать определенному кодовому слову.
Для того чтобы код был префиксным необходимо и достаточно в качестве кодовых слов использовать лишь слова, соответствующие листьям кодового дерева (рис. 2.6).
Рис. 2.6. Элементы кодового дерева и префиксный код
❒ Пример 2.4. Разработка компьютерной модели дискретного источника сообщений, статистически связанного с другим источником.
Требуется разработать компьютерную модель дискретного источника сообщений U, символы которого статистически взаимосвязаны с символами в сообщениях другого источника S.
С помощью построенной модели определим взаимную информацию I(S,U) источников S и U.
В качестве источника S будем использовать марковский источник, компьютерная модель которого была получена в примере 2.1.
Дополнительно получим модель кодера источника, который преобразует исходное сообщение в сообщение, закодированное двоичным префиксным кодом.
Для получения кодовых слов построим кодовое дерево (рис. 2.7).
Рис. 2.7. Кодовое дерево и префиксный код (пример 2.3)
Рис. 2.8. Исходный код класса DiscrIU
Рис. 2.9. Исходный код класса KoderIU
Рис. 2.10. Исходный код метода Main() консольного приложения
Рис. 2.11. Результат работы консольного приложения при длине сообщения 50000 символов
Отсюда вероятности появления символов источника U будут:
p*(u1) = 6848 / 50000 = 0,137;
p*(u2) = 7499 / 50000 = 0,150;
p*(u3) = 15578 / 50000 = 0,312;
p*(u4) = 6507 / 50000 = 0,130;
p*(u5) = 13568 / 50000 = 0,271;
= 0,137 + 0,15 + 0,312 + 0,13
+ 0,271 = 1.
Отсюда безусловная энтропия источника U будет:
H(U) = – (0,137∙log20,137 + 0,15∙log20,15 + 0,312∙log20,312 +
+ 0,13∙log20,13 + 0,271∙log20,271) = 2,221 (бит/символ).
По формуле (2.12) найдем взаимную информацию источников S и U:
I(A,B) = 2,221 – 1,638 = 0,583 (бит/символ).
Наиболее короткие кодовые комбинации (3 слова по 2 знака) требуется присвоить символам u3, u5, u2, имеющим наибольшие вероятности. Отсюда оптимальный префиксный код должен быть следующим:
u1 → 000; u2 → 11; u3 → 01; u4 → 001; u5 → 10.
Необходимо внести соответствующие изменения в код класса KoderIU. ❒
