| Крупнейший каталог ресурсов по сжатию! Пополняйте! |
| ||
|
Сайт о сжатии >>
Новинки |
О сервере
(Compression Catalog! |
ENGLISH)
Книга "Методы сжатия данных" >> Без потерь | Изображений | Видео Разделы >> Cтатьи | Видео | Arctest | Ссылки | Ru.compress | Форум Проекты >> Д.Ватолина | А.Ратушняка | М.Смирнова | В.Юкина | Е.Шелвина | Д.Шкарина |
||
>> Преобразование Барроуза-Уилера HTML LATEX PS PDF |== > К списку публикаций Д.В.Хмелева To the list of publications of D.V.Khmelev
Преобразование Барроуза-Уилера, массив суффиксов и сжатие словарейД.В.Хмелёв18 ноября 2003
Статья содержит много математических символов и некоторых браузерах может отображаться некорректно. Кроме того, HTML-вариант не включает в себя алгоритмы. Для корректного просмотра и распечатки статьи используйте PS- или PDF-варианты.
АннотацияВ статье (а) строго обоснована обратимость преобразования Барроуза-Уилера (BWT), (б) разобрана связь BWT с суффиксными массивами, (в) выявлены условия при которых из BWT можно восстановить заодно и и суффиксный массив, (г) приведены базовые алгоритмы обращения BWT. Кроме того, на основе анализа BWT предложено новое преобразование, которое может быть полезно для сжатия словарей или данных словарного типа.1 Введение 2 Преобразование BW и его обратимость 3 Суффиксный массив и BWT 4 Алгоритмы восстановления T и s по B и I 5 Преобразование данных словарного типа 5.1 Теория 5.2 Применение для сжатия 5.3 Применение в качестве фильтра |
||||||||||||||||
1 ВведениеПреобразование Барроуза-Уилера, изобретённое Д.Дж. Уилером в 1983 году и впервые опубликованное в совместной статье с Барроузом [3] применяется как для сжатия текстов без потерь, так и для сжатия дополнительной индексной информации к тексту. Тем не менее, до сих пор отсутствует математически ясное обоснование некоторых фактов о преобразовании, в частности, обратимости и возможности восстановить суффиксный массив. Настоящая статья заполняет этот пробел. Кроме того, здесь предложена новая модификация преобразования, которую можно использовать для улучшения сжатия данных вроде словарных или корпусных.Преобразование Барроуза-Уилера будет называться BW-преобразованием или просто BWT от Burrows-Wheeler Transformation. В разделе 2 доказана обратимость BW-преобразования. Раздел 3 освещает тесную связь между суффиксными массивами и BW-преобразованием, включая способ извлечения суффиксного массива из преобразования BW. Раздел 4 содержит базовые алгоритмы связанные с BW-преобразованием. Наконец, раздел 5 включает описание, обоснование и алгоритм нового метода для сжатия данных типа словаря. Предложенный метод можно также использовать для предварительной группировки данных с целью повышения сжатия. Автор придерживается той точки зрения, что построение алгоритма должно выполняться только после кристально математически ясного понимания ситуации. До того судить о верности алгоритма можно лишь на интуитивном уровне, а интуиция может подвести. Как ни странно, теория BW-преобразования, находится в зачаточном состоянии в то время как багаж наработанных алгоритмов уже достаточно велик. Настоящая работа исправляет этот крен и является чисто теоретической.
|
||||||||||||||
2 Преобразование BW и его обратимостьПусть текст T состоит из 1+N букв, занумерованных с нуля: T[0..N]. Буквы T[i] принадлежат некоторому упорядоченному алфавиту A. Лексикографический порядок (строгий) на строках из букв алфавита A будем обозначать Ј ( < ). Обозначим через SkT циклический сдвиг текста T на k символов влево:
Теорема 1 [Барроуз-Уилер] Для
восстановления исходного текста T из преобразования B достаточно знать число I,
отвечающее условию s(I)=0 (или Ss(I)T=T).
Далее изложено формальное доказательство теоремы 1,
основанное на изучении перестановки d чисел {0,ј,N}, удовлетворяющей условию:
Перестановку d можно рассматривать в качестве отображения d:{0,ј,N}®{0,ј,N}. Итерацию k отображения d обозначим через dk=d°dk-1, причём d0(i) є i, d1(i)=d(i). Теорема 2 При всех m=1,ј,N+1 верны утверждения
Таким образом, конечно, можно восстановить всю матрицу. Зная номер I строки, отвечающей исходному тексту T, легко найти сам текст T, поскольку s(I)=0 и Ss(I)T=T. Обычно после такого объяснения, используя аналогии различной степени неточности, без строгого доказательства предлагается метод для восстановления T, который заключается в том, T[i]=Bdi(I), i=0, ..., N. Автору не удалось обнаружить ни одного строгого доказательства правильности этого метода. Некое подобие обоснования дано в оригинальной работе Барроуза и Уилера [3], но они в действительности пользуются преобразованием d-1 и обосновывают алгоритм только для этого случая. Теорема 2
призвана внести ясность в обоснование BW-преобразования и его обращения. Из неё
вытекает, что действительно
Доказательство. [Доказательство теоремы 2 проводится индукцией по m=1, ..., N+1] База индукции m=1. В силу определения (3) при всех i=0, ..., N-1 верно сравнение Bd(i) Ј Bd(i+1). В силу определения (2) выполнено Bi=(Ss(i)-1T)[0]. Пусть утверждения теоремы верны при m-1. Докажем их
для m. В силу предположения индукции
Однако, в силу определения (1) перестановки s набор (Ss(i)T)[0..m-2] также является лексикографически упорядоченным набором префиксов длины m-1 всех циклических сдвигов текста T.
Остаётся доказать (4),
то есть, что набор строк
Доказательство. [Доказательство теоремы 1]
Поскольку перестановка d однозначно определяется по B
(см. (3)),
получаем, что текст T действительно однозначно определяется текстом B и числом I
по формуле (11).
q.e.d. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 Суффиксный массив и BWTПерестановку s называют иногда суффиксным массивом или массивом суффиксов. Это не совсем точно: разные определения суффиксного массива пояснены в конце раздела. Суффиксные массивы играют важную роль в индексации информации. Например, с их помощью легко найти все повторяющиеся подстроки текста и много других важных характеристик текста (см., например, [2]).Теорема 1 позволяет восстановить исходный текст T из преобразованного текста B и индекса I. Поскольку перестановка s несёт важную информацию о тексте, возникает естественный вопрос: можно ли попутно восстановить перестановку s? Оказывается, можно! Наивный подход заключается в следующем. Известно, что s(I)=0. Естественно положить s(d(I))=1, ..., s(dN(I))=N. Проблема заключается в том, что набор чисел I, d(I), ..., dN(I) может и не оказаться перестановкой чисел 0, ..., N. Пример, когда это не так, был построен ещё Барроузом и Уилером [3]. Действительно, пусть T[0..5]=»канкан». Тогда матрица из лексикографически
отсортированных строк выглядит так:
Из теоремы 2 вытекает следующая лемма: Лемма 1 Предположим, что Перестановка d называется неприводимой, если при некотором j совпадают множества {j, d(j), ..., dN(j)}={0, ..., N}. Лемма 2 Пусть при некотором j выполнено
равенство {j, d(j), ..., dN(j)}={0, ..., N}. Тогда
1) dN+1(j)=j;
2) При всех i О {0, ..., N} выполнено 3) При всех i О {0, ..., N} имеем dN+1(i)=i.
Не следует путать неприводимую перестановку с циклической. Перестановка d называется циклической, если при некотором K выполнено d(i)=i+K mod N+1 для всех i О {0, ..., N}. Циклическая перестановка является неприводимой тогда и только тогда, когда N+1 и K взаимно просты: НОД(N+1,K)=1. Подкрепляющий пример: преобразование BW(T) определяется упорядочиванием циклических перестановок (сдвигов) текста SjT. Для одновременного восстановления текста T и перестановки s желательна (в силу леммы 1) неприводимость d. Лемма 3 Предположим, что
символ T[N] отличен от всех остальных символов текста T: T[N] № T[i], i=0, ј, N-1. Тогда перестановка d -
неприводима.
Доказательство. В силу теоремы 2
Лемма 4 Предположим, что какой-нибудь символ T[j] отличен от всех
остальных символов текста T: T[j] № T[i], i № j. Тогда перестановка d -
неприводимая.
Доказательство. Рассмотрим циклический сдвиг Sj+1T, у
которого
Лирическое отступление. Вышесказанное не означает, конечно же, что не существует алгоритма, восстанавливающего перестановку s для неприводимых d. Составление такого алгоритма - интересная задача, которая «закруглила» бы теорию преобразования Барроуза-Уилера. Автор настоящей статьи не относится к математикам, которые любят доказывать результаты в максимальной общности. Поэтому здесь дана лишь правдоподобная гипотеза о строении d, которая верна для строки «канкан» (см. начало раздела). Назовём перестановку d допустимой, если она может возникнуть для какого-нибудь текста T: d =d(BW(T)) при некотором T[0..N]. Гипотеза 1 Пусть k > 0, n > 0 - разложение числа N+1 на
целые множители: N+1=kn. Тогда допустима перестановка d
со свойствами:
1) dk(0)=0,
2) множество {0,d(0),ј,dk-1(0)} содержит k разных чисел,
3) dj(i)=dj(0)+i при j=0, ..., k-1, и i=0,...,n-1.
Других допустимых перестановок d нет.
Обозначим $=T[N] - последний символ T, отличный от всех остальных. Будем называть символ $ разделителем. Название обуславливается тем, что этот символ отделяет начало текста от конца. В разделе 5 будет использовано несколько разделителей, чтобы представить несколько текстов в одной строке. В принципе, возможны различные порядки $ относительно других букв алфавита A. Обычно выбирают $ либо лексикографически младшим, либо лексикографически старшим в A. В первом случае s0=0, а во втором случае sN=N. Суффиксным массивом называют перестановку s, из которой убран индекс, указывающий на $. С точки обозначений наиболее простым является соглашение о лексикографически старшем $. Тогда перестановка s =(s0,ј,sN-1,N), а суффиксный массив - это набор (s0,ј,sN-1). Обычно это упрощает алгоритмы обработки строк, см., например, [2] Таким образом, чтобы найти перестановку s можно воспользоваться любым из многочисленных методов построения суффиксных массивов для текста T [4,5,6], а потом просто добавить суффикс, отвечающий символу T[N]. В приведённых статьях [4,5,6] обычно делается предположение, что $ Ј A. Для индекса I, отвечающего s(I)=0 выполнено
BI=T[N]=$. Поэтому, чтобы избежать необходимости кодировать символ $
достаточно передать текст Bў=B[0..I-1]B[I+1..N] и номер I. Очевидно, по этой информации легко
восстановить
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 Алгоритмы восстановления T и s по B и IПосле прочтения предыдущих разделов не должно вызывать затруднений построение текста B (или текста Bў). Остался незатронутым только вопрос о нахождении d по тексту B.Алгоритм 1 [Нахождение d] Пусть A={a1,ј,an}, причём ai < ai+1.
Пользуясь формулой
Алгоритм 2 [Восстановление T]
Алгоритм 3 [Одновременное восстановление T и s] Предполагается, что перестановка
d неприводима.
|
||||||||||||||||||
5 Преобразование данных словарного типа5.1 ТеорияПусть текст T[0..N] состоит из n частей, которые разделены специальными символами $0, ..., $n-1, нигде более в тексте T не встречающимися, причём T[N]=$n-1.Будем считать, что позиции i0, ..., in-1 разделителей упорядочены:
Пусть lk - длина фрагмента Tk:
Лемма 5 При каждом k=0, ..., n-1 верны утверждения
1) lk=m(k-1).
2) Tk=(Sik-1T)[1..lk]=Bd(Ik-1)јBdm(k-1)(Ik-1).
(здесь i-1 є
in-1, I-1 є In-1).
Рассмотрим теперь текст ЩB, полученный из текста B с помощью замены всех
символов-разделителей $k на один символ-разделитель $, который
предшествует всем символам алфавита A исходного текста T:
Легко видеть, что условия (19) и (3) различаются лишь при i=0, ..., n-1, причём для i=0, ..., n-1 имеем Bd(i)=$w(i) (см. также (16)) и ЩBЩd(i)=$. Поэтому справедлива следующая лемма. Лемма 6 d(i)=Щd(i)
при i=n, ..., N.
Обозначим через ЩI0 < ј <
ЩIn-1 позиции разделителя $ в ЩB:
Лемма 7 {ЩI0,ј,ЩIn-1}={I0,ј,In-1}. Другими словами,
набор чисел (ЩI0,ј,ЩIn-1) есть перестановка набора чисел (I0,ј,In-1).
Из определения (19)
перестановки Щd вытекает, что
Пусть g - это и есть перестановка чисел {0, ...,
n-1}, переводящая набор (ЩI0,ј,ЩIn-1) в набор (I0,ј,In-1):
Для упрощения формулировок, положим ЩI-1 є ЩIn-1, g(-1) є g(n-1). Теорема 3 Обозначим
|