Transcript
Page 1: «Сжатие данных.  Алгоритм Хаффмана»

Выполнила: Медведева Анастасия,

Ученица 11А класса,МОУ СОШ №3.Руководитель:

ГлазуноваОльга Петровна,

учитель информатики.

«Сжатие данных. Алгоритм

Хаффмана»

Page 2: «Сжатие данных.  Алгоритм Хаффмана»

Способы уменьшения объема информации:Способы уменьшения объема информации:

1

2

3

Ограничение количества информации

Ограничение количества информации

Увеличение объема носителейУвеличение объема носителей

Использование сжатия информации

Использование сжатия информации

Page 3: «Сжатие данных.  Алгоритм Хаффмана»

Цели и задачи проекта:

Узнать, когда и как появились алгоритмы сжатия.

Рассмотреть основные виды алгоритмов сжатия.

Изучить алгоритм Хаффмана и показать его применение.

Научиться решать задачи по данному алгоритму.

Page 4: «Сжатие данных.  Алгоритм Хаффмана»

История появления алгоритмов сжатия.

Клод ШеннонКлод Шеннон – основоположник науки о

сжатии информации.Его теорема об оптимальном кодировании показывает, к чему нужно стремиться при кодировании информации и

на сколько та или иная информация при этом

сожмется.

Page 5: «Сжатие данных.  Алгоритм Хаффмана»

1977 год1977 год – изобретение Лемпелем и Зивом

словарных алгоритмов.1984 год1984 год – изобретение

алгоритма PPM и LZV.

Page 6: «Сжатие данных.  Алгоритм Хаффмана»

Теоретические способы Теоретические способы уменьшения данных:уменьшения данных:

• Изменение содержимого данных

• Изменение структуры данных• Одновременное

изменение как содержимого,

так и структуры данных

Page 7: «Сжатие данных.  Алгоритм Хаффмана»

Если при сжатии данных происходит изменение их содержимого, то метод

сжатия называется необратимым, то есть при восстановлении (разархивировании) данных из архива не происходит полное

восстановление информации.

Примеры форматов сжатия с потерями:• JPEG - для графических данных;

• MPG - для для видеоданных;• MP3 - для аудиоданных.

Методы сжатия с Методы сжатия с регулированными регулированными

потерями информации.потерями информации.

Page 8: «Сжатие данных.  Алгоритм Хаффмана»

• Если при сжатии данных происходит только изменение структуры данных, то метод сжатия называется обратимым. В этом случае, из архива можно восстановить информацию полностью.Примеры форматов сжатия без потерь информации:

• •GIF, TIFF - для графических данных;

• AVI - для видеоданных;• ZIP, ARJ, RAR, CAB, LH - для произвольных типов данных.

Page 9: «Сжатие данных.  Алгоритм Хаффмана»

Сжатие данных

алгоритм RLE

(Run Length

Encoding)

алгоритмы группы KWE

(KeyWord Encoding) алгоритм Хаффмана

Page 10: «Сжатие данных.  Алгоритм Хаффмана»

Алгоритм Хаффмана

Дэвид Хаффман — первопроходец в сфере

теории информации.

В 1952 году создал алгоритм префиксного кодирования с минимальной избыточностью (известный как алгоритм или

код Хаффмана).

В 1999 году получил медаль Ричарда Хэмминга за

исключительный вклад в теорию информации.

Page 11: «Сжатие данных.  Алгоритм Хаффмана»

Определение.Определение.

Пусть A = {a1, a2, …, an} — алфавит из n различных символов,

W = {w1, w2, …, wn} — соответствующий ему набор положительных целых весов.

Тогда набор бинарных кодов C = {c1, c2, …, cn}, такой, что:

1. ci не является префиксом для cj, при i ≠ j. 2. Сумма минимальна.

( |ci| — длина кода ci) называется кодом Хаффмана.

Page 12: «Сжатие данных.  Алгоритм Хаффмана»

Характеристики Характеристики классического классического

алгоритма Хаффмана:алгоритма Хаффмана: Коэффициенты компрессии:Коэффициенты компрессии: 8, 1,5, 1 (Лучший, средний, худший коэффициенты).

Класс изображений:Класс изображений: Практически не

применяется к изображениям в чистом виде. Обычно используется как один из этапов

компрессии в более сложных схемах.

Симметричность:Симметричность: 2 (за счет того, что требует двух проходов по массиву сжимаемых данных).

Характерные особенности:Характерные особенности: Единственный алгоритм, который не увеличивает размера исходных данных в худшем случае (если не

считать необходимости хранить таблицу перекодировки вместе с файлом).

Page 13: «Сжатие данных.  Алгоритм Хаффмана»

Алгоритм.• 1. Составим список кодируемых символов, при этом

будем рассматривать один символ как дерево, состоящее из одного элемента, весом, равным частоте появления символа в тексте.

• 2. Из списка выберем два узла с наименьшим весом.

• 3. Сформируем новый узел с весом, равным сумме весов выбранных узлов, и присоединим к нему два выбранных узла в качестве дочерних.

• 4. Добавим к списку только что сформированный узел.

• 5. Если в списке больше одного узла, то повторить пункты со второго по пятый.

Page 14: «Сжатие данных.  Алгоритм Хаффмана»
Page 15: «Сжатие данных.  Алгоритм Хаффмана»

Пример 1. Для примера возьмём слово "Миссисипи". Тогда

алфавит будет А={и, м, п, с} , а набор весов W={4, 1, 1, 3}:

По алгоритму возьмем два символа с наименьшей частотой - это м и п. Сформируем из них новый узел мп весом 2 и добавим его к

списку узлов:

Затем объединим в один узел узлы мп и c:

Узел и м п с

Вес 4 1 1 3

Узел и мп с

Вес 4 2 3

Узел и мпс

Вес 4 5

Page 16: «Сжатие данных.  Алгоритм Хаффмана»

И, наконец, объединяем два узла и и мпс. Итак, мы получили дерево Хаффмана и соответствующую

ему таблицу кодов:

Таким образом, закодированное слово "Миссисипи" будет выглядеть как "1000111101101010". Длина

закодированного слова - 16 бит. Стоит заметить, что если бы мы использовали для кодирования каждого символа

из четырёх по 2 бита, длина закодированного слова составила бы 18 бит.

Символ и м п с

Код 0 100 101 11

Page 17: «Сжатие данных.  Алгоритм Хаффмана»

Пример 2.

Предположим, что нам надо заархивировать следующую

символьную последовательность:

"AAABCCD".Без архивации эта последовательность

занимает 7 байт. С архивацией по методу RLE она бы выглядела бы так:

3,"A",1,"B",2,"C",1,"D"то есть возросла бы до 8-ми байтов.

А алгоритм Хаффмана может сократить ее почти до двух байтов, и вот как это

происходит.

Page 18: «Сжатие данных.  Алгоритм Хаффмана»

Таблица частот:Таблица частот:

Двоичное дерево:Двоичное дерево:

Символ 'A','B','C,'D'Количество повторений

'3','1','2','3'

Page 19: «Сжатие данных.  Алгоритм Хаффмана»

0 0 0 111 111 10 10 110

A A A B B C C D

Рассмотренный нами выше текст "AAABCCD" займет всего 13 бит (а

это меньше двух байтов).

A A A B C C D0 0 0 111 10 10 110 A A A B C C D

0 0 0 111 10 10 110

Page 20: «Сжатие данных.  Алгоритм Хаффмана»

Пример 3.Рассмотрим использование алгоритма Хаффмана на

пример оптимизации занимаемого пространства БД при хранении массива, состоящего из целых чисел в

диапазоне [0,255]. Массив представляет собой отображение звуковой информации wav-файла.

Среднее количество хранимых элементов массива составляет ~20 000.

Результаты представления массива после различных преобразований массива $data с 9288 элементами (в

символах):

Page 21: «Сжатие данных.  Алгоритм Хаффмана»

Список используемой литературы:

• Веретенников А.Б «Алгоритм Хаффмана», 2008 г.

• Материалы для подготовки к ЕГЭ.

• Ресурсы Интернет.