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.

Podobne dokumenty