Uniwersytet Warszawski
Wydział Matematyki, Informatyki i Mechaniki
Bartłomiej Romański
Nr albumu: 219543
Strukturalne własności
transformaty Burrowsa-Wheelera dla pewnych klas słów
Praca magisterska
na kierunku INFORMATYKA
Praca wykonana pod kierunkiem prof. dr. hab. Wojciecha Ryttera Instytut Informatyki UW
Wrzesień 2009
Oświadczenie kierującego pracą
Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwa- lifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego.
Data Podpis kierującego pracą
Oświadczenie autora (autorów) pracy
Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa została napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób niezgodny z obowiązującymi przepisami.
Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem pro- cedur związanych z uzyskaniem tytułu zawodowego w wyższej uczelni.
Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją elektroniczną.
Data Podpis autora (autorów) pracy
Streszczenie
W pracy sformułowana została hipoteza na temat stopnia kompresji słów generowanych przez morfizmy uzyskiwanego przy pomocy transformaty Burrowsa-Wheelera. W celu popar- cia hipotezy dokładnie opisana została zwarta postać BWT następujących klas słów:
• Słowa Fibonacciego
• Słowa Thuego-Morse’a
• Słowa bezkwadratowe Thuego-Morse’a
• Słowa Cantora
• Słowa Paper Folding
O ile w przypadku słów Fibonacciego oraz słów Thuego-Morse’a zaprezentowane zostały jedynie alternatywne dowody znanych rezultatów, o tyle w przypadku słów bezkwadrato- wych Thuego-Morse’a, słów Cantora oraz słów Paper Folding są to nowe wyniki. Co więcej, dla większości wykorzystywanych morfizmów przedstawione zostały szczegółowe twierdzenia opisujące, jak zmienia się postać BWT dowolnego słowa po wykonaniu na nim badanych przekształceń. Dodatkowo postawiona w pracy hipoteza została automatycznie przetestowa- na na szerokiej gamie przykładów.
Słowa kluczowe
Transformata Burrowsa-Wheelera, morfizmy słów, słowa Fibonacciego, słowa Thuego-Morse’a, słowa bezkwadratowe Thuego-Morse’a, słowa Cantora, słowa Paper Folding
Dziedzina pracy (kody wg programu Socrates-Erasmus) 11.3 Informatyka
Klasyfikacja tematyczna
G.2.1 – Mathematics of Computing : Discrete Mathematics : Combinatorics E.4 – Data : Coding And Information Theory
Tytuł pracy w języku angielskim
Structual properties of Burrows-Wheeler transform for some word classes
Spis treści
Wstęp . . . . 5
1. Wprowadzenie . . . . 7
1.1. Terminologia . . . . 7
1.1.1. Podstawowe pojęcia związane ze słowami . . . . 7
1.1.2. Porządek leksykograficzny słów . . . . 8
1.1.3. Morfizmy słów . . . . 8
1.2. Wybrane klasy słów . . . . 8
1.2.1. Słowa Fibonacciego . . . . 8
1.2.2. Słowa Thuego-Morse’a . . . . 9
1.2.3. Słowa bezkwadratowe Thuego-Morse’a . . . . 10
1.2.4. Słowa Cantora . . . . 10
1.2.5. Słowa Paper Folding . . . . 11
1.3. Transformata Burrowsa-Wheelera . . . . 12
1.3.1. Definicja . . . . 12
1.3.2. Odwracalność . . . . 13
1.3.3. Znaczenie praktyczne . . . . 13
1.3.4. Efektywne algorytmy kodowania i dekodowania . . . . 14
1.4. Hipoteza o BWT-regularności dla morfizmów . . . . 14
2. Słowa Fibonacciego . . . . 17
2.1. Słowa Sturma . . . . 19
3. Słowa Thuego-Morse’a . . . . 21
4. Słowa bezkwadratowe Thuego-Morse’a . . . . 23
5. Słowa Cantora . . . . 27
6. Słowa Paper Folding . . . . 31
7. Podsumowanie . . . . 37
7.1. Badane morfizmy . . . . 37
7.2. Morfizmy binarne . . . . 38
7.3. Pozostałe morfizmy . . . . 38
Bibliografia . . . . 42
Wstęp
Transformata Burrowsa-Wheelera (BWT) jest algorytmem powszechnie wykorzystywanym w kompresji bezstratnej. O jej popularności oraz wysokim znaczeniu praktycznym świadczy m. in. fakt, że stanowi ona podstawę działania popularnego narzędzia bzip2. Transformata oraz jej potencjalne zastosowania zostały po raz pierwszy opisane w pracy Michaela Burrowsa i Davida Wheelera stosunkowo niedawno, w 1993 roku. Bazuje ona na nieopublikowanej transformacie odkrytej przez samego Wheelera ponad 10 lat wcześniej, w 1984 roku.
Przekształcenie dokonuje jedynie permutacji liter słowa wejściowego – w słowie wyjścio- wym pojawiają się dokładnie te same symbole jednak w zmodyfikowanej kolejności. Co cie- kawe, przekształcenie ma tę interesującą własność, że w stosunkowo wielu sytuacjach słowo wyjściowe poddaje się kompresji w dużo większym stopniu niż słowo wejściowe. Dzieje się tak, gdyż w wyniku transformaty litery mają tendencję do układania się w długie bloki złożone z identycznych symboli. Istotny jest przy tym oczywiście fakt, że przy minimalnej dodat- kowej informacji, transformatę możemy odwrócić, dzięki czemu możliwa jest dekompresja przetwarzanego tekstu.
Transformata Burrowsa-Wheelera poza zastosowaniami praktycznymi związanymi z kom- presją danych ma także liczne ciekawe własności czysto teoretyczne. Okazuje się, że bardzo wiele, znanych klas słów, często o skomplikowanej budowie ma stosunkowo prostą postać BWT. Klasycznym, wręcz skrajnym, przykładem są słowa Fibonacciego (lub ogólniej, słowa Sturma), dla których wynikiem transformaty BWT jest zawsze słowo postaci 1 ∗ 0 ∗ .
Efektywne obliczenie wyniku transformaty Burrowsa-Wheelera nie jest trywialne, może być jednak sprowadzone do obliczenia tablicy sufiksowej, zatem dla ustalonego alfabetu może zostać wykonane w czasie liniowym. Dekodowanie jest znacznie prostsze i również może zo- stać wykonane w czasie liniowym. Znacznie mniej wiadomo na temat tego, jak dynamicznie aktualizować wynik transformaty, jeśli oryginalny tekst ulegnie modyfikacji (np. dopisana lub usunięta zostanie pojedyncza litera).
Niniejsza praca koncentruje się na zbadaniu i opisaniu postaci BWT wybranych klas słów generowanych przez morfizmy. W pierwszych rozdziałach przytoczone są znane wyniki dla słów Fibonacciego, słów Sturma oraz słów Thuego-Morse’a. W tej części pracy na uwagę zasługuje wykorzystanie definicji opartych na odpowiednich morfizmach, zamiast na rekuren- cjach, co prowadzi do nowych, innych niż w przytaczanych pracach, dowodów. Dodatkowym wynikiem, jest dokładne opisanie, jak zmienia się postać BWT dowolnego słowa po wykona- niu na nim odpowiednich morfizmów. W dalszej części pracy szczegółowo omówiona została postać BWT dla słów bezkwadratowych Thuego-Morse’a, słów Cantora oraz słów Paper Fol- ding. Są to nowe wyniki, nie opisywane wcześniej w literaturze.
Wyniki otrzymane dla poszczególnych klas słów opisanych w pracy pozwoliły sformułować
przedstawioną w rozdziale 1.4 hipotezę na temat ogólnej postaci BWT słów generowanych
przez morfizmy. Hipoteza została sprawdzona komputerowo na możliwie szerokiej gamie przy-
kładów.
Rozdział 1
Wprowadzenie
1.1. Terminologia
Większość terminów oraz oznaczeń używanych w pracy jest powszechnie stosowana, więc powinny być one całkowicie zrozumiałe. Jednak dla pełnej jasności poniżej przedstawione zostały wybrane definicje. Szczegółowo wybrane zagadnienia związane ze słowami zostały opisane m. in. w pracach [3, 13, 14, 22].
1.1.1. Podstawowe pojęcia związane ze słowami
Definicja 1.1.1. Słowem nazywamy skończony lub nieskończony ciąg elementów ze skoń- czonego zbioru – zbiór ten nazywamy alfabetem.
Ponieważ dalsza część pracy koncentruje się na słowach skończonych, więc jeśli nie zostało wyraźnie zaznaczone, że jest inaczej, słowo należy zawsze traktować jako ciąg skończony. Sło- wa oznaczamy małymi literami alfabetu łacińskiego, alfabet najczęściej symbolem Σ, a jego elementy symbolami 0, 1, 2 . . . . Zbiór wszystkich słów nad alfabetem Σ oznaczamy symbo- lem Σ ∗ . Podstawową operacją na słowach jest ich konkatenacja (zdefiniowana analogicznie jak konkatenacja ciągów). Konkatenację słów u i v zapisujemy po prostu jako uv. Długość słowa u zapisujemy jako |u|, a liczbę liter i w słowie u jako # i (u).
W pracy istotne są także pojęcia prefiksu i sufiksu oraz rotacji cyklicznej słowa:
Definicja 1.1.2. Słowo u nazywamy prefiksem słowa v jeśli istnieje takie słowo v 0 , że v = uv 0 . Definicja 1.1.3. Słowo u nazywamy sufiksem słowa v jeśli istnieje takie słowo v 0 , że v = v 0 u.
Definicja 1.1.4. i-tą rotacją cykliczną słowa u będziemy nazywali słowo π i (u), gdzie funk- cja π : Σ ∗ 7→ Σ ∗ oznacza następujące przekształcenie (u 1 , u 2 . . . u n oznaczają kolejne litery słowa u):
π(u 1 u 2 . . . u n ) = u 2 u 3 . . . u n u 1
Zauważmy, że przekształcenie π jest odwracalne zatem zapis π i oraz określenie i-ta rotacja ma sens nie tylko dla i 0, ale także dla i < 0.
Dodatkowo w pracy użyto następujących oznaczeń:
Definicja 1.1.5. Dla dowolnego słowa u ∈ Σ ∗ słowo składające się z tych samych liter, ale zapisanych w odwrotnej kolejności oznaczamy przez u R .
Definicja 1.1.6. Dla dowolnego słowa u ∈ {0, 1} ∗ słowo składające się z zanegowanych
kolejnych liter słowa u, oznaczamy przez ¯ u.
1.1.2. Porządek leksykograficzny słów
Jeśli dany jest porządek symboli alfabetu (w pracy używamy zawsze naturalnego porządku 0 < 1 < 2 . . . ), możemy określić tzw. porządek leksykograficzny słów:
Definicja 1.1.7. Mówimy, że słowo u jest mniejsze leksykograficznie od słowa v wtedy i tylko wtedy, gdy spełniony jest jeden z poniższych warunków:
• u jest prefiksem właściwym słowa v,
• istnieje słowo p oraz symbole x, y takie, że słowa px, py są prefiksami odpowiednio słów u i v oraz x < y
Łatwo zauważyć, że tak zdefiniowana relacja określa porządek liniowy na zbiorze Σ ∗ . 1.1.3. Morfizmy słów
Definicja 1.1.8. Morfizmem nazywamy takie przekształcenie φ : Σ ∗ 7→ Σ ∗ , że dla dowol- nych słów u, v ∈ Σ ∗ spełniony jest warunek:
φ(uv) = φ(u) φ(v) Wśród morfizmów możemy wyróżnić następujące klasy:
Definicja 1.1.9. Mówimy, że morfizm zachowuje porządek, jeśli dla dowolnych słów u, v ∈ Σ ∗ warunki u < v oraz φ(u) < φ(v) są równoważne.
Definicja 1.1.10. Morfizm φ : Σ 1 7→ Σ 2 nazywamy jednorodnym, jeśli dla każdej pary symboli x, y ∈ Σ 1 spełniony jest warunek |φ(x)| = |φ(y)|.
W pracy wielokrotnie wykorzystywany jest następujący, bardzo prosty fakt:
Fakt 1.1.1. Morfizm jednorodny φ zachowuje porządek wtedy i tylko wtedy, gdy:
φ(0) < φ(1) < φ(2) . . .
Warto zauważyć, że niekoniecznie jest to prawda dla morfizmów niejednorodnych.
1.2. Wybrane klasy słów
W niniejszym podrozdziale przedstawione oraz krótko omówione zostały wybrane klasy słów wykorzystywane w dalszej części pracy. Kolejne sekcje opisują słowa Fibonacciego, słowa Thuego-Morse’a, słowa bezkwadratowe Thuego-Morse’a, słowa Cantora oraz słowa Paper Folding.
1.2.1. Słowa Fibonacciego
Chyba najczęściej spotkaną w literaturze klasą słów są słowa Fibonacciego. Słowa Fibo- nacciego możemy definiować na bardzo wiele równoważnych sposobów, ale prawdopodobnie najpopularniejsza jest przedstawiona poniżej definicja rekurencyjna.
Definicja 1.2.1. i-tym słowem Fibonacciego nazywamy słowo:
f i =
1 dla i = 0,
0 dla i = 1,
f i−1 f i−2 dla i 2
Dla potrzeb niniejszej pracy warto jednak przyjrzeć się także alternatywnej definicji słów Fibonacciego, wykorzystującej morfizm φ f :
Definicja 1.2.2. i-tym słowem Fibonacciego nazywamy słowo:
f i = φ f (1), gdzie φ f oznacza następujący morfizm:
φ f :
( 0 7→ 01 1 7→ 0 .
Bezpośrednio z powyższych definicji wynika następujący, prosty fakt:
Fakt 1.2.1. Niech F i oznacza i-tą liczbę Fibonacciego [10]. Wtedy:
# 0 (f i ) = F i−1 , # 1 (f i ) = F i−2 , |f i | = F i 1.2.2. Słowa Thuego-Morse’a
Niemalże równie popularną jak słowa Fibonacciego klasą słów są słowa Thuego-Morse’a. Mają one liczne ciekawe właściwości i bardzo często pojawiają się różnych, nierzadko niespodzie- wanych kontekstach. Wiele ich zastosowań zostało opisanych w pracy [2], gdzie zostały one wręcz określone jako wszędobylskie (ang. ubiquitous). Prawdopodobnie najczęściej przytacza- nym faktem na temat słów Thuego-Morse’a jest to, że są one przykładem słów overlap-free czy też 2+-free, co oznacza po prostu, że nie zawierają podsłów postaci αβαβα (dla pewnych niepustych słów α i β).
W literaturze często spotykana jest następująca definicją słów Thugo-Morse’a:
Definicja 1.2.3. i-tym słowem Thuego-Morse’a nazywamy słowo:
t i =
( 0 dla i = 0,
t i−1 t i−1 dla i > 0
Jednak podobnie jak w przypadku poprzedniej klasy słów w dalszej części pracy wygodniej będzie oprzeć się na definicji opartej o morfizmy:
Definicja 1.2.4. i-tym słowem Thuego-Morse’a nazywamy słowo:
t i = φ i t (0), gdzie φ t oznacza następujący morfizm:
φ t :
( 0 7→ 01 1 7→ 10
Tak zdefiniowane, kolejne słowa Thuego-Morse’a są równe:
t 0 = 0 t 1 = 01 t 2 = 0110 t 3 = 01101001 t 4 = 0110100110010110
t 5 = 01101001100101101001011001101001
1.2.3. Słowa bezkwadratowe Thuego-Morse’a
Bezpośrednio powiązana z opisanymi w poprzednim rozdziale słowami Thuego-Morse’a jest klasa słów bezkwadratowych Thuego-Morse’a. Do potrzeb pracy przyjmiemy następującą de- finicję (analogiczna została wykorzystana m.in. w pracy [11]):
Definicja 1.2.5. i-tym słowem bezkwadratowym Thuego-Morse’a nazywamy słowo:
s i = φ i s (2), gdzie φ s oznacza następujący morfizm:
φ s :
0 7→ 1 1 7→ 20 2 7→ 210
Tak zdefiniowane, kolejne słowa bezkwadratowe Thuego-Morse’a są równe:
s 0 = 2 s 1 = 210 s 2 = 210201 s 3 = 210201210120
s 4 = 210201210120210201202101
s 5 = 210201210120210201202101210201210120210121020120
Na pierwszy rzut oka związek słów bezkwadratowych Thuego-Morse’a z opisanymi w po- przednim rozdziale słowami Thuego-Morse’a wydawać się może niewielki. Warto jednak za- uważyć następującą prawidłowość. Niech t ∞ oznacza takie nieskończone słowo, że wszystkie słowa z ciągu t i są jego prefiksami. Analogicznie zdefiniujmy s ∞ . Okazuje się, że zliczając liczbę jedynek pomiędzy kolejnymi zerami w słowie t ∞ i zapisując wyniki w postaci kolej- nych symboli otrzymujemy właśnie słowo s ∞ . W ten sposób tradycyjnie definiowane jest nieskończone słowo bezkwadratowe Thuego-Morse’a.
Słowa bezkwadratowe Thuego-Morse’a są chyba najczęściej przytaczanym w literaturze przykładem tzw. słów bezkwadratowych [11]. Oznacza to, że nie zawierają żadnego podsłowa postaci αα (dla pewnego niepustego słowa α ∈ Σ ∗ ).
1.2.4. Słowa Cantora
Kolejną klasą słów omówioną w pracy są tzw. słowa Cantora, będące pewnego rodzaju odpo- wiednikiem, znanego z analizy, zbioru Cantora. Mówiąc nieco nieformalnie, i-te słowo Cantora powstaje w następujący sposób: rozpoczynamy od słowa długości 3 i złożonego z samych jedy- nek, a następnie wycinamy w nim dziury – dzielimy całe słowo na 3 równe części i środkową część zamieniamy na zera. Następnie bierzemy każdą z pozostałych części i postępujemy ana- logicznie dopóki nie otrzymamy pojedynczych jedynek. Przykładowo, trzecie słowo Cantora powstaje w następujący sposób:
111111111111111111111111111
↓
111111111000000000111111111
↓
111000111000000000111000111
↓
101000101000000000101000101
Bardziej formalnie słowa Cantora możemy zdefiniować następująco:
Definicja 1.2.6. i-tym słowem Cantora będziemy nazywali słowo:
c i = φ i c (1), gdzie φ c oznacza następujący morfizm:
φ c :
( 0 7→ 000 1 7→ 101 1.2.5. Słowa Paper Folding
Ostatnią klasą słów, które zostały wykorzystane w pracy są tzw. słowa Paper Folding (omó- wione dokładniej m. in. w pozycji [3]). Nazwa tej klasy słów wzięła się od pewnego, ory- ginalnego sposobu ich konstrukcji. Weźmy długi pasek papieru, który wybraną liczbę razy składamy na pół – dokładnie tak jak na rysunku poniżej 1 , zawsze w tę samą stronę (w prawo).
Po rozłożeniu papieru, na pasku otrzymamy pewien ciąg zgięć, które mogą być skierowa- nych w lewo bądź w prawo. Jeśli zgięcia w lewo oznaczymy symbolem 0, a zgięcia w prawo symbolem 1, otrzymamy pewne słowo nad alfabetem binarnym. Oczywiście, im więcej zgięć wykonamy tym większa będzie długość otrzymanego słowa (dokładnie 2 i − 1, gdzie i to liczba zgięć). Okazuje się jednak, że wszystkie słowa, które możemy w ten sposób otrzymać, są pre- fiksami pewnego nieskończonego słowa p ∞ – tzw. regular paper folding sequence bądź dragon curve sequence (nazwa wywodzie się od kształtu krzywej, którą otrzymujemy po rozłożeniu, poskładanego uprzednio, paska). Dla potrzeb niniejszej pracy skoncentrujemy się jednak na nieco innej, opartej na morfizmach, definicji:
Definicja 1.2.7. i-tym słowem Paper Folding nazywamy słowo:
p i = φ 0 p ◦ φ i p (3), gdzie φ p oraz φ 0 p oznaczają następujące morfizmy:
φ p :
0 7→ 20 1 7→ 21 2 7→ 30 3 7→ 31
φ 0 p :
0 7→ 00 1 7→ 01 2 7→ 10 3 7→ 11
1
Rysunek został zaczerpnięty z artykułu [25].
Tak zdefiniowane słowa Paper Folding również są prefiksami nieskończonego słowa p ∞ , mają jednak nieco inne długości (|p i | = 2 i ). Początkowe słowa Paper Folding wyglądają następująco:
p 0 = 11 p 1 = 1101 p 2 = 11011001 p 3 = 1101100111001001
p 4 = 11011001110010011101100011001001
1.3. Transformata Burrowsa-Wheelera
1.3.1. Definicja
Podstawowym zagadnieniem, wokół którego koncentruje się niniejsza praca, jest transformata Burrowsa-Wheelera – przekształcenie powszechnie wykorzystywane w kompresji bezstratnej.
Definicja 1.3.1. Transformatą Burrowsa-Wheelera [1, 6] nazywamy przekształcenie słowa s w słowo BW T (s) będące konkatenacją ostatnich liter wszystkich rotacji cyklicznych słowa s posortowanych leksykograficznie.
Powyższą definicję prawdopodobnie najłatwiej zrozumieć, analizując działanie transfor- maty na przykładowym słowie. Niech s = 31213021. Wtedy kolejne rotacje cykliczne umiesz- czone w macierzy wyglądają następująco:
3 1 2 1 3 0 2 1 1 2 1 3 0 2 1 3 2 1 3 0 2 1 3 1 1 3 0 2 1 3 1 2 3 0 2 1 3 1 2 1 0 2 1 3 1 2 1 3 2 1 3 1 2 1 3 0 1 3 1 2 1 3 0 2
Co po posortowaniu leksykograficznym wierszy daje następujący układ:
0 2 1 3 1 2 1 3 1 2 1 3 0 2 1 3 1 3 0 2 1 3 1 2 1 3 1 2 1 3 0 2 2 1 3 0 2 1 3 1 2 1 3 1 2 1 3 0 3 0 2 1 3 1 2 1 3 1 2 1 3 0 2 1
Łącząc kolejne litery z ostatniej kolumny, otrzymujemy słowo BW T (s) = 33221011.
Definicja 1.3.2. Macierz, w której w kolejnych wierszach znajdują się kolejne posortowane
leksykograficznie rotacje cykliczne słowa s, nazywamy macierzą BWT tego słowa.
1.3.2. Odwracalność
Łatwo zauważyć, że tak zdefiniowane przekształcenie nie jest odwracalne. Jeśli słowa s 1 i s 2 są cyklicznie równoważne, to zbiory ich rotacji są identyczne, więc BW T (s 1 ) i BW T (s 2 ) również są identyczne. Jednak, co ciekawe, analogiczny fakt zachodzi również w drugą stronę.
Twierdzenie 1.3.1. Jeśli BW T (s 1 ) = BW T (s 2 ) to słowa s 1 i s 2 są cyklicznie równoważne.
Dowód. Wystarczy pokazać, że na podstawie BW T (s), czyli ostatniej kolumny macierzy BWT słowa s można w sposób jednoznaczny odtworzyć całą macierz. Zauważmy, że znając ostatnią kolumnę znamy też pierwszą – znajdują się tam dokładnie te same litery, tyle, że posortowane:
...3
7→ 0...3
...3 1...3
...2 1...2
...2 1...2
...1 2...1
...0 2...0
...1 3...1
...1 3...1
Ponieważ w kolejnych wierszach umieszczone są kolejne rotacje, możemy zawsze ostatnią kolumnę przenieść na początek i dalej ta własność zostanie zachowana. Jeśli teraz posortu- jemy kolejne wiersze, otrzymamy ponownie macierz BWT słowa s. Znamy już dwie pierwsze kolumny: 0...3
7→ 30... 7→ 02... 1...3 31... 12...
1...2 21... 13...
1...2 21... 13...
2...1 12... 21...
2...0 02... 21...
3...1 13... 30...
3...1 13... 31...
Postępując ponownie w ten sam sposób możemy odtwarzać kolejne kolumny aż do otrzy- mania pełnej macierzy: 02...3
7→ 302... 7→ 021... 12...3 312... 121...
13...2 213... 130...
13...2 213... 131...
21...1 121... 213...
21...0 021... 213...
30...1 130... 302...
31...1 131... 312...
1.3.3. Znaczenie praktyczne
Transformata Burrowsa-Wheelera jest algorytmem powszechnie wykorzystywanym w kom-
presji bezstratnej. W połączeniu z transformatą Move To Front [5] oraz kodowaniem Huffmana
[4] jest podstawą popularnego narzędzia bzip2. Pomimo, że stosunkowo ciężko jest teoretycz-
nie wykazać skuteczność kompresorów opartych na BWT (pewne wyniki zostały przedsta-
wione m. in. w pracach [9, 18, 19]) to jednak dość łatwo jest intuicyjnie zrozumieć zasadę
działania tych algorytmów.
Zauważmy, że w typowych tekstach pewne fragmenty występują znacznie częściej niż in- ne. Przykładowo w języku angielskim stosunkowo popularny jest wyraz not. Jeśli weźmiemy wszystkie rotacje cykliczne badanego tekstu to duża część tych rozpoczynających się od ot będzie kończyła się właśnie literą n. Dzięki temu w ostatniej kolumnie macierzy BWT mamy dużą szansę otrzymać stosunkowo długie bloki złożone z identycznych liter. Poniżej przedsta- wiony został fragment macierzy BWT dla tekstu zaczerpniętego z Hamleta Szekspira 2 .
ot look upon his like again. ... n ot look upon me; Lest with th ... n ot love on the wing, -- As I p ... h ot love your father; But that ... n ot made them well, they imita ... n ot madness That I have utter’ ... n ot me’? Ros. To think, my lor ... n ot me; no, nor woman neither, ... n ot me? Ham. No, by the rood, ... g ot mend his pace with beating ... n ot mine own. Besides, to be d ... n ot mine. Ham. No, nor mine no ... n ot mock me, fellow-student. I ... n ot monstrous that this player ... n ot more like. Ham. But where ... n ot more native to the heart, ... n ot more ugly to the thing tha ... n ot more, my lord. Ham. Is not ... j ot move thus. Oph. You must s ... n ot much approve me. -- Well, si ... n
Poza praktycznymi zastosowaniami w kompresji BWT może być także przydatne w teore- tycznych rozważaniach. Postać wielu słów znacznie się upraszcza po wykonaniu transformaty BWT, co czasem ułatwia odkrycie pewnych własności. Przykład pracy [20] pokazuje też, że czasem ten sam problem (w tym wypadku znalezienie algorytmu obliczania n-tej litery) okazuje się prostszy dla postaci BWT niż dla oryginalnego słowa.
1.3.4. Efektywne algorytmy kodowania i dekodowania
Należy zauważyć, że kodowanie słowa u możemy sprowadzić do obliczania tablicy sufiksowej słowa uu. Zatem dla stałego rozmiaru alfabetu może ono zostać wykonane w czasie linio- wym [12, 15]. Proces odkodowywania jest znacznie prostszy i również może zostać wykonany w czasie liniowym [6]. Zdecydowanie trudniejszy natomiast okazuje się problem dynamicznej aktualizacji wyniku BWT podczas modyfikacji oryginalnego tekstu (pewne wyniki przedsta- wiono m. in. w pracy [23]). Warto także zwrócić uwagę na fakt, że nie zawsze niezbędna jest pełna dekompresja przetwarzanego tekstu. Wybrane algorytmy działające na skompresowa- nych (nie tylko przy pomocy BWT) danych zostały przedstawione w pozycjach [1, 21].
1.4. Hipoteza o BWT-regularności dla morfizmów
Transformata Burrowsa-Wheelera pomimo licznych publikacji na swój temat nadal nie została do końca zbadana. Przykładowo, stosunkowo niewiele wiadomo na temat uzyskiwanego dla różnych klas słów stopnia kompresji. Podstawowym, bardzo ogólnym pytaniem, jakie można
2
Przykład pochodzi z pracy [1].
postawić, jest pytanie o to, które klasy słów możemy przy użyciu BWT zapisywać używając niewielkiej (np. logarytmicznej względem długości słowa) liczby symboli.
W pracy przeanalizowane zostały wybrane, klasyczne słowa generowane przez morfizmy.
Co ciekawe, we wszystkich badanych przypadkach okazało się, że postać BWT jest w pe- wien sposób regularna. Przede wszystkim, warto zauważyć, że wykorzystując BWT każde omawiane słowo możemy reprezentować używając zapisu o logarytmicznej długości.
Na podstawie tych kilku wybranych klas możemy zatem wysunąć nieco ogólniejszą hipo- tezę mówiącą, że dowolne słowo otrzymane poprzez iterację morfizmu zostanie silnie skom- presowane przy pomocy transformaty Burrowsa-Wheelera. Ściślej możemy ją sformułować następująco:
Hipoteza 1.4.1. Dla dowolnego morfizmu φ : Σ ∗ 7→ Σ ∗ oraz dowolnego symbolu początkowe- go s ∈ Σ liczba bloków w słowie φ n (s) jest rzędu 3 O(n).
Dokładniej powyższa hipoteza została omówiona w ostatnim rozdziale, gdzie zaprezento- wane zostały wyniki jej automatycznego testowania.
3