Научная статья на тему 'Адаптивный алгоритм Хаффмана сжатия информации'

Адаптивный алгоритм Хаффмана сжатия информации Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
7925
829
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Адаптивный алгоритм Хаффмана сжатия информации»

УДК 57.087.1

Кудрина М.А., Кудрин К.А., Дегтярева О.А., Сопченко Е.В.

ФГАОУ ВО «Самарский государственный аэрокосмический университет им. академика С.П. Королева (Национальный исследовательский университет)», Самара, Россия

АДАПТИВНЫЙ АЛГОРИТМ ХАФФМАНА СЖАТИЯ ИНФОРМАЦИИ

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

Суть адаптивного алгоритма состоит в том, что при каждом сопоставлении символу кода изменяется внутренний ход вычислений так, что в следующий раз этому же символу может быть сопоставлен другой код, т.е. происходит адаптация алгоритма к поступающим для кодирования символам [1]. При декодировании происходит аналогичный процесс.

В адаптивном алгоритме сжатия Хаффмана используется упорядоченное бинарное дерево. Бинарное дерево называется упорядоченным, если его узлы могут быть перечислены в порядке неубывания веса. Перечисление узлов происходит по ярусам снизу-вверх и слева-направо в каждом ярусе. Узлы, имеющие общего родителя, находятся рядом на одном ярусе.

На рис. 1 приведен пример упорядоченного дерева Хаффмана. Рядом с узлами дерева на данном рисунке приведены их веса, а в квадратных скобках приведены порядковые номера узлов дерева при перечислении.

№ узла ] 2 Í 4 5 6 7 К у

] -.i r v t I i 0 I 1 1 1 2 2 3 5

0/«с[1]

Рисунок 1

Пример упорядоченного дереЕ Хаффмана

Правила построения и упорядочивания бинарного дерева Хаффмана

В начале работы алгоритма дерево кодирования содержит только один специальный символ, всегда имеющий частоту 0. Он необходим для занесения в дерево новых символов. Обычно этот символ называют еэсаре-символом (<вБС>).

Левые ветви дерева помечаются 0, а правые -

1.

При нарушении упорядоченности дерева (после добавлении нового листа или изменении веса имеющегося листа) его необходимо упорядочить.

Чтобы упорядочить дерево необходимо поменять местами два узла: узел, вес которого нарушил упорядоченность, и последний из следующих за ним узлов меньшего веса. После перемены мест узлов необходимо пересчитать веса всех их узлов-предков.

Рассмотрим пример упорядочивания дерева Хаффмана. Возьмем в качестве исходного дерева дерево, представленное на рис.1. Пусть на вход поступил очередной символ Б. Вес листа Б увеличился и стал равен 2. На рис. 2а приведен порядок перечисления узлов и последовательность весов, которая не является неубывающей. Следовательно, двоичное дерево не упорядочено. Для упорядочивания необходимо поменять местами лист Б (нарушивший упорядоченность) и лист В (последний из меньших по весу узлов при перечислении). Результат упорядочивания приведен на рис. 2б.

Правила кодирования

1. Элементы входного сообщения считываются побайтно.

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

тируются. Если дерево становится неупорядоченным - упорядочивается. з) л* р]

,4[Н|

2/(т[7

"В [5]

] 2 3 4 5 6 7 S 9

Вес .fia II 2 2 ] 1 .1 2 4 Г>

№ ■ та 1 2 3 4 5 6 7 Я 9

Вес гым II 1 1 1 2 2 2 4 Ь

Рисунок 2 - Пример упорядочивания дерева Хаффмана

3. Если очередной символ, считанный из входного сообщения при сжатии, отсутствует в дереве, е выходной поток записывается набор нулей и единиц, которыми помечены ветки бинарного дерева при движении от корня к escape-символу, а затем 8 бит ASCII-кода нового символа. В дерево вместо escape-символа добавляется ветка: родитель, два потомка. Левый потомок становится escape-символом, правый - новым добавленным в дерево символом. Веса узлов-предков корректируются, а дерево при необходимости упорядочивается.

Например, если мы имеем дерево Хаффмана как на рис. 3а, и очередной символ на входе C, которого еще нет в дереве, то выходной код нового символа будет 00'C', где 'C' - ASCII-код символа С. В дерево добавляется ветка с новым символом (см. рис. 3б) и дерево упорядочивается (см. рис. Зв) .

а) 2 « б) 3 в в) 3

О/ж-

1/А

1/А

1/В

О/гас

Olese

Рисунок 3 - Пример) добавления нового символа в дерево Хаффмана

Рассмотрим пример работы алгоритма архивации на следующей входной последовательности символов: ABCCDDDDBB.

DJ. Был. № ДчЕШЛ

/щннме ДЗЕЕаЫС дерева : mít

А ■А1 1 S

Э ста1 2 9

С «ГО 3 10

с 101 i J

D ими 5 11

П 1101 6 4

D 10 7 2

D 0 8 1

R 1101 4

Э III 10 3

■iеи i tat

Рисунок 4 -

Пример работы алгоритма сжатия из 10 символов

занимает 80 бит.

данные: Сжатое

Сообщение Сжатые

'А'0'Б'00'С'101100'0'11011001101111

сообщение занимает 55 бит.

Для сравнения подсчитаем, сколько бит займет данное сообщение, закодированное обычным методом Хаффмана. Таблица кодировки и кодовое дерево приведены на рис. 5.

Символ Вероятность Код

L) 0.4 0

В 03 11

С 0.2 101

А 0,1 100

Рисунок 5

с^ (o.i) л

Дерево Хаффмана

Закодированное сообщение:

1001110110100001111 (всего 19 бит). Кроме того, следует учесть, что вместе с закодированным сообщением передается и таблица кодировки. В данном случае это как минимум еще 4 байта АБС11-кодов символов плюс соответствующие им коды Хаффмана. Всего 68 бит.

Правила декодирования

1. Элементы входного сообщения считываются побитно.

2. Каждый раз при считывании 0 или 1 происходит перемещение от корня вниз по соответствующей ветке бинарного дерева Хаффмана, до тех пор, пока не будет достигнут какой-либо лист дерева.

3. Если достигнут лист, соответствующий символу, в выходное сообщение записывается АБС11-код данного символа. Вес листа увеличивается на

Пр о г р а мма д е мо н с тр> а ции

1, веса узлов-предков корректируются, дерево при необходимости упорядочивается.

4. Если же достигнут евоаре-символ, из входного сообщения считываются 8 следующих бит, соответствующих АБС11-коду нового символа. В выходное сообщение записывается АБСИ-код данного символа. В дерево добавляется новый символ, веса узлов-предков корректируются, затем при необходимости производится его упорядочивание.

Рассмотрим процесс декодирования сообщения 'А'0'В'0100'С'11. В начале декодирования дерево Хаффмана содержит только евоаре-символ с частотой 0. С раскодированием каждого нового символа дерево перестраивается (см. рис. 6). На выходе получим последовательность АВВСВВ.

Вх. Вых №

данные данные дерева

'А' А 1

ОЪ1 В 2

01 В 3

ОТО' С 4

в 5

1 в 6

/ \l/B / V2/B *

21В

1/А

Рисунок 6

Otee lilac

- Пример) работы алгоритма декомпрессии

работы алгоритмов сжатия

J Программа демонстрации работы алгоритмов

Файл Помощь

^ISjK]

Сжатие по Хаффману ] 12-алгоритмы

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Разделитель

О Блочный алгоритм <g> Адаптивный алгоритм

Исходный текст

ABCCDDDDBB

Сжатый текст

'А' 0'В' 00'С 101 ÍOÜ'O' 1101 10 о 1101 111

Предыдущий 11 Сохранить ЕСледующий

| Сжать 11 Просмотр деревьев |

Рисунок 7 - Программа-визуализатор алгоритмов сжатия

Адаптивное кодирование Хаффмана имеет ряд особенностей при своей работе [2, 3]. Одна из них связана с хранением значений кодов символов, при кодировании длинных последовательностей. Дело в том, что языки высокого уровня, обычно, оперируют с числами максимум в 32 бит, в которых можно записывать числа от 0 до 4294967296, т.е. можно работать с файлами размером 4Гб. Но иногда этих значений недостаточно и приходится вырабатывать дополнительные меры по предотвращению переполнения счетчиков символов. Правильное решение может заключаться в накоплении битов кода в связанном списке, к которому можно добавлять новые узлы. Следующая

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

Но, несмотря на указанные сложности, он часто применяется на практике, например, в протоколе У.32 передачи данных по модему со скоро-

стью 14400 бод или в программе compact операционной системы UNIX. Этот алгоритм наиболее эффективен для сжатия текстов или программных файлов. Изображения лучше сжимаются другими алгоритмами сжатия.

На кафедре информационных систем и технологий Самарского государственного аэрокосмического университета им. академика С.П. Королева разработана программа-визуализатор алгоритмов сжатия информации. Данная программа используется в учебном процессе в курсе "Теория информации" [4] при проведении лабораторных работ, а

также для создания аттестационных педагогических измерительных материалов. Программа позволяет автоматизировать процесс составления тестовых задач. Также визуализатор демонстрирует студентам работу следующих алгоритмов сжатия: алгоритм Хаффмана с блокированием и без, адаптивный алгоритм Хаффмана, алгоритмы семейства (Ь277, Ь17в, Ь1ББ). В будущем планируется расширить возможности программы путем добавления в нее других алгоритмов сжатия данных.

На рис. 7 приведен скриншот работы адаптивного алгоритма Хаффмана

ЛИТЕРАТУРА

1. Лидовский В.В. Теория информации. - М.:Наука, 2003. - 112 с.

2. http://old.reslib.com/book/Teoriya_informacii_^ЬоУБк^ V V

3. http://rain.ifmo.ru/cat/view.php/theory/data-compression/adaptive-huffman-2 0 0 6

4. http://sernam.ru/cod 2.php

5. Горячев Н.В. К вопросу реализации метода автоматизированного выбора системы охлаждения / Горячев Н.В., Кочегаров И.И., Юрков Н.К. // Алгоритмы, методы и системы обработки данных. 2013. № 3 (25). С. 16-20.

6. Трусов В.А. Однопозиционный модуль управления шаговым двигателем / Трусов В.А., Кочегаров И.И., Горячев Н.В., Юрков Н.К. // Теоретические и прикладные аспекты современной науки. 2015. № 7-3. С. 131-133.

7. Кудрина М.А., Кудрин К.А., Попова-Коварцева Д.А. Учебно-методический комплекс дисциплины «Теория информации» // Надежность и качество - 2012: труды Межд. симпозиума: в 2 т./ под ред. Н.К. Юркова. - Пенза: Изд-во ПГУ, 2012. - 1 т. С. 376-377.

УДК 621.92

Макаров В.Ф., Никитин С.П.

ФГБОУ ВПО «Пермский национальный исследовательский политехнический университет», Пермь, Россия ОБЕСПЕЧЕНИЕ КАЧЕСТВА И УСТАЛОСТНОЙ ПРОЧНОСТИ ЛОПАТОК ТУРБИН НА ОСНОВЕ МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКОЙ СИСТЕМЫ СТАНКА И ПРОЦЕССА ГЛУБИННОГО ШЛИФОВАНИЯ

Для изготовления рабочих и сопловых лопаток турбины газотурбинных двигателей (ГТД) используют жаропрочные литейные никелевые сплавы. Одним из основных методов обработки базовых поверхностей лопаток ГТД является глубинное профильное шлифование на многокоординатных станках.

При этом возникают проблемы с размерной точностью сложного профиля лопатки, а также с дефектами поверхностного слоя в виде прижогов и трещинообразования на ряде поверхностей [1], что снижает качество и предел выносливости ст-1 лопаток. Для обеспечения заданной размерной точности и качества поверхностного слоя при обработке лопаток ГТД приходится реализовывать множество проходов, что снижает производительность глубинного шлифования.

Для повышения производительности и эффективности глубинного шлифования при заданных параметрах качества необходимо прогнозирование качества деталей при обработке лопаток газотурбинных авиадвигателей, выявление взаимосвязи эксплуатационных показателей качества лопаток с параметрами поверхностного слоя и технологическими показателями процесса глубинного шлифования на основе математических моделей [1].

Процесс прогноза можно представить в виде трех этапов.

На первом этапе требуется установить зависимость колебаний сил и температур в зоне резания, шероховатости поверхности от технологических режимов и характеристики круга.

в = / (у, г, К 0, аз...), Р = / (у, 5,1, К 0, аз...), (1)

Ка = / (у, 5, г, К 0, аз...)

Далее необходимо выявить влияние температур в зоне резания и нагрузок на наклеп и остаточные напряжения в обрабатываемом материале [2, 3].

Кст = Г (в,Р,К ) ,

* = /(в,Р,КЛ (2)

к, = / (в,Р,Яа ) , и = / (в, Р, яа)

Затем следует определить влияние параметров поверхностного слоя на предел выносливости ст-1 лопаток.

0-.1 = / Кст ,Т, Rа ) (3)

Такие математические зависимости, связывающие предел выносливости ст-1 с шероховатостью, наклепом и остаточными напряжениями были получены Т.В. Серенсеном, В.П. Когаевым, Р.Б. Шней-деровичем [2].

Значительное внимание на первом этапе должно быть уделено исследованию динамики и устойчивости процесса, термодинамическим явлениям при профильном глубинном шлифовании [3,4]. Качество поверхностного слоя заготовки определяется одновременным воздействием геометрического, силового и теплового факторов, являющихся функциями процесса шлифования и имеющих непосредственную связь с относительными колебаниями формообразующих узлов станка [4]. Колебания при шлифовании являются вынужденными, но их уровень зависит от степени устойчивости динамической системы. Колебания динамической системы станка при шлифовании вызывает изменение фактического срезаемого слоя, фактической силы резания, а в силу взаимосвязанности процессов вызывают изменения в тепловой системе станка при шлифовании. Это приводит к колебаниям температур в зоне шлифования.

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

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

i Надоели баннеры? Вы всегда можете отключить рекламу.