Вы находитесь на странице: 1из 11

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
(ДГТУ)

Факультет «Информатика и Вычислительная техника»


Кафедра «Кибербезопасность информационных систем»

Доклад по дисциплине «Формальные языки»


На тему «Сжатие данных с использованием формальных грамматик»

Выполнил обучающийся гр. ВКБ 41


Ляшенко Н. Г.
Проверила:
доцент кафедры Кибербезопасность
информационных систем Пиневич Е. В.

Ростов-на-Дону
2019

1
Содержание

Введение…………………………………………….…………….………….3
1 Общая характеристика методов сжатия с использованием формальных
грамматик ..…………………………………………………………….…….4
2 Описание алгоритма Re-Pair ………………….………………..……....…6
3 Оценка эффективности и практическая реализация алгоритмов сжатия с
использованием формальных грамматик..……………………..…………..8
Заключение…………………………………………………..……...……......10
Список использованной литературы………………………..……….….......11

2
Введение

В течение последних лет наблюдается стремительное увеличение


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

Задачи работы:

1) Дать общую характеристику методам сжатия, основанным на


формальных грамматиках
2) Подробно рассмотреть алгоритм сжатия данных Re-Pair, который
основан на применении формальных грамматик
3) Оценить эффективность алгоритмов сжатия с использованием
грамматических моделей при практическом использовании.
4) Сделать выводы в результате выполненной работы

3
1 Общая характеристика методов сжатия с использованием
формальных грамматик

Алгоритмы сжатия данных с использованием формальных грамматик –


семейство алгоритмов сжатия без потерь, которые основываются на
применении формальных грамматик. Основная идея этого типа
алгоритмов – представление сжимаемого текста в виде некоторого набора
правил и последовательности их применения. Более строгое определение
цели алгоритма - построение некоторой формальной грамматики G из
которой выводится цепочка X, которая представляет собой сжимаемый
текст. Сжатие достигается благодаря тому, что объём построенной
грамматики меньше, чем объём сжимаемого текста. Алгоритмы сжатия
основанного на формальных грамматиках предназначены для сжатия
текстовых данных, хотя они также применимы для сжатия изображений в
том случае, если важно сохранить мелкие детали, которые при сжатии с
потерями будут утрачены.
История алгоритмов сжатия с помощью формальных грамматик
начинается с алгоритма SEQUITUR, который был описан учёными Craig
Nevill-Manning и Ian H. Witten  в 1997 году. Алгоритм заключался в
посимвольном чтении текста с сохранением прочитанных символов и
созданием грамматических правил для повторно встречающихся пар
символов. Эффективность сжатия, которую мог обеспечить этот алгоритм,
была достаточно низкой, поэтому позднее были разработаны более
эффективные алгоритмы сжатия, которые также выполняли построение
контекстно-свободной грамматики, последовательно добавляя правила и
заменяя последовательности терминалов на нетерминалы. Алгоритмы с
использованием грамматических моделей обычно выполняют построение
грамматики, которая относится к классу контекстно-свободных
грамматик. Этот класс грамматик наиболее удобен для описания
текстовых данных, так как регулярные грамматики не могут обеспечить
4
эффективное сжатие, а контекстно-зависимые грамматики слишком
сложны в построении и дальнейшей обработке.
Для эффективного сжатия алгоритм должен правильно осуществлять
выбор последовательностей символов, для которых необходимо создавать
правила. Обычно для выбора правил применяется один из двух подходов
(или их сочетание). Первый – правила задаются для самой длинной
подстроки, которая встречается в сжимаемом тексте чаще одного раза.
Второй – правила создаются для коротких (2-4 символа) подстрок,
которые встречаются в сжимаемом тексте наиболее часто.
После завершения построения формальной грамматики её необходимо
закодировать вместе с последовательностью, которая получается после
замены символов текста на нетерминалы (формально эту
последовательность C можно записать как S  C, где S- стартовый
символ). Перед кодированием обычно проводится упрощение грамматики
с целью убрать из неё лишние или слишком длинные правила и таким
образом уменьшить её объём.

5
2 Описание алгоритма Re-Pair

Рассмотрим работу алгоритмов сжатия данных с использованием


формальных грамматик на примере простого в описании, но достаточно
эффективного алгоритма Re-Pair (сокращение от английского Recursive
Pairing). Алгоритм основан на последовательном построении грамматических
правил для наиболее часто встречающихся пар символов. Изначальная
версия алгоритма была представлена в работе NJ. Larsson and A. Moffat в
1999 году. Но в дальнейшем алгоритм неоднократно модифицировался.
Описание алгоритма: На первом шаге в исходной строке выполняется
поиск пары символов, которая встречается в данной строке чаще всего. Для
этой строки создаётся правило A  xy. Где A – нетерминал, xy – самая часто
встречающаяся пара символов. Далее выполняется замена всех вхождений
подстроки xy на A.
На втором и всех последующих шагах алгоритм также выполняет поиск
наиболее часто встречающейся пары символов, создаёт новое правило
грамматики и выполняет замену всех вхождений этой пары символов на
новый нетерминал. Важно отметить, что начиная со второго шага, самая
часто встречающаяся пара символов может состоять не только из двух
терминалов, но также из терминала и нетерминала или двух нетерминалов.
Например, если на втором шаге алгоритма самой частой встречаемой парой
оказалось последовательность mA, то создаётся правило B  mA.
Алгоритм завершает свою работу, когда в строке не осталось пар
символов, которые встречаются чаще одного раза. После этого проводится
упрощение грамматики (если это возможно) и выполняется кодирование
грамматики. Строка C, которая была получена на последнем шаге,
кодируется в виде правила SC, где S – стартовый символ. Кодирование
грамматики обычно выполняется с использованием одного из алгоритмов
энтропийного сжатия (чаще всего используется кодирование Хаффмана или
арифметическое кодирование).
6
Для декодирования достаточно просто последовательно применять
правила грамматики и вывести цепочку, которая и будет исходной строкой.
Алгоритм Re-Pair обеспечивает эффективное сжатие для текстов на
естественном языке благодаря тому, что отдельные пары символов
встречаются намного чаще чем другие. Например, в русском языке часто
встречаются пары ВО, ЕН, НА, СТ, ТО и редко встречаются пары символов с
буквой Ъ.
Алгоритм Re-Pair может выполнять сжатие за линейное время O(n),
если специальным образом организовать хранение исходной строки, а для
поиска и хранения наиболее часто встречающихся пар символов
использовать очередь с приоритетом и хеш-таблицы. Однако данная
реализация требует значительного объёма оперативной памяти, который в
несколько раз превышает размер текста.

7
3 Оценка эффективности и практическая реализация алгоритмов
сжатия с использованием формальных грамматик

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


следующие преимущества алгоритмов сжатия, которые основаны на
формальных грамматиках:
1) Алгоритмы сжатия, основанные на формальных грамматиках,
позволяют значительно уменьшить объём текстов на естественном
языке.
2) Декодирование сжатого файла выполняется быстро и легко, так как оно
сводится к последовательному применению правил грамматики.
3) Алгоритмы сжатия данных с использованием грамматических моделей
помимо непосредственно сжатия позволяют получить важную
информацию о синтаксической структуре сжимаемого текста.
Например, если выполнить сжатие достаточно большого по объёму
текста на естественном языке, то правила грамматики с большой
вероятностью будут соответствовать окончаниям падежей и спряжений
или часто используемым словам. При сжатии программного кода
правила грамматики будут соответствовать операторам и именам
переменных.
С другой стороны, у методов, основанных на построении формальной
грамматики, есть серьёзный недостаток – сложность создания реализации,
которая была бы эффективна и по времени выполнения, и по объёму
используемой оперативной памяти. Это связано с тем, что алгоритмы
данного типа при сжатии многократно используют операцию поиска
подстроки в строке. Если выполнять поиск, просто последовательно
просматривая символы строки, то алгоритм будет выполняться крайне
медленно. Если ускорять поиск, используя хеш-таблицы, то алгоритм
потребует большого объёма оперативной памяти для хранения таблиц.

8
В широко используемых архиваторах алгоритмы грамматического
сжатия используются намного реже, чем словарные и контекстные (хотя
известный и широко используемый алгоритм LZW можно формально
представить в виде построения грамматики, его принято относить к
словарным методам). Несмотря на это, алгоритмы сжатия с помощью
грамматических моделей нашли применение в сжатии анализируемых
данных в научных исследованиях. Наиболее известный пример –
внедрённый в 2012 году и используемый до сих пор алгоритм caBlast,
который выполняет эффективное сжатие цепочек ДНК, которые хранятся
в компьютере в текстовых файлах.

9
Заключение

В реферате был подробно рассмотрены алгоритмы сжатия данных с


использованием формальных грамматик. В первой главе была дана общая
характеристика алгоритмов сжатия данных с использованием формальных
грамматик. Во второй главе был подробно рассмотрен алгоритм Re-Pair. В
третьей главе была дана оценка практической эффективности алгоритмов
грамматического сжатия.

Дальнейшее развитие алгоритмов грамматического сжатия может быть


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

Алгоритмы, которые основаны на формальных грамматиках


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

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

1) Bille P. , Gørtz I. L. , Prezza N. Practical and Effective Re-Pair


Compression - Technical University of Denmark, DTU Compute, 2017.

2) Berger B., Noah M., William Y. Computational Biology in the 21st Century:
Scaling with Compressive Algorithms - Massachusetts Institute of Technology,
2016.

3) Furuya, I., Takagi, T., Nakashima, Y., Inenaga, S., Bannai, H., Kida, T.,
MR-RePair: Grammar Compression based on Maximal Repeats,Hokkaido
University, Japan, 2018.

4) Sayood K. Introduction to Data Compression 5th edition - Morgan


Kaufmann Publishers, 2018 – 770 c.

5) Ørum P.B, Christensen N., Algorithms for Re-Pair compression -Technical


university of Denmark, 2015. – 89 c.

11