• Nie Znaleziono Wyników

Niestety w przypadku wczytania litery b funkcja przejścia nie jest już tak ładna jak w poprzed-nim podrozdziale. Niemniej jednak w dalszym ciągu posiada ona jednoznacznie zdefiniowaną strukturę, którą poniżej opiszę.

Pierwszy podgraf pokazuje przejścia po wczytaniu litery b ze stanów z klas 1 i 6.

Jego analiza prowadzi do następującej obserwacji.

Obserwacja 5.7 Po wczytaniu litery b przejście następuje:

• z pierwszych i2 stanów z klasy 1 do pierwszych i2 stanów klasy 2, konkretniej, z s-tego stanu klasy 1 przechodzimy do pierwszego stanu w s-tym ciągu klasy 2 (przypomnijmy, że w przypadku PD-trójkąta, który reprezentuje klasę 2, ciągi numerujemy zaczynając od dołu)

• z ostatniego stanu klasy 1 do pierwszego stanu klasy 7

• z pierwszych i2 − i1 + 1 stanów klasy 6 do pierwszych stanów klasy 2 (z s-tego stanu klasy 6 do pierwszego stanu w s-tym ciągu klasy 2)

• z kolejnych i1− 1 stanów klasy 6 do pierwszych stanów klasy 4 (z i2 − i1+ 1 + s-tego stanu do pierwszego stanu s-tego ciągu klasy 5)

• z ostatniego stanu klasy 6 do stanu akceptującego Kolejny podgraf pokazuje przejścia z klasy 2 i 7.

W poniższej obserwacji będziemy potrzebowali jeszcze jednej definicji.

Definicja 5.8 W PD-trójkącie stanów o długości a, i-tą kolumną (1 ¬ i ¬ a) nazywamy uporządkowany zbiór stanów: pierwszy z i-tego ciągu, drugi z i − 1-wszego ciągu, . . ., i-ty z pierwszego ciągu. Stany te numerujemy w podanej wyżej kolejności od 1 do i.

Obserwacja 5.9 Po wczytaniu litery b przejścia następują:

• z pierwszych i2− i1 kolumn PD-trójkąta stanów klasy 2 zgodnie z następującą regułą:

z s-tych stanów (1 ¬ s ¬ i2− i1) ciągów 1, 2, . . . , i2− i1+ 1 − s do pierwszego stanu s-tego ciągu klasy 2

• z pierwszych i1 stanów i2− i1+ s-tej kolumny (1 ¬ s ¬ i1) do pierwszych stanów s-tego trapezu klasy 3, konkretniej z r-tego stanu danej kolumny do pierwszego stanu r-tego ciągu wspomnianego trapezu

• z pozostałych stanów ostanich i1 kolumn PD-trójkąta (czyli stanów i1+ 1, i1+ 2, . . . , s s-tej kolumny (i2− i1+ 1 ¬ s ¬ i2) do pierwszego stanu klasy 6

• ze stanów z grupy 7 (oczywiście poza ostatnim, który jest stanem akceptującym) do pierwszego stanu klasy 6

Do rozważenia pozostały jeszcze stany z klas 3, 4 i 5, które to rozważymy łącznie. W tym celu rozważmy dwa poniższe podgrafy przejść, które podsumowane zostaną obserwacją.

Rozpocznijmy od pokazania następującego faktu.

Fakt 5.10 Po wczytaniu litery b przejście z s-tego stanu r-tego ciągu n-tego trapezu klasy 3 nie zależy od numeru trapezu n. Oznacza to, że ograniczając się do przejść po wczytaniu litery b wszystkie i1 trapezów jest izomorficznych.

Dowód

Rozważmy dwa odpowiadające sobie stany z dwóch różnych trapezów klasy 3:

u1= aj1#bak#+al u2= aj2#bak#+al

Zgodnie z definicją klasy musi być 0 ¬ k + l < i2, 1 ¬ j1, j2 ¬ i1. Ponadto zakładamy, że j1 6= j2. Musimy pokazać, że po wczytaniu litery b przejścia z u1 i u2 następują do tego samego stanu.

Zauważmy, że po wczytaniu b dostajemy słowa:

w1 = aj1#bak#bal w2 = aj2#bak#bal

Oczywiście w obu przypadkach musi nastąpić przesunięcie. Łatwo zauważyć, że minimalna możliwa wielkość przesunięcia wynosi i1+ 1, gdyż dla mniejszych wielkości przesunięć dosta-niemy niezgodność litery b znajdującej się na pozycji i1+ 1 w słowach w1i w2. A zatem nowy stan nie będzie uwzględniał, co znadowało się na pozycjach {1, 2, . . . , i1+ 1}, a co za tym idzie przejście to utożsami ze sobą stany u1 i u2, które na pozycjach i1+ 2, i1+ 3, . . . , i1+ i2+ 1 są identyczne. ♦

Uogólnijmy teraz jeszcze pojęcie kolumny na obiekt trapezu stanów oraz LG-trójkąta.

Definicja 5.11 W trapezie o długości d i wysokości h i-tą kolumną (1 ¬ i ¬ d) nazywamy uporządkowany zbiór i-tych stanów z ciągów 1, 2, . . . , h (o ile istnieją).

W LG-trójkącie stanów o długości a, i-tą kolumną (1 ¬ i ¬ a) nazywamy uporządkowany zbiór stanów i-tych stanów z ciągów 1, 2, . . . , a (o ile istnieją).

Teraz możemy już sformułować obserwację dotyczącą przejść z pozostałych jeszcze do rozważenia klas stanów.

Obserwacja 5.12 Po wczytaniu litery b przejście następuje:

• na mocy faktu 5.10 poniższe spostrzeżenie ogranicza się do pojedynczego trapezu:

– z ostatnich i1 kolumn trapezu stanów klasy 3 do pierwszego stanu klasy 6

– z pierwszych s stanów s-tej kolumny trapezu stanów klasy 3 (1 ¬ s ¬ i2− i1) do pierwszego stanu s-tego ciągu klasy 2

– z pozostałych stanów trapezu klasy 3 (czyli stanów s + 1, s + 2, . . . , i2 − i1 s-tej kolumny (2 ¬ s ¬ i2− i1) przechodzimy według następującej reguły: z s-tego stanu w r-tym ciągu do pierwszego stanu s-tego ciągu (r + s − 2 · i2+ 3 · i1)-tego trapezu stanów klasy 3

• z s-tego stanu r-tego ciągu LG-trójkąta stanów klasy 4 do pierwszego stanu s-tego ciągu s + r − 1-wszego trapezu stanów klasy 3

• ze wszystkich stanów klasy 5 do pierwszego stanu klasy 6

Na podstawie wszystkich poprzednich obserwacji z tego rozdziału można sformułować następujący wniosek.

Wniosek 5.13 Struktura automatu Boyera-Moore’a dla klasy wzorców ai1bai2 (2 · i1 ¬ i2) 1. Stany automatu Boyera-Moore’a mają strukturę opisaną w fakcie 5.4.

2. Funkcja przejścia automatu jest sumą czterech podgrafów przedstawionych w obserwa-cjach 5.6, 5.7, 5.9 i 5.12.

Poprawność pierwszego punktu powyższego wniosku wynika oczywiście z wprowadzone-go na początku rozdziału podziału na klasy stanów oraz dowodu twierdzenia pokazującewprowadzone-go rozmiar automatu Boyera-Moore’a dla rozważanej klasy wzorców z rozdziału czwartego.

Natomiast zapostulowana postać funkcji przejścia wynika z definicji przesunięcia wpro-wadzonego w definicji automatu Boyera-Moore’a w rozdziale pierwszym. W związku z tym, że we wzorcach należących do rozważanej klasy ai1bai2 występuje tylko jedna litera b, przy obliczaniu wielkości przesunięcia musimy dokładniej przyjrzeć się tylko pozycji, na której ta litera występuje (gdy przesunięcie nie następuje, przejście jest oczywiste). Opis przejść został dokładniej przedstawiony przy okazji dowodu twierdzenia w rozdziale czwartym, natomiast obserwacje, które składają się na powyższy wniosek wynikają z takich właśnie rozważań.

Dzięki sformułowaniu ich dla sytuacji ogólnej niezależnie od rozważanego przykładu, otrzy-mujemy jednoznaczny opis struktury automatu Boyera-Moore’a dla wzorców z rozważanej klasy.

Rozdział 6

Rozmiary automatów dla krótkich wzorców

W tym rozdziale zaprezentuję przekrój swoich wyników, które pokażą między innymi dla-czego wybór klasy C3 nie jest zwykłym strzałem. Ponadto postawię również nową hipotezę dotycząca rozmiaru automatów Boyera-Moore’a.

6.1. Dokładne rozmiary automatów dla krótkich wzorców

Kiedy rozpoczynałem eksperymenty z automatami Boyera-Moore’a pierwszym moim krokiem było wygenerowanie wszystkich wzorców nad alfabetem dwuliterowym o zadanej długości i wybranie tych, dla których automaty mają największy rozmiar. Poniższa tabela zawiera wyniki tego doświadczenia.

m |Qmax| wzorce

1 2 b

2 4 bb, ba

3 7 bbb, abb, bab

4 13 babb

5 21 babbb

6 31 babbbb

7 43 babbbbb, baababb

8 58 bababbbb

9 84 abbbabbaa

10 107 bbababbbaa 11 156 abbababbbaa 12 197 abbabbbbabaa 13 282 abbababbbabaa 14 362 babbbbbabbbaba 15 518 abbababbbabbbaa 16 635 abbbababbabbbbaa 17 968 abbbbbabbbabbbaba 18 1230 babbbbbabbbabbbaba 19 1949 bbababbbbbbbbbbbaba 20 2323 bbbababbbbbbbbbbbaba 21 3461 abbbabbbbbabbbbbabbba 22 4052 babbbabbbbbabbbbbabbba

Trzeba zauważyć jednak, że ponieważ role liter a i b są symetryczne, to wzorców dla których osiągany jest maksymalny rozmiar automatu jest dokładnie dwa razy więcej (w po-wyższych możemy zamienić rolami a i b).

Jednakże z powodów wydajnościowych nie jesteśmy w stanie obliczać automatów Boyera-Moore’a dla wszystkich 2msłów długości m dla większych m. Musimy zatem w pewien sposób ograniczyć klasę słów, którą będziemy rozważać.

Patrząc na powyższą tabelę możemy zauważyć, że w większości wzorców dla których odpowiadające im automaty Boyera-Moore’a są maksymalne, nie występują obok siebie dwie litery a (te wzorce dla których nie jest to prawdziwe zostały pogrubione). A zatem pierwszym pomysłem na ograniczenie klasy wszystkich słów długości m nad dwuliterowym alfabetem jest rozważanie tylko słów nie zawierających podsłowa aa.

6.2. Klasa wzorców niezawierających podsłowa aa

Zajmiemy się teraz słowami, które nie zawierają podsłowa aa. Możemy ją zapisać w sposób następujący:

B1 = a(b+a)b∪ (b+a)b

Zastanówmy się najpierw ile jest słów długości m tej postaci. Zauważmy, że jeżeli słowo rozpoczyna się od a, to musi być ono postaci abx, gdzie x ∈ B1 oraz |x| = m − 2. Jeśli zaś słowo rozpoczyna się od b to jest postaci bx, gdzie x ∈ B1 i |x| = m − 1. Wprowadzając następujące oznaczenie:

B1m= {x ∈ B1 : |x| = m}

z powyższych rozważań otrzymujemy rekurencję |B1m| = |B1m−2| + |B1m−1|. Dodając jeszcze warunki brzegowe |B11| = 2 i |B12| = 3 dostajemy już łatwo rozwiązanie: |B1m| = Fm+1, gdzie Fn oznacza n-tą liczbę Fibonacciego.

Oznacza to, że rozmiar klasy B1m jest mniejszy, ale w dalszym ciągu jest wykładniczy, a zatem będziemy musieli jeszcze ograniczyć tę klasę. Rozpocznijmy jednak od wyznaczenia słów należących do tej klasy, dla których automaty Boyera-Moore’a są największe. Wyniki eksperymentów przedstawia poniższa tabela.

16 627 bababbbbabbbbaba

Spróbujmy teraz jeszcze bardziej ograniczyć klasę B1. W tym celu wprowadźmy następu-jącą definicję.

Definicja 6.1 Niech w = w[1]w[2] . . . w[n] będzie słowem długości n nad alfabetem Σ i niech σ ∈ Σ. Maksymalnym podsłowem złożonym z samych liter σ ∈ Σ nazywamy każde takie podsłowo v = w[i]w[i + 1] . . . w[j] (1 ¬ i ¬ j ¬ n) słowa w, dla którego spełnione są trzy warunki:

1. ∀s∈{i,i+1,...,j} w[s] = σ 2. i = 1 lub w[i − 1] 6= σ 3. j = n lub w[j + 1] 6= σ

Przyglądając się teraz powyższym wynikom można zauważyć, że w znaczącej większo-ści powyższych wzorców, maksymalne podsłowa złożone samych liter b mają długowiększo-ści albo równe jeden albo będące liczbami pierwszymi (słowa nie posiadające tej własności zostały w powyższej tabeli pogrubione). Możemy zatem w ten sposób próbować ograniczyć klasę B1.

6.3. Ograniczenie klasy B1

Zanim formalnie zdefiniujemy rozważane ograniczenie klasy B1, wprowadźmy nastepującą definicję.

Definicja 6.2 Niech w będzie słowem należącym do klasy B1. Wówczas słowo w może po-siadać jedną z czterech poniższych postaci, które będziemy zapisywać w następujący sposób

1. w = be1abe2a . . . abek (k ­ 0, ∀1¬s¬k es­ 1) zapisujemy jako (e1, e2, . . . , ek) 2. w = abe1abe2a . . . abek (k ­ 0, ∀1¬s¬k es­ 1) zapisujemy jako (a, e1, e2, . . . , ek) 3. w = be1abe2a . . . abeka (k ­ 1, ∀1¬s¬k es­ 1) zapisujemy jako (e1, e2, . . . , ek, a) 4. w = abe1abe2a . . . abeka (k ­ 1, ∀1¬s¬k es­ 1) zapisujemy jako (a, e1, e2, . . . , ek, a) Powyższy sposób zapisu wzorców z klasy B1 będę nazywał B-notacją.

Spróbujmy zatem teraz ograniczyć klasę B1 w celu przeprowadzenia eksperymentów dla wzorców o trochę większej długości. Rozważmy zatem następującą definicję.

Definicja 6.3 Niech w ∈ B1. Wówczas w B-notacji możemy zapisać słowo w w jednej z czterech postaci:

• (e1, e2, . . . , ek)

• (a, e1, e2, . . . , ek)

• (e1, e2, . . . , ek, a)

• (a, e1, e2, . . . , ek, a)

Definiujemy teraz klasę B2 jako podklasę B1 następująco: słowo w należy do klasy B2 wtedy i tylko wtedy gdy ∀1¬s¬k es jest albo równe jeden albo jest liczbą pierwszą.

Niestety takie ograniczenie klasy jest dla nas niewystarczające. Dlatego w eksperymen-cie, którego wyniki przedstawiam poniżej rozważam tylko wzorce należące do klasy B2, dla których (używając B-notacji) k ¬ 6. Taką podklasę będziemy oznaczać jako B26. A zatem rozważamy tylko wzorce zawierające co najwyżej sześć maksymalnych podsłów złożonych z samych liter b.

Poniższa tabela przedstawia wyniki eksperymentów przeprowadzonych dla podklasy B26. Wzorce dla których osiągane jest podane maksimum zostały zapisane przy użyciu B-notacji.

m |Qmax| wzorce

Warto zauważyć tylko, że podane wyżej wzorce, dla których automaty Boyera-Moore’a są maksymalne w klasie B26, są jedynymi wzorcami dla których osiągane jest maksimum.

W tym momencie doszliśmy też do miejsca, w którym można podjąć próbę uzasadnienia, że wybór klasy C3 w rozdziale czwartym nie był strzałem. Patrząc bowiem na powyższe

wyniki można zauważyć, że wszystkie te wzorce są „prawie-palindromiczne”. Konkretniej, jeżeli pominiemy ewentualne litery a z początku i końca wzorca dostając wzorzec postaci (e1, e2, . . . , ek) to albo (e1, e2, . . . , ek) albo (e2, e3, . . . ek) jest palindromem. Dokładnie taka sama sytuacja ma też miejsce w klasie C3.

Bazując teraz na powyższej obserwacji spróbujemy jeszcze zawęzić klasę B2 otrzymując większe automaty dla rozważanych wyżej długości słów oraz kilka wyników dla trochę dłuż-szych wzorców.

6.4. Klasa wzorców „prawie-palindromicznych”

Opierając się na powyższych obserwacjach zdefiniujmy teraz zaanonsowaną powyżej klasę wzorców „prawie-palindromicznych” B3.

Definicja 6.4 Niech w będzie słowem należącym do klasy B2 (a zatem w nie zawiera pod-słowa aa oraz maksymalne podpod-słowa złożone z liter b mają długości równe jeden bądź będące liczbami pierwszymi). Wówczas stosując B-notację możemy zapisać w w jednej z czterech poniższych postaci:

• (e1, e2, . . . , ek) (k ­ 0)

• (a, e1, e2, . . . , ek) (k ­ 0)

• (e1, e2, . . . , ek, a) (k ­ 1)

• (a, e1, e2, . . . , ek, a) (k ­ 1)

Wówczas w należy do klasy B3 wtedy i tylko wtedy, gdy spełniony jest jeden z trzech warunków:

1. w = a lub w = 

2. (e1, e2, . . . , ek) jest palindromem 3. (e2, e3, . . . , ek) jest palindromem

Niestety podobnie jak w przypadku klasy B2, wzorców należących do tej klasy o większych długościach jest zbyt dużo do rozważenia. Dlatego tak jak poprzednio, będziemy rozważać tylko wzorce, dla których wartość k z powyższej definicji jest ograniczona przez stałą. Jeżeli k ¬ r to taką podklasę będziemy oznaczać jako B3r.

Poniższa tabela przedstawia wyniki eksperymentów dla wzorców należących do klasy B38 (czyli ilość maksymalnych podsłów złożonych z samych b jest co najwyżej równa 8).

m |Qmax| wzorce

41 716 349 (2, 7, 3, 13, 3, 7, a)

W powyższej tabeli pogrubione zostały wartości, które są większe od dotychczas wyge-nerowanych (czyli większe od wartości wygewyge-nerowanych w eksperymencie dla klasy B26).

Ponieważ nowych wartości jest prawie połowa można powiedzieć, że zawężenie klasy B2 do klasy B3 spełnia swoją rolę. Jest to oczywiście spowodowane tym, że w powyższym ekspery-mencie dopuszczamy większą ilość maksymalnych podsłów złożonych z samych liter b (osiem zamiast sześciu), niemniej jednak widać, że klasa ta zawiera słowa dla których automaty Boyera-Moore’a są „duże”, a to właśnie było naszym celem. Co więcej, w tym przypadku możemy je również konstruować.

Dla klasy B38 jesteśmy w stanie wygenerować automaty również dla kilku dłuższych wzorców. Wyniki tego eksperymentu przedstawia poniższa tabela.

m |Qmax| wzorce

51 9 407 874 (2, 1, 3, 17, 17, 3, 1, a) 52 10 283 853 (3, 1, 3, 17, 17, 3, 1, a) 53 11 001 201 (a, 3, 5, 11, 7, 11, 5, 3, a) 54 18 090 617 (5, 1, 3, 17, 17, 3, 1, a)

Kontynuacja tego eksperymentu dla dłuższych wzorców nie jest uzasadniona wynikami poprzednich eksperymentów. Wydaje się bowiem, że moglibyśmy uzyskać wzorce dla któ-rych automaty Boyera-Moore’a posiadają więcej stanów, jeżeli dopuścilibyśmy większą ilość maksymalnych podsłów złożonych z samych liter b (czyli rozważyli klasę B3k dla k > 8).

Oczywiście nie jest też pewne, że nie uzyskalibyśmy większych automatów dla powyższych długości na przykład w klasie B310.

Ponadto dla większych k i dłuższych wzorców przeprowadzenie jakichkolwiek eksperymen-tów jest bardzo trudne. Jednakże problemem nie jest tu jedynie wydajność czasowa (mimo iż do rozważenia mamy wówczas kilkadziesiąt czy nawet kilkaset tysięcy wzorców, a dla wielu z nich automaty Boyera-Moore’a posiadają kilka milionów stanów). Nowym problemem, któ-ry się tu pojawia jest niedostateczna ilość pamięci operacyjnej w dzisiejszych komputerach, gdyż wygenerowanie całego automatu posiadającego kilkadziesiąt milionów stanów i utrzy-manie go w pamięci (co jest niezbędne do obliczenia ilości jego stanów) wymaga nawet kilku gigabajtów pamięci operacyjnej.

Co więcej, już do skonstruowania największych automatów w powyższym eksperymencie nie mogłem wykorzystać opisanego w rozdziale drugim algorytmu, gdyż był on zbyt nie-efektywny pamięciowo. Musiałem posłużyć się metodą naiwną jak również uciec się do kilku sztuczek programistycznych w celu maksymalnego ograniczenia zużycia pamięci.

Niemniej jednak powyższe eksperymenty dają nam pewne wyniki, które możemy teraz przeanalizować. Na początek przyjrzyjmy się wykresowi logarytmicznemu rozmiaru maksy-malnego automatu Boyera-Moore’a w podklasie B38 jako funkcji długości wzorca. Zależność ta przedstawiona została poniżej.

Mimo iż punkty na powyższym wykresie wydają się układać wzdłuż linii prostej, to nie jest to już w tym przypadku tak oczywiste jak w poprzednim rozdziale dla automatów o rozmiarze Ω(m5).

Z dość dużym prawdopodobieństwem możemy odrzucić tutaj hipotezę, że automaty te mają rozmiar wykładniczy, gdyż obliczenie pierwiastów n-tego stopnia z ich rozmiarów daje ciąg monotonicznie malejący.

Jeżeli będziemy próbować przybliżać wyniki eksperymentów wielomianem, to asympto-tykę tego wykresu najlepiej oddaje wielomian dziesiątego stopnia. Wielomian ten jest w przybliżeniu równy:

W (m) ' 0.0057674 · m10+ O(m9)

Poniżej przedstawiam wykres tego wielomianu wraz z naniesionymi na niego wynikami eksperymentów.

Widać zatem, że wykres ten całkiem dobrze oddaje wyniki eksperymentów. Pozwolę sobie zatem postawić następującą hipotezę:

Hipoteza 6.5 Istnieje klasa wzorców nad alfabetem Σ = {a, b}, dla których rozmiar auto-matu Boyera-Moore’a asymptotycznie zachowuje się jak wielomian co najmniej dziesiątego stopnia.

Warto zauważyć, iż hipoteza ta jest mocniejsza od wszystkich występujących do tej pory w literaturze (jeżeli próbujemy aproksymować rozmiary automatów wielomianami). Dotychczas taką rolę pełniło przypuszczenie postawione w pracy [3] sugerujące, że istnieją wzorce dla których rozmiar automatów zachowuje się jak wielomian stopnia 7.

6.5. Klasa C4

Powróćmy teraz na moment do klasy C3 wprowadzonej w rozdziale czwartym. Wydaje się bowiem, że istotnie łatwiejsza może być analiza pojedynczego cyklu w automacie Boyera-Moore’a niż analiza całego automatu. Dlatego też, bazując na rozumowaniu przeprowadzo-nym dla klasy C3, wprowadzę bardzo podobną klasę wzorców i przedstawię wyniki swoich eksperymentów.

Rozważmy klasę:

C4 = bbabiabi+2abi−2abi+2abia dla i ­ 5 oraz ścieżkę zdefiniowaną w sposób następujący:

(r0= #m−6 b ## b b # ri = δ(ri−1, b) dla i ­ 1 gdzie m jest oczywiście długością wzorca.

Podobnie jak poprzednio eksperymenty pokazują, że ścieżka ta jest w rzeczywistości cy-klem. Niech więc LC(C4) oznacza długość tego cyklu. Poniższa tabela pokazuje wartości LC(C4) dla najkrótszych słów należących do tej klasy.

wzorzec i m LC(C4)

Zauważmy najpierw, że dla i = 22 wygenerowaliśmy cykl, który posiada ponad czterdzie-ści jeden miliardów stanów. Przy obecnych możliwoczterdzie-ściach technicznych nie jest absolutnie możliwe wygenerowanie całego automatu o takiej ilości stanów (z powodu braku pamięci operacyjnej). A zatem podejście polegające na obserwowaniu określonego cyklu w automacie ujawnia tutaj swoją kolejną przewagę.

Przyrzyjmy się teraz długościom cykli dla parzystych wartości i (zostały one pogrubione w powyższej tabeli). Poniżej prezentuję wykres logarytmiczny wyników eksperymentów dla parzystych wartości i

Jednakże w tym przypadku trend tej zależności nie jest łatwy do określenia. Ponadto nie jest w ogóle jasne czy ten wykres asymptotycznie będzie zachowywał się liniowo. Co prawda wydaje się, że hipoteza taka jest fałszywa, ale mamy tutaj zbyt mało wyników doświadczeń aby stwierdzić to jednoznacznie. Niestety następny cykl miałby prawdopodobnie długość kilkuset miliardów (a może nawet ponad bilion) stanów, wygenerowanie go zajęłoby więc zbyt wiele czasu. Już obliczenie długości najdłuższego z powyższych cykli zajęło mi ponad pięćdziesiąt godzin.

Próba aproksymacji wyników doświadczeń wielomianem w tym przypadku nie ma zbyt wielkiego sensu. Analiza danych sugerowałaby wielomian stopnia 13 lub 14, punktów pomia-rowych jest jednak zbyt mało, aby uwierzyć z przekonaniem w słuszność tej hipotezy.

Oczywiście możemy mieć tutaj do czynienia z funkcją podwykładniczą, nie sposób jednak przeanalizować tutaj wszystkich możliwości. Dlatego ograniczę się tylko do próby aproksy-macji powyższych wyników funkcją wykładniczą. Najlepszym dopasowaniem w sensie mini-malizacji błędu średniokwadratowego jest w tym przypadku funkcja:

w(m) ' 1.2258m

Niemniej jednak klasa C4 wydaje się być bardzo interesującą klasą wartą głębszego po-chylenia się nad nią.

Na koniec podrozdziału przedstawiam jeszcze wykres (również logarytmiczny), na którym znajduje się powyższa funkcja jako wynik aproksymacji wykładniczej oraz zaznaczone wyniki przeprowadzonego eksperymentu.

6.6. Długość reprezentacji wzorca a rozmiar automatu

W tym podrozdziale uogólnimy B-notację wprowadzoną wcześniej, tak żeby można ją było wykorzystać dla dowolnego słowa nad dwuliterowym alfabetem.

Definicja 6.6 Niech w będzie słowem nad alfabetem Σ = {a, b}. Oczywiście w jest postaci:

w = ai1bi2ai3. . . bik, gdzie k ­ 0, i1, ik ­ 0 oraz i2, i3, . . . , ik−1 > 0. Wówczas reprezentacją słowa w nazywamy:

• (i1, i2, . . . , ik) jeśli i1, ik> 0

• (i1, i2, . . . , ik−1) jeśli i1 > 0, ik= 0

• (i2, i3, . . . , ik) jeśli i1 = 0, ik> 0

• (i2, i3, . . . , ik−1) jeśli i1 = 0 oraz ik = 0

Ponadto jeżeli reprezentacją słowa w jest (i1, i2, . . . , ik) to k nazywamy długością reprezen-tacji.

Trzeba zauważyć jednak, że słowa w1 = ai1bi2ai3. . . bik oraz w2 = bi1ai2bi3. . . aik dla i1, i2, . . . ik−1 > 0, ik ­ 0 mają dokładnie tę samą reprezentację. Jednakże z naszego punktu widzenia słowa te są nierozróżnialne, gdyż automaty Boyera-Moore’a dla słów w1 oraz w2 są izomorficzne. Dlatego też zastosowanie takiej reprezentacji jest w tym przypadku w pełni uzasadnione.

Powyższą reprezentację możemy również zastosować do zapisu stanów automatu Boyera-Moore’a dla dowolnego (niekoniecznie dwuliterowego) Σ. Pokażemy teraz jak to zrobić.

Niech q = q[1]q[2] . . . q[n] będzie stanem automatu dla słowa w = w[1]w[2] . . . w[n]. Tak naprawdę q jest słowem nad alfabetem Σ ∪ {#}, jednakże zgodnie z definicją mamy następu-jący warunek:

(q[i] 6= #) (q[i] = w[i])

Dlatego przy założeniu, że znamy słowo w możemy stany reprezentować jako słowa nad dwuliterowym alfabetem {#, ∗}, gdzie symbol ∗ na i-tej pozycji oznacza, że q[i] = w[i].

Stosując takie podejście możemy skorzystać z wprowadzonej wyżej reprezentacji słów również dla stanów automatu Boyera-Moore’a.

W tym momencie naturalnym wydaje się być pytanie, czy znając długość reprezentacji słowa w możemy w jakiś sposób ograniczyć długość reprezentacji dowolnego stanu automatu Boyera-Moore’a dla tego słowa. Okazuje się jednak, że nie jesteśmy w stanie podać żadnego nietrywialnego ograniczenia, co pokazuje poniższy kontrprzykład.

Kontrprzykład 1

Rozważmy słowo w = b2·maa o reprezentacji (2 · m, 2). Wczytajmy teraz następujący ciąg symboli: m liter b oraz jedną literę a. W kolejnych krokach znajdziemy się odpowiednio w stanach (obok zapisu stanu podaję również jego reprezentację):

• #2·m+2, reprezentacja: ()

A zatem dla wzorca, którego długość reprezentacji jest równa 2 (czyli jest stała) możemy wskazać stany automatu, których długość reprezentacji jest liniowa względem długości wzorca (możemy nawet wskazać stan, którego długość reprezentacji jest dokładnie równa długości wzorca, co jest maksymalną możliwą wartością). ♦

Jednakże powyższy przykład był przykładem dość ogólnym. Można się zastanawiać, czy we wprowadzonych w poprzednich podrozdziałach klasach przypadkiem taka zależność nie występuje. Niestety tutaj odpowiedź też jest negatywna. Dla uproszczenia pokażę kontrprzy-kład z klasy B1, ale jest on dość łatwy do uogólnienia.

Kontrprzykład 2

Rozważmy słowo w = b4·m+1aba. Wczytajmy teraz ciąg 2 · m + 1 liter b. W kolejnych krokach znajdziemy się odpowiednio w stanach:

A zatem w tym przypadku dla wzorca o stałej długości reprezentacji (równej cztery) dostaje-my również stan o długości reprezentacji liniowej względem długości wzorca (stała jest równa

2·m+3

4m+4 > 12). ♦

Utworzenie ze słowa w wzorca należącego na przykład do klasy B3 sprowadza się do

Utworzenie ze słowa w wzorca należącego na przykład do klasy B3 sprowadza się do

Powiązane dokumenty