Цифровой автомат адаптивного построения кода Хаффмана

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

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

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

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

Сумский государственный университет

ЦИФРОВОЙ АВТОМАТ АДАПТИВНОГО ПОСТРОЕНИЯ КОДА ХАФФМАНА

Ю.А Зубань, канд. техн. наук;

В.В. Петров, студ.

Адаптивные алгоритмы кодирования весьма эффективны для сжатия данных. Адаптивный (динамический) метод Хаффмана позволяет достичь наиболее высокой степени сжатия и достаточно хорошей скорости обработки данных. Синтез автоматной модели адаптивного кодирования Хаффмана - основная цель данной статьи. Полученная модель автомата и результаты исследования могут использоваться для аппаратной реализации адаптивного алгоритма кодирования Хаффмана.

Нынешний век называют информационным веком, так как информация играет все более и более важную роль в современной жизни. Ее объемы постоянно возрастают, и, таким образом, требуются все большие и большие накопители и все более быстрые каналы связи для передачи. Но повышение емкости хранилищ и скорости линий передачи либо невозможно технически, либо не оправдано экономически. Но поскольку просто уменьшать объем информации нежелательно, то приходится искать другие способы уменьшения. То есть, требуется каким либо образом уменьшить объем информации, не изменяя ее. Такой процесс называется архивацией, компрессией или сжатием данных.

Представление информации, которым люди привыкли пользоваться, почти всегда избыточно. Избыточность присутствует в текстах, так как в них обязательно есть повторяющиеся слова, фразы, а то и целые абзацы. Избыточность информации присуща звуковой речи, так как в ней обязательно есть частоты, не слышимые человеком, или не существенные для восприятия. Аналогично, избыточно представление информации в электронном виде, обязательно есть некоторые повторяющиеся символы, цепочки символов. Удалив избыточность, мы можем уменьшить потребности в информационных емкостях, необходимых для хранения информации, и при этом не уменьшив содержательную сторону информации, то есть сохранив возможность восстановления ее к исходному виду. Таким образом, удаляя избыточность информации, можно уменьшить ресурсы, необходимые для хранения и передачи данных.

Любой способ, подход и алгоритм, реализующий сжатие данных, предназначен для снижения объема выходного потока данных при помощи ее обратимого или необратимого преобразования.

Метод Хаффмана даёт достаточно высокую скорость и хорошее качество сжатия. Широко применяется как в программных (всевозможные компрессоры, архиваторы и программы резервного копирования файлов и дисков), так и в аппаратных (системы сжатия, ”прошитые” в модемы и факсы, сканеры) реализациях.

Синтез универсального автомата для построения кода Хаффмана - актуальная задача, решение которой позволяет построить более адекватную модель источника информации и соответственно получить более оптимальный с точки зрения средней длины код без применения больших аппаратных затрат.

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

Первый - заключается в просмотре входного потока и построении кодирования на основании собранной статистики, при этом требуется два прохода по массиву данных: один - для просмотра и сбора статистической информации, второй - для кодирования. В таком случае в выходной поток записывается статистическая схема использованного кодирования. Это несколько ограничивает сферу применения таких алгоритмов, так как исключает возможность однопроходного кодирования “на лету”, применяемого в телекоммуникационных системах, где и объем данных подчас не известен, а их повторная передача или разбор может занять неоправданно много времени. Данный метод известен как статическое кодирование Хаффмана.

Второй метод - метод адаптивного кодирования. Его общий принцип состоит в том, чтобы менять схему кодирования в зависимости от характера изменений входного потока. Такой подход имеет однопроходный алгоритм и не требует сохранения информации об использованном кодировании в явном виде. Адаптивное кодирование может дать большую степень сжатия, по сравнению со статическим, поскольку более полно учитываются изменения частот входного потока. Данный метод известен как динамическое кодирование Хаффмана.

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

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

Как правило, кодовые комбинации синтезируются программно. Для аппаратной реализации обычно используется табличный метод. Его суть в том, что кодирование входных символов осуществляется с помощью таблицы (размещенной в ROM, ПЛМ и др. носителях данных, имеющих адресный доступ и соответствующую разрядность), которая содержит в себе информацию о дереве или о нескольких деревьях, структура и количество которых выбираются в зависимости от характеристик источника информации. По сути, в данном случае таблица представляет собой преобразователь кода, который пришедшей кодовой комбинации ставит в соответствие одну из немногих комбинаций кода Хаффмана, согласно изменению одного или группы параметров источника [2].

Алгоритм построения кодового дерева Хаффмана:

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

б) выбираются два свободных узла дерева с наименьшими весами;

в) создается узел с суммарным весом выбранных узлов;

г) созданный узел добавляется в список свободных, а два исходных удаляются из этого списка;

д) одной связи, выходящей из созданного узла, ставится в соответствие бит 1, другой - бит 0;

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

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

В общем виде автомат построения кода Хаффмана можно представить входным алфавитом

,

распределение вероятностей которого

,

выходным алфавитом

,

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

,

.(1)

В соответствии с (1) в ходе построения кода происходит n-1 сортировка, в результате каждой из которых определяются два узла с наименьшими значениями вероятностей и , где

, .

Совокупность минимальных значений вероятностей представляет собой множество (2).

={,, …, }{, …, }, (2)

|| = 2(n-1) = 2n - 2 ,

Сумма двух минимальных вероятностей дает третью - вероятность узла дерева Хаффмана:

.

Число создаваемых узлов в соответствии с (1) равно (n-1).Таким образом, существует множество узлов дерева

={,, …, }, || = (n-1),

являющееся подмножеством

().

Множество Y состоит из 0 и 1. В процессе формирования кода символа автоматом выполняется Z переходов, в результате чего формируется двоичная последовательность длины Z, которая и является кодом данного символа. Обозначим принадлежность символа входного алфавита к поддереву как . Поддерево- дерево, построенное начиная с узла, являющегося корнем. Значение yi-го бита зависит от и , например: если , то бит yi равен 0, а если , то yi=1. Формирование кодового дерева Хаффмана приведено в таблице 2.

Таблица 2
Таблица формирования кодового дерева

Номер сортировки

Вероятность минимальных узлов дерева

Вероятность создаваемого узла

Значение выходного бита yj

1

=

y1=0

y1=1

2

=

y2=0

y2=1

3

=

y3=0

y3=1

n-1

==1

yz=0

yz=1

В соответствии с описанным выше алгоритмом получения кода построим таблицу переходов и выходов синтезируемого автомата (табл. 3).
Таблица 3
Таблица переходов и выходов автомата

А()

Состояние Q()

Состояние Q()

1

2

3

4

yi

yj

yS

_

y2

y2

_

yZ

_

yZ

Алгоритм работы автомата можно также представить в виде дерева автомата
Согласно алгоритму формирования кода Хаффмана значение выходного бита определяется тем, по какому пути будет выполнен проход по дереву, т. е. через какой узел из двух минимальных (), получившихся при каждой сортировке. Тогда функция выходов имеет вид (3)
(3)
С учетом алгоритма формирования дерева получение конкретной комбинации выходного кода следующее: приход входной кодовой комбинации аi приводит к изменению вероятности pi появления данного символа, в соответствии с табл. 2 формируется или модифицируется дерево.
Для случая, когда построение кодовой комбинации Хаффмана для символа входного алфавита происходит в реальном времени непосредственно после поступления входного кода символа и при этом возникает необходимость перестраивать кодовое дерево, то для ускорения формирования выходной кодовой комбинации (во избежание второго прохода по дереву), генерация и выдача последней начинаются с момента, когда кодируемый символ формирует узел, т.е. pi = , или pi = , при этом происходит формирование j-го узла с вероятностью . Вывод следующего бита происходит, если выполняется хотя бы одно из равенств
=, =.
Таким образом, алгоритм выполняет построение кодовой комбинации Хаффмана для символа параллельно с формированием или модификацией дерева.
Множество вероятностей узлов, необходимых для формирования выходной комбинации, имеет вид
={,, …, },
Из этого следует, что формирование выходного кода зависит от множества вероятностей
{ pi }.
Из сказанного ранее важно отметить то, что для адаптивного алгоритма свойственна постоянная модификация дерева. В связи с этим возникает задача определения граничного критерия необходимости модификации дерева.
Рассмотрим множество, определяющее код Хаффмана для кодируемого символа:
{} -
до модификации,
{ } - после.
В результате модификации вероятность i-го символа изменяется:
=+, где
- изменение вероятности поступившего символа (так как символ поступил, то его вероятность только повышается). Так как суммарная вероятность всегда равна 1, то вероятность остальных символов должна в сумме уменьшиться на . Это повлечет изменение вероятностей всех узлов и листьев.
Условием, при котором происходит модификация дерева, является изменение длины кодовой комбинации Хаффмана для символа:
, а .
Из последнего равенства следует, что сигналом к модификации служит некоторое конкретное значение , отличное от нуля, при котором .
Работа по определению и реакции на некоторое значение может происходить на каждой из стадий построения кода Хаффмана, от поступления последней до выдачи самого кода, что непосредственно зависит от принципов, положенных в работу цифрового автомата. Так, например, можно реагировать на изменение:
а) числа поступивших одинаковых кодовых комбинаций, где изменение дерева будет при достижении конкретного числа;
б) порядка расположения узлов на уровне (уровень определяется узлами, при переходе на которые формируется один и тот же по счету бит кодовой комбинации Хаффмана);
в) длины кодовой комбинации Хаффмана для символа или средней длины кода для данного дерева;
г) энтропии входного алфавита.
Рассмотренные в статье вопросы построения автоматной модели адаптивного построения кода Хаффмана дают широкие возможности синтеза данного автомата, в том числе и в виде специализированного устройства или на основе ПЛИС. Особенно для устройств кодирования, работающих в условиях часто изменяющихся параметров источника информации. Полученные результаты могут быть наиболее востребованы для адаптивных систем, также рассмотренных в данной работе.
SUMMARY
The adaptive encoding algorithms are essentially effective for data compression. The adaptive (dynamic) Huffman method allows to achieve the most high compression rate and sufficiently good processing speed. The synthesis of automaton model of adaptive Huffman encoding is the main goal of this article. Received automaton model and research results can be used for hardware implementation of the adaptive Huffman encoding algorithm.
СПИСОК ЛИТЕРАТУРЫ
1 Жураковський Ю.П., Полторак В.П. Теорія інформації та кодування: Підручник. - К.: Вища шк., 2001. - 255 с.:іл..
2 Ватолин Д., Ратушняк и др. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. - М.: ДИАЛОГ-МИФИ, 2002. - 348 с

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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