Характеристики алгоритма сжатия данных без потерь на основе псевдорегулярных чисел
магистр И. А. Молодкин, к.т.н. Е. М. Шурыгин Петербургский государственный университет путей сообщения Императора Александра I
Санкт-Петербург, Россия 1то1о&т@^аЛ. сот
Аннотация. Рассматривается алгоритм сжатия данных на основе псевдорегулярных чисел. В основе алгоритма заложен принцип использования специальных кодов, названных псевдорегулярными числами, по аналогии с широко известными псевдослучайными последовательностями. ПРЧ выступают в качестве «осей симметрии» при математическом преобразовании двоичного кода. Проводится ряд экспериментов для его сравнения с классическим алгоритмом LZW и алгоритмом Хаффмана. При этом оцениваются характеристики степени сжатия и быстродействия. Показано, что для псевдорегулярных чисел использование указанного алгоритма обеспечивает сжатие целочисленных данных без потерь с существенно лучшими характеристиками по степени сжатия.
Ключевые слова сжатие, кодирование, архиваторы, алгоритм LZW, алгоритм Хаффмана.
Введение
Процесс цифровизации, который происходит во всех областях мировой деятельности, приводит к чрезвычайно быстрому росту объема данных. Компания IDC в своем исследовании выдвигает гипотезу о том, что глобальный объем данных вырастет с 33 зеттабайт в 2018 до 175 зет-табайт к 2025 году (рис. 1). Из них 49 % будет храниться в облачных хранилищах [1].
Annual ÇÎ7Q nf Ihn /^Inhal Hafacnhcra
2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 Source; Data Age 2025, sponsored by Seagate with data from IDC Global DataSphere, Nov 2018
Рис. 1. Динамика роста объема информации в мире
Проблемы хранения и эффективного сжатия данных являются одними из важнейших в области информационных технологий [2]. Существующие алгоритмы сжатия данных без потерь плохо обрабатывают длинные двоичные коды, а также ограничения, связанные с применением модели избыточности, введенной в практику К. Шенноном в 40-х годах прошлого века [3].
На сегодняшний день наиболее распространенными методами сжатия данных без потерь являются следующие алгоритмы [4]:
- LZ77;
- LZ78;
- LZW;
- RLE;
- DEFLATE;
- RAR;
- Алгоритм Хаффмана.
Эти алгоритмы, как правило, используют статистические свойства отдельных битов или байтов файлов [3].
В алгоритме, описанном в статье [5], предлагается использование нового подхода к сжатию данных — на основе применения так называемых псевдорегулярных чисел (ПРЧ). Для псевдорегулярных чисел использование указанного алгоритма обеспечивает сжатие целочисленных данных без потерь с существенно лучшими характеристиками по степени сжатия.
Рассмотрим этот алгоритм подробнее и проведем его сравнение с классическим методом сжатия LZW и алгоритмом Хаффмана.
Алгоритм LZW
Алгоритм LZW (Lempel-Ziv-Welch) был опубликован Велчем в 1984 году в качестве улучшенной реализации алгоритма LZ78, созданного Лемпелем и Зивом в 1978 году [6].
Как было отмечено ранее, LZW является универсальным алгоритмом сжатия без потерь и использует технологию адаптивного словаря. Словарь создается в процессе сжатия, что позволяет производить кодирование на лету. Стоит отметить, что сам словарь не передается и формируется при декодировании [7].
Основные достоинства алгоритма — отсутствие вычисления вероятностей встречаемости символов или кодов и, следовательно, высокая скорость работы.
Очевидно, что этот алгоритм наиболее эффективен для файлов, содержащих длинные повторяющиеся последовательности [8].
Этот метод позволяет достичь одной из наилучших степеней сжатия среди других существующих методов сжатия данных (при полном отсутствии потерь или искажений в исходных файлах). В настоящее время используется в файлах формата TIFF, PDF, GIF, PostScript и других, а также, отчасти, во многих популярных программах сжатия данных (ZIP, ARJ, LH A).
Алгоритм Хаффмана
Еще один классический алгоритм сжатия данных — алгоритм Хаффмана, разработанный в 1952 году аспирантом Массачусетского технологического института Дэвидом Хаффманом.
Построение кода Хаффмана сводится к построению соответствующего бинарного дерева по следующему алгоритму:
1. Символы входного алфавита образуют список свободных узлов. Каждый лист имеет вес, который может быть равен либо вероятности, либо количеству вхождений символа в сжимаемое сообщение.
2. Выбираются два свободных узла дерева с наименьшими весами.
3. Создается их родитель с весом, равным их суммарному весу.
4. Родитель добавляется в список свободных узлов, а два его потомка удаляются из этого списка.
5. Одной дуге, выходящей из родителя, ставится в соответствие бит 1, другой — бит 0. Битовые значения ветвей, исходящих от корня, не зависят от весов потомков.
6. Шаги, начиная со второго, повторяются до тех пор, пока в списке свободных узлов не останется только один свободный узел. Он и будет считаться корнем дерева.
Суть алгоритма заключается в кодировании символов, которые имеют наибольшую вероятность появления, наиболее короткими кодами. Несмотря на то, что коды имеют переменную длину, они имеют уникальный префикс, который позволяет однозначно их декодировать [9].
Недостатком этого алгоритма является необходимость дважды производить чтение файла — первый раз для составления вероятностной модели, второй раз — непосредственно для кодирования. Это приводит к увеличению временных затрат.
Алгоритм на основе ПРЧ
В основе алгоритма заложен принцип использования специальных кодов, названных автором псевдорегулярными числами, по аналогии с широко известными псевдослучайными последовательностями. ПРЧ выступают в качестве «осей симметрии» при математическом преобразовании двоичного кода. Эти коды должны удовлетворять следующим условиям:
- быть вычислимыми;
- количество операций для генерации ПРЧ, независимо от его длины, не должно превышать числа основания кода.
Примеры ПРЧ приведены в таблице 1.
Существует пять дополнительных типов ПРЧ:
- 10-й тип — 10...01 — это 10 + ПРЧ тип 4 (заполненный справа);
- 11-й тип — 110.01 — это 11 + ПРЧ тип 4 (заполненный справа);
- 12-й тип — 101111...1 — это 10 + ПРЧ тип 7 (заполненный справа);
- 13-й тип — 01000.01 — это 01 + ПРЧ тип 4 (заполненный справа);
- 14-й тип — 111.101 — это ПРЧ тип 7 (заполненный слева) + 01 (т. е. отображение типа 12);
- 15-й тип - 000.000.
Кодирование данных происходит в несколько шагов: 1. Исходный файл представляется в памяти ЭВМ в виде двоичного числа длины п.
Таблица 1
Примеры ПРЧ
Тип ПРЧ Вид Структура, [ — номер бита
1 10101010 0 для нечетных i 1 для четных i
2 01010101 1 для четных г 0 для нечетных г
3 01111111 1 для ге [1, п-1] 0 для г=п
4 10000000 0 для 1е [1, п-1] 1 для г=п
5 00001111 1 для ге[1, п/2] 0 для ге [п/2+1, п]
6 11110000 0 для 1е [1, п/2] 1 для 1е [п/2+1, п]
7 11111111 1 для 1е [1, п]
8 00000001 1 для г=1 0 для 1е [2, п]
9 11111110 0 для г=1 1 для 1е [2, п]
10 00000000 0 для 1е [1, п]
2. Проводится проверка двоичного числа на псевдорегулярность путем сверки с основными типами ПРЧ длины исходного файла п: если «да», то производится запись в служебный (выходной) файл требуемых характеристик. Если «нет», то переходим к следующему шагу.
3. Производится деление двоичного числа на все типы ПРЧ. В каждом раунде цикла проверяется целочислен-ность результата деления: если «да», то производится запись в служебный (выходной) файл требуемых характеристик. Если «нет», то переходят к следующему шагу.
4. Выбирается самое меньшее по количеству разрядов частное и производится запись в служебный (выходной) файл требуемых характеристик.
В результате работы алгоритма в служебный файл помещается информация об имени и расширении файла, его исходный размер, тип ПРЧ и частное (сомножитель ПРЧ).
Рассмотрим последовательность шагов алгоритма декодирования:
1. Считывание параметров из служебного файла.
2. Подготовка пустого файла, размер которого соответствует исходному файлу.
3. Генерация ПРЧ необходимой длины.
4. Умножение подготовленного ПРЧ на сомножитель.
5. Запись результата в файл.
Благодаря тому, что файл архива содержит всего лишь параметры генерации исходного файла, удается достичь высоких коэффициентов сжатия.
СРАВНЕНИЕ АЛГОРИТМОВ
Для проведения сравнения рассмотренных выше алгоритмов был разработан комплекс программ для генерации тестовых файлов, а также программ кодирования и декодирования на основе ПРЧ. Для кодирования по алгоритмам LZW и Хаффмана применялось готовое решение — ПО с открытым исходным кодом РПеСотргеББОГ.
При помощи программы генерации тестовых файлов был сформирован файл размером 4 КБ, содержащий последовательность нулей и единиц (рис. 2).
Рис. 2. Программа генерации файлов
Затем было произведено кодирование этого файла рассматриваемыми алгоритмами и сравнение размеров архивов.
Свойства: out.bit.LmZWp X
Общие Безопасность Подробно Предыдущие версии
□
out.trt.LniZWp
Тип Файла: Файл "LMZWP" (.LmZWp) Приложение: Неизвестное приложение Изменить..
Расположение: С :\Usera\lgor\Documents '-.Net Beans Pnojects\Creato Размер: 108 байт (Ш байт;
Рис. 3. Свойства архива по алгоритму LZW Свойства: outtxt.huffz X
Общие Безопасность Подробно Предыдущие версии
0Lit.trt.huff:
Тип Файла: Файл "HUFFZ" {.huffг) Приложение: Неизвестное приложение
Изменит^..
Расположение: C:\Users\lgor\Dacuments\NetEeans PiojectsVCreato Размер: 536 байт (536 байт) Рис. 4. Свойства архива по алгоритму Хаффмана
J Свойства: Archive X
Общие Безопасность Подробно Предыдущие версии
Archive
Тип Файла: Файл "VDR" (.vor) Приложение: Блокнот
Изменить..
Расположение: С AUsers \lgor\Document5\Net Beans Pnojects\Compr Размер: 24 байт (24 байт)
II Л .-* j
Рис. 5. Свойства архива по алгоритму на основе ПРЧ
Как видно из окна свойств (рис. 3-5) получившихся архивов, размер архива, сформированного по алгоритму Воробьёва, в 4,5 раза меньше архива по алгоритму LZW и в 22 раза меньше, чем архив по алгоритму Хаффмана.
Проверим алгоритмы на файлах большего размера. Результаты приведены в таблице 2.
Таблица 2
Результаты сжатия файлов
Объем файла На основе ПРЧ Алгоритм LZW Алгоритм Хафф-мана
Размер, байт Коэф. сжатия Размер, байт Коэф. сжатия Размер, байт Коэф. сжатия
10 КБ 25 400 165 61 1 274 7.9
50 КБ 26 1 923 402 124 6 274 8
500 КБ 26 19 231 566 883 62 524 8
1 МБ 27 37 037 3 083 324 125 024 8
Из таблицы 2 следует, что увеличение размера исходного файла приводит к незначительному увеличению размера архива при кодировании с использованием ПРЧ, в то время как другие исследуемые алгоритмы (LZW и алгоритм Хаффмана) заметно увеличивают размер выходных файлов.
Заключение
Разработка новых алгоритмов сжатия данных и усовершенствование старых — крайне актуальная задача на сегодняшний день. Оптимизация хранения данных в эпоху цифровизации позволит сократить расходы на 1Т-услуги и увеличить прибыльность бизнеса.
Алгоритм, основанный на использовании псевдорегулярных чисел, рассмотренный в статье, несомненно, позволяет добиться высокой степени сжатия файлов, однако конечный результат зависит от структуры сжимаемого файла. Помимо этого, алгоритм требует довольно больших вычислительных ресурсов. Это связано с операциями над числами большой разрядности.
Исходя из вышесказанного, необходимы дальнейшие исследования по развитию алгоритма на основе ПРЧ, что позволит увеличить его практическую применимость
и завоевать популярность как в домашних системах архивации, так и в промышленных.
Литература
1. Reinsel D., Gantz J., Rydning J. The Digitization of the World. From Edge to Core, IDC White Paper No. US44413318, November 2018, Pp. 2-3.
URL: http://www.seagate.com/www-content/our-story/trends/ files/idc-seagate-dataage-whitepaper.pdf (дата обращения 30.07.2019).
2. Основы современных компьютерных технологий: Учебник / Б. Н. Артамонов [и др.]; под ред. А. Д. Хомо-ненко. — СПб.: Корона Принт, 2005. — 672 с.
3. Воробьев Е. Г., Хомоненко А. Д. Математическая модель и алгоритмы для сжатия информации без потерь // Защита информации. Инсайд. 2019. № 3 (87), С. 52-59.
4. History of Lossless Data Compression Algorithms // Engineering and Technology History Wiki (ETHW).
URL: http://ethw.oig/Histoiy_of_Lossless_Data_Compiession_Algo-rithms (дата обращения 30.07.2019).
5. Воробьев Е. Г. Модели и методы оперативного восстановления и обеспечения доступности данных автоматизированных информационных систем: автореф. дис. ... д-ра техн. наук: 05.13.18. — СПб.: ПГУПС, 2019. — 34 с.
6. Хомоненко А. Д. Методы сжатия изображений: Учебное пособие. — СПб.: ПГУПС, 2010. — 39 с.
7. Dheemanth H. N. LZW Data Compression, American Journal of Engineering Research (AJER), 2014, Vol. 3, Is. 2. Pp. 22-26. URL: http://ajer.org/papers/v3(2)/C0322226.pdf.
8. Алгоритм LZW // Викиконспекты.
URL: http://neerc.ifmo.ru/wiki/index.php?title=Алгоритм_LZW (дата обращения: 30.07.2019).
9. Мастрюков Д. Алгоритмы сжатия информации. Часть 1. Сжатие по Хаффмену // Монитор. 1993. № 7-8, C. 14-20.
Characteristics of a Lossless Data Compression Algorithm Based on Pseudo-Regular Numbers
M. Sc. I. A. Molodkin, PhD E. M. Shurygin Emperor Alexander I St. Petersburg State Transport University St. Petersburg, Russia [email protected]
Abstract. An algorithm for data compression based on pseudo-regular numbers is considered. The algorithm is based on the principle of using special codes called pseudo-regular numbers, by analogy with the well-known pseudo-random sequences. HRPs act as "axes of symmetry" in the mathematical transformation of binary code. A series of experiments are carried out to compare it with the classical LZW algorithm and the Huffman algorithm. In this case, the characteristics of the degree of compression and speed are evaluated. It is shown that for pseudo-regular numbers, the use of this algorithm provides lossless compression of integer data with significantly better compression characteristics.
Keywords: data compression, encoding, archive, LZW algorithm, Huffman Encoding.
References
1. Reinsel D., Gantz J., Rydning J. The Digitization of the World. From Edge to Core, IDC White Paper No. US44413318, November 2018, Pp. 2-3.
Available at: http://www.seagate.com/www-content/our-story/ trends/files/idc-seagate-dataage-whitepaper.pdf (accessed 30 July 2019).
2. Artamonov B. N., et al. Basics of Modern Computer Technologies: Textbook [Osnovy sovremennykh komp'yuternykh tekhnologiy: Uchebnik], edited by A. D. Khomonenko, St. Petersburg, Korona Print Publishers, 2005, 672 p.
3. Vorobiev E. G., Khomonenko A. D. Mathematical Model and Algorithms for Lossless Data Compression [Ma-tematicheskaya model' i algoritmy dlya szhatiya informatsii
bez poter'], Zasita informacii. Inside [Zashchita informatsii. Insayd], 2019, No. 3 (87), Pp. 52-59.
4. History of Lossless Data Compression Algorithms, Engineering and Technology History Wiki (ETHW). Available at: http://ethw.org/History_of_Lossless_Data_Compression_Algo-rithms (accessed 30 July 2019).
5. Vorobiev E. G. Models and Methods of Operational Restoration and Making Accessibility of Data of Automated Information Systems [Modeli i metody operativnogo voss-tanovleniya i obespecheniya dostupnosti dannykh avtoma-tizirovannykh informatsionnykh sistem]: abstract of dissertation on competition of scientific degree Grand PhD (Engin.), St. Petersburg, PSTU, 2019, 34 p.
6. Khomonenko A. D. Data compression methods: Study guide [Metody szhatiya izobrazheniy: Uchebnoe posobie], Saint Petersburg, PSTU, 2010, 39 p.
7. Dheemanth H. N. LZW Data Compression, American Journal of Engineering Research (AJER), 2014, Vol. 3, Is. 2. Pp. 22-26. Available at: http://ajer.org/papers/v3(2)/C0322226.pdf
8. Algorithm LZW [Algoritm LZW], WikiNotes [Wikikon-spekty]. Available at: http://neerc.ifmo.ru/wiki/ index.php?title=A^ropHTM_LZW (accessed 30 July 2019).
9. Mastrykov D. Data Compression Algorithms. Chapter 1. Huffman Compression [Algoritmy szhatiya informatsii. Chast 1. Szhatie po Haffmenu] Monitor [Monitor], 1993, No. 7-8, Pp. 14-20.