Изучение алгоритма сжатия Хаффмана

Изучение алгоритма оптимального префиксного кодирования Хаффмана, его использование для сжатия сообщений. Обработка кодов с рассчитанным сложением подач байтов. Методы сжатия данных с потерями и без потерь информации. Построение бинарного дерева Хаффмана.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 12.12.2024
Размер файла 173,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.Ru/

Московский технологический институт

Специальность 09.03.03 Прикладная информатика в экономике

Изучение алгоритма сжатия Хаффмана

Масин Н.В

Сохранский В.В.

Россия, г. Москва

Аннотация

Изучить алгоритм оптимального префиксного кодирования Хаффмана и его использование для сжатия сообщений. Обработка кодов с рассчитанными сложением подач байтов; но поскольку все в моментальном упрощённом виде. Рассчитаем коэффициент сжатия относительно использования кодировки ASCII (8 бит/символ). С использованием веточных узлов в разновидных массивов. А также с построением с низа до вершены, добавляем существенные узлы с низкими весами.

Ключевые слова: алгоритм, Хаффман, дерево кодирования, веточные узлы, бинарный код.

Annotation

Study the Huffman Optimal Prefix Coding algorithm and its use for message compression. Processing codes with calculated addition of byte feeds; but because everything is in an instantly simplified form. Let's calculate the compression ratio relative to the use of ASCII encoding (8 bits/character). Also build the binary coding tree bottom-up, by combining existing nodes that have the lowest weights.

Key words: algorithm, Huffman, coding tree, branch nodes, binary numbers.

Алгоритм Хаффмана - адаптивный жадный алгоритм оптимального префиксного кодирования алфавита с минимальной избыточностью. Был разработан в 1952 году аспирантом Массачусетского технологического института Дэвидом Хаффманом A Method for the Construction of Minimum Redundancy Codes [Proceedings of the IRE 40 (9): 1098-1101 (1952)].

С использованием постоянной частности для сжатия данных по Хаффману применяется при сжатии фото и видеоизображений (JPEG, стандарты сжатия MPEG), в архиваторах (PKZIP, LZH и др.), в протоколах передачи данных MNP5 и MNP7. Жадный алгоритм (Greedy algorithm) - алгоритм, заключающийся в принятии локально оптимальных решений на каждом этапе, допуская, что конечное решение также окажется оптимальным. Идея алгоритма Хаффмана состоит в следующем: зная вероятности символов в сообщении, можно описать процедуру построения кодов переменной длины, состоящих из целого количества битов. Символам с большей вероятностью ставятся в соответствие более короткие коды. Коды Хаффмана обладают свойством префикса (то есть ни одно кодовое слово не является префиксом другого), что позволяет однозначно их декодировать. Нетрудно доказать с помощью метода индукции по m, что этот способ действительно позволяет минимизировать взвешенную длину пути [См. E. S. Schwartz, Information and Control 7 (1964), 37-44; G. Markowsky, Acta Informatica 16 (1981), 363-370.] Это значит, что существует прекрасный способ поиска дерева Хаффмана при условии, что веса расположены в порядке не убывания. Тогда достаточно создать две очереди, одна из которых будет содержать исходные веса, а другая - объединенные веса. На каждом этапе этой процедуры наименыший неиспользованный вес будет находиться в начале одной из очередей, поэтому его не придется искать. Размер веточного узла равен соответственному потоку алфавита; вес продлившего узла равен равный суммой сортировок. С другой страны, для продливших узлов, которые выделяет сам индекс для дерева кодирования, и последовательно начинаются с 1.

Чтобы разделить веточные узлы и продливший узлы, с использованием знаком индекса. То бишь, позитивный индекс обозначается как продливший узел; там, где негативный индекс равен веточному (алфавитному) узлу. Современное кодирование Хаффмана требует передачу резонансов алфавита. Это указано для кодированного алфавита в Таблице №1.

Таблица 1

Коммуникационная таблица резонансов ПолеВесДействие

original_size

sizeof(int)

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

num_active

1 байт

Количество активных алфавитов

Алфавитный поток

1 байт + sizeof(int)

Первый код дает бинарный код алфавита

Современное кодирование Хаффмана требует передачу резонансов алфавита. Это указано для кодированного алфавита. Обработка кодов с рассчитанными сложением подач байтов; но поскольку все в моментальном упрощённом виде. Эти файлы с алфавитами могут быть модулированы предусмотрены в верхней таблице. Сам процесс имплементации может достигнуть самый минимальный уровень. Максимальное число узлов бинарного дерево кодов состоявшийся на число активных алфавитов. Для самой функций алфавитов, идет локализация с ее количество битов и парных совпадающих индексных узлов. Дале, для каждого узла в дереве кодирования, мы также парные сортировки. Этот процесс очень нуждается в том что когда идет установка дерево веточные узлы могут продвигаться в правую часть ветки чтобы не сниженный вес мог быть продвинутым в потоке данных, а не последовательным. Дале индексного веточного узла имеет свойства, (у + 1), где v является ёмкость и вес алфавита. Дополняем единицу для того, чтобы индекс не был равен нолю. Первые изображения были отправлены по проводам еще в 1843 г., но современные факсы в офисах так и не появились. до 1960-х годов. В то время для отправки одностраничного письма по телефонным линиям общего пользования требовалось около шестиминутный стандарт группы 1 для передачи, который был введен международной телеграфной и телефонной связью. Стандарт группы 2, введенный в 1976 г. сократил время до отправить страницу за три минуты, но все же не смог обеспечить передачу в достаточно плотном разрешении для четкое воспроизведение мелкого шрифта. В 1980 году был введен стандарт группы 3. Стандарт группы 3 улучшен разрешение сканирования факса и внедрили методы цифровой передачи, обеспечивающие скорость передачи 14400 бит в секунду. Содержание узлов, которые является часть бинарных узлов, которые состоят из комбинации новых узлов, как сам алгоритм Хаффмана представляет.

Возьмем слово "abracadbra" где ф символ конец сообщения. Получаем данные в Таблице 2;

Таблица 2

Визуальная таблица алгоритма

Байт

Симво

Резона

10

ф

1

97

a

5

98

b

2

99

c

1

100

d

1

114

r

2

ASCII = 8 * 12 = 96 бит

LHuff = 6 * 2+3 * 3+2 * 2 * 3+2 * 2 * 4+8 * 5= 89 бит.

Ксж = LAхCII, 078 Huff

Коэффициент сжатия относительно равномерного кода (5 бит/символ, т. к. у нас всего 12 символов) будет равен;

Ксж= 5хІ2 =1-0,0 674 Huff

Рассчитаем среднюю длину полученного кода по формуле;

lep = Z V Is, s

где S - множество символов алфавита;

р - вероятность появления символа;

Is - количество бит в коде символа.

Для полученного кода средняя длина будет равна

1ср = 0.24 * 2 + 0.12 * 3 + 2 * 0.08 * 3 + 2 * 0.08 * 4 + 8 * 0.01 *

5 = 2.36 бит/символ.

Рисунок 1. Бинарное дерево

алгоритм кодирование хаффман сжатие информация

B Рисунке.1 показывает установку бинарного кодированного дерева. Пусть v - внутренний узел, который находится на максимальном расстоянии от корня. Если веса ф и c еще не приписаны детям узла V, то ими можно заменить величины, которые уже там находятся, не увеличивая взвешенную длину пути. Содержание узлов, которые является часть бинарных узлов, которые состоят из комбинации новых узлов, как сам алгоритм Хаффмана представляет.

Рассчитаем коэффициент сжатия относительно использования кодировки ASCII (8 бит/символ).

Поскольку при построении дерева кода Хаффмана может возникнуть некоторый n-ного варианта кода используют дисперсию. Дисперсия показывает, насколько сильно отклоняются длины индивидуальных кодов от их средней величины. Лучшим будет код с наименьшей дисперсией. Дисперсия рассчитывается по формуле:

<5 = X Р х ds- lep)2

Для полученного кода дисперсия будет равна;

5 = 0.24 * (2-2.36)2+0.12 * (3 - 2.36)2 + 2 * 0.08 * (3-2.36)2

+ 2 * 0.08 * (4 - 2.36)2 + 8 * 0.01 * (5 - 2.36)2 = 1.1337

Для уменьшения дисперсии кода существует правило: когда на дереве имеется более двух узлов с наименьшей вероятностью, следует объединять символы с наибольшей и наименьшей вероятностью; это сокращает общую дисперсию кода.

Использованные источники

1. D.A. Huffman, “A method for the construction of minimumredundancy codes,” Proceedings of the IRE, vol. 40, no. 9, pp. 1098-1101, Sep. 1952.

2. Я. Гэгэрин. Имплементация Хаффмана 2018 - Кембридж.

Размещено на Allbest.Ru

...

Подобные документы

  • Особенности кодирования информации с помощью метода Хаффмана. Реализация кодера и декодера с использованием статического алгоритма Хаффмана. Структура программы, оценка ее эффективности (степени сжатия) в зависимости от типа и размера сжимаемых файлов.

    курсовая работа [136,2 K], добавлен 15.06.2013

  • Обзор существующих программ сжатия данных без потерь. Анализ методов сжатия: алгоритмов группы, KWE, Lossless JPEG, кодирование Хаффмана. Обзор составляющих компонентов. Разработка кода программы-архиватора, работающей на основе алгоритма Хаффмена.

    курсовая работа [487,3 K], добавлен 14.07.2011

  • Описание метода сжатия информации на основе двоичных кодирующих деревьев Хаффмана. Среда разработки Delphi версии 7.0. Понятия объектно-ориентированного программирования. Программа, разработанная в Delphi. Реализация на Delphi метода кодирования Хаффмана.

    курсовая работа [2,1 M], добавлен 26.03.2013

  • Типы сжатия данных: с потерями (lossy) и без потерь (lossless). Сжатие с минимальной избыточностью. Кодирование методом Шеннона-Фано. Проверка работы программы по сжатию файлов формата bmp и xls. Реализация на Delphi алгоритма сжатия Шеннона и Хаффмана.

    курсовая работа [2,6 M], добавлен 26.01.2011

  • Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.

    дипломная работа [1,1 M], добавлен 26.05.2012

  • Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.

    курсовая работа [51,7 K], добавлен 24.12.2012

  • Оценка вычислительной сложности программы. Реализация алгоритма кодирования информации Хаффмана. Кодировка теста двоичным кодом и в дереве Хаффмана. Бинарный код символов. Символ и частота его появления в тексте. Вычисление трудоемкости алгоритма.

    контрольная работа [21,0 K], добавлен 16.12.2012

  • Изучение методов кодирования Хаффмана, Фано. Модель информационной системы Шеннона. Среднестатистическая информационная емкость сообщений для эргодических источников с заданным распределением частот символов. Формулы Хартли для удельной емкости на символ.

    презентация [528,9 K], добавлен 19.10.2014

  • Двоичные деревья в теории информации. Двоичные кодовые деревья допускают интерпретацию в рамках теории поиска. Обоснование выбора, описание алгоритма и структур данных. Обоснование набора тестов. Построение оптимального кода. Сущность алгоритма Хаффмана.

    курсовая работа [241,6 K], добавлен 17.10.2008

  • Определение среднего количества информации. Зависимость между символами матрицы условных вероятностей. Кодирование методом Шеннона–Фано. Пропускная способность канала связи. Эффективность кодирования сообщений методом Д. Хаффмана, характеристика кода.

    контрольная работа [94,6 K], добавлен 04.05.2015

  • Сущность универсального метода упаковки, его преимущества и недостатки. Кодирование путем учета числа повторений. Примеры схем распаковки последовательности байтов. Алгоритмы сжатия звуковой, графической и видеоинформации. Разновидности формата МРЕG.

    презентация [96,2 K], добавлен 19.05.2014

  • Современные методы цифрового сжатия. Классификация алгоритмов сжатия. Оцифровка аналогового сигнала. Алгоритм цифрового кодирования. Последовательное двойное сжатие. Чересстрочность и квантование. Сокращение цифрового потока. Профили, уровни формата MPEG.

    реферат [784,9 K], добавлен 22.01.2013

  • Энтропия и количество информации. Комбинаторная, вероятностная и алгоритмическая оценка количества информации. Моделирование и кодирование. Некоторые алгоритмы сжатия данных. Алгоритм арифметического кодирования. Приращаемая передача и получение.

    курсовая работа [325,1 K], добавлен 28.07.2009

  • Краткий обзор основных теорий сжатия. Концепции идей и их реализация. Сжатие данных с использованием преобразования Барроуза-Вилера. Статический алгоритм Хафмана. Локально адаптивный алгоритм сжатия. Алгоритм Зива-Лемпеля (Welch) и метод Шеннона-Фано.

    практическая работа [188,5 K], добавлен 24.04.2014

  • Классификация и основные характеристики метода сжатия данных. Вычисление коэффициентов сжатия и оценка их эффективности. Алгоритмы полиноминальных, экстраполяционных и интерполяционных методов сжатия и их сравнение. Оптимальное линейное предсказание.

    курсовая работа [1,1 M], добавлен 17.03.2011

  • Архивация и компрессия как методы сжатия изображений. Алгоритмы сжатия данных. Вспомогательные средства, которые используются для понижения объемов файлов: изменение цветовой модели изображения, изменение разрешения растрового файла, ресемплирование.

    презентация [45,3 K], добавлен 06.01.2014

  • Рассмотрение теоретических подходов к алгоритму сжатия LZW, который по мере поступления информации динамически вычисляет целочисленные признаки частоты появления входных символов. Возможности использования современных GPU. Графические форматы GIF и TIFF.

    дипломная работа [559,8 K], добавлен 03.10.2011

  • Методы компрессии информации. Обзор и характеристика существующих методов сжатия информации, основанных на процедуре кодирования Хаффмена. Алгоритмы динамического кодирования методом FGK и Виттера. Программная реализация и руководство пользователя.

    курсовая работа [33,2 K], добавлен 09.03.2009

  • Способ улучшения сжатия файлов формата DjVu. Общая схема алгоритма классификации букв. Основной алгоритм сравнения пары букв. Быстрый отказ для пары разных букв. Дерево разрезов. Получение монохромных изображений. Алгоритм для устранения мусора.

    курсовая работа [64,7 K], добавлен 28.10.2008

  • Исследование основных видов программ-архиваторов. Сжатие файлов при архивации. Показатель степени сжатия файлов. Оценка функциональности самых популярных программ-упаковщиков. Технические характеристики процессов сжатия. Методы архивации без потерь.

    реферат [1,6 M], добавлен 05.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.