Аноним

Сравнение с шаблоном для сжатого текста: различия между версиями

Материал из WEGA
м
 
(не показаны 3 промежуточные версии этого же участника)
Строка 34: Строка 34:




Система коллажей называется ''свободной от усечений'', если <math>\mathcal{D}</math> не содержит операций усечения, и ''регулярной'', если <math>\mathcal{D}</math> не содержит ни повторений, ни операций усечения. Регулярная система коллажей является ''простой'', если <math>| \bar{Y} | = 1</math> или <math>| \bar{Z} | = 1</math> для каждого присваивания X = YZ. На рис. 1 представлена иерархия систем коллажей. Системы коллажей для RE-PAIR, SEQUITUR, Byte-Pair-Encoding (BPE) и схемы сжатия на основе грамматического преобразования являются регулярными. В семействе Лемпеля-Зива системы коллажей для LZ78/LZW просты, а системы для LZ77/LZSS не являются свободными от усечений.
Система коллажей называется ''свободной от усечений'', если <math>\mathcal{D}</math> не содержит операций усечения, и ''регулярной'', если <math>\mathcal{D}</math> не содержит ни повторений, ни операций усечения. Регулярная система коллажей является ''простой'', если <math>| \bar{Y} | = 1</math> или <math>| \bar{Z} | = 1</math> для каждого присваивания X = YZ. На рис. 1 представлена иерархия систем коллажей. Системы коллажей для RE-PAIR, SEQUITUR, Byte-Pair-Encoding (BPE) и схемы сжатия на основе преобразования грамматики являются регулярными. В семействе Лемпеля-Зива системы коллажей для LZ78/LZW просты, а системы для LZ77/LZSS не являются свободными от усечений.


== Основные результаты ==
== Основные результаты ==
Строка 70: Строка 70:




Алгоритм [9] состоит из двух этапов. Вначале производится предварительная обработка <math>\mathcal{D}</math> и P, а затем – обработка переменных <math>\mathcal{S}</math>. На втором этапе имитируется перемещение автомата KMP, работающего на несжатом тексте, с помощью двух функций <math>Jump</math> и <math>Output</math>. Обе эти функции принимают на вход состояние q и переменную X. Первое используется для замены только одного перехода состояния на последовательные переходы состояния автомата KMP для строки <math>\bar{X}</math> для каждой переменной X из S; вторая – для сообщения обо всех вхождениях шаблона, найденных в процессе переходов состояния. Пусть <math>\delta</math> – функция перехода состояний KMP-автомата. Тогда <math>Jump(q, X) = \delta(q, \bar{X})</math>, а <math>Output(q, X)</math> – множество длин |w| непустых префиксов w из <math>\bar{X}</math>, таких, что <math>\delta(q, w)</math> является конечным состоянием. Наивная реализация этих двух функций в виде двумерного массива требует памяти объемом <math>\Omega(|\mathcal{D}| \cdot |P|)</math>. Структуры данных из [9] используют только <math>O(|\mathcal{D}| + |P|^2)</math> памяти, строятся за время <math>O(|\mathcal{D}| \cdot height(\mathcal{D}) + |P|^2)</math> и позволяют вычислить <math>Jump(q, X)</math> за время O(1) и перенумеровать множество <math>Output(q, X)</math> за время <math>O(height(\mathcal{D}) + \ell)</math>, где <math>\ell = |Output(q, X)|</math>. Для систем коллажей без усечений коэффициент <math>height(\mathcal{D})</math> опускается.
Алгоритм [9] состоит из двух этапов. Вначале производится предварительная обработка <math>\mathcal{D}</math> и P, а затем – обработка переменных <math>\mathcal{S}</math>. На втором этапе имитируется перемещение автомата KMP, работающего на несжатом тексте, с помощью двух функций <math>Jump</math> и <math>Output</math>. Обе эти функции принимают на вход состояние q и переменную X. Первое используется для замены только одного перехода состояния на последовательные переходы состояний автомата KMP для строки <math>\bar{X}</math> для каждой переменной X из S; вторая – для сообщения обо всех вхождениях шаблона, найденных в процессе переходов состояний. Пусть <math>\delta</math> – функция перехода состояний KMP-автомата. Тогда <math>Jump(q, X) = \delta(q, \bar{X})</math>, а <math>Output(q, X)</math> – множество длин |w| непустых префиксов w из <math>\bar{X}</math>, таких, что <math>\delta(q, w)</math> является конечным состоянием. Наивная реализация этих двух функций в виде двумерного массива требует памяти объемом <math>\Omega(|\mathcal{D}| \cdot |P|)</math>. Структуры данных из [9] используют только <math>O(|\mathcal{D}| + |P|^2)</math> памяти, строятся за время <math>O(|\mathcal{D}| \cdot height(\mathcal{D}) + |P|^2)</math> и позволяют вычислить <math>Jump(q, X)</math> за время O(1) и перенумеровать множество <math>Output(q, X)</math> за время <math>O(height(\mathcal{D}) + \ell)</math>, где <math>\ell = |Output(q, X)|</math>. Для систем коллажей без усечений коэффициент <math>height(\mathcal{D})</math> опускается.




Строка 90: Строка 90:




'''Теорема 8 (Карккайнен и др. [8]). При использовании модели расстояния Левенштейна задача ACPM может быть решена за время <math>O(k \cdot |P| \cdot |\mathbf{c}(T)| + occ)</math> для LZ78/LZW и за время <math>O(|P| \cdot (k^2 \cdot |\mathcal{D}| + k \cdot |\mathcal{S}|) + occ)</math> для обычных систем коллажей, где k – заданный порог ошибок.'''
'''Теорема 8 (Карккайнен и др. [8]). При использовании модели расстояния Левенштейна задача ACPM может быть решена за время <math>O(k \cdot |P| \cdot |\mathbf{c}(T)| + occ)</math> для LZ78/LZW и за время <math>O(|P| \cdot (k^2 \cdot |\mathcal{D}| + k \cdot |\mathcal{S}|) + occ)</math> для регулярных систем коллажей, где k – заданный порог ошибки.'''




Строка 99: Строка 99:




'''Теорема 10 (Наварро [14]). Задача RCPM решается за время <math>O(2^{|P|} + |P| \cdot |\mathbf{c}(T)| + occ \cdot |P| \cdot log |P|)</math>, где occ – количество вхождений P в T.'''
'''Теорема 10 (Наварро [14]). Задача RCPM решается за время <math>O(2^{|P|} + |P| \cdot |\mathbf{c}(T)| + occ \cdot |P| \cdot log |P|)</math>, где <math>occ</math> – количество вхождений P в T.'''


== Применение ==
== Применение ==
Строка 105: Строка 105:


== Экспериментальные результаты ==
== Экспериментальные результаты ==
Одной из важных целей задачи CPM является получение результата за более короткое время по сравнению с распаковкой и последующим простым поиском. Кида и др. [10] экспериментально показали, что их алгоритмы достигают этой цели. Наварро и Тархио [15] представили алгоритмы типа BM (Бойера-Мура) для схем сжатия LZ78/LZW и показали, что они работают в два раза быстрее, чем декомпрессия с последующим поиском с использованием лучших алгоритмов. (Код доступен по адресу www.dcc.uchile.cl/gnavarro/software).
Одной из важных целей задачи CPM является получение результата за более короткое время по сравнению с распаковкой и последующим простым поиском. Кида и др. [10] экспериментально показали, что их алгоритмы достигают этой цели. Наварро и Тархио [15] представили алгоритмы типа BM (Бойера-Мура) для схем сжатия LZ78/LZW и показали, что они работают в два раза быстрее, чем декомпрессия с последующим поиском с использованием лучших алгоритмов. (Код доступен по адресу http://www.dcc.uchile.cl/gnavarro/software).




4446

правок