1 Algebra X-języków
1.1 X-języki i działania na nich, języki regularne
Niech X będzie ustalonym, niepustym i skończonym zbiorem.
Definicja 1.1 X-językiem nazywamy dowolny zbiór L słów nad alfabetem X:
L ⊆ X?
Niech L1, L2, L będą dowolnymi X-językami.Kładziemy:
L1· L2 = {u ∈ X? ; ∃v∈L1w∈L2 u = vw}
L1∪ L2 = L1+ L2 = {u ∈ X? ; u ∈ L1∨ u ∈ L2} L1∩ L2 = {u ∈ X? ; u ∈ L1∧ u ∈ L2} Rozważmy ciąg
L0 = {} Ln+1 = Ln· L
Język L? =Sn∈N Ln zwany jest domknięciem Kleene języka L.
Zadanie Wykaż, że język L? jest najmniejszym podzbiorem X?, który za- wiera L, słowo puste i jest domknięty na konkatenację.
Aby uniknąć pisania nawiasów stosujemy priorytety w kolejności działań:
?, ·, + oraz oznaczenie L+=Sn>0Ln
Definicja 1.2 Zbiorem wyrażeń regularnych R(X) nad alfabetem X nazy- wamy najmniejszy język Z nad alfabetem X ∪ {(, ), ·, ?, +, , ∅} taki, że:
1. X ∪ {, ∅} ⊆ Z;
2. jeśli r, s ∈ Z, to (r)?, (r + s), (r · s) ∈ Z.
Równoważnie język wyrażeń regularnych definiowany jest rekurencyjnie.
Póżniej udowodnimy, że jest on bezkontekstowy, gdyż w notacji Backusa- Naura możemy podaną definicję zapisać następująco:
R : x||∅|R · R|R?|R + R gdzie x ∈ X jest dowolną literą alfabetu.
Definicja 1.3 System L(X) =< P(X?), ∅, {}, ?, ·, + > nazywamy algebrą X-języków.
Zadanie Niech A, B, Bi, i ∈ I, C będą X-językami. Udowodnij, że 1. jeśli ∈ A, to B ⊆ A · B;
2. A · A? ⊆ A?;
3. A ⊆ B ⇒ ∀CA · C ⊆ B · C;
4. A ⊆ B ⇒ ∀CC · A ⊆ C · B;
5. A ·Si∈IBi =Si∈IA · Bi
Są to dosyć oczywiste własności działań na w algebrze X-języków. Można dla każdej z tych własności zdefiniować jej odpowiednik (tak jak 4. jest odpowied- nikiem 3.) dla mnożenia z prawej/z lewej. Ciekawsze są problemy typu: scha- rakteryzuj wszystkie X-języki, które są rozwiązaniami równania A · A? = A?. Ten akurat jest banalny (?) My zajmiemy się poważniejszym
Lemat 1.4 (Ardena) Niech X będzie dowolnym alfabetem, A,B X-językami takimi, że 6∈ A. Wtedy równanie
Y = A · Y + B
ma dokładnie jedno rozwiązanie Y = A?· B w algebrze L(X).
Dowód Korzystając z zadania łatwo pokazać, że A · A?B + B ⊆ A?· B. Jeśli x ∈ A?B, x = uv, u ∈ A?, v ∈ B i u = , to x ∈ B gdy u 6= łatwo pokazać, że x ∈ A(A?B) + B.
Udowodniliśmy, że język A?B jest rozwiązaniem równania. Trzeba jeszcze pokazać, że jest jedynym!
Niech Y będzie rozwiązaniem równania. Wtedy B ⊆ A · Y + B = Y i A · B ⊆ A · Y ⊆ A · Y + B = Y . Przez prostą indukcję można wykazać, że An· B ⊆ Y , co wobec zadania 4. kończy dowód inkluzji A? · B ⊆ Y . Inkluzję przeciwną dowodzimy stosując indukcję ze względu na długość słowa w ∈ Y . Jeśli w = , ponieważ 6∈ A a Y = A · Y + B otrzymujemy, że w ∈ B ⊆ A?· B. W kroku indukcyjnym słowo w ∈ Y = A · Y + B długości n + 1 może
• należeć do B ⊆ A?· B;
• być postaci v1v2 dla v1 ∈ A, v2 ∈ Y .
W drugim wypadku v1 6= i do v2 można zastosować założenie indukcyjne;
v2 ∈ A?· B. Wtedy w = v1v2 ∈ A · A?· B ⊆ A?· B.
Wyrażenia regularne opisują pewne X-języki.
Definicja 1.5 Język L(r) wyznaczony przez wyrażenie regularne r definiuje- my rekurencyjnie:
1. L(∅) = ∅;
2. L() = {};
3. L(x) = {x}, dla x ∈ X;
4. L(r · s) = L(r) · L(s);
5. L(r + s) = L(r) + L(s);
6. L(r?) = L(r)?
Definicja 1.6 Język L ⊆ X? nazywamy regularnym, jeśli jest postaci L(r) dla pewnego wyrażenia regularnego r.
Zadania Wykaż, że:
1. Każdy język skończony jest regularny.
2. Niech L będzie dowolnym językiem nad alfabetem jednoelementowym.
Wtedy język L? jest regularny.
Rozwiązania Oczywiście L(x1. . . xn) = {x1. . . xn}, więc wyrażenie w1 + . . . + wk odpowiada językowi {w1, . . . , wk}.
Aby udowodnić drugie twierdzenie należy przypomnieć, że monoid słów nad dowolnym alfabetem jednoelementowym jest izomorficzny z monoidem liczb naturalnych z dodawaniem, co razem z poprzednim zadaniem oznacza, że należy udowodnić, iż każdy zbiór liczb naturalnych domknięty na dodawanie jest generowany przez skończony zbiór liczb.
Twierdzenie 1.7 Zbiór L(R(X)) ⊆ P(X?) jest najmniejszym podzbiorem A ⊆ P(X?) takim, że:
1. {}, ∅ ∈ A;
2. {w} ∈ A, dla każdego w ∈ X?;
3. Jeśli L, M ∈ A, to L + M, L · M, L? ∈ A.
Inaczej zbiór L(R(X)) jest nośnikiem najmniejszej podalgebry algebry języ- ków zawierającej wszystkie języki jednoelementowe.
Zadanie Wykaż, że następujące języki nad alfabetem {0, 1} są regularne:
1. kończące się słowem 00: (0 + 1)?00:
2. wszystkich słów, w których po 1 nie występuje zero: 0?1?;
3. wszystkich słów, w których po 1 zawsze występuje zero: (0 + (10))?; 4. wszystkich słów zawierających 101: (0 + 1)?(101)(0 + 1)?;
5. wszystkich słów nie zawierających 101;
6. {03n12k; n, k 0}: (000)?(11)?.
Zadanie 5. zrobimy póżniej, gdy udowodnimy :
Twierdzenie 1.8 Język L nad skończonym alfabetem X jest regularny wtw, gdy język X?\L jest regularny.
Choć możemy próbować ? Wyrażenia regularne są nam dobrze znane z Unixa, pamiętamy, że używa się więcej operatorów do ich konstruowania. Łatwo wykazać, że są one definiowane poprzez podane w definicji operatory np.
język opisany przez wyrażenie a{2, } jest też opisany przez (aa)a?. Tak więc wiele operatorów wprowadzono dla wygody użytkowników.
Pojawia się inny problem teoretyczny (praktyczny?): wykonanie polecenia grep klu /etc/passwd oznacza użycie narzędzia akceptująceg te wiersze pliku w których pojawiają się słowa języka L(kluX?) i odrzucającego pozostałe.
Możemy takie narzędzie nazwać akceptorem lub ogólniej automatem.
1.2 X-automaty i automaty Rabina-Scotta
Definicja 1.9 X-automatem nazywamy system
A =< X, Σ, Q, F, δ, q0, #l, #r >
gdzie X, Σ, Q są skończonymi i parami rozłącznymi zbiorami symboli, wej- ściowych, pomocniczych i stanów;
F ⊆ Q jest wyróżnionym zbiorem stanów końcowych;
q0 ∈ Q jest wyróżninym stanem początkowym;
#l, #r 6∈ X ∪ Σ ∪ Q są znacznikami lewego i prawego końca słowa, a δ jest skończonym zbiorem par (apb, xqy), gdzie p, q ∈ Q, a, b ∈ X ∪ Σ ∪ {#l, #r, }, x, y ∈ (X ∪ Σ ∪ {#l, #r, })?, zwanych instrukcjami.
Niech Σ0 = Σ ∪ {#l, #r, }.
Definicja 1.10 Konfiguracją X-automatu A nazywamy każde słowo w nad alfabetem X ∪ Q ∪ Σ0 postaci #lxsy#r lub s#lx#r, gdzie s ∈ Q, x, y ∈ (X ∪ Σ)?.
Oczywiście instrukcje automatu służą do przetwarzania konfiguracji.
Definicja 1.11 Niech p,q będą konfiguracjami automatu A.
1. A przeprowadza bezpośrednio p na q (p ⇒ q), jeśli istnieje instrukcja (u, v) automatu A i słowa z1, z2 ∈ (X ∪ Σ0)? takie, że p = z1uz2, q = z1vz2.
2. A przeprowadza pośrednio p na q, jeśli para (p, q) należy do zwrotno- przechodniego domknięcia relacji ⇒: p ⇒? q.
3. Wtedy zbiór
L(A) = {x ∈ X? ; ∃s∈F∃y∈(X∪Σ)?q0#lx#r ⇒? #lys#r} nazywamy językiem akceptowanym przez automat A.
4. Jeśli każda instrukcja automatu A jest postaci (qa, r) dla q, r ∈ Q, a ∈ X∪{, #l, #r}, to A nazywamy automatem Rabina-Scotta (z -przejściami).
1.3 X-języki wyznaczone przez X-automaty Rabina- Scotta
RS-Automaty są bardzo prostymi urządzeniami. Głowica tylko czyta wejście i przesuwa się w prawo (po co #l?), a w konfiguracji końcowej całe wejście jest wyczyszczone (po co #r?). Mamy więc równoważną definicję:
RS-Automatem nazywamy piątkę < X, Q, F, δ, q0, >, gdzie X,Q,.. są od- powiednimi zbiorami, a δ ⊆ Q × (X ∪ {}) × Q.
Jeśli δ ⊆ Q × X × Q, to będziemy mówić, że A nie ma -przejść. Wtedy zależność qw ⇒? s zapisywać będziemy inaczej δ(q, w, s).
Lemat 1.12 Niech A =< X, Q, F, δ, q0, > będzie X-automatem Rabina-Scotta bez -przejść. Wtedy
L(A) = {x ∈ X? ; ∃s∈Fδ(q0, x, s)}
Symbolem AS(X) oznaczymy zbiór wszystkich X-języków akceptowanych przez RS-automaty.
Przykłady Automaty akceptujące te słowa nad alfabetem {0, 1}, które zawierają słowo 101:
n n n n - q0 q1 q2 qi3
0,1 0,1
1 0 1
- - -
n n n n
- q0 q1 i
1
q2 q3
0 0,1
1 0 1
0
- - -
6
Zauważmy, że drugi automat w odróżnieniu od pierwszego jest determini- styczny: w dowolnej konfiguracji może wykonać co najwyżej jedną instrukcję.
Definicja 1.13 (Klasyfikacja RS-automatów) Niech A =< X, Q, F, δ, q0, >
będzie RS-automatem. Mówimy, że
1. A ma -przejścia wtw, gdy ∃q,r∈Qδ(q, , r);
2. A bez -przejść jest detrministyczny wtw, gdy ∀q,r,s∈Q∀a∈Xδ(q, a, r) ∧ δ(q, a, s) ⇒ r = s;
3. A detreministyczny jest zupelny wtw, gdy ∀q∈Q∀a∈X∃r∈Qδ(q, a, r).
W przykładnie skonstruowaliśmy dwa automaty: deterministyczny i niedeter- ministyczny dla tego samego języka. Nie jest to niczym wyjątkowym! Różne typy automatów nie wyznaczają właściwych podzbiorów AS(X).
Twierdzenie 1.14 Niech A =< X, Q, F, δ, q0, > będzie RS-automatem bez
-przejść. Istnieje deterministyczny RS-automat A0 =< X, Q0, F0, δ0, q00, > ta- ki, że L(A) = L(A0).
Dowód podobny jest do analogicznego twierdzenia dla maszyn Turinga!
Należy sobie uświadomoć, że wszystkie konfiguracje A w czasie przetwa- rzania słowa w ∈ X? w k-tym kroku są opisane tylko przez zbiór możliwych do osiągnięcia stanów! Stąd Q0 = P(Q), q00 = {q0}, F0 = {S ⊆ Q; S ∩ F 6= ∅}
i δ0(S, a) = {q ∈ Q; ∃s∈Sδ(s, a, q)}. Wobec definicji F0 należy wykazać, że
∀w∈X?δ0(q00, w) = S ⇔ ∀s∈Q(δ(q0, w, s) ⇔ s ∈ S)
Stwierdzenie to udowodnimy stosując indukcję ze względu na długość słowa w.
(Podstawa indukcji) Jeśli |w| = 0, to w = i δ0(q00, w) = {q0}.
(Krok indukcyjny) Załóżmy, że stwierdzenie jest prawdziwe dla słów długości n. Niech w = vx ∈ X?, x ∈ X, v ∈ X? będzie dowolnym słowem długości n+1. Wtedy |v| = n i δ0(q00, w) = δ0(q00, vx) = δ0(δ0(q00, v), x). Niech S = δ0(q00, v), mamy
q ∈ δ0(q00, w) ⇔ q ∈ δ0(S, x) ⇔ ∃s∈Sδ(s, x, q) ⇔ ∃s∈Qδ(q0, v, s)∧δ(s, x, q) ⇔ δ(q0, w, q)
Zauważmy, że automat detrministyczny w poprzednim przykladzie jest zbu- dowany dużo oszczędniej (ma dużo mniej stanów niż 24). Niestety to się rzadko zdarza - konstrukcja automatu detrministycznego jest zadaniem o wykłaniczej złożoności obliczeniowej. Trzeba wskazać ciąg automatów Anta- ki, że ilośc stanów każdego deterministycznego automatu dla L(An) będzie w wykładniczej zależności od ilości stanów An. Zrobimy to później.
Obecnie zajmiemy się eliminacją -przejść.
Twierdzenie 1.15 Niech A =< X, Q, F, δ, q0, > będzie RS-automatem z - przejściami. Istnieje RS-automat A0 =< X, Q0, F0, δ0, q00, > bez -przejść taki, że L(A) = L(A0).
Dowód Dla dowolnego stanu p ∈ Q i zbioru P ⊆ Q definiujemy:
− DOM K(p) = {q ∈ Q; p ⇒?Aq}
− DOM K(P ) = [
p∈P
− DOM K(p)
Niech δ(P, a) = {q ∈ Q; ∃p∈Pδ(p, a, q)}. Rozważmy pomocniczą relację γ ⊆ Q × X?× Q:
∀q∈Qγ(q, ) = − DOM K(q) i ∀q∈Q,a∈X∀w∈X?γ(q, wa) = − DOM K(P ) gdzie P = {p ∈ Q; ∃r∈γ(q,w)δ(r, a, p)}. Wtedy A0 =< X, Q, F0, δ0 > definiuje- my następująco:
δ0(q, a) = γ(q, a) gdzie a ∈ X F0 =
( F ∪ {q0} − DOM K(q0) ∩ F 6= ∅ F − DOM K(q0) ∩ F = ∅ Należy pokazać, że
∀w∈X+δ0(qo, w) = γ(q0, w)
przez indukcję ze względu na długość słowa w.
Z powyższych twierdzeń mamy winiosek.
Wniosek 1.16 Dla niedeterministycznego RS-automatu A z -przejściami istnieje deterministyczny RS-automat B taki, że L(A) = L(B).
Definicja 1.17 RS-automaty A, B nad alfabetem X nazywamy równoważ- nymi, gdy L(A) = L(B).
Jako ćwiczenie pozostawiamy dowód twierdzenia
Wniosek 1.18 Dla dowolnego RS-automatu A istnieje deterministyczny i zupełny RS-automat B równoważny z A.
Ważnym wnioskiem z twierdzenia 1.14 jest
Twierdzenie 1.19 Dla dowolnego RS-automatu A istnieje automat C taki, że L(C) = X?\L(A).
Dowód Należy rozważyć automat deterministyczny i zupełny B =<
X, Q, F, δ, q0 > równoważny z A i położyć C =< X, Q, Q\F, δ, q0 >.
Znamy już jedno kryterium odrzucania języków nie należących do zbioru skończenie akceptowalnych. Innego kryterium dostarcza
Lemat 1.20 (O pompowaniu) Niech L będzie językiem skończenie akcep- towalnym. Wtedy
∃n∈N∀z∈X?(z ∈ L∧|z| n) ⇒ ∃u,v,w∈X?(z = uvw∧|uv| ¬ n∧|v| 1∧∀i∈Nuviw ∈ L).
Dowód polega na zauważeniu, że w ciągu n-wyrazowym elementów zbio- ru mocy m < n pewne wyrazy muszą się powtórzyć! Jeśli więc automat A akceptujący L ma m stanów i słowo z ∈ L(A) jest przynajmniej długości n=m, a (q0, q1, . . . , qn) jest ciągiem stanów w jakie wchodzi A w czasie ak- ceptowania z, to słowa u, v, w są wyznaczone przez najmniejszy numer stanu, który się powtarza.
Zadanie Udowodnij Uogólniony lemat o pompowaniu:
Niech L będzie językiem skończenie akceptowalnym. Wtedy
∃n∈N∀a,z,b∈X?(azb ∈ L∧|z| n) ⇒ ∃u,v,w∈X?(z = uvw∧|uv| ¬ n∧|v| 1∧∀i∈Nauviwb ∈ L).
Przykład 1 Pokażemy, że język {0p; p liczba pierwsza } nie jest skończe- nie akceptowalny. Niech n ∈ N będzie dowolne; należy wskazać słowo z ∈ L długości nie mniejszej niż n, którego żaden rozkład nie daje podsłowa do ”na- pompowania”. Niech p n będzie dowolną liczbą pierwszą niemniejszą niż n.
Niech 0p = 0u0v0w, v > 1, u + v ¬ n. Gdyby był to poszukiwany rozkład, to u+w musi być liczbą pierwsza, a wtedy liczba u+(u+w)v+w = (u+w)(v+1) jest złożona, więc słowo 0u(0v)u+w0w nie należy do L.
Przykład 2 Podobnie łatwo pokaząc, że język {akbk; k ∈ N } nie jest skończenie akceptowalny. Dla każdego n ∈ N rozpatrujemy słowo anbn, a każde napompowanie niepustego podsłowa słowa an daje słowo nienależące do języka.
Przykład 3 Lemat o pompowaniu nie daje narzedzia do rozstrzygania o skończonej akceptowalności. Rozpatrzmy język L = {aibjck; i = 0 ∨ j = k}.
Jeśli przyjmiemy, że n = 1, to dowolne napompowanie pierwszej litery da- je słowo z języka; język ten nie jest skończenie akceptowalny, bo przekrój L ∩ {abicj; i, j ∈ n} = {abkck; k ∈ N } nie jest językiem skończenie akcepto- walnym, a wkrótce udowodnimy, że przekrój języków L1∩L2, L1, L2 ∈ AS(X) należy do AS(X)
No to do dzieła!
2 Twierdzenie Kleene’go
Najpierw technika:
Lemat 2.1 Dla dowolnego RS-automatu A istnieje równoważny z nim auto- mat A0 taki, że
1. zbiór stanów końcowych F0 jest jednelementowy;
2. zbiór instrukcji stosowalnych w konfiguracjach f w, dla {f } = F0 jest pusty.
Dowód to proste ćwiczenie.
Lemat 2.2 Następujące języki są skończenie akceptowalne.
1. L = ∅;
2. L = {};
3. L = {w} dla każdego w ∈ X+.
Lemat 2.3 Załóżmy, że języki L1, L2 są skończenie akceptowalne. Wtedy ję- zyk L1∪ L2 jest skończenie akceptowalny.
Dowód Niech A1 =< X, Q1, F1, δ1, q10 >, A2 =< X, Q2, F2, δ2, q02 > będą automatami akceptującymi odpowiednio L1 i L2. Możemy założyć, że ma- ją rozłączne zbiory stanów i spełniają warunki lematu 2.1. Wtedy automat A =< X, Q1 ∪ Q2 ∪ {q0, f }, {f }, δ, q0 >, gdzie q0, f 6∈ Q1 ∪ Q2 są nowymi stanami, a relacja δ opisana jest wzorem
δ(q, a) =
{q10, q02} q = q0∧ a =
δi(q, a) q ∈ Qi∧ i = 1, 2 ∧ a ∈ X ∪ {}
{f } a = ∧ q ∈ F1∪ F2 jest automatem akceptującym L1∪ L2.
Lemat 2.4 Załóżmy, że języki L1, L2 są skończenie akceptowalne. Wtedy ję- zyk L1· L2 jest skończenie akceptowalny.
Dowód Niech A1 =< X, Q1, F1, δ1, q01 >, A2 =< X, Q2, F2, δ2, q02 > będą automatami akceptującymi odpowiednio L1 i L2. Możemy założyć, że ma- ją rozłączne zbiory stanów i spełniają warunki lematu 2.1. Wtedy automat A =< X, Q1 ∪ Q2, {f2}, δ, q01 >, gdzie F2 = {f2}, a relacja δ opisana jest wzorem
δ(q, a) =
δ1(q, a) q ∈ Q1\{f1} ∧ a ∈ X ∪ {}
δ2(q, a) q ∈ Q2∧ a ∈ X ∪ {}
{q02} q = f1∧ a = jest automatem akceptującym L1· L2.
Lemat 2.5 Załóżmy, że język L jest skończenie akceptowalny. Wtedy język L? jest skończenie akceptowalny.
Dowód Niech A =< X, Q, {f }, δ, q0 > będzie automatem akceptującym L. Możemy założyć, że spełnia on warunki lematu 2.1. Wtedy automat A =<
X, Q ∪ {q10, f1}, {f1}, δ0, q10 >, gdzie q01, f1 są nowymi stanami a relacja δ opisana jest wzorem
δ0(q, a) =
δ(q, a) q ∈ Q\{f } ∧ a ∈ X ∪ {}
{q0, f1} q = f ∧ a = {q0, f1} q = q10∧ a = jest automatem akceptującym L?.
Lemat 2.6 Załóżmy, że języki L1, L2 są skończenie akceptowalne. Wtedy ję- zyk L1\L2 jest skończenie akceptowalny.
Dowód Prawo de Morgana rachunku zbiorów to równość A ∩ B = (A0∪ B0)0, gdzie A0 oznacza dopełnienie. Stąd przekrój języków skończenie akceptowal- nych jest skończenie akceptowalny, a różnicę można wyrazić za pomocą do- pełnienia i przekroju.
Ponieważ zbiór języków regularnych L(R(X)) jest najmniejszym zbio- rem X-języków zawierającym język pusty, jednoelementowe i domkniętym na działania algebry języków otrzymujemy następujący wniosek.
Wniosek 2.7 Dla dowolnego skończonego alfabetu X, L(R(X)) ⊆ AS(X).
Zadanie Prześledź dowody lematów i skonstruuj RS-automat dla języka opisanego wyrażeniem (00)?(11 + 0)?. Jaki wpływ ma długość wyrażenia na ilość stanów automatu?
Twierdzenie 2.8 (Kleene) Dla dowolnego skończonego alfabetu X, L(R(X)) = AS(X).
Dowód Należy dla dowolnego (deterministycznego) RS-automatu A =<
X, Q, F, δ, q0 > bez -przejść skonstruować wyrażenie regularne r ∈ R(X) takie, że L(A) = L(r). Dla każdego q ∈ Q połóżmy L(A, q) = {w ∈ X?; ∃p∈Fqw ⇒?Ap}. Idea polega na związaniu z A układu równań w algebrze X-języków o zmiennych {Xq, q ∈ Q}, którego jedynym rozwiązaniem jest ciąg {L(A, q), q ∈ Q}. Wykorzystamy w tym celu lemat Ardena. Dla q ∈ Q
zdefiniujmy zbiór δ(q) = {(q, a1, q1), . . . , (q, am, qm)} wszyskich instrukcji A stosowanych w stanie q. Niech
Empty(q) =
( q ∈ F
∅ q 6∈ F Wtedy konstruujemy równanie
Xq= a1X1∪ . . . amXm∪ Empty(q).
Otrzymany układ równań można rozwiązać (jednoznacznie) stosując, jeśli trzeba, lemat Ardena. W kolejnym kroku algorytmu wybieramy jedną zmien- ną po lewej stronie jakiegoś równania. Jeśli nie występuje ona po jego prawej stronie eliminujemy ją z pozostałych równań, jeśli występuje stosujemy lemat Ardena po uprzednim przekształceniu równania do postaci Xq = AXq+ B, potem przystępujemy do eliminacji. Czynności te powtarza się dla każdego stanu automatu. Nie należy jednak sądzić iż otrzymany algorytm ma złożo- ność wielomianową, gdyż długość konstruowanego wyrażenia zależy wykład- niczo od ilości stanów A. Oczywiście L(A) = L(A, q0)!
Zadanie Wyznacz wyrażenie regularne dla języka tych słów nad alfabe- tem {0, 1}, które nie zawierają słowa 101.
3 Twierdzenie Nerode’a. Algorytmy decyzyj- ne dla języków regularnych
W rozdziale pierwszym wykazaliśmy, że jeśli język L jest skończenie akcep- towalny, to największa prawa kongruencja monoidu X? nasycająca L, czyli ρrL, ma skończenie wiele klas abstrakcji. Czas najwyższy wykazać, że jest też odwrotnie. Przypomnijmy definicję ρrL;
∀x,y∈X?xρrLy ⇔ ∀v∈X?(xv ∈ L ⇔ yv ∈ L)
Twierdzenie 3.1 (Nerode) Niech X będzie dowolnym skończonym alfabe- tem, a L dowolnymX-językiem. Następujące warunki są równoważne:
1. L ∈ AS(X);
2. istnieje prawa kongruencja Θ monoidu X?, która ma skończenie wiele klas abstrakcji i nasyca L;
3. prawa kongruencja ρrL ma skończenie wiele klas abstrakcji.
Dowód Przypomnijmy, że (1) pociąga (2), bo dla deterministycznego i zu- pełnego RS-automaty A relacja Θ = Kerδ(q0, ) jest prawą kongruencją o żądanych własnościach.
(2) pociąga (3), bo ρrL jest największą prawą kongruencją nasycającą L.
(3) pociąga (1), gdyż skonstruujemy RS-automat (zupełny i deterministycz- ny) akceptujący L. Połóżmy: Q = X?/ρrL, q0 = [], F = {[w] ; w ∈ L} i δ([w], x) = [wx]. Jeśli definicja funkcji δ jest poprawna, to łatwo pokazać, że L(A) = L: v ∈ L(A) ⇔ ∃w∈LvρrLw ⇔ v ∈ L. Dowód poprawności defini- cji δ polega na wykazaniu, że nie zależy ona od wyboru reprezentanta klasy abstrakcji [w]. Ale vρrLw pociąga vxρrLwx, czyli [w] = [v] pociąga [wx] = [vx].
Przypomnijmy, że w rozdziale 1. była też mowa o największej kongruencji monoidu słów nasycającej dany język. Kongruencji tej dotyczy twierdzenie Myhill’a. Przypomnijmy definicję ρL;
∀x,y∈X?xρLy ⇔ ∀u,v∈X?(uxv ∈ L ⇔ uyv ∈ L)
Twierdzenie 3.2 (Myhill) Niech X będzie dowolnym skończonym alfabe- tem, a L dowolnymX-językiem. Następujące warunki są równoważne:
1. L ∈ AS(X);
2. istnieje kongruencja Θ monoidu X?, która ma skończenie wiele klas abstrakcji i nasyca L;
3. kongruencja ρL ma skończenie wiele klas abstrakcji.
Dowód jest bardzo podobny do dowodu tw. Nerode’a: podpowiemy tylko, że za kongruencję w punkcie (2) należy wziąć relację:
\
q∈Q
Ker δ(q, )
Teraz wykorzystamy tw. Nerode’a i Myhill’a do wykazania, że zbiór języ- ków skończenie akceptowalnych domknięty jest na wiele innych operacji.
Twierdzenie 3.3 Niech L ∈ AS(X). Wtedy następujące języki są skończe- nie akceptowalne:
1. dla dowolnego X-języka L1 język
L2 = L/L1 = {x ∈ X? ; ∃y∈L1xy ∈ L};
2. P ocz(L) = {x ∈ X? ; ∃y∈X?xy ∈ L};
3. √
L = {x ∈ X? ; xx ∈ L}.
Dowód dla √
L: wykażemy, że ρL ⊆ ρr√L. Jeśli więc ρL ma skończenie wiele klas abtrakcji, to ρr√L również. Załóżmy, że xρLy. Wtedy dla dowolnego v ∈ X?, xvxvρLyvyv, co pociąga xv ∈ √
L ⇔ yv ∈ √
L, co wobec dowolności v kończy dowód.
Inną ważną konsekwencją twierdzenia Nerode’a jest
Twierdzenie 3.4 Niech A =< X, Q, F, δ, q0 > będzie zupełnym i determini- stycznym RS-automatem takim, że:
1. Każdy stan jest osiągalny:∀q∈Q∃w∈X?δ(q0, w) = q;
2. Każde dwa stany są odróżnialne:
∀p,q∈Q(p 6= q ⇒ ¬(∀w∈X?δ(p, w) ∈ F ⇔ δ(q, w) ∈ F ).
Wtedy Ker δ(q0, ) = ρrL i |Q| = |X?/ρrL|.
Dowód Oczywiście Θ = Ker δ(q0, ) ⊆ ρrL. Przypuśćmy, że istnieje para (x, y) ∈ ρrL\Θ. Niech p, q ∈ Q będą takie, że δ(q0, x) = p i δ(q0, y) = q. Oczy- wiście p 6= q, ale xρrLy, więc ∀w∈X?xw ∈ L ⇔ yw ∈ L i ∀w∈X?δ(q0, xw) ∈ F ⇔ δ(q0, yw) ∈ F . Ponieważ δ(q0, xw) = δ(p, w) i δ(q0, yw) = δ(q, w) otrzy- mujemy, że stany p, q są nieodróżnialne, co daje sprzeczność.
Dowód twierdzenia 3.4 daje algorytm wyznaczania zupełnego i determi- nistycznego automatu o minimalnej liczbie stanów równoważnego z danym deterministycznym RS-automatem A, w którym wszystkie stany są osiągal- ne. W istocie wyznacza się pary stanów nierównoważnych bo mamy dwie proste obserwacje:
1. Każda para stanów z których jeden jest końcowy a drugi nie, nie jest równoważna (rozważ słowo puste);
2. para (p, q) nie jest równoważna wtw, gdy nie jest równoważna para (δ(p, a), δ(q, a)) dla pewnej litery a alfabetu X.
Algorytm Huffmana (1954) i Moore’a (1956) polega na umieszczaniu pary (p, q) na liście dla par (δ(p, a), δ(q, a)) w oczekiwaniu na ustalenie, czy któraś z nich nie jest równoważna. Ponieważ każdą parę umieszcza się na co najwy- żej k = |X| listach orzymujemy algorytm o złożoności rzędu O(kn2), gdzie n = |Q|.
begin
1. for p ∈ F i q ∈ Q\F do oznacz (p, q);
2. for każda para (p, q) różnych stanów z F × F lub Q\F × Q\F do
3. if dla pewnego symbolu wejściowego a oznaczona jest para (δ(p, a), δ(q, a)) then begin
4. oznacz (p, q);
5. oznacz rekurencyjnie wszystkie nieoznaczone pary na liście dla (p, q) i listach innych par, które właśnie oznaczyłeś; end else
6. for wszystkie symbole wejściowe a do
7. umieść (p, q) na liście dla (δ(p, a), δ(q, a)), o ile δ(p, a) 6= δ(q, a) end.
Przykład Automatu niedetrministycznego A takiego, że każdy automat de- terministyczny równoważny z A ma O(2|Q|) stanów.
Rozważmy język opisany wyrażeniem regularnym (0 + 1)?1(0 + 1)k, gdzie k 0. Każdy potrafi skonstruować niedeterministyczny RS-automat o k+2 stanach dla tego języka. Pokażemy, że minimalny automat dla tego języka ma 2k+1stanów. Wystarczy udowodnić, że każde słowo w ∈ X?przystaje modulo ρrL do swego najdłuższego sufiksu zaczynającego się 1 i długości niewiększej niż k+1 lub do słowa pustego, a takie słowa nie są kongruentne modulo ρrL.
Inny algorytm zaproponował w 1971 roku Hopcroft. Zasadnicza różnica polega na tym, że wyznacza się w nim pary stanów równoważnych. Można to zrobić przez prostą iterację w O(n) krokach.
1. W pierwszym kroku definiuje się relację R0 = F × F ∪ (Q \ F ) × (Q \ F ).
2. W k+1-szym kroku definiujemy Rk+1 = {(p, q) ∈ Rk ; ∀a∈Xδ(p, a)Rkδ(q, a)};
3. Kończymy iterację, gdy Rk = Rk+1.
Przy implementacji jest problem z wyznaczaniem następnego zbioru Ri+1. Wykorzystując reprezentację relacji równoważności w postaci podziału moż- na uzyskać algorytm o złożoności O(n log n)
4 Zagadnienia rozstrzygalne dla języków re- gularnych
Na początek dla tych, co nie zauważyli, że języki regularne (skończenie ak- ceptowalne) są rekurencyjne
Lemat 4.1 Niech A =< X, Q, F, δ, q0 > będzie dowolnym RS-automatem.
Wtedy problem ”w ∈ L(A)” jest rozstrzygalny.
Dowód Dla Y ⊆ Q, a ∈ X definiujemy Kroka(Y ) = {q ∈ Q ; ∃p∈Y δ(p, a, q)}.
Wtedy algorytm
Wejście w = a1. . . an , A;
X := {q0};
Dla i = 1, . . . , n wykonuj X := Krokai(X);
Wynik: wartość logiczna relacji X ∩ F 6= ∅;
rozwiązuje problem w ∈ L(A).
Zadanie Zmodyfikuj powyższy algorytm tak aby rozwiązywał problem ”pre- fiks w należy do L(A).
Twierdzenie 4.2 Zbiór słów akceptowanych przez RS-automat A o n sta- nach jest
1. niepusty wtw, gdy A akceptuje słowo długości mniejszej od n;
2. nieskończony wtw, gdy A akceptuje słowo długości l dla pewnego n ¬ l < 2n.
Dowód (1) wystarczy wykazać, że jeśli L(A) jest niepustym zbiorem, to do L(A) należy słowo długości mniejszej od n. Wykorzystamy do tego lemat o pompowaniu, jeśli w ∈ L(A) jest słowem długości nie mniejszej od n, to usuwając jego pewne podsłowo niepuste otrzymamy słowo krótsze i akcepto- wane przez A. Zatem najkrótsze słowo z L(A) jest długości mniejszej od n.
(2)Jeśli w ∈ L(A) jest długości większej od n, to stosuje się do niego lemat o pompowaniu, więc język L(A) jest wtedy nieskończony. Odwrotnie, jeśli L(A) jest nieskończony, to zawiera słowo w długości nie mniejszej niż n. Przypuść- my, że w jest najkrótszym słowem o tej własności z L(A) i |w| 2n. Stosując do niego lemat o pompowaniu usuwamy podsłowo długości mniejszej niż n.
Otrzymane słowo jest przynajmniej długości n, co daje sprzeczność z założe- niem o długości w. W ostatnim twierdzeniu zebrane są pokrewne problemy, które również są rozstrzygalne.
Twierdzenie 4.3 Następujące problemy są rozstrzygalne:
1. Dla RS-automatów A, B, czy L(A) = L(B);
2. Dla wyrażenia regularnego r i słowa w, czy w ∈ L(r);
Wiele narzędzi lingwistycznych dopuszcza rozszerzenie operatorów na wy- rażeniach regularnych o przekrój i dopełnianie. Znany nam algorytm dla pro- blemu 2. (oparty na deterministycznych automatach) w powyższym twierdze- niu jest wykładniczy. Okazuje się, że znane są algorytmy, których czas wy- konania zależy wielomianowo od długości słowa w i wyrażenia regularnego r (Aho, Hopcroft, Ullman str. 414).
4.1 Problem dopasowania wzorca
Sformułowanie: Dla słowa w = a1. . . an i wyrażenia regularnego r spraw- dzić, czy (i wyznaczyć) w ma podsłowo ai. . . aj, i < j należące do języka L(r).
Rozwiązanie: Zbudować RS-automat A dla s = X?r i wykorzystać zmody- fikowany algorytm 4.1.
Oto algorytm:
Wejście w = a1. . . an , A;
X := {q0};
i := 0;
Dopóki i < n lub X ∩ F = ∅ wykonuj X := Krokai(X);
Wynik: wartość logiczna relacji X ∩ F 6= ∅;
Ponieważ automat A na wejściu jest niedetrministyczny podany algorytm ma złożoność O(n|Q|). Jeśli r jest po prostu jednym słowem y (klasyczna wer- sja problemu) długości l otrzymany algorytm nie ma lepszej złożoności niż algorytm naiwny, o ile A ma O(l) stanów. Rozwiązaniem tego problemu jest zbudowanie automatu (minimalnego) deterministycznego i zupełnego!
Opis automatu Niech y = b1. . . bli niech My =< X, 0, 1, . . . , l, {l}, δ, 0 >
będzie automatem rozpoznającym tylko słowo y, czyli δ = {(i, bi+1, i + 1) ; i = 0, . . . , l −1}. Na jego podstawie zbudujemy automat A o tym samym zbiorze stanów dla wyrażenia X?yX?. Aby spełnić ten warunek instrukcje A określamy tak, aby
po przeczytaniu a1. . . am automat jest w stanie j < l wtw, gdy am−j+1. . . am = b1. . . bj i j jest maksymalną liczbą o tej własności.
Stąd dla dowolnego z ∈ X? i y definiujemy:
σ(z) = max {k ; y1. . . yk jest sufiksem z}
oraz A =< X, {0, . . . , l}, {l}, δ, 0 > gdzie
δ(q, a) = σ(y1. . . yq, a) dla q < l oraz δ(l, a) = l
Teraz najważniejszym czynnikiem wpływającym na złożoność algorytmu jest czas potrzebny na JEDNORAZOWE obliczenie funkcji δ. Już naiwny algo- rytm działa w czasie O(l3|X|), a można to zrobić w czasie O(l|X|). Tym niemniej najlepszy algorytm Knutha-Morrisa-Pratta działa w czasie Θ(l +n)!