Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turchin_D_E_Teoria_informatsii_Praktikum_2013.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
2.06 Mб
Скачать

Кодовые деревья и префиксные коды.

При посимвольном кодировании сообщений дискретного источника наиболее часто используются префиксные коды, обладающие свойством префикса: никакая более короткая кодовая комбинация не является начальной частью (префиксом) более длинной кодовой комбинации. Данное свойство префиксных кодов обеспечивает возможность их однозначного декодирования при низкой избыточности.

Для построения префиксных кодов с минимальной избыточностью применяют специальные методы (например, метод Хаффмана), которые основаны на использовании кодовых деревьев.

Кодовым деревом называется древовидный ориентированный граф, на котором из каждой вершины (узла) исходит число дуг (ветвей), равное основанию кода (рис. 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]