Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИиП_5.rtf
Скачиваний:
10
Добавлен:
31.03.2015
Размер:
838.23 Кб
Скачать

5.5. Алгоритмы сжатия информации

5.5.1. Основные понятия

Граф это совокупность множества узлов и множества дуг, направленных от одного узла к другому.

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

Лист дерева это узел, из которого не выходит ни одной дуги. В паре узлов дерева, соединенных между собой дугой, тот узел, из которого она выходит, называется родителем, а другой ребенком. Два узла называются братьями, если они имеют одного и того же родителя.

Двоичное дерево это дерево, у которого из всех узлов, кроме “листьев” выходит по две дуги.

Дерево кодирования Хаффмена (Н-дерево) это дерево, у которого каждый узел имеет вес, и вес «родителя» равен суммарному весу его «детей».

Входной алфавит это множество символов, входящих в сообщение.

5.5.2. Кодирование Хаффмена

Кодирование длины серий

Относительное кодирование

Частотно-зависимое кодирование, алгоритм Дэвида Хаффмена, 1952 г.

Пример построения дерева Хаффмена для кодирования символов сообщения. Имеется таблица частот.

Таблица 5.6. Таблица частот

Количество вхождений символа в сообщение

15

7

6

6

5

Список свободных узлов

А

Б

В

Г

Д

0 1 0 1

Рис. 5.9. Начальный этап построения дерева Хаффмена

0 1

0 1

0 1 1 0 1

Рис. 5.10. Построенное дерево Хаффмена

Коды Хаффмена: А 0, Б 100, В 101, Г 110, Д 111.

5.5.3. Адаптивное сжатие

Пример обновления упорядоченного дерева при считывании символов сообщения. Пусть первоначально задано упорядоченное дерево (рис. 5.11). Здесь W вес узла, N порядковый номер в списке узлов.

Рис. 5.11. Заданное дерево Хаффмена

Рис.5.12. Обновленное дерево Хаффмена

Рис. 5.13. Свойство упорядоченности нарушено

Рис. 5.14. Свойство упорядоченности восстановлено

Рис. 5.15. Обновленное упорядоченное дерево после прочтения сообщения

5.5.4. Кодирование Лемпела-Зива

Пример распаковки методом сжатия LZ77, использующим алгоритм Лемпела-Зива. Пусть сжатая версия текста имеет вид: авааврв (5,4,а) (0,0,с) (8,6,в).

Результат распаковки первого триплета: авааврваавра (0,0,с) (8,6,в).

Результат распаковки второго триплета: авааврвааврас (8,6,в).

Распаковка третьего триплета: авааврвааврасрвааврв.