Rozdział III - Gramatyki regularne
Transkrypt
Rozdział III - Gramatyki regularne
ROZDZIAŁ III Gramatyki regularne Przypomnijmy, Ŝe gramatykami regularnymi nazywamy wszystkie te gramatyki generatywne, których wszystkie reguły produkcji mają postać A → P lub A → PB, gdzie A, B ∈ V N , a P ∈ V T * . 1. Postać normalna gramatyk regularnych Twierdzenie 3.1 (twierdzenie o postaci normalnej). KaŜdy język regularny moŜe być generowany przez gramatykę o regułach produkcji następującego kształtu: (i) X → aY, (ii) X → λ, gdzie X,Y ∈ V N , zaś a ∈ V T . Idea twierdzenia. W dowodzie posłuŜymy się metodę sprowadzalności dowolnej gramatyki regularnej do gramatyki w postaci normalnej z powyŜszego twierdzenia. MoŜliwość jej wykorzystania zdeterminuje nam wyprowadzalność kaŜdego ze słów generowanego przez nią języka regularnego. Operację tę wykonuje się w następujący sposób: najpierw (wychodząc oczywiście na samym początku z symbolu początkowego S) stosujemy (tyle razy, jaka jest długość wyprowadzanego słowa) reguły rozszerzające kształtu (i), a następnie stosujemy do ostatniego symbolu (nieterminalnego) tzw. regułę zerowa kształtu (ii) (jest to reguła „zbijająca” ów symbol nieterminalny). Mamy więc: S → a1 A1 → a1 a2 A2 → ... → a1 a2 ... an - 1 An - 1 → a1 a2 ... an - 1 an An → a1 a2 ... an . ZauwaŜmy, Ŝe za kaŜdym razem stosowaliśmy tu reguły produkcji do jedynego, stojącego zawsze na samym końcu symbolu nieterminalnego, dzięki czemu sekwencyjnie „od lewej do prawej” generowaliśmy dane słowo, a na końcu „decydowaliśmy się” na zakończenie derywacji wygenerowanego juŜ słowa. Uwaga. MoŜna podać takŜe analogiczne twierdzenie, zastępując w nim jedynie reguły kształtu „(ii) X → λ” regułami kształtu „(ii') X → a”. KaŜda z derywacji wyglądałaby wówczas w następujący sposób: Gramatyki regularne 45 S → a 1 A 1 → a 1 a 2 A 2 → ... → a 1 a 2 ... a n - 1 A n - 1 → a 1 a 2 ... a n - 1 a n . Byłaby więc ona o jeden krok krótsza. RównieŜ tu za kaŜdym razem stosowaliśmy reguły produkcji do jedynego, stojącego zawsze na samym końcu symbolu nieterminalnego, dzięki czemu sekwencyjnie „od lewej do prawej” generowaliśmy dane słowo, derywację tą kończąc jednak juŜ nie regułą zerową, lecz tzw. regułą końcową. Pozwoliło to nam skrócić ją o jeden krok, gdyŜ w przypadku tym kaŜda reguła dobudowuje tu po jednej, kolejnej literze do generowanego słowa (nie ma juŜ reguł pustych). Tak sformułowane stwierdzenie jest oczywiście prawdziwe, jak to pokazuje poniŜsze (będące dowodem konstrukcyjnym) jego uzasadnienie: Po sprowadzeniu gramatyki regularnej do postaci normalnej z twierdzenia 3.1, usuwamy z niej kaŜdą z reguł kształtu X → λ, przy czym o ile tylko Z → bX (dla pewnego Z ∈ V N i b ∈ V T ) jest juŜ regułą tej gramatyki, to do gramatyki tej dodajemy jeszcze regułę końcową Z → b. Tak otrzymana gramatyka jest równowaŜna z gramatyką z twierdzenia 3.1. (uzasadnienia) Dowód (tw. 3.1). Niech G = <V N , V T , S, F> będzie gramatyką regularną. Zatem wszystkie jej reguły produkcji są postaci: a) A → P lub b) A → PB, gdzie A, B ∈ V N , a P ∈ V T * . Gdy |P| = 0 (tj. P = λ), to reguły te (tj. postaci A → λ i A → B) zostawiamy bez zmian (mimo, Ŝe tylko pierwsza z nich czyni zadość tezie twierdzenia). KaŜdą regułę produkcji gramatyki G postaci a), w której |P| = 1 zastępujemy dwiema regułami postaci A → PW, W → λ, gdzie A i P są określone j.w., a W jest nowym symbolem nieterminalnym (tj. W ∉ V N ). Obie te reguły są w postaci z dowodzonego twierdzenia. KaŜdą regułę produkcji gramatyki G postaci b), w której |P| = 1 zostawiamy bez zmian (spełnia zadość wymaganemu kształtowi reguł z twierdzenia). W pozostałych regułach produkcji gramatyki G, |P| > 1. KaŜdą z nich: (i) gdy jest kształtu A → a 1 ... a n (gdzie A ∈ V N , zaś a 1 ,..., a n ∈ V T ) wówczas zastępujemy ją ciągiem reguł A → a 1 Y 1 , Y 1 → a 2 Y 2 ,..., Y n - 1 → a n Y n , Y n → λ, gdzie wszystkie Y i (1 ≤ i ≤ n) są nowymi nieterminałami (tj. Y i ∉ V N , a Y i ≠ Y j dla wszystkich i ≠ j), Gramatyki regularne 46 (ii) gdy jest kształtu A → a 1 ... a n B (gdzie A, B ∈ V N , zaś a 1 ,..., a n ∈ V T ), to wówczas zastępujemy ją ciągiem reguł A → a 1 Z1 , Z1 → a 2 Z2 ,..., Zn - 1 → a n B, gdzie wszystkie Zi (1 ≤ i ≤ n) są nowymi nieterminałami (tj. Zi ∉ V N , a Zi ≠ Zj dla wszystkich i ≠ j). W ten sposób otrzymujemy gramatykę G' = <V N ', V T , S, F'>, w której: − V N ' = V N ∪ {W} ∪ {Zi } i∈I ∪ {Y j } j∈J , gdzie I i J są dwoma zbiorami indeksów nowych nieterminałów odpowiednio postaci Zi i Y j , − F' opisaliśmy wyŜej. W G' występują jedynie reguły produkcji kształtu: 1) X → aY, 2) X → Y, 3) X → λ, gdzie X, Y ∈ V N ', zaś a ∈ V T . ZauwaŜmy, Ŝe gramatyki G i G' są sobie równowaŜne, a w G' w stosunku do poŜądanej gramatyki w postaci z twierdzenia nadmiarowe są jedynie reguły postaci X → Y, gdzie X,Y ∈ V N '. Korzystając z faktu, Ŝe kaŜda z derywacji w G' jest „łańcuchowa” w stosunku do derywacji w G, tworzymy (analogicznie jak w dowodzie twierdzenia 2.2 o postaci normalnej Chomsky’ego) następującą konstrukcyjną procedurę pozbywania się nadmiarowych reguł produkcji postaci 2). Najpierw dla kaŜdego X ∈ V N ' oznaczamy przez U(X) zbiór tych wszystkich nieterminałów, z których moŜna wyprowadzić X jedynie za pomocą reguł tejŜe postaci, powiększony o zbiór jednoelementowy {X}. * X witw, gdy Y ∈ U(X), gdzie X,Y ∈ V N '. Zatem Y → G Maj ą c tak okre ś lony zbiór U(X) (dla dowolnego X ∈ V N ') - z gramatyki G' mo Ŝ emy wyeliminowa ć wszystkie reguły z F' postaci X → Y (gdzie X,Y ∈ V N '), otrzymuj ą c tym samym gramatyk ę G'' = <V N ', V T , S, F''> o nast ę puj ą cych regułach produkcji F'': 1) Z → λ ∈ F'' ⇔ ∃ X∈VN' : (Z ∈ U (X) ∧ X → λ ∈ F') (tj. ∀ Z∈U(X) Z → λ ∈ F''); K→ L → Z →Y→ X → λ - reguły F' - reguły F'' 2) Podobnie, Z → aV ∈ F'' ⇔ ∃ X∈VN' : (Z ∈ U(X) ∧ X → aV ∈ F'). Rys. 3.1. Gramatyki regularne K→ L → Z →Y→ X → aV 47 - reguły F' - reguły F'' Rys. 3.2. Oczywi ś cie G' ≡ G'', a zatem (poniewa Ŝ równie Ŝ G ≡ G') mamy, Ŝ e G ≡ G'', tj. L(G) = L(G''). 2. Wykresy gramatyk regularnych W gramatykach regularnych wszystkie reguły produkcji maj ą posta ć A → P lub A → PB, gdzie A, B ∈ V N , a P ∈ V T . Na mocy twierdzenia o postaci normalnej (tw. 3.1), mo Ŝ emy je zast ą pi ć regułami produkcji jedynie kształtu X → aY i X → λ , gdzie X,Y ∈ V N , za ś a ∈ V T . W wykresach gramatyk regularnych wierzchołki b ę d ą oznacza ć symbole nieterminalne, a kraw ę dzie reprezentowa ć symbole terminalne. Tak wi ę c zapis a A Rys. 3.3. B oznacza, Ŝ e A → aB jest reguł ą produkcji rozwa Ŝ anej gramatyki. Reguł ę A → λ umieszczamy na wykresie podkre ś laj ą c ju Ŝ istniej ą ce na nim A: a A Rys. 3.4. B Symbol pocz ą tkowy oznacza ć b ę dziemy krop ą („ • ”) u góry: Rys. 3.5. S• Przykład 3.1. Niech G = <V N , V T , S, F>, gdzie V N = {S, A 1 , ..., A 5 }, V T = {a, b}, a F = {S → a, S → aA 1 , S → aA 2 , A 1 → bA 2 , A 1 → bA 3 , A 2 → bA 2 , A 2 → bA 3 , A 2 → aA 4 , A 3 → aA 4 , A 3 → λ , A 4 → aS, A 5 → aA 2 }. Z kształtu reguł produkcji F widzimy, Ŝ e jest to gramatyka regularna. Dla celów wykresu „zła” jest tutaj jedynie reguła S → a. Dla A 6 ∉ V N mamy, Ŝ e jest ona równowa Ŝ na parze reguł S → aA 6 i A 6 → λ . Tak powstały zbiór F' = (F \ {S → a}) ∪ {S → aA 6 , A 6 → λ } jest ju Ŝ odpowiedni dla celów sporz ą dzenia nast ę puj ą cego wykresu powyŜ szej gramatyki: A6 a S• a A1 b a A5 a b b a a A2 b a A3 A4 Rys. 3.6. Gramatyki regularne 48 Ci ą g wierzchołków A 1 , ..., A k nazywamy d r o g ą w wykresie gramatyki regularnej G witw, gdy istniej ą a 1 , ..., a k A 2 → a 2 A 3 , ..., A k - 1 → ak - 1 - 1 ∈ V T takie, Ŝ e reguły A 1 → a 1 A 2 , A k ∈ F. Droga A 1 , ..., A k wyznaczona jest przez warto ś ci a 1 , a 2 ,..., a k - 1 . Nie jest to jednak jednoznaczne. Przykład 3.1 - c.d. Wyra Ŝ enie „aba” mo Ŝ emy wyznaczyć m.in. na jednej z nast ę puj ą cych trzech dróg: S, A2, A3, A4; S, A 1 , A 3 , A 4 ; S, A 1 , A 2 , A 4 . Drog ę A 1 , ..., A k , w której A 1 = S, a A k jest symbolem podkre ś lonym (tj. zast ę puj ą cym reguł ę A k → λ ) nazywamy d r o g ą k o ń c o w ą . Lemat. Dla dowolnej gramatyki regularnej G, P ∈ L(G) witw, gdy istnieje co najmniej jedna droga ko ń cowa wyznaczona przez P. Poj ę cia symboli pasywnych, aktywnych, osi ą galnych i nieosi ą galnych w danej gramatyce zostały okre ś lone dla gramatyk bezkontekstowych w paragrafie 4. poprzedniego rozdziału. Poniewa Ŝ jednak ka Ŝ da gramatyka regularna jest te Ŝ bezkontekstowa, zatem mo Ŝ emy przyj ąć , Ŝ e tym samym s ą one okre ś lone równie Ŝ dla gramatyk regularnych. Przykład 3.1 - c.d. A jest tu symbolem nieosi ą galnym i jednocze ś nie brak jest symboli pasywnych. Poniewa Ŝ do nieosi ą galnego symbolu nieterminalnego nie prowadzi Ŝ adna droga od symbolu pocz ą tkowego S, zatem z wykresu mo Ŝ emy usun ąć reprezentuj ą cy go wierzchołek. Podobnie, mo Ŝ emy usun ąć z wykresu gramatyki regularnej wszystkie symbole pasywne, jako nie umo Ŝ liwiaj ą ce wyprowadzenie Ŝ adnego słowa w powyŜ szej gramatyce (nie prowadzi z nich bowiem Ŝ adna droga do jakiegokolwiek z symboli ko ń cowych). Mo Ŝ emy rozstrzygn ąć (na mocy twierdze ń z 4. paragrafu poprzedniego rozdziału, b ą d ź te Ŝ bezpo ś rednio z wykresu gramatyki regularnej), które symbole nieterminalne s ą pasywne i które symbole s ą nieosi ą galne. Przez konsekwentne usuwanie z danej gramatyki regularnej wszystkich symboli nieosi ą galnych i pasywnych otrzymujemy prostsz ą (równowa Ŝ n ą jej) gramatyk ę regularn ą , której wykres jest spójny, a ka Ŝ dy jego wierzchołek jest albo ko ń cowy albo le Ŝ y na przynajmniej jednej drodze ko ń cowej ( Ŝ aden z nich nie jest wi ę c zb ę dny). Gramatyki regularne 49 Podobnie, jak to miało miejsce w przypadku gramatyk bezkontekstowych - o gramatyce takiej (tj. takiej, w której Ŝ aden symbol nieterminalny nie jest ani pasywny ani nieosi ą galny) b ę dziemy mówi ć , Ŝ e jest ona w p o s t a c i z r e d u k o w a n e j. Oprócz operacji wyzbywania si ę symboli nieterminalnych i pasywnych, na gramatykach regularnych (a wi ę c i na ich wykresach) wprowadza si ę jeszcze jedn ą operacj ę , a mianowicie operacj ę zast ą pienia tej gramatyki równowa Ŝ n ą jej gramatyk ą , w której jednak symbol pocz ą tkowy wyst ę puje jedynie po lewej stronie reguł produkcji. Polega ona na: 1) wyznaczeniu wszystkich produkcji kształtu A → aS, gdzie S jest symbolem pocz ą tkowym, A ∈ V N , za ś a ∈ V T , 2) zast ą pieniu symbolu S w tych produkcjach przez nowy symbol nieterminalny K ∉ V N (a wi ę c tym samym doł ą czeniu K do V N ), 3) doł ą czeniu do zbioru reguł produkcji F produkcji K → aA w tych i tylko w tych przypadkach, w których w F wyst ę puje ju Ŝ produkcja S → aA. Rozpatrzmy to na poni Ŝ szym przykładzie. Przykład 3.2. A4 a a S• a A4 a a a A1 b b b A2 S• b a A1 b b A3 b A5 b b A3 b A2 a b Rys. 3.7. Rys. 3.8. Dla gramatyki z rys. 3.7, otrzymujemy gramatyk ę z rys. 3.8 w nast ę puj ą cy sposób: 1) jedyn ą reguł ą produkcji kształtu A → aS (gdzie S jest symbolem pocz ą tkowym, A ∈ V N , za ś a ∈ V T ), jest tu reguła A 2 → aS; 2) reguł ę t ę zast ę pujemy now ą reguł ą produkcji A 2 → aA 5 , gdzie A 5 jest nowym symbolem nieterminalnym; 3) ze wzgl ę du na wyst ę powanie produkcji S → aA 1 , S → bA 3 i S → aA 4 , dopisujemy produkcje A 5 → aA 1 , A 5 → bA 3 i A 5 → aA 4 . Zadanie 3.1: Wykonaj ponownie zadanie 1.9 tak jednak, by gramatyka ta była regularna. Narysuj jej wykres. Gramatyki regularne 50 Zadanie 3.2: Nad alfabetem polskim skonstruuj gramatyk ę regularn ą generuj ą c ą j ę zyk, w którym cz ą stka „nie” wyst ę puje: a) w ka Ŝ dym wyrazie (na pocz ą tku, w ś rodku, czy na ko ń cu), b) w ka Ŝ dym wyrazie na pocz ą tku (j. np. w wyrazie „nieco”), c) w ka Ŝ dym wyrazie na ko ń cu (j. np. w wyrazie „dranie”), d) w ka Ŝ dym wyrazie w ś rodku (j. np. w wyrazie „koniec”), e) je Ŝ eli ju Ŝ , to na pewno nie na pocz ą tku. 3. WyraŜenia regularne Na pocz ą tku odnotujmy nast ę puj ą cy fakt : Ka Ŝ dy j ę zyk sko ń czony jest regularny. Dowód. Niech L = {P 1 , P 2 , ..., P n }, gdzie ∀ 1≤i≤n P i ∈ V T * . Tak okre ś lony j ę zyk L jest sko ń czony (bo składa si ę ze sko ń czonej liczby słów, bo card(L) = n < ∞ ). Okre ś lmy gramatyk ę G = <V N , V T , S, F>, gdzie V N = {S}, a F = {S → P 1 , S → P 2 ,..., S → P n }. Ze wzgl ę du na kształt reguł produkcji, gramatyka G jest regularna. Wniosek. Ka Ŝ dy j ę zyk sko ń czony jest równie Ŝ bezkontekstowy, kontekstowy i struktur frazowych, jako Ŝ e ka Ŝ dy j ę zyk regularny jest równie Ŝ j ę zykiem bezkontekstowym, kontekstowym i struktur frazowych. Obecnie mo Ŝ emy przej ść ju Ŝ do wła ś ciwego zagadnienia tego paragrafu. Niech V b ę dzie sko ń czonym alfabetem. Wówczas przez REG(V) oznaczamy z b i ó r w s z y s t k i c h w y r a Ŝ e ń r e g u l a r n y c h n a d a l f a b e t e m V, okre- ś lony w nast ę puj ą cy sposób: (i) V ⊆ REG(V) (tj. ∀ a∈V a ∈ REG(V)), λ ∈ REG(V), ∅ ∈ REG(V) (tj., tzw. wyra Ŝ enie stałe ∅ jest wyra Ŝ eniem regularnym); (ii) ∀ α,β∈REG(V) ( α) * , ( αβ ), ( α∪β ) ∈ REG(V), gdzie przez ( α) * rozumiemy i-t ą krotno ść wyra Ŝ enia α (i=0,1,2,...). Przykład 3.3. Gdy V = {0, 1}, to wyra Ŝ eniami regularnymi nad tym alfabetem V b ę d ą m.in.: ((01) ∪ (001)), ((01) ∪ (001)) * , ((110) * (0) ∪ (11) ∪∅ ). Gramatyki regularne 51 Widzimy wi ę c, Ŝ e wyra Ŝ enia regularne s ą pewnymi, syntaktycznie poprawnymi, napisami, zbudowanymi z symboli: ∅ , λ , *, ∪ , ( i ) oraz z liter alfabetu V. Znaj ą c moce wi ą za ń (najmocniej wi ąŜ e „*”, słabiej konkatenacja, a najsłabiej suma) - w zapisie wyra Ŝ enia regularnego mo Ŝ emy opuszcza ć zbyteczne nawiasy. Dzi ę ki temu, wyra Ŝ enia z powyŜ szego przykładu, mo Ŝ emy pro ś ciej zapisa ć nast ę puj ą co: 01 ∪ 001, (01 ∪ 001) * , (110) * 0 ∪ 11 ∪∅ . Je Ŝ eli a ∈ REG(V), to przez L(a) oznacza ć b ę dziemy j ę z y k d e n o t o w a n y (oznaczany) p r z e z to w y r a Ŝ e n i e r e g u l a r n e, okre ś lony (indukcyjnie po długo ś ci a) w nast ę puj ą cy sposób: 1) gdy α = ∅ , to L( α) = L( ∅ ) = ∅ (tj. wyra Ŝ enie stałe ∅ generuje j ę zyk pusty), 2) gdy α = λ , to L( α) = L( λ ) = { λ }, 3) gdy |α| = 1 (tj. α = a ∈ V), to L( α) = { α} = {a}, 4) gdy α ∈ REG(V), to L( α∗ ) = (L( α)) * (tj. jest domkni ę ciem Kleene’go j ę zyka L( α)), 5) gdy nadto β ∈ REG(V), to L( αβ ) = L( α)L( β ), a L( α∪β ) = L( α) ∪ L( β ). Przykład 3.4. Zobaczmy, jakie j ę zyki s ą denotowane przez przykładowe wyra Ŝ enia regularne. Wyra Ŝ enie regularne: J ę zyk przez nie denotowany: (a) * = a * {a} * = { λ , a, aa, aaa, …} ((a) ∪ (b)) * = (a ∪ b) * {a, b} * = { λ , a, b, aa, ab, ba, bb, aaa, …} ((a) * (b)) = a * b {a} * {b} = {b, ab, aab, …} b ∪ ab * {b} ∪ {a} {b} * = {b, a, ab, abb, …} Tab. 3.1. Zauwa Ŝ my, Ŝ e w ostatnim przypadku, słowo „babbb” nie jest elementem tego j ę zyka. Znak „ ∪ ” oznacza bowiem sum ę j ę zyków, a nie konkatenacj ę słów. Zauwa Ŝ my, Ŝ e {a,b}{a} * = {a}{a} * ∪ {b}{a} * (={a,aa,aaa,...,b,ba,baaa,...}), a wi ę c tym samym, Ŝ e (a ∪ b)a * = aa * ∪ ba * (= a + ∪ ba * ). Prawo o tym schemacie jest prawdziwe dla wszystkich wyra Ŝ e ń . W ogóle, dla dowolnych wyra Ŝ e ń regularnych P, Q, R, zachodzi: Gramatyki regularne 52 1) P ∪ (Q ∪ R) = (P ∪ Q) ∪ R, 6) λ P = P λ = P, 2) P(QR) = (PQ)R, 7) P * = λ ∪ PP * , 3) P ∪ Q = Q ∪ P, 8) P * = ( λ ∪ P) * , 4) P(Q ∪ R) = PQ ∪ PR, 9) ∅ P = P ∅ = ∅ , 5) (P ∪ Q)R = PR ∪ QR, 10) gdy P = R ∪ PQ, a Q ≠ λ , to P = RQ. Wspomnijmy jeszcze, Ŝ e reguły 1) - 10) wraz z reguł ą podstawiania i przechodnio ś ci ą daj ą nam zupełny system aksjomatów. Oznacza to, Ŝ e w przypadku dowolnej formuły j ę zyka wyra Ŝ e ń regularnych (tj. dowolnej równo ś ci wyra Ŝ e ń regularnych), o ile nie jest ona zdaniem (tj. posiada zmienne wolne) - wówczas mo Ŝ emy zamieni ć j ą na zdanie poprzez tzw. domkni ę cie, tj. poprzedzenie jej kwantyfikatorami ogólnymi wi ąŜą cymi wszystkie jej zmienne wolne. Wówczas z powyŜ szych aksjomatów mo Ŝ na wywie ść b ą d ź powyŜ sze zdanie, b ą d ź jego negacje. Zale Ŝ no ść mi ę dzy j ę zykami regularnymi, a j ę zykami denotowanymi przez wyra Ŝ enia regularne okre ś la nast ę puj ą ce twierdzenie: Twierdzenie 3.2. Ka Ŝ de wyra Ŝ enie regularne denotuje pewien j ę zyk regularny, a ka Ŝ dy j ę zyk regularny jest denotowany przez pewne wyra Ŝ enie regularne. Idea twierdzenia: Twierdzenie to mówi, Ŝ e klasa j ę zyków denotowanych przez wyra Ŝ enia regularne pokrywa si ę z klas ą j ę zyków regularnych tj., Ŝ e istnieje wzajemna odpowiednio ść mi ę dzy wyra Ŝ eniami regularnymi, a gramatykami regularnymi. Dowód. 1) Poka Ŝ emy najpierw, Ŝ e ka Ŝ de wyra Ŝ enie regularne denotuje pewien j ę zyk regularny, tj. Ŝ e ∀ α∈REG(V) L( α) ∈ L 3 . Otrzymujemy to z definicji j ę zyka denotowanego przez wyra Ŝ enie regularne. Proste wyraŜenia regularne ∅, λ, a1, ..., ak opisują oczywiście języki ∅, {λ}, {a1}, ..., {ak}, które, chocia Ŝ by ze wzgl ę du na sw ą sko ń czono ść (patrz: fakt na pocz ą tku tego paragrafu), s ą regularne. Ich regularno ść mo Ŝ na tak Ŝ e wykaza ć podaj ą c reguły produkcji ich gramatyk: - dla j ę zyka pustego ∅ : S → S, - dla j ę zyka { λ }: S → λ , - dla j ę zyka {a i } (1 ≤ i ≤ k): S → a i . Z twierdzenia 1.1 otrzymujemy, Ŝ e j ę zyki regularne s ą zamkni ę te na operacje regularne (sum ę , iloczyn i domkni ę cie Kleene’go), podobnie, jak to ma miejsce w przy- Gramatyki regularne 53 padku wyra Ŝ e ń regularnych. Zatem równie Ŝ ka Ŝ demu zło Ŝ onemu wyra Ŝ eniu regularnemu, odpowiada pewien j ę zyk regularny, rozbudowywany w identyczny sposób, jak to wyra Ŝ enie regularne. (1) 2) Pozostaje nam jeszcze pokaza ć , Ŝ e ka Ŝ dy j ę zyk regularny jest denotowany przez pewne wyra Ŝ enie regularne, tj. Ŝ e dla ka Ŝ dego j ę zyka regularnego istnieje wyra Ŝ enie regularne, które go denotuje. Niech L = L(G) b ę dzie j ę zykiem regularnym wyznaczonym przez gramatyk ę regularn ą G = <V N , V T , S, F>. Z twierdzenia 3.1, gramatyk ę t ę mo Ŝ emy sprowadzi ć do postaci normalnej o regułach produkcji jedynie kształtu X → aY i X → λ , gdzie X,Y ∈ V N , za ś a ∈ V T . Dalej sprowadzamy j ą do postaci zredukowanej (tj. bez symboli pasywnych i nieosi ą galnych). Nadto, jak ju Ŝ to wyŜ ej zauwa Ŝ yli ś my (w przedostatnim akapicie na str. 48), zachodzi nast ę puj ą cy fakt : Wykres gramatyki regularnej w postaci zredukowanej jest spójny, a ka Ŝ dy jego wierzchołek jest albo ko ń cowy, albo le Ŝ y na przynajmniej jednej drodze ko ń cowej. (faktu) Nasz dowód przeprowadzimy indukcyjnie, Ŝ e wzgl ę du na liczb ę łuków wykresu gramatyki G (tj. wzgl ę dem liczby reguł produkcji gramatyki G). a) Je Ŝ eli wykres gramatyki G ma n = 0 łuków, to (ze wzgl ę du na powyŜ szy fakt) składa si ę on albo z jednego wierzchołka zarazem pocz ą tkowego i ko ń cowego (wtedy j ę zyk L = { λ }) albo nie zawiera Ŝ adnych wierzchołków (wtedy j ę zyk L = ∅ ). Wprost z definicji wynika, Ŝ e ka Ŝ dy z tych j ę zyków jest denotowany przez pewne wyra Ŝ enie regularne (odpowiednio: ∅ i λ ). b) Załó Ŝ my obecnie, Ŝ e dla wykresu ka Ŝ dej gramatyki G w postaci normalnej zredukowanej, maj ą cego s < n łuków, j ę zyk L' = L(G') jest generowany przez pewne wyra- Ŝ enie regularne. Z wykresu gramatyki G usuwamy jeden łuk wychodz ą cy z wierzchołka pocz ą tkowego np. łuk odpowiadaj ą cy produkcji S → aA, a tak otrzyman ą gramatyk ę oznaczamy przez G 1 . Przez G 2 oznaczamy gramatyk ę o tym samym wykresie co G 1 , z t ą ró Ŝ nic ą , Ŝ e nie wierzchołek S, ale wierzchołek A jest pocz ą tkowy. Przez G 3 oznaczamy gramatyk ę o tym samym wykresie co G 1 , z t ą ró Ŝ nic ą , Ŝ e jedynym wierzchołkiem pocz ą tkowym i ko ń cowym jest wierzchołek S. Przez G 4 oznaczamy gramatyk ę o tym samym wykresie co G 1 , z t ą ró Ŝ nic ą , Ŝ e wierzchołek A jest pocz ą tkowy, za ś S jest jedynym wierzchołkiem ko ń cowym. Gramatyki regularne 54 Wykresy tych gramatyk pokazane s ą schematycznie na poni Ŝ szym rysunku: G1 : S• G3 : S• a G2: A a S a a A G4: S A• A• Rys. 3.9. Ka Ŝ da z tych gramatyk ma n - 1 łuków, ale mog ą one nie spełnia ć zało Ŝ enia naszego faktu, a zatem - mog ą równie Ŝ nie spełnia ć jego tezy. Sprowadzaj ą c je do postaci zredukowanej: − nie zwi ę kszamy liczby ich kraw ę dzi (b ę dziemy wi ę c mogli stosowa ć do nich zało- Ŝ enie indukcyjne), − otrzymujemy wykresy gramatyk spełniaj ą ce tez ę faktu. Na podstawie zało Ŝ enia indukcyjnego, j ę zyki L(G 1 ), L(G 2 ), L(G 3 ) i L(G 4 ) s ą generowane przez wyra Ŝ enia regularne. Poka Ŝ emy, Ŝ e zachodzi równo ść : L(G) = L(G 1 ) ∪ L(G 3 ) ⋅ [{a}L(G 4 )] * ⋅ {a}L(G 2 ). (1) Rzeczywi ś cie: − gdy droga ko ń cowa w G nie wykorzystuje kraw ę dzi a z S do A, to jest to równie Ŝ droga ko ń cowa w G 1 ; podobnie - ka Ŝ da droga ko ń cowa w G 1 jest droga ko ń cowa w G, − gdy droga ko ń cowa w G wykorzystuje co najmniej raz kraw ę d ź a z S do A, to jest ona postaci: x ay1 ay2 ... aym az, I blok gdzie: − x jest drog ą ko ń cow ą w G 3 , − y1 , y2 , ..., ym - to drogi ko ń cowe w G 4 , − z jest drog ą ko ń cow ą w G 2 . Rzeczywi ś cie: (2) II blok III blok Gramatyki regularne 55 − najpierw mo Ŝ e bowiem wychodz ą c z S wcale nie wykorzystywa ć kraw ę dzi a z S do A i znale źć si ę w ko ń cu w S (za to odpowiedzialny jest I blok; odpowiada on j ę zykowi L(G 3 )), − nast ę pnie mo Ŝ e m razy (gdzie m ∈ N 0 ) po przej ś ciu kraw ę dzi ą a z S do A powróci ć z powrotem do S (za to odpowiedzialny jest II blok; odpowiada on j ę zykowi [{a}L(G 4 )]*), − i na koniec, musi wykorzysta ć kraw ę d ź a przechodz ą c z S do A, by dalej ju Ŝ , nie wykorzystuj ą c tej kraw ę dzi, przej ść do jednego ze stanów ko ń cowych gramatyki G (za to odpowiedzialny jest III blok; odpowiada on j ę zykowi {a}L(G 2 )). Z powyŜ szego wywodu wida ć tak Ŝ e, Ŝ e ka Ŝ da droga postaci (1) jest ko ń cowa w G. Jak ju Ŝ to zauwa Ŝ yli ś my, j ę zyki wyst ę puj ą ce po prawej stronie równo ś ci s ą generowane przez wyra Ŝ enia regularne, zatem (z indukcyjnej definicji wyra Ŝ e ń regularnych) - równie Ŝ j ę zyk L(G) jest generowany przez pewne wyra Ŝ enie regularne. Ko ń czy to dowód całego twierdzenia. Maj ą c udowodnione powyŜ sze twierdzenie, mo Ŝ emy pokusi ć si ę o poszukanie metody: 1) znajdywania gramatyki regularnej odpowiadaj ą cej danemu wyra Ŝ eniu regularnemu, 2) znajdywania wyra Ŝ enia regularnego odpowiadaj ą cego danej gramatyce regularnej. Ad 1. Najpro ś ciej jest tego dokona ć posługuj ą c si ę wykresem gramatyk regularnych, a wi ę c (tym samym) gramatykami w postaci normalnej (z twierdzenia 3.1). Gdybyś my mieli udowodnione twierdzenie 1.1, moglibyś my robi ć to nast ę puj ą co: dla gramatyki regularnej w postaci normalnej (b ę d ą cej szczególn ą postaci ą gramatyki regularnej), stosujemy procedur ę przedstawion ą w dowodzie twierdzenia 1.1, a nast ę pnie tak otrzymane gramatyki regularne sprowadzamy do postaci normalnej. My jednak post ą pimy inaczej. Maj ą c mianowicie wykresy gramatyk regularnych, b ę dziemy wykonywa ć na nich operacje regularne w taki sposób, by od razu otrzyma ć wykresy gramatyk regularnych (a wi ę c tym samym gramatyki regularne w postaci normalnej). Twierdzenie 3.3. Je Ŝ eli j ę zyki L1 i L2 s ą generowane przez gramatyki regularne w postaci normalnej (odpowiednio G 1 i G 2 ), to j ę zyki otrzymane przez stosowanie na nich operacji regularnych: Gramatyki regularne 56 a) L1 ∪ L2 , b) L1 L2 , c) L1 * s ą równie Ŝ generowane przez pewne gramatyki regularne w postaci normalnej. Dowód. Dowód przeprowadzimy konstrukcyjnie, Ŝ e wzgl ę du na stosowane operacje regularne. Najpierw jednak, bez straty ogólno ś ci rozwa Ŝ a ń , mo Ŝ emy przyj ąć Ŝ e: − obie gramatyki G 1 i G 2 maj ą rozł ą czne zbiory symboli nieterminalnych (w przeciwnym przypadku mo Ŝ emy je rozł ą czyć - pokrywaj ą cym si ę symbolom nada ć w gramatyce G 2 nowe, nie wyst ę puj ą ce dotychczas nazwy), − za pomoc ą ostatniej operacji przedstawionej na koniec drugiego paragrafu tego rozdziału, symbole pocz ą tkowe S 1 i S 2 tych gramatyk zostały odseparowane (tj. gramatyki te zast ą pili ś my równowa Ŝ nymi im gramatykami, w których jednak symbol pocz ą tkowy wyst ę puje jedynie po lewej stronie reguł produkcji). a) By otrzyma ć gramatyk ę j ę zyka L1 ∪ L2 , kładziemy po prostu S 1 = S 2 = S, jak to pokazano na rysunku 3.10. G1: S1• a b A A B b b G1 ∪ G2 : S• G2: S2• b c C c D B a S1 = S2 = S C D Rys. 3.10. b) Konstrukcja gramatyki generuj ą cej j ę zyk L1 L2 . Niech gramatyka G 1 ma symbole ko ń cowe A 1 , A 2 ,..., A k . Usu ń my z gramatyki G 2 symbol S 2 , a nast ę pnie poł ą czmy strzałkami wychodz ą cymi z symboli ko ń cowych A 1 , A 2 ,..., A k te symbole, do których dochodziły strzałki z S 2 (patrz rys. 3.11). Tak otrzymana gramatyka generuje j ę zyk L1 L2 . Gramatyki regularne 57 B1 A1 S1• A a S2• A2 b b B2 c B D Gramatyka G 2 b A1 S• C b A B c Ak B1 b A2 b Bl Ak Gramatyka G1 a C B2 c c D Bl Gramatyka jezyka L1 L2 Rys. 3.11. Zauwa Ŝ my jeszcze, Ŝ e symbole ko ń cowe A 1 , A 2 ,..., A k gramatyki G 1 , w nowej gramatyce nie s ą ju Ŝ symbolami ko ń cowymi. Ko ń cowe s ą w niej tylko symbole ko ń cowe gramatyki G2 (tj. B1 , B2 , ..., Bl). Zauwa Ŝ my równie Ŝ , Ŝ e post ę powanie to polega tu w gruncie rzeczy na: - usuni ę ciu symbolu S 2 i zast ą pieniu reguł S 2 → bC, S 2 → cD regułami: A 1 → bC, A 2 → bC,..., A k → bC, A 1 → cD, A 2 → cD,..., A k → cD, - oraz usuni ę ciu reguł A 1 → λ , A 2 → λ , ..., A k → λ gramatyki G 1 . c) Konstrukcja gramatyki j ę zyka L1 * polega na sklejeniu w G 1 wszystkich osi ą galnych wierzchołków ko ń cowych z wierzchołkiem pocz ą tkowym, tj. na poło Ŝ eniu: S 1 = A 1 , S 1 = A 2 ,..., S 1 = A k . Operacja ta polega w istocie na: − zast ą pieniu reguł postaci A i → aB i B → bA i regułami S i → aB i B → bS i dla ka Ŝ - dego i = 1, 2, ..., k, − zast ą pieniu reguł A i → λ (i = 1, 2, ..., k) reguł ą S 1 → λ . Do zako ń czenia dowodu pozostaje nam jedynie formalne udowodnienie, ze konstrukcje a), b) i c) daj ą odpowiednio gramatyki generuj ą ce j ę zyki L1 ∪ L2 , L1 L2 i L1 , co pozostawiam ju Ŝ jednak zainteresowanemu czytelnikowi. Gramatyki regularne 58 Przykład 3.5. a a S• a a b A1 b A2 A3 || A3 b S• a a || S• A4 A1 b a b b A2 b a a A a b R ys. 3 .1 3 . Rys. 3.12. Dla gramatyki z rys.3.12 (jest to gramatyka z przykładu 3.1 bez wierzchołków A 5 i A 6 ), po zastosowaniu powyŜ szej konstrukcji, otrzymujemy gramatyk ę z rys. 3.13. Jak wygl ą daj ą wykresy gramatyk regularnych prostych wyra Ŝ e ń regularnych wiemy ju Ŝ z pierwszej cz ęś ci dowodu twierdzenia 3.2. Z metod ą konstrukcji wykresów gramatyk regularnych dla zło Ŝ onych wyra Ŝ e ń regularnych zapoznali ś my si ę z kolei w dowodzie twierdzenia 3.3. Obecnie mo Ŝ emy wi ę c ju Ŝ zobrazowa ć na konkretnym przykładzie działanie naszej metody. Przykład 3.6. Znajd ź gramatyk ę regularn ą generuj ą c ą j ę zyk dany wyra Ŝ eniem regularnym: [01 ∪ (11) * ]01. J ę zyk {11} jest generowany przez gramatyk ę : A0• 1 A1 1 A2 (1) Rys. 3.14. Sklejaj ą c symbol A 2 z symbolem A 0 otrzymujemy wykres gramatyki j ę zyka {11} * : A0• 1 A1 (2) 1 Rys. 3.15. Z kolei gramatyk ę j ę zyka {01} przedstawia wykres: B0• 0 B1 1 B2 (3) Rys. 3.16. Sklejaj ą c wykresy (2) i (3) (poprzez uto Ŝ samienie A 0 = B 0 = S) - powinni ś my otrzyma ć wykres gramatyki j ę zyka {01} ∪ {11} * , jednak (jak si ę okazuje po poni Ŝ szym rys. 3.17) - otrzymujemy wykres gramatyki j ę zyka ({11} * ∪ λ ){01}: Gramatyki regularne S0• 1 59 A1 1 0 (4) 1 B1 B2 Rys. 3.17. Spowodowane jest to faktem, Ŝ e symbol S jest tu tak pocz ą tkowy jak i ko ń cowy. Aby usun ąć ow ą niedogodno ść powoduj ą c ą przekłamanie mocy generatywnej tworzonej gramatyki - odpowiednio przekształcamy gramatyk ę (2) do poni Ŝ szej postaci (2'): A0• 1 A1 1 A2 (2') 1 Rys. 3.18. a nast ę pnie ł ą czymy j ą z gramatyk ą (3) otrzymuj ą c tym samym w miejsce gramatyki (4) wła ś ciw ą ju Ŝ gramatyk ę (4'): 1 S0 • A1 1 A2 1 0 (4') 1 B1 B2 Rys. 3.19. Pozostaje nam jeszcze doł ą czyć gramatyk ę j ę zyka {01}, ale poniewa Ŝ ju Ŝ ona wyst ą piła, bierzemy j ą z nowymi symbolami nieterminalnymi C 0 , C 1 i C 2 : C0• 0 C1 1 C2 (3') Rys. 3.20. Usuwaj ą c z gramatyki (3') symbol pocz ą tkowy C 0 i ł ą cz ą c strzałkami z 0 wszystkie symbole ko ń cowe (S 0 , A 2 i B 2 ) gramatyki (4') z wierzchołkiem C 1 (bo w (3') mieli ś my: C 0 → 0C 1 ) - otrzymujemy szukany wykres gramatyki j ę zyka ({01} ∪ {11}*){01}: S0 • 1 A1 1 A2 1 0 0 B1 1 B2 0 0 C1 (5) 1 C2 Rys. 3.21. Oczywiście, symbole końcowe gramatyki (4') przestają być symbolami końcowymi w gramatyce (5). Gramatyki regularne 60 Opisane tu zagadnienie znajdywania gramatyki regularnej odpowiadaj ą cej danemu wyra Ŝ eniu regularnemu, nazywamy z a g a d n i e n i e m s y n t e z y g r a m a t y k i . Ad 2. Twierdzenie 3.2 pozwala równie Ŝ opisywa ć dowolny j ę zyk regularny poprzez wyra- Ŝ enie regularne, bezpo ś rednio przedstawiaj ą ce kształt wszystkich generowanych przez niego słów. Metoda ta została przedstawiona w drugiej cz ęś ci dowodu tego twierdzenia. Prze ś led ź my j ą na poni Ŝ szym przykładzie: Przykład 3.7. Okre ś li ć (poprzez podanie wyra Ŝ enia regularnego) j ę zyk generowany przez gramatyk ę dan ą nast ę puj ą cym wykresem: 1 0 S• 1 A 1 1 B Rys. 3.22. Zgodnie z procedur ą przedstawion ą w dowodzie - tworzymy najpierw wykres jej postaci zredukowanej 1 0 S• A 1 1 Rys. 3.23. a nast ę pnie (usuwaj ą c strzałk ę z 0 „id ą c ą ” z S do A) wykresy gramatyk G 1 , G 2 , G 3 i G 4 oraz ich postacie zredukowane i na ich podstawie okre ś lamy generowane przez nie j ę zyki: wykresy gramatyk G1: G2: G3: S• 1 1 1 1 1 S• A• 1 A 1 1 S• L(G i ) ∅ 1 1 S• 1 A 1 S ich postacie zredukowane A• {1 * } {1 * } Gramatyki regularne G4 : 1 S 1 A• 1 S 1 1 61 1 A• {11 *} Tab. 3.2. St ą d L(G) = L(G 1 ) ∪ L(G 3 ) ⋅ [{a}L(G 4 )] * ⋅ {a}L(G 2 ) = = ∅ ∪ {1 * } ⋅ [{0}{11 * }] * ⋅ {0}{1 * } = = {1 * } ⋅ {011 * } * ⋅ {01 * }. Gramatyka ta generuje wi ę c j ę zyk regularny opisany wyra Ŝ eniem regularnym + 1 * (011 * ) * 01 * , czyli wyra Ŝ eniem regularnym 1 * (01 ) * 01 * . Wad ą tej metody jest to, Ŝ e w przypadku gramatyki bardziej rozbudowanej (o wi ę kszej liczbie kraw ę dzi), otrzymuje si ę nadal bardzo skomplikowane wyra Ŝ enia regularne wymagaj ą ce Ŝ mudnego skracania. Opisane tu zagadnienie znajdywania wyra Ŝ enia regularnego odpowiadaj ą cego danej gramatyce regularnej, nazywamy z a g a d n i e n i e m a n a l i z y g r a m a t y k i . Zadanie 3.3: Niech A, B i C b ę d ą wyra Ŝ eniami regularnymi. Niech A ∩ B b ę dzie wyra Ŝ eniem regularnym opisuj ą cym j ę zyk {A} ∩ {B}, a A' niech b ę dzie wyra Ŝ eniem regularnym opisuj ą cym j ę zyk V * \ {A}. Podobnie, niech A T b ę dzie operacj ą transpozycji tak ą , Ŝe {A T }= {A} T . Udowodnij, Ŝ e: a) A(BC) = (AB)C, l) A ∪ B = B ∪ A, b) AB ∪ AC = A (B ∪ C), m) (A ∪ B) ∪ C = A ∪ (B ∪ C), c) BA ∪ CA = (B ∪ C) A, n) (A ∪ B)' = A' ∩ B', d) λA = Aλ = A, o) (A ∩ B)' = A' ∪ B', e) ∅ ∪ A = A, p) (AB) T = B T A T , f) A∅ = ∅ = ∅A, q) (A ∪ B) T = A T ∪ B T , g) (A * ) * = A * , r) (A T ) * = (A * ) T , h) ABB * ∪ AB * = AB * , s) A * = (λ ∪ A) * , i) λ * = λ, t) λ T = λ, j) ∅ * = λ, u) ∅ T = ∅, k) (A ∪ B) * = (A * ∪ B * ) * = (A * B * ) * , v) A'' = A. Gramatyki regularne 62 4. Języki regularne, a języki liniowe i bezkontekstowe. Gramatyki samorozszerzające Gramatyk ę bezkontekstow ą G nazywamy l i n i o w ą , gdy wszystkie jej reguły produkcji s ą postaci A → P lub A → Q 1 BQ 2 , gdzie A, B ∈ V N , zaś P, Q 1 , Q 2 ∈ V T* . Z kolei gramatyk ę liniow ą nazywamy p r a w o s t r o n n i e l i n i o w ą , gdy Q 2 = λ, a l e w o s t r o n n i e l i n i o w ą , gdy Q 1 = λ. Oznaczmy: − przez Lin - klas ę wszystkich j ę zyków liniowych, generowanych przez gramatyki liniowe, − przez PL - klas ę wszystkich j ę zyków prawostronnie liniowych, generowanych przez gramatyki prawostronnie liniowe, − przez LL - klas ę wszystkich j ę zyków lewostronnie liniowych, generowanych przez gramatyki lewostronnie liniowe, − L 3 przez Reg, − L 2 przez CF (skrót od „contex free”). Przyjmijmy równie Ŝ skrótowe zapisy g.Lin, g.PL, g.LL, g.Reg i g.CF, oznaczaj ą ce odpowiednio dowoln ą gramatyk ę liniow ą , prawostronnie liniow ą , lewostronnie liniow ą , regularn ą i bezkontekstow ą , a przez j.Lin, j.PL, j.LL, j.Reg i j.CF - odpowiednio generowane przez nie j ę zyki (liniowy, prawostronnie liniowy, lewostronnie liniowy, regularny i bezkontekstowy). Zauwa Ŝ my, Ŝ e wprost z powyŜ ej wprowadzonych definicji mamy: 1) Lin ⊆ CF, 2) Reg = PL, 3) PL ⊆ Lin, 4) LL ⊆ Lin. Twierdzenie 3.4. Ka Ŝ da gramatyka lewostronnie liniowa generuje j ę zyk typu 3 (tj. LL ⊆ L 3 ). Dowód. Niech G = <V N , V T , S, F> b ę dzie gramatyk ą lewostronnie liniow ą , w której V N = {S, A 1 , ..., A z }. Zakładamy, Ŝ e symbol pocz ą tkowy S nie wyst ę puje po prawej stronie reguł produkcji (je ś li by wyst ę pował, to zgodnie z procedur ą przedstawion ą na ko ń cu drugiego paragrafu tego rozdziału, pozbywamy si ę go). Niech P ∈ V T * . Gramatyki regularne 63 Konstruujemy gramatyk ę regularn ą G' = <V N , V T , S, F'> z nast ę puj ą co okre ś lonymi regułami produkcji F': 1) je ś li S → P ∈ F, to S → P ∈ F', 2) je ś li A k → P ∈ F, to S → PA k ∈ F', 3) je ś li A k → A j P ∈ F, to A j → PA k ∈ F', 4) je ś li S → A j P ∈ F, to A j → P ∈ F'. Poka Ŝ emy, Ŝ e L(G) ⊆ L(G'). Niech wi ę c P ∈ L(G); poka Ŝ emy, Ŝ e równie Ŝ P ∈ L(G'). 1) Je ś li S → P ∈ F, to P mo Ŝ na wyprowadzi ć w G bezpo ś rednio z symbolu pocz ą tkowego S, a zatem mo Ŝ na je wyprowadzi ć równie Ŝ t ą sam ą drog ą w gramatyce G' (bo S → P ∈ F'), a wi ę c P ∈ L(G'). 2) Jeś li zaś S → P ∉ F, to słowo P mo Ŝ na tak rozbi ć na cz ęś ci P = P n P n - 1 ...P 2 P 1 , Ŝ e jego wywód w G b ę dzie wygl ą dał nast ę puj ą co (nad strzałkami zaznaczono numery stosowanych reguł produkcji): S 4 → A i1 P1 3 → A i 2 P2 P1 3 → A i 3 P3 P2 P1 3 → A i m − 1 Pm −1 Pm− 2 K P3 P2 P1 2 → 2 → Pm Pm −1 K P3 P2 P1 . (*) Poka Ŝ emy, Ŝ e w gramatyce G' mo Ŝ na je otrzyma ć na drodze nast ę puj ą cego wywodu: 2 4 S → Pm A i m−1 3→ Pm Pm−1A i m− 2 3→ Pm Pm−1 Pm−2 A i m− 3 3→K 3→ Pm Pm−1K P3 P2 A i1 → 4 → Pm Pm −1 K P3 P2 P1 . ( ** ) Rzeczywi ś cie: − poniewa Ŝ w ( * ) stosowali ś my A i m−1 2→ Pm ∈ F, wi ę c w ( ** ) mogli ś my stosowa ć S 2 → Pm A i m−1 ∈ F'; − poniewa Ŝ w ( * ) stosowali ś my A i1 3 → A i 2 P2 , A i2 3 → A i 3 P3 , ..., A i m − 2 3 → A i m − 1 Pm −1 ∈ F, wi ę c w ( ** ) mogli ś my stosowa ć odpowiednio A i2 3 → P2 A i1 , A i3 3 → P3 A i 2 , ..., A i m − 1 3 → Pm −1 A i m − 2 ∈ F'; − i na koniec, poniewa Ŝ w ( * ) stosowali ś my " S 4 → A i1 P1 " ∈ F, wi ę c w ( ** ) mogli- ś my stosowa ć A i1 4 → P1 ∈ F'. Zatem dla dowolnego słowa P, je ś li P ∈ L(G), to P ∈ L(G'), czyli w sumie L(G) ⊆ L(G'), co wła ś ciwie ko ń czy dowód. Gramatyki regularne 64 Dodajmy jeszcze, Ŝ e z symetrii wynika inkluzja w drug ą stron ę , co w sumie daje nam, Ŝ e L(G) = L(G'). Wnioski: 1) L 3 jest zamkni ę ta ze wzgl ę du na operacj ę odbicia zwierciadlanego; 2) Ka Ŝ dy j ę zyk typu 3 (tj. prawostronnie liniowy) jest generowany przez pewn ą gramatyk ę lewostronnie liniow ą (tj. LL = Reg ⊆ PL). Uzasadnienie (wniosków). 1) Niech a 1 a 2 ...a n b ę dzie dowolnym słowem generowanym przez g.PL. Wówczas a n ...a 2 a 1 jest słowem generowanym przez pewn ą g.LL, w której reguły produkcji otrzymujemy przez konsekwentn ą zamian ę kolejno ś ci (na odwrotn ą ) wszystkich symboli w nast ę pnikach wszystkich reguł produkcji (tak wi ę c np. reguł ę A → P 1 ... P n B zast ę pujemy reguł ą A → BP n ... P 1 ). Niech L ∈ L 3 , tj. L jest j ę zykiem regularnym. Poniewa Ŝ klasa gramatyk regularnych pokrywa si ę z klas ą gramatyk prawostronnie liniowych (Reg = PL), zatem L jest j.PL. Wnosimy st ą d, Ŝ e L-1 jest j.LL, tj. L-1 ∈ L (z poprzedniego twierdzenia). (1) 2) Z rozwa Ŝ a ń powyŜ szych wynika, Ŝ e gdy L jest j.PL, to jego inwersja L-1 jest równie Ŝ j.PL, czyli L = (L-1 ) -1 jako jego inwersja jest j.LL. Zatem dowolny j.PL (tj. regularny) jest te Ŝ lewostronnie liniowy. (2) Z twierdzenia i z drugiego wniosku z niego otrzymujemy nast ę puj ą cy wniosek: Wniosek. Siła generacyjna gramatyk prawostronnie liniowych jest taka sama jak gramatyk lewostronnie liniowych. W sumie mamy wi ę c, Ŝ e: Reg = PL = LL ⊆ Lin ⊆ CF. Poka Ŝ emy, Ŝ e Reg ⊂ Lin, tj. Ŝ e nie wszystkie gramatyki liniowe generuj ą j ę zyki regularne. W tym celu rozpatrzmy na pocz ą tek poni Ŝ szy przykład. Przykład 3.8. Niech L1 = {a n b n c k : n≥1, k≥1}, a L2 = {a k b n c k : n≥1, k≥1}. Oba te j ę zyki s ą generowane przez gramatyki liniowe G = <{S, A}, {a, b, c}, S, F>, gdzie: - w gramatyce generuj ą cej j ę zyk L1 , F = {S → Sc, S → Ac, A → aAb, A →ab}, - w gramatyce generuj ą cej j ę zyk L2 , F = {S → aS, S → aA, A → bAc, A →bc}. Generowanie dowolnego słowa w pierwszej z tych gramatyk wygl ą da nast ę puj ą co: S → Sc → Scc → ... → Sc k - 1 → Ac k → aAbc k → ... → a n - 1 Ab n - 1 c k → a n b n c k . Podobnie wygl ą da generowanie dowolnego słowa w drugiej z tych gramatyk. Gramatyki regularne 65 L1 ∩ L2 = {a n b n c n : n≥1}, a to nie jest j ę zyk bezkontekstowy (z ostatniego wniosku z 4 paragrafu 2 rozdziału). Wida ć st ą d, Ŝ e przeci ę cie dwóch j.Lin nie koniecznie musi dawa ć j.CF, a tym bardziej (ze wzgl ę du na "Lin ⊆ CF"), Ŝ e przeci ę cia j.Lin ∩ j.CF, j.CF ∩ j.Lin i j.CF ∩ j.CF nie musz ą dawa ć j.CF. O tym, Ŝ e j.CF daje nam zawsze przeci ę cie j.CF z j.Reg, orzeka poni Ŝ sze twierdzenie. Twierdzenie 3.5. Je ś li L ∈ L 2 , a L' ∈ L 3 , to L ∩ L' ∈ L 2 . Dowód. Niech L ∈ L 2 , a L' ∈ L 3 . RozwaŜ ymy dwa przypadki ze wzgl ę du na nale Ŝ enie λ do L. I przypadek - gdy λ ∉ L. Nale Ŝ y pokaza ć , Ŝ e L ∩ L' ∈ L 2 . Niech L (jako język bezkontekstowy) będzie generowany przez gramatykę G = <VN, VT, S, F> w postaci normalnej Chomsky’ego (tj. maj ącą reguły produkcji jedynie postaci X → YZ i X → a). Niech L' (jako język regularny) będzie generowany przez gramatykę G' = <VN', VT', S', F'> w postaci normalnej z twierdzenia 3.1 (tj. maj ą c ą reguły produkcji jedynie postaci X → aY i X → λ). Oznaczmy przez W = {X 1 , X 2 , ..., X k } zbiór tych wszystkich symboli nieterminalnych gramatyki G', dla których X i → λ ∈ F', gdzie 1 ≤ i ≤ k (dla uproszczenia, jednak bez straty ogólno ś ci, przyj ę li ś my tu, Ŝ e jest to wła ś nie k pierwszych elementów nieterminalnych). Tworzymy k gramatyk bezkontekstowych: G i = <V N ' × (V N ∪ V T ) × V N ', V T ∪ V T ', (S', S, X i ), F''> (1 ≤ i ≤ k), gdzie przynale Ŝ no ść reguł do F'' okre ś lamy nast ę puj ą co: 1) A → BC ∈ F witw, gdy ∀ X,Y,Z∈V N' (X,A,Y) → (X,B,Z) (Z,C,Y) ∈ F'', 2) A → a ∈ F witw, gdy ∀ X,Y∈V N' (X,A,Y) → (X,a,Y) ∈ F'', 3) X → aY ∈ F' witw, gdy (X,A,Y) → a ∈ F''. Jak wida ć (ze wzgl ę du na kształt reguł produkcji) - tak okre ś lona gramatyka jest bezkontekstowa. Poka Ŝ emy, Ŝ e L ∩ L' = k U L(G i ) , a wi ę c tym samym, Ŝ e L ∩ L' jest j ę - i =1 zykiem bezkontekstowym (jako suma j ę zyków bezkontekstowych). Słowo postaci P = a 1 ... a n (∈ V T * ) ∈ L(G) witw, gdy ∃ i ∀ Z 1 ,...,Z n-1 istnieje wyprowadzenie w G i : Gramatyki regularne 66 * (S', a 1 , Z 1 ) (Z 1 , a 2 , Z 2 ) ... (Z n - 1 , a n , X i ) (S', S, X i ) → G (1) (stosowali ś my tu reguły 1) i 2)). Z drugiej strony, P ∈ L(G') witw, gdy ∃ Z 1 ,...,Z n-1 ∃ X i ∈W : w G' istnieje derywacja postaci: S' → a 1 Z 1 → a 1 a 2 Z 2 → ... → a 1 ... a n X i → a 1 ... a n . (2) Zatem (z 3) punktu definicji F''): P ∈ L(G') witw, gdy w G i istnieje derywacja: * a 1 ... a n . (S', a 1 , Z 1 ) (Z 1 , a 2 , Z 2 ) ... (Z n - 1 , a n , X i ) → G (3) Koniec derywacji (1) jest pocz ą tkiem derywacji (3), wi ę c w sumie: P ∈ L ∩ L' witw, gdy ∃ i : P ∈ L(G i ). k Tak wi ę c, mamy Ŝ e: L ∩ L' = U L(G i ) . i =1 II przypadek - gdy λ ∈ L. Konstruujemy gramatyk ę generuj ą c ą j ę zyk L \ {λ}. Nast ę pnie tworzymy gramatyk ę generuj ą c ą j ę zyk L' ∩ (L \ {λ}), który (jak ju Ŝ wiemy z dowodu I przypadku) jest bezkontekstowy. Z definicji, λ ∈ L ∩ L' witw, gdy λ ∈ L i λ ∈ L'. Rozwa Ŝ my dwie mo Ŝ liwo ś ci: a) gdy λ ∈ L i λ ∉ L' - wówczas λ ∉ L ∩ L', a wi ę c L' ∩ (L \ {λ}) = L' ∩ L, a poniewa Ŝ L' ∩ (L \ {λ}) jest j ę zykiem bezkontekstowym, wi ę c i równy mu j ę zyk L' ∩ L te Ŝ jest bezkontekstowy; b) je Ŝ eli jednak przy naszym zało Ŝ eniu, Ŝ e λ ∈ L, mamy równie Ŝ Ŝ e λ ∈ L' (tj. gdy λ ∈ L ∩ L'), to do okre ś lonych ju Ŝ reguł produkcji gramatyki generuj ą cej j ę zyk bezkontekstowy L' ∩ (L \ {λ}), wprowadzamy dodatkowo reguły S 0 → λ i S 0 → S, a S 0 czynimy symbolem pocz ą tkowym tej gramatyki na miejsce dotychczasowego symbolu pocz ą tkowego S. Otrzymany j ę zyk b ę dzie nadal bezkontekstowy, a jako Ŝ e jest on identyczny z j ę zykiem L ∩ L' - ko ń czy to dowód dowodzonego twierdzenia. Wniosek 1. 1) j.Lin ∩ j.Reg = j.CF, 2) j.Reg ∩ j.Reg = j.CF. Wniosek 2. Gramatyki regularne 67 L 3 ⊂ Lin. Dowód. O tym, Ŝ e L 3 ⊆ Lin ju Ŝ wiemy (patrz pocz ą tek tego paragrafu). Pozostaje nam udowodni ć , Ŝ e zawieranie to jest wła ś ciwe. Dla dowodu nie wprost załó Ŝ my, Ŝ e L 3 = Lin. Wtedy jednak j ę zyki L1 = {a n b n c k : n≥1, k≥1} i L2 = {a k b n c n : n≥1, k≥1} byłyby regularne, wi ę c w przeci ę ciu dałyby j ę zyk bezkontekstowy (z wniosku 1), a j ę zyk L1 ∩ L2 = {a n b n c n : n≥1} taki nie jest. Wniosek 3. Klasa L 3 jest wła ś ciwym podzbiorem klasy L 2 (tj. L 3 ⊂ L 2 ). Dowód. L 3 ⊂ Lin ⊆ L 2 , ⇒ L 3 ⊂ L 2 . z wn. 2 Wniosek 4. Je Ŝ eli L1 ∈ L 2 , a L2 ∈ L 3 , to L1 \ L2 ∈ L 2 (tzn. jest j ę zykiem bezkontekstowym). Dowód. Niech V T b ę dzie wspólnym alfabetem terminalnym gramatyk generuj ą cych te j ę zyki. Wtedy L1 \ L2 = L1 ∩ (V T * \ L2 ) (bo jest to zbiór wszystkich słów nad V T * nale Ŝą cych do L1 i zarazem nie nale Ŝą cych do L2 ). Poniewa Ŝ (w myś l powyŜ szego twierdzenia) L1 ∩ (V T * \ L2 ) jest oczywi ś cie j ę zykiem regularnym (bo V T * \ L2 jest j ę zykiem regularnym - patrz tw. 6.4), wi ę c L1 \ L2 (jako mu identyczny) jest równie Ŝ j ę zykiem regularnym. Zastanówmy si ę jeszcze, co powoduje, Ŝ e niektóre gramatyki nie daj ą gramatyk regularnych. W tym celu wprowad ź my nast ę puj ą c ą definicj ę : G r a m a t y k ę G = <V N , V T, S, F> n a z y w a m y s a m o r o z s z e r z a j ą c ą witw, gdy * XAY. ∃ A∈V N ∃ X,Y∈(V N ∪V T ) * : A → G Twierdzenie 3.6. Je Ŝ eli gramatyka bezkontekstowa nie jest samorozszerzaj ą ca, to j ę zyk generowany przez t ę gramatyk ę jest regularny. Uwaga. Gramatyki regularne 68 W myś l powyŜ szego twierdzenia, spo ś ród gramatyk bezkontekstowych, tylko gramatyki samorozszerzaj ą ce mog ą nie generowa ć j ę zyków regularnych. 5. Gramatyki deterministyczne W paragrafie tym, mówi ą c „gramatyka regularna”, b ę dziemy zawsze mieli na myś li gramatyk ę regularn ą w postaci normalnej (z twierdzenia 3.1). Na ogół dla gramatyki regularnej mogli ś my mie ć kilka produkcji o tym samym poprzedniku, a nast ę pnikach ró Ŝ ni ą cych si ę jedynie symbolami nieterminalnymi. Przykład 3. 7 - c. d. Z sytuacj ą t ą spotykamy si ę np. w gramatyce z przykładu 3.7, gdzie mieli ś my produkcje S → 1S, S → 1B, S → 0A oraz A → 1A, A → 1S i A → λ (patrz rys. 3.24). B 1 S 1 • 1 0 A 1 Rys. 3.24. Jest oczywiste, Ŝ e gramatyki takie s ą niewygodne, głównie ze wzgl ę du na niejednoznaczno ść wywodu słów (słowa te mog ą mie ć ró Ŝ ne drogi ko ń cowe). Dlatego te Ŝ wprowadzamy poj ę cie gramatyki deterministycznej generuj ą cej j ę zyk L, w której ka Ŝ de słowo ma ju Ŝ dokładnie jedn ą drog ę ko ń cow ą : Gramatyk ę regularn ą G = <V N , V T , S, F> nazywamy d e t e r m i n i s t y c z n ą , je ś li z faktu, Ŝ e A → aB ∈ F i A → aC ∈ F (dla pewnych A, B, C ∈ V N i a ∈ V T ) wynika, Ŝ e B = C. W przeciwnym przypadku gramatyk ę nazywamy n i e d e t e r m i n i styczną. Definicja ta mówi, Ŝ e gdyby w deterministycznej gramatyce regularnej trafiły si ę nam przypadkiem dwie reguły produkcji o identycznych poprzednikach i symbolach terminalnych, to wła ś ciwie jest to tylko jedna reguła produkcji, bo ma równie Ŝ identyczne symbole nieterminalne po prawej stronie reguł produkcji. Dzi ę ki takiej ich jednoznaczno ś ci mamy zdeterminowany wywód dowolnego słowa j ę zyka generowanego przez t ę gramatyk ę . Z kolei, gramatyk ę regularn ą G = <V N , V T , S, F> nazywamy z u p e ł n ą , je ś li: Gramatyki regularne 69 ∀ A∈V N ∀ a∈V T ∃ B∈V N : A → aB ∈ F. Zupełno ść gramatyki regularnej na jej wykresie poznaje si ę wi ę c po tym, Ŝ e z ka Ŝ dego wierzchołka wychodz ą strzałki opatrzone wszystkimi symbolami alfabetu terminalnego. Przykład 3.7 - c.d. Gramatyka ta jest oczywi ś cie niezupełna. Na szcz ęś cie jednak, zachodzi nast ę puj ą ce twierdzenie. Twierdzenie 3.7. Ka Ŝ d ą gramatyk ę regularn ą mo Ŝ na rozszerzyć do gramatyki regularnej i zupełnej generuj ą cej ten sam j ę zyk. Dowód. Niech G = <V N , V T , S, F> b ę dzie gramatyk ą regularn ą . Tworzymy now ą gramatyk ę regularn ą G' = <V N ', V T , S, F'>, gdzie: − V N ' = V N ∪ {S e }, gdzie S e jest nowym symbolem nieterminalnym zwanym symbolem ucieczki (jako indeks wyst ę puje „e” od angielskiego „escape” = ucieka ć ); − F' tworz ą reguły F powi ę kszone o dwa rodzaje reguł: − je ś li dla pewnego nieterminalnego A i terminalnego a w gramatyce G nie ma reguł postaci A → aB, to dopisujemy reguł ę A → aS e , − dopisujemy nadto wszystkie reguły postaci S e → xS e dla wszystkich symboli x ∈ VT. Gwarantuje nam to otrzymanie regularnej gramatyki zupełnej. Wida ć , Ŝ e je ś li jak ąś drog ą dostaniemy si ę do (nie ko ń cowego!) wierzchołka S e , to ju Ŝ si ę z niego nie wydostaniemy. Jasne jest wi ę c, Ŝ e tak otrzymana gramatyka G' generuje ten sam j ę zyk, co gramatyka G. Przykład 3.7 - c.d. Uzupełnienie danej gramatyki regularnej G do gramatyki regularnej i zupełnej przedstawia nast ę puj ą cy wykres: Gramatyki regularne 70 0,1 0,1 B Sc 0 1 1 S• A 0 1 1 Rys. 3.25 Powró ć my do gramatyk deterministycznych. Zachodzi dla nich nast ę puj ą ce, główne w tym paragrafie, twierdzenie: Twierdzenie 3.8 (Myhilla). Dla ka Ŝ dej gramatyki regularnej (być mo Ŝ e niedeterministycznej) istnieje równowa Ŝ na jej (tzn. generuj ą ca ten sam j ę zyk) gramatyka deterministyczna i zupełna. Zamiast dowodu, prze ś ledzimy na konkretnym przykładzie metod ę konstrukcji takiej gramatyki. Przykład 3.9. Niech G = <V N , V T , S, F> b ę dzie gramatyk ą regularn ą z przykładu 3.7 (podan ą tu jeszcze raz na rys. 3.27). W myś l twierdzenia, w przykładzie tym, skon struujemy równowa Ŝ n ą jej deterministyczn ą i zupełn ą gramatyk ę regularn ą G' = <V N ', V T ', S', F'>. B 1 1 S• 1 A 0 1 Rys. 3.26. ozn. Obierzmy S' = {S} = S 0 oraz V T ' = V T (zawsze tak robimy). Pozostaje nam jeszcze okre ś li ć zbiory V N ' i F'. Zrobimy to jednocze ś nie: ozn. − okre ś laj ą c bowiem nowe reguły produkcji F' = M (gdzie „M” wzi ę te jest od „Myhilla”, przy czym fakt, Ŝ e A → aB ∈ F' /dla pewnych A, B ∈ V N ' i a ∈ V T '/ oznacza ć b ę dziemy M(A,a) = F'(A,a) = B); Gramatyki regularne 71 − przy okazji b ę dziemy otrzymywa ć nowe symbole nieterminalne tworz ą c tym samym zbiór V N '. Najpierw otrzymujemy M(S 0 ,0) = {A} = S 1 . Pierwsz ą równo ść otrzymujemy tu rozumuj ą c nast ę puj ą co: „w gramatyce G b ę d ą c w jednym z symboli nieterminalnych zbioru S 0 , tj. jedynie w symbolu S, id ą c po strzałce 0 dochodzimy jedynie do symbolu nieterminalnego A”; drug ą za ś równo ść otrzymujemy nast ę puj ą co: „poniewa Ŝ stan {A} gramatyki G' nie był dotychczas zdefiniowany, wi ę c nadajemy mu now ą nazw ę S 1 ”. Tym samym otrzymali ś my w gramatyce G' reguł ę produkcji S 0 → 0S 1 oraz symbol nieterminalny S 1 . Poniewa Ŝ konstytuuj ą cy go symbol A jest ko ń cowy, wi ę c symbol S 1 dodatkowo podkre ś lili ś my, co oznacza Ŝ e w gramatyce G' otrzymali ś my równie Ŝ reguł ę S 1 → λ (czynimy tak zawsze, gdy cho ć jeden z nieterminałów gramatyki G tworz ą cych nowy nieterminał gramatyki G' jest ko ń cowy). W identyczny sposób w odniesieniu do symbolu S 0 post ę pujemy z pozostałymi terminałami (tu jedynie z „1”): M(S 0 ,1) = {B, S} = S 2 (otrzymali ś my reguł ę S 0 → 1S 2 oraz symbol S 2 ). WyŜ ej opisan ą procedur ę powtarzamy dla wszystkich nowo otrzymanych symboli nieterminalnych gramatyki G', przy czym wykonujemy j ą tak długo, dopóki b ę dzie to tylko mo Ŝ liwe. Je Ŝ eli za którym ś razem zdarzy si ę , Ŝ e jako nowy nieterminał otrzymamy zbiór pusty, to zbiorowi temu nadajemy nazw ę S e (symbolu ucieczki). Zauwa Ŝ my, Ŝ e w nast ę pnych krokach konstrukcji gramatyki G' doł ą czone b ę d ą reguły S e → 0S e , S e → 1S e (a wi ę c z wszystkimi nieterminałami). Symbol S e rzeczywi ś cie b ę dzie wi ę c spełniał rol ę symbolu ucieczki. Jego istnienie spowodowane jest faktem, Ŝ e (w myś l twierdzenia) przekształcana gramatyka G nie koniecznie musi być zupełna. Dalej otrzymujemy wi ę c po kolei: M(S 1 , 0) = ∅ = S e M(S 1 , 1) = {A, S} = S 3 (doszły symbole S 3 i S e oraz produkcje S 1 → 0S e , S 1 → 1S 3 i S 3 → λ); M(S 2 , 0) = {A} = S 1 M(S 2 , 1) = {B, S} = S 2 (doszły produkcje S 2 → 0S 1 i S 2 → 1S 2 ); M(S 3 , 0) = {A} = S 1 M(S 3 , 1) = {A, B, S} = S 4 (doszedł symbol S 4 oraz produkcje S 3 → 0S 1 , S 3 → 1S 4 i S 4 → λ); M(S 4 , 0) = {A} = S 1 (doszły produkcje S 4 → 0S 1 i S 4 → 1S 4 ); M(S 4 , 1) = {A, B, S} = S 4 Gramatyki regularne 72 M(S e , 0) = S e M(S e , 1) = S e (dodali ś my - daj ą ce zupełno ść gramatyki G' - produkcje S e → 0S e i S e → 1S e ). W ten sposób otrzymali ś my: - alfabet nieterminalny V N ' = {S 0 , S 1 , S 2 , S 3 , S 4 , S e } - oraz zbiór reguł produkcji F' = {S 1 → λ, S 3 → λ, S 4 → λ, S 0 → 0S 1 , S 1 → 0S e , S 2 → 0S 1 , S 3 → 0S 1 , S 4 → 0S 1 , S e → 0S e , S 0 → 1S 2 , S 1 → 1S 3 , S 2 → 1S 2 , S 3 → 1S 4 , S 4 → 1S 4 , S e → 1S e }. Jasno wida ć , Ŝ e skonstruowana w ten sposób gramatyka jest zarówno deterministyczna jak i zupełna (patrz rys. 3.27). 0 S0• 0 1 0 S2 0 S1 1 0 1 Se 1 S3 S4 1,0 1 Rys. 3.27. Oczywi ś cie, gdybyś my wyszli nie od gramatyki G, lecz od jej postaci zredukowanej, to od razu otrzymalibyś my w prostszej formie jej posta ć deterministyczn ą i zupełn ą . Mo Ŝ emy jednak doj ść do niej i z bie Ŝą cej pozycji, uto Ŝ samiaj ą c ze sob ą wierzchołki S 0 i S 2 oraz S 3 i S 4 (nie zmieni to bowiem ich siły generatywnej).Sytuacj ę te przedstawia rys. 3.28. S0 0 • S1 1 0 1 S3 1 0 Se 1,0 Rys. 3.28. Zastosowany tu sposób tworzenia nowej gramatyki nosi nazw ę m e t o d y p o t ę g o w e j . Bierze to si ę z faktu, Ŝ e nowe wierzchołki tworz ą pewien podzbiór zbioru pot ę gowego starych wierzchołków (st ą d nowych wierzchołków mo Ŝ e być co najwyŜ ej 2 do pot ę gi ilo ść starych wierzchołków). Twierdzenie Myhilla daje nam w sumie równowa Ŝ no ść klasy gramatyk regularnych deterministycznych i zupełnych z klas ą gramatyk regularnych. Wynika z tego, Ŝ e niedeterminizm gramatyki regularnej wcale nie poszerza jej siły generatywnej.