W rozdziale tym poznamy jeszcze jedn ¾a klas ¾e j ¾ezyków formalnych - klas ¾e j ¾ezyków kontek-stowych. Jest to klasa po´srednia mi ¾edzy klasami j ¾ezyków bezkontekstowych i rekursywnych.
Istotn ¾a cech ¾a j ¾ezyków tej klasy jest to, ·ze s ¾a one akceptowane przez szczególny rodzaj maszyn Turinga. Maj ¾a one t ¾e w÷asno´s´c, ·ze liczba komórek ta´smy wykorzystywanych w trakcie dzi-a÷ania jest ograniczona do komórek „zaj ¾etych” przez s÷owo wej´sciowe.
12.1. Gramatyki i j ¾ezyki kontekstowe
Gramatyk¾e frazow ¾a G = (V; ; P; S) nazywamy kontekstow ¾a, gdy jej produkcje maj ¾a posta´c
! ;
gdzie ; 2 (V [ )+; (czyli ; s ¾a niepustymi s÷owami utworzonymi ze zmiennych i symboli ko´ncowych) oraz
(12.1) j j j j :
Zatem w stosunku do ogólnej de…nicji gramatyki frazowej zak÷adamy dodatkowo, ·ze d÷ugo´s´c s÷owa jest wi ¾eksza lub równa d÷ugo´sci s÷owa (np. produkcja XaY ! aY ZbSa spe÷nia ten warunek, a produkcje Xa ! Z; Y ! nie). Bedziemy o nich mówi´c, ·ze s ¾a typu kontekstowego.
Z de…nicji gramatyki kontekstowej wynika, ·ze nie generuje ona s÷owa pustego (bo nie ma ·zadnej -produkcji). Poniewa·z zaliczenie lub nie s÷owa pustego do danego j ¾ezyka nie zmienia go istotnie, wi ¾ec przyjmujemy nast ¾epuj ¾ac ¾a de…nicj ¾e.
J ¾ezyk formalny L nazywamy j ¾ezykiem kontekstowymgdy istnieje gramatyka kontek-stowa G taka, ·ze
L r f g = L(G):
Mówimy wtedy, ·ze G generuje j ¾ezyk L: Klas ¾e wszystkich j ¾ezyków kontekstowych oz-naczamy przez JK.
Przyk÷ad 12.1. J ¾ezyk L = fanbnan: n 2 Ng jest j ¾ezykiem kontekstowym (zob. Przyk÷ad 11.20), gdy·z jest generowany przez gramatyk ¾e o produkcjach.
1. S ! aSBA;
2. S ! abA;
3. AB ! BA;
4. bB ! bb;
5. bA ! ba;
6. aA ! aa:
Stwierdzenie 12.2. Klasa j ¾ezyków bezkontekstowych zawiera si ¾e istotnie w klasie j ¾ezyków kontekstowych tzn.
JBK JK:
Dowód. 1. JBK JK: Niech L b ¾edzie j ¾ezykiem bezkontekstowym. Wówczas istnieje gramatyka bezkontekstowa o normalnej postaci Chomsky’ego taka,·ze
L r f g = L(G):
159
Poniewa·z produkcje gramatyki o normalnej postaci Chomsky’ego maj ¾a posta´c X ! Y Z;
U ! a; gdzie X; Y; Z; U s ¾a zmiennymi, i a symbolem ko´ncowym, wi ¾ec spe÷niaj ¾a one warunek (12.1). Zatem L jest j ¾ezykiem kontekstowym.
2. JBK 6= JK: Na mocy powy·zszego przyk÷adu j ¾ezyk fanbnan : n 2 Ng jest j ¾ezykiem kontekstowym. Jednak nie jest on j ¾ezykiem bezkontekstowym (zob. Przyk÷ad 8.4).
Zadanie 12.3. Niech G = (V; ; P; S) = (fS; X; Y g; fa; bg; P; S); gdzie P sk÷ada si ¾e z produkcji: S ! SY Xja; Y X ! XY; aX ! aaY; Y ! b:
1. Poda´c wyprowadzenie s÷owa aabb:
2. Opisa´c j ¾ezyk generowany przez G:
3. Poda´c gramatyk ¾e bezkontekstow ¾a generuj ¾ac ¾a L(G):
Zadanie 12.4. Poda´c gramatyki kontekstowe generuj ¾ace j ¾ezyki:
1. fanbnanbn: n > 0g:
2. fanAbn: n 0; A 2 fa; bg ; jAj = ng:
3. fAAA : A 2 fa; bg g:
4. fAARA : A 2 fa; bg g:
Zadanie 12.5. Poda´c gramatyk ¾e kontekstow ¾a generuj ¾ac ¾a ten sam j ¾ezyk co i gramatyka frazowa o produkcjach: S ! XaY; X ! XZj ; Za ! aaZ; ZY ! Y; Y ! :
Zanim podamy dalsze w÷asno´sci j ¾ezyków kontekstowych wyja´snimy znaczenie s÷owa „kon-tekstowy” w nazwie klasy tych j ¾ezyków. U·zyjemy do tego nast ¾epuj ¾acego twierdzenia.
Twierdzenie 12.6. J ¾ezyk L jest kontekstowy wtedy i tylko wtedy, gdy j ¾ezyk L n f g jest generowany przez gramatyk ¾e frazow ¾a G = (V; ; P; S) o produkcjach postaci
(12.2) X ! ;
gdzie X 2 V , 2 (V [ )+ i ; 2 (V [ ) :
Dowód. 1. ( : Implikacja ta jest oczywista, gdy·z produkcje postaci (12.2) spe÷niaj ¾a warunki produkcji gramatyki kontekstowej, bo
j j = j j + j j + j j j j + 1 + j j = j j + jXj + j j = j X j :
2. ) : Niech L b ¾edzie j ¾ezykiem kontekstowym, generowanym przez gramatyk¾e kontek-stow ¾a G = (V; ; P; S): Mo·zemy za÷o·zy´c, ·ze 2 L: Zmody…kujemy gramatyk¾= e G do nowej, generuj ¾acej ten sam j ¾ezyk o produkcjach postaci (12.2). Przeprowadzimy to w 2 krokach:
1 krok. Produkcje w P zmieniamy tak, by symbole ko´ncowe wyst ¾epowa÷y tylko w produkcjach postaci X ! a; gdzie X 2 V i a 2 : Zilustrujemy t ¾e metod ¾e na przyk÷adzie, który poda nam ogóln ¾a zasad ¾e. Je´sli w P mamy np. produkcj ¾e
aXbbY ! ZadaXY;
gdzie X; Y; Z 2 V i a; b; d 2 ; to wprowadzamy nowe zmienne A; B; D (odpowiadajace symbolom ko´ncowym) i powy·zsz ¾a produkcj ¾e zamieniamy na produkcje
AXBBY ! ZADAXY;
A ! a;
B ! b;
D ! d:
Oczywiscie ta zmiana nie zmieni j ¾ezyka generowanego.
2 krok. W my´sl 1-szego kroku we wszystkich produkcjach oprócz tych o postaci X ! a wystepuj ¾a tylko zmienne. Zatem ka·zda taka produkcja ma posta´c
X1: : : Xm ! Y1: : : Yn; m n:
Je´sli m = 1 tzn. X1 ! Y1: : : Yn; n 1; to takie produkcje maj ¾a ju·z posta´c (12.2), bo mo·zemy je zapisa´c w postaci
X1 ! Y1: : : Yn
dla = = : Je´sli m 2 tzn.
(12.3) X1: : : Xm ! Y1: : : Yn; n m 2;
to t ¾e produkcj ¾e zamienimy na sko´nczony ci ¾ag 2m nowych produkcji, które b ¾ed ¾a spe÷nia´c warunek (12.2). Wprowadzamy nowe zmienneX1; : : : ;Xm i produkcj ¾e (12.3) zamieniamy na nast ¾epuj ¾ace:
1. X1: : : Xm ! X1X2: : : Xm (jest ona postaci X1 ! X1 dla = i = X2: : : Xm):
2. X1X2: : : Xm ! X1X2X3: : : Xm (jest ona postaci X2 ! X2 dla = X1 i = X3: : : Xm):
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(m-1). X1: : :Xm 2Xm 1Xm ! X1: : :Xm 2Xm 1Xm (jest ona postaci Xm 1 ! Xm 1 dla =X1: : :Xm 2 i = Xm):
(m). X1: : :Xm 2Xm 1Xm ! X1: : :Xm 1XmYm+1: : : Yn (jest ona postaci Xm ! XmYm+1: : : Yn dla =X1: : :Xm 2 i = ):
(m+1). X1: : :Xm 1XmYm+1: : : Yn ! Y1X2: : :Xm 1XmYm+1: : : Yn (jest ona postaci X1 ! Y1 dla = i =X2: : :Xm 1XmYm+1: : : Yn):
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
(2m). Y1: : : Ym 1XmYm+1: : : Yn! Y1: : : Ym 1YmYm+1: : : Yn (jest ona postaci Xm ! Ym dla = Y1: : : Ym 1 i = Ym+1: : : Yn):
Po dokonaniu tej zamiany dla ka·zdej produkcji typu (12.3) otrzymamy gramatyk¾e, która generuje ten sam j ¾ezyk i której produkcje spe÷niaj ¾a warunek (12.2).
Uwaga 12.7. Powy·zsze twierdzenie wyja´snia sens s÷owa „kontekstowy” w nazwie klasy j ¾ezyków kontekstowych, gdy·z dla dowolnego j ¾ezyka kontekstowego zawsze mo·zemy znale´z´c generuj ¾ac ¾a go gramatyk ¾e o produkcjach w których zmienne mog ¾a by´c zast ¾epowane przez pewne s÷owo ; ale tylko w kontek´scie s÷ów i
X ! :
Jednocze´snie wyja´snia to u·zycie s÷owa „bezkontekstowy” w nazwie klasy j ¾ezyków bezkon-tekstowych (bo produkcje w gramatykach je generuj ¾acych te j ¾ezyki s ¾a „bez kontekstu” tzn. s ¾a postaci
X ! ; gdzie X jest zmienn ¾a a dowolnym s÷owem.
Uwaga 12.8. Cz ¾esto gramatyki opisane w twierdzeniu nazywane s ¾a gramatykami kon-tekstowymi. Wówczas gramatyki, ktore pos÷u·zy÷y nam do de…nicji j ¾ezyków kontekstowych nazywane s ¾a gramatykami monotonicznymi.
Przyk÷ad 12.9. Za÷ó·zmy, ze dana jet gramatyka kontekstowa G = (V; ; P; S); której jedn ¾a z produkcji jest np.
aXb ! XY cZ; X; Y; Z 2 V; a; b; c 2 :
Wówczas wed÷ug metody z dowodu powy·zszego twierdzenia zamieniamy j ¾a na sko´nczon ¾a ilo´s´c produkcji typu (12.2) w 2 krokach:
1. Wprowadzamy nowe zmienne A; B; C i zamieniamy rozwa·zan ¾a produkcj ¾e na produkcje
AXB ! XY CZ;
A ! a;
B ! b;
C ! c:
2. Pierwsz ¾a produkcj ¾e zamieniamy na ci ¾ag nowych produkcji wprowadzaj ¾ac nowe zmienne
Wszystkie te produkcje s ¾a typu (12.2).
Wyka·zemy teraz zale·zno´s´c mi ¾edzy klas ¾a j ¾ezyków kontekstowych a klas ¾a j ¾ezyków rekursy-wnych.
Twierdzenie 12.10. Klasa j ¾ezyków kontekstowych zawiera si ¾e istotnie w klasie j ¾ezyków rekursywnych tzn.
JK JRK:
Dowód. 1. JK JRK: Niech L b ¾edzie j ¾ezykiem kontekstowym generowanym przez gramatyk¾e kontekstow ¾a G = (V; ; P; S): Mo·zemy za÷o·zy´c, ·ze 2 L: Poniewa·= z G jest jed-nocze´snie gramatyk ¾a frazow ¾a, wi ¾ec na mocy konstrukcji podanej w dowodzie Twierdzenia 11.22, pkt 1 istnieje maszyna Turinga akceptuj ¾aca L: Zmody…kujemy podan ¾a tam kon-strukcj ¾e, by otrzyma´c w÷a´sciw ¾a maszyna Turinga akceptuj ¾ac ¾a L: W my´sl tej konstrukcji dla danego s÷owa A; jAj = n 1 maszyna ta dzia÷a nast ¾epuj ¾aco. Na ta´smie, na prawo od s÷owa wej´sciowego A umieszcza symbol i w nast ¾epnej komórce symbol stanu pocz ¾atkowego S: Nast ¾epnie cyklicznie:
1. niedeterministycznie wybiera niepuste pods÷owo w s÷owie na prawo od symbolu ; 2. niedeterministycznie wybiera jedn ¾a z produkcji G;
3. wybran ¾a produkcj ¾e stosuje do wybranego pods÷owa (o ile to mo·zliwe), 4. porównuje otrzymane nowe s÷owo (na prawo od symbolu ) ze s÷owem A;
5. gdy porównanie w kroku 4 wypadnie pozytywnie, to maszyna Turinga przechodzi w stan ko´ncowy; w przeciwnym przypadku wraca do kroku 1.
Zmody…kujemy t ¾e maszyn ¾e Turinga w nast ¾epuj ¾acy sposób. Krok 3 zamienimy na krok 3’:
3’. wynik zastosowania wybranej produkcji zapisuje na prawo od ostatniego otrzymanego s÷owa oddzielaj ¾ac je symbolem : Oznaczmy to s÷owo przez An: Zatem otrzymywane s÷owa s ¾a zapisywane kolejno na prawo od ostatniego.
Nast ¾epnie porównuje An z wcze´sniej otrzymanymi s÷owami A1; : : : ; An 1: Je´sli porównanie wypadnie pozytywnie maszyna Turinga przechodzi w stan nieko´ncowy, w którym nie ma ruchu (zapobiega to wchodzeniu maszyny Turinga w „p ¾etl ¾e”). Je´sli negatywnie to przechodzi do kroku 4’.
4’. porównuje ostatnie otrzymane s÷owo An ze s÷owem wej´sciowym A: Je´sli porównanie wypadnie pozytywnie, to maszyna Turinga przechodzi w stan ko´ncowy. Je´sli negatywnie, to w przypadku, gdy d÷ugo´s´c s÷owa An jest wi ¾eksza ni·z d÷ugo´s´c s÷owa A; to maszyna Turinga przechodzi w stan nieko´ncowy, w którym nie ma ruchu, je´sli za´s jAnj jAj ; to przechodzi do kroku 1’.
1’. niedeterministycznie wybiera niepuste pods÷owo w ostatnim s÷owie An i przechodzi do kroku 2’identycznego z krokiem 2.
Twierdzimy, ·ze tak skonstruowana maszyna Turinga M jest w÷a´sciwa i L = L(M ): M jest w÷a´sciwa, gdy·z jA1j jA2j : : : jAnj (na mocy w÷asno´sci produkcji gramatyki kontekstowej, gdy·z mog ¾a one tylko zwi ¾eksza´c d÷ugo´s´c kolejnych s÷ów w wyprowadzeniu) i
s÷owa A1; : : : ; An s ¾a ró·zne. Istotnie, po sko´nczonej ilo´sci zastosowa´n produkcji z P albo d÷ugo´s´c otrzymanego s÷owa An b ¾edzie > jAj albo An = A (bo istnieje tylko sko´nczona ilo´s´c ró·znych s÷ów o d÷ugo´sci jAj). W obu przypadkach maszyna Turinga M zatrzymuje si ¾e.
Równo´s´c L = L(M ) wykazujemy identycznie jak w dowodzie Twierdzenia 11.22, pkt 1.
2. JK 6= JRK: Musimy znale´z´c j ¾ezyk L 2 JRK taki, ·ze L =2 JK: Konstrukcja takiego L b ¾edzie przypomina÷a konstrukcje j ¾ezykówL i LUz rozdzia÷u poprzedniego. W tym przypadku zamiast kodów maszyn Turinga u·zyjemy kodów gramatyk kontekstowych. Ograniczymy si ¾e tylko do gramatyk kontekstowych o alfabecie = f0; 1g: Ka·zdej takiej gramatyce, z zadan ¾a kolejno´sci ¾a produkcji, przypiszemy dok÷adnie jeden kod. Przed opisem tych kodów uczynimy pewne dodatkowe ustalenia. Mo·zemy za÷o·zy´c, ·ze zmienne tych gramatyk s ¾a zmiennymi z pewnego ustalonego ci ¾agu zmiennych X1; X2; : : : ; Xn; : : : (oczywi´scie dla danej gramatyki bierzemy zawsze ich sko´nczon ¾a ilo´s´c np. pocz ¾atkowe X1; X2; : : : ; Xn) i ·ze zawsze zmienna X1 jest zmienn ¾a pocz ¾atkow ¾a. Dalej b ¾edziemy zak÷ada´c ·ze zmienne danej gramatyki wyst ¾epuj ¾a istotnie w jej produkcjach (wówczas same produkcje jednoznacznie wyznaczaj ¾a zmienne).
Symbolom ko´ncowym 0 i 1 i zmiennym przypisujemy kody 0 ! 0 = 01;
1 ! 00 = 02; X1 ! 000 = 03 X2 ! 0000 = 04;
::::::::::::::
Xn! 0 : : : 0 = 0n+2; ::::::::::::::
Wówczas dowolnemu niepustemu s÷owu z÷o·zonemu ze zmiennych i symboli ko´ncowych przyp-isujemy kod z÷o·zony z kodów poszczególnych symboli przedzielonych symbolem 1 np. s÷owu 0X211X10 przypisujemy kod
010000100100100010:
Dowolnej produkcji ! ; ; 6= przypisujemy kod z÷o·zony z kodów i przedzielonych symbolami 11 np. produkcji X101 ! 0X1X21 przypisujemy kod
00010100110100010000:
Wówczas danej gramatyce kontekstowej G o niepustym zbiorze produkcji i ustalonej ich kolejno´sci np. P1; : : : ; Pkprzypisujemy jej kod AGz÷o·zony z kodów poszczególnych produkcji przedzielonych symbolami 111 np. dla gramatyki G o produkcjach: X1 ! 0X11; X1 ! 01 generuj ¾acej j ¾ezyk L = f0n1n: n 2 Ng jej kodem jest
AG= 0001101000100111000110100:
Z przyj ¾etych za÷o·ze´n o gramatykach i powy·zszej konstrukcji wynika, ·ze kod jednoznacznie okre´sla gramatyk¾e (jej zmienne, produkcje i zmienn ¾a pocz ¾atkow ¾a). Je´sli przez G oznaczymy zbiór wszystkich gramatyk kontekstowych spe÷niaj ¾acych nasze ogólne za÷o·zenia o niepusto´sci zbiorów produkcji i ustalonej ich kolejno´sci, to zbiór ich kodów jest pewnym podzbiorem A f0; 1g : S÷owom nie b ¾ed ¾acym kodami gramatyk kontekstowych przyporz ¾adkujemy pewn ¾a
„sztuczn ¾a” gramatyk¾e kontekstow ¾a G; o pustym zbiorze produkcji G; := (V; ; P; S) = (fX1g; f0; 1g; ;; X1):
Oczywi´scie L(G;) = ;:
Zatem okre´slili´smy nastepuj ¾ace przyporz ¾adkowania:
1. G 7! AG – gramatyce kontekstowej G o niepustym zbiorze produkcji i zadanej kole-jno´sci tych produkcji przypisali´smy jednoznacznie kod AG;
2. A 7! GA–ka·zdemu slowu A 2 f0; 1g przypisali´smy gramatyk¾e kontekstow ¾a GA:
Te odpowiednio´sci s ¾a wzajemnie do siebie odwrotne w zbiorze gramatyk kontekstowych o niepustym zbiorze produkcji i zadanej kolejno´sci tych produkcji tzn.
AGA = A dla A 2 A;
GAG = G dla G 2 G:
Mo·zemy teraz okre´sli´c j ¾ezyk rekursywny, który nie jest kontekstowy. De…niujemy LRK := fA 2 f0; 1g : A =2 L(GA)g:
Jest to zbiór s÷ów binarnych A takich, ·ze gramatyka kontekstowa o kodzie A; czyli GA; nie generuje s÷owa A: Oczywi´scie LRK 6= ;; bo np. wszystkie s÷owa A nie b ¾ed ¾ace kodami gramatyk kontekstowych z G nale·z ¾a doLRK (bo wtedy GA= G;; a wi ¾ec L(GA) = ;).
Wyka·zemy, ·ze
1. LRK jest j ¾ezykiem rekursywnym, 2. LRK nie jest j ¾ezykiem kontekstowym.
Ad 1. Skonstruujemy w÷a´sciw ¾a maszyn ¾e TuringaM tak ¾a, ·ze LRK = L(M):
Dzia÷anie M na s÷owie A 2 f0; 1g jest nast ¾epuj ¾ace:
1. pierwsze ruchyM to sprawdzenie, czy A jest kodem pewnej gramatyki kontekstowej o niepustym zbiorze produkcji. Je´sli nie jest, to M przechodzi w stan ko´ncowy, czyli A 2 L(M):
Wtedy oczywi´scie równie·z A 2 LRK; bo GA= G;; a wi ¾ec A =2 L(GA) = L(G;) = ;: Je´sli A jest kodem pewnej gramatyki kontekstowej o niepustym zbiorze produkcji, to powtarzamy konstrukcj ¾e maszyny Turinga podan ¾a w pierwszej cz ¾e´sci dowodu. Otrzymamy w÷a´sciw ¾a maszyn ¾e Turinga tak ¾a, ·zeLRK = L(M):
Ad 2. Przypu´s´cmy, ·ze LRK jest j ¾ezykiem kontekstowym. Zatem LRK = L(G) dla pewnej gramatyki kontekstowejG: Poniewa·z LRK 6= ;; wi ¾ecG ma niepusty zbiór produkcji.
Rozwa·zmy jej kod A 2 f0; 1g : Zatem albo A 2 LRK albo A 2 L= RK Wyka·zemy, ·ze obie mo·zliwo´sci prowadz ¾a do sprzeczno´sci. Istotnie,
(i) gdyby A 2 LRK; to z przypuszczenia A 2 L(G): Lecz z de…nicji LRK mieliby´smy A 2 L(G= AG) = L(G): Otrzymali´smy sprzeczno´s´c, a wi ¾ec ten przypadek nie jest mo·zliwy.
(ii) gdyby A 2 L= RK; to z przypuszczenia A 2 L(G): Lecz z de…nicji L= RK mieliby´smy A 2 L(GAG) = L(G): Otrzymali´smy sprzeczno´s´c, a wi ¾ec ten przypadek równie·z nie jest mo·zliwy.
Zadanie 12.11. Wykaza´c, ·ze je´sli L1; L2 s ¾a j ¾ezykami kontekstowymi, to 1. L1+ L2;
2. L1 L2; 3. L1
s ¾a j ¾ezykami kontekstowymi.
12.2. Automaty liniowo ograniczone
W rozdziale tym poznamy automaty akceptuj ¾ace j ¾ezyki kontekstowe. B ¾edzie to szczególny rodzaj maszyn Turinga tzw. automaty liniowo ograniczone. Charakteryzuj ¾a si ¾e one tym, ·ze mog ¾a w trakcie dzialania wykorzystywa´c tylko te komórki na ta´smie w których zapisane jest s÷owo wej´sciowe. Zatem w alfabecie ta´smy takiej maszyna Turinga s ¾a dwa specjalne symbole h i i, które na pocz ¾atku dzia÷ania umie´sci na pocz ¾atku i ko´ncu s÷owa i poza które g÷owica nie mo·ze przesun ¾a´c si ¾e.
Formalnie, automatem liniowo ograniczonym nazywamy maszyn ¾e Turinga M = (Q; ; ; ; s0; ; F ) o w÷asno´sciach
1. w alfabecie ta´smy s ¾a dwa dodatkowe symbole "h" i "i";
2. pocz ¾atkowe ruchy M to umieszczenie symbolu "h" na pocz ¾atku s÷owa wej´sciowego i symbolu "i" na jego ko´ncu. Nast ¾epnie g÷owica przesuwa si ¾e na pocz ¾atek s÷owa wej´sciowego
Poniewa·z ruchy te s ¾a ÷atwe do napisania, wi ¾ec podanie ich pozostawiamy czytelnikowi.
3. M nie ma ruchów przesuwaj ¾acych g÷owic ¾e w lewo od symbolu "h" i w prawo od symbolu "i" tzn. nie ma ruchów postaci
(s; h) ! (s0; h; L);
(s; i) ! (s0; i; R):
4. symbole "h" i "i" nie mog ¾a zamienia´c innych symboli ani by´c zamienione na inne z wyj ¾atkiem samych siebie tzn. w M nie istniej ¾a ruchy postaci
(s; ) ! (s0; h; K); 2 n fhg; K 2 fL; Rg;
(s; ) ! (s0; i; K); 2 n fig; K 2 fL; Rg;
(s; h) ! (s0; ; K); 2 n fhg; K 2 fL; Rg;
(s; i) ! (s0; ; K); 2 n fig; K 2 fL; Rg:
J ¾ezyk formalny L nazywamy j ¾ezykiem ALO-kontekstowym, gdy istnieje automat lin-iowo ograniczony M taki, ·ze L = L(M ):
Zbiór wszystkich j ¾ezyków ALO-kontekstowych oznaczamy przez JALO.
Na ogó÷w opisie automatów liniowo ograniczonych pomijamy pierwsze formalne ruchy umieszczaj ¾ace symbole "h" i "i" na kra´ncach s÷owa. Podajemy tylko dalsze, istotne ruchy (oczywi´scie te ostatnie nie powinny przesuwa´c g÷owic ¾e poza lewy i prawy koniec s÷owa wej´s-ciowego z wyj ¾atkiem jednej pustej komórki w lewo i w prawo).
Przyk÷ad 12.12. Maszyna Turinga skonstruowana w Przyk÷adzie 10.4 akceptuj ¾aca j ¾ezyk L = fanbn: n 2 Ng jest oczywi´scie automatem liniowo ograniczonym. Zatem L jest j ¾ezykiem ALO-kontekstowym.
Uwaga 12.13. Poniewa·z wyka·zemy dalej, ·ze j ¾ezyki ALO-kontekstowe to dok÷adnie j ¾ezyki kontekstowe, wi ¾ec wszystkie dotychczas poznane j ¾ezyki kontekstowe s ¾a jednocze´snie ALO-kontekstowe.
Uwaga 12.14. Mo·zna wykaza´c, ·ze j ¾ezykami ALO-kontekstowymi s ¾a wszystkie te j ¾ezyki, które s ¾a akceptowane przez maszyny Turinga, które w trakcie dzia÷ania zajmuj ¾a liczb ¾e komórek liniowo zale·zn ¾a od liczby komórek zaj ¾etych przez s÷owo wej´sciowe. Oznacza to, ·ze dla takiej maszyny Turinga M istniej ¾a liczby m; n 2 N takie, ·ze dla dowolnego s÷owa A maszyna Turinga M zajmie co najwy·zej m jAj + n komórek. Ten fakt jest powodem nazwania tych maszyn Turinga automatami liniowo ograniczonymi.
Uwaga 12.15. Podobnie de…niujemy niedeterministyczne i wielota´smowe automaty lin-iowo ograniczone. Nietrudno wykaza´c, ·ze przej´scie od nich do deterministycznych maszyn Turinga prowadzi rownie·z do automatów liniowo ograniczonych (nale·zy skorzysta´c z poprzed-niej Uwagi).
Zadanie 12.16. Poda´c ruchy umieszczajace symbole h i i na kra´ncach danego s÷owa A w automacie liniowo ograniczonym.
Zadanie 12.17. Skonstruowa´c automat liniowo ograniczony akceptuj ¾acy j ¾ezyk M N O _ZEN IE = f0i10j10ij : i; j 2 Ng
(zob. Przyk÷ad 11.3).
Wyka·zemy teraz podstawowy zwi ¾azek mi ¾edzy j ¾ezykami kontekstowymi i j ¾ezykami ALO-kontekstowymi.
Twierdzenie 12.18. Zachodzi równo´s´c klas j ¾ezyków JK= JALO:
Dowód. 1. JK JALO: Niech L b ¾edzie j ¾ezykiem kontekstowym generowanym przez gramatyk¾e kontekstow ¾a G = (V; ; P; S): Mo·zemy za÷o·zy´c, ·ze 2 L: Poniewa·= z G jest jed-nocze´snie gramatyk ¾a frazow ¾a, wi ¾ec na mocy konstrukcji podanej w dowodzie Twierdzenia 11.22, pkt 1 istnieje zawsze maszyna Turinga akceptuj ¾aca L: Zmody…kujemy t ¾e konstrukcj ¾e, by otrzyma´c automat liniowo ograniczony akceptuj ¾acy L: W my´sl tamtej konstrukcji dla danego s÷owa A; jAj = n 1 maszyna ta dzia÷a nast ¾epuj ¾aco. Na ta´smie, na prawo od s÷owa wej´sciowego A umieszcza symbol i w nast ¾epnej komórce symbol stanu pocz ¾atkowego S:
Nast ¾epnie cyklicznie:
1. niedeterministycznie wybiera niepuste pods÷owo w s÷owie na prawo od symbolu ; 2. niedeterministycznie wybiera jedn ¾a z produkcji G;
3. wybran ¾a produkcj ¾e stosuje do wybranego pods÷owa (o ile to mo·zliwe), 4. porównuje otrzymane nowe s÷owo (na prawo od symbolu ) ze s÷owem A;
5. gdy porównanie w kroku 4 wypadnie pozytywnie, to maszyna Turinga przechodzi w stan ko´ncowy, w przeciwnym przypadku wraca do kroku 1.
Mody…kujemy t ¾e maszyn ¾e Turinga zamieniaj ¾ac krok 5 na:
5’. gdy porównanie w kroku 4 wypadnie pozytywnie, to maszyna Turinga przechodzi w stan ko´ncowy, w przeciwnym przypadku:
(i) je´sli d÷ugo´s´c otrzymanego s÷owa jest > jAj ; to M zatrzymuje si ¾e w stanie nieko´n-cowym,
(ii) je´sli d÷ugo´s´c otrzymanego s÷owa jest jAj ; to przechodzimy do kroku 1.
Tak zmieniona M zajmie co najwy·zej 2 jAj + m komórek (dla pewnego sta÷ego m np.
równego najwi ¾ekszej d÷ugo´sci s÷owa b ¾ed ¾acego praw ¾a stron ¾a produkcji z G). Je´sli skorzystamy z Uwagi 12.14, to otrzymamy natychmiast, ·ze L jest j ¾ezykiem ALO-kontekstowym. Formal-nie, z M tworzymy jednota´smow ¾a maszyn ¾e Turinga o 2 ´scie·zkach. Symbolami jej s ¾a pary ( 1; 2); 1; 22 (s÷owem wej´sciowym jest np. (a1; )(a2; ) : : : (an; ) dla A = a1: : : an).
Tak zmieniamy ruchy maszyny Turinga M by druga ´scie·zka odzwierciedla÷a ta´sm ¾e M po symbolu . Zatem pierwszy ruch to umieszczenie symbolu stanu pocz ¾atkowego S na drugiej
´scie·zce pod pierwszym symbolem s÷owa wej´sciowego.
Nast ¾epnie stosujemy cyklicznie kroki 1,2,3,4,5’.
Otrzymamy niedeterministyczn ¾a maszyn ¾e Turinga zajmuj ¾ac ¾a tyle komórek ile s÷owo we-j´sciowe i dok÷adnie akceptuj ¾ac ¾a s÷owa z L: Zatem L jest ALO-kontekstowy.
2. JALO JK: Niech L b ¾edzie j ¾ezykiem ALO-kontekstowym i M = (Q; M; ; ; s0; ; F ) automatem liniowo ograniczonym akceptuj ¾acym L; tzn. L = L(M ): Skonstruujemy gra-matyk¾e kontekstow ¾a G = (V; G; P; S) tak ¾a, ·ze
L(G) = L(M ):
Konstrukcja G b ¾edzie mody…kacj ¾a gramatyki frazowej opisanej w dowodzie Twierdzenia 11.22, pkt 2 odpowiadaj ¾acej danej maszynie Turinga. Produkcje tamtej gramatyki frazowej by÷y podzielone na 3 cz ¾e´sci:
1. Cz ¾e´s´c pierwsza P1produkcji generowa÷a dwie kopie dowolnego s÷owa A wraz z dowoln ¾a ilo´sci ¾a pustych komórek na lewo i prawo od tych kopii.
2. Cz ¾e´s´c druga P2 produkcji odzwierciedla÷a (symulowa÷a) ruchy maszyny Turinga na drugiej kopii s÷owa A:
3. Cz ¾e´s´c trzecia P3 produkcji usuwa÷a wszystkie zb ¾edne symbole (po osi ¾agni ¾eciu stanu ko´ncowego za pomoc ¾a produkcji z P2) z wyj ¾atkiem pierwszej kopii s÷owa A:
Niektóre z tych produkcji nie by÷y typu kontekstowego np. 5,7,12. Zatem musimy je zamieni´c na inne, korzystaj ¾ac z faktu ·ze M jest automatem liniowo ograniczonym. Uzyskamy to dodaj ¾ac nowe zmienne. Mody…kacja G jest nast ¾epuj ¾aca:
1. Z cz ¾e´sci P1 eliminujemy produkcje generuj ¾ace puste komórki na lewo i prawo od kopii s÷owa wej´sciowego (bo M jest automatem liniowo ograniczonym) i dodajemy produkcje generuj ¾ace symbole h i i na kra´ncach s÷owa. Z tego ostatniego powodu musimy zwi ¾ekszy´c ilo´s´c zmiennych. Przyjmujemy symbolami h i i na kra´ncach drugiej kopii
P10 : S ! [a; hs0a]X; S ! [a; hs0ai];
X ! [a; a]X; X ! [a; ai]; a 2 G:
Zauwa·zmy, ·ze produkcje te s ¾a typu kontekstowego. Na przyk÷ad dla s÷owa A = a1a2: : : an produkcje powy·zsze wygeneruj ¾a s÷owo
SV [a1; hs0a1][a2; a2] : : : [an; ani]:
S÷owo utworzone z pierwszych elementów ka·zdej pary jest dok÷adnie s÷owem A = a1a2: : : an, a z drugich jest s÷owem s0ha1a2: : : ani b ¾ed ¾acym pocz ¾atkowym opisem chwilowym M (po formalnych ruchach M umieszczaj ¾acych symbole h i i na kra´ncach s÷owa).
2. Cz ¾e´s´c P2zamieniamy na cz ¾e´s´c P20 która odzwierciedla ruchy automatu M: Poniewa·z s ¾a one podobne do produkcji z P2 (nale·zy tylko uwzgl ¾edni´c wi ¾eksz ¾a ilo´s´c zmiennych), wi ¾ec wyp-isanie ich pozostawiamy czytelnikowi jako ´cwiczenie. Oczywi´scie s ¾a one, tak jak w przypadku produkcji w P2; typu kontekstowego.
3. Cz ¾e´s´c P3 zamieniamy na cz ¾e´s´c P30; która usuwa wszystkie zb ¾edne symbole (po osi ¾ ag-ni ¾eciu pewnego stanu ko´ncowego s 2 F ) z wyj ¾atkiem pierwszej kopii s÷owa A
[a; ] ! a; [a; h ] ! a; [a; i] ! a; [a; h i] ! a; [a; s ] ! a;
P30 : [a; sh ] ! a; [a; hs ] ! a; [a; s i] ! a; [a; si] ! a; [a; sh i] ! a;
[a; hs i] ! a; [a; h si] ! a; a 2 G; 2 ; s 2 F:
Wszystkie te produkcje s ¾a typu kontekstowego.
Podobnie jak w dowodzie Twierdzenia 11.22, pkt 2 wykazujemy, ·ze dla gramatyki G po tych mody…kacjach mamy L(G) = L(M ): Zatem L = L(M ) jest j ¾ezykiem kontekstowym.
12.3. Hierarchia Chomsky’ego j ¾ezyków
Przedstawimy teraz pewn ¾a klasy…kacj ¾e j ¾ezyków formalnych ze wzgl ¾edu na gramatyki, które je generuj ¾a.
Poznali´smy podstawowe odpowiednio´sci w teorii j ¾ezyków formalnych i automatów mi ¾edzy gramatykami, j ¾ezykami i automatami (do tych ostatnich zaliczamy maszyny Turinga). Ze wzgl ¾edu na ró·zny czas powstawania tych wszystkich poj ¾e´c nie ma jednolitej regu÷y pow-stawania ich nazw. Chomsky w roku 1959 poda÷pewn ¾a klasy…kacj ¾e j ¾ezyków ze wzgl ¾edu na gramatyki, które generuj ¾a te j ¾ezyki. Klasy…kacja i zwi ¾azane z ni ¾a nazwy przyj ¾e÷y si ¾e i nosz ¾a nazw¾e hierarchii Chomsky’ego. Wszystkie gramatyki podzieli÷na 4 kategorie: gramatyki typu 0, 1, 2 i 3. Najogólniejsze to gramatyki typu 0, a najbardziej ograniczone to gramatyki typu 3. Wszystkie typy tych gramatyk poznali´smy ju·z w trakcie wyk÷adu. Gramatyki typu 0 to gramatyki frazowe, gramatyki typu 1 to gramatyki kontekstowe, gramatyki typu 2 to
gramatyki bezkontekstowe i gramatyki typu 3 to gramatyki regularne. Dla pe÷no´sci podamy teraz jeszcze raz de…nicje tych gramatyk w hierarchii Chomsky’ego.
Gramatyk¾e G = (V; ; P; S) nazywamy:
1. typu 0, gdy jej produkcje maj ¾a posta´c
! ; 2 (V [ ) n f g; 2 (V [ ) :
Zatem w produkcjach tego typu po lewej stronie mo·ze by´c dowolne niepuste s÷owo ut-worzone ze zmiennych i symboli ko´ncowych, a po prawej dowolne s÷owo utworzone ze zmiennych i symboli ko´ncowych (np. XaY ! aY ZbSa; XY ! Z; XbY a ! itp.). S ¾a to zatem gramatyki frazowe.
2. typu 1, gdy jej produkcje maj ¾a posta´c
! ; ; 2 (V [ ) n f g; i j j 6 j j :
Zatem w produkcjach tego typu po lewej stronie mo·ze by´c dowolne niepuste s÷owo utwor-zone ze zmiennych i symboli ko´ncowych, a po prawej dowolne s÷owo utworzone ze zmien-nych i symboli ko´ncowych, ale o d÷ugo´sci wi ¾ekszej ni·z d÷ugo´s´c s÷owa (np. XaY ! aY ZbSa;
X ! Y Z; itp.). Sa to zatem gramatyki kontekstowe.
3. typu 2, gdy jej produkcje maj ¾a posta´c
X ! ; X 2 V; 2 (V [ ) : Sa to zatem gramatyki bezkontekstowe.
4. typu 3, gdy jej produkcje maj ¾a posta´c
X ! aY; Z ! b; X; Y; Z 2 V; a 2 ; b 2 [ f g:
Sa to zatem gramatyki regularne.
Zatem mo·zemy utworzy´c tabel ¾e klasy…kacji Chomsky’ego j ¾ezyków, gramatyk i odpowiada-j ¾acych im automatów.
Gramatyka Inna nazwa J ¾ezyk Automat
typu 0 GF JRP MT
typu 1 GK JK ALO
typu 2 GBK JBK AZS
typu 3 GR JR DAS, NAS,
NAS-12.4. Podsumowanie
Gramatyka kontekstowa: Jest to gramatyka frazowa G = (V; ; P; S), na pro-dukcje której narzucamy jeden dodatkowy warunek: jej propro-dukcje
! ;
( i s ¾a niepustymi s÷owami utworzonymi ze zmiennych i symboli ko´ncowych) spe÷niaj ¾a warunek
( i s ¾a niepustymi s÷owami utworzonymi ze zmiennych i symboli ko´ncowych) spe÷niaj ¾a warunek