Języki, automaty i obliczenia/Wykład 2: Gramatyka jako model obliczen. Hierarchia Chomsky'ego

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

W tym wykładzie wprowadzimy ogólne pojęcie systemu przepisującego, zdefiniujemy gramatykę, czyli szczególny typ systemu przepisującego oraz określimy cztery typy gramatyk wprowadzone przez Noama Chomsky'ego.

Kurt Goedel (1906-1978)
Zobacz biografię

Teoria języków formalnych i automatów tworzy i bada pewne modele obliczeń, można popularnie powiedzieć modele komputera, zwane automatami lub gramatykami. Jednym z głównych i ogólnych problemów wokół którego skupione są badania tej teorii jest problem możliwości i ograniczeń obliczeniowych. Początki tych rozważań sięgają lat trzydziestych ubiegłego stulecia i wiążą się z pracami K.Goedla i późniejszymi A.Turinga i A.Churcha. Równolegle do teorii automatów problematyka ta jest intensywnie badana w ramach teorii obliczalności i teorii złożoności.

W tym wykładzie wprowadzimy pierwszy z tych modeli, mianowicie gramatykę. Określimy także sposób wyprowadzenia (generowania) słowa zgodnie z regułami gramatycznymi i zdefiniujemy język opisywany przez gramatykę. Przedstawimy również podstawowe typy gramatyk wprowadzone do lingwistyki teoretycznej i później do teorii języków formalnych przez Noama Chomsky'ego, twórcę pojęcia gramatyki transformacyjno-generatywnej, co miało miejsce w roku 1957.

Alonso Church (1903-1995)
Zobacz biografię

Przez gramatykę rozumie się systematyczny opis wybranego języka naturalnego, opis, który obejmuje jego składnię (syntaktykę), znaczenie (semantykę) i fonologię, czyli dźwiękowy system języka. Reguły składni określają regularności rządzące kombinacjami słów, semantyka bada znaczenie słów i zdań, a fonologia wyróżnia dźwięki i ich dopuszczalne zestawienia w opisywanym języku.

Teoria języków formalnych bada wyłącznie syntaktyczne własności języków. Język rozumiany jest abstrakcyjnie, jako zbiór skończonych napisów. Zatem opierając się na wiadomościach z poprzedniego wykładu możemy powiedzieć, że język (formalny) L to dowolny podzbiór wolnego monoidu A*. Baza tego wolnego monoidu, czyli zbiór A to alfabet, a sam wolny monoid możemy interpretować, jako zbiór wszystkich możliwych napisów utworzonych w tym alfabecie. Na ogół język L jest właściwym podzbiorem A*, czyli składa się z pewnych tylko ("poprawnych") napisów. Wyróżniając język L zazwyczaj wprowadzamy pewne kryteria, które muszą spełniać napisy z tego języka. Dlatego o elementach języka L mówimy, że spełniają te kryteria lub że są syntaktycznie poprawne.

Jak już powiedzieliśmy teoria języków formalnych tworzy pewne modele obliczeń lub inaczej systemy opisu języków zwane gramatykami i automatami. Od tych systemów żąda się, aby spełniały warunki efektywności analitycznej i efektywności syntetycznej. Pierwszy z warunków oznacza, że system opisu prowadzi do algorytmu, który w skończonej liczbie kroków rozstrzyga, czy dowolne słowo należy, czy też nie należy do tego języka. Spełnienie warunku drugiego daje w rezultacie algorytm, który umożliwia wygenerowanie wszystkich słów danego języka.

Emil Leon Post (1897-1954)
Zobacz biografię

Gramatyka to system, którego działanie opiera się na procesie sekwencyjnego przepisywania, czyli modyfikowania pewnych napisów (słów). Przepisywanie to realizowane jest poprzez reguły przyjęte w danym systemie jako dopuszczalne. Idea ta związana jest z nazwiskami takich logików jak Axel Thue czy Emil Post. W roku 1957 Noam Chomsky, lingwista amerykański, stworzył pewien matematyczny formalizm opisu języków naturalnych zwany gramatykami generacyjnymi.

Gramatyki te opisują wybrane, najbardziej istotne cechy syntaktyczne języków, w szczególności ich strukturalne regularności.

Idee Chomsky'ego bardzo szybko przeniknęły do innych dziedzin nauki. Stworzona teoria znalazła istotne zastosowanie w badaniach nad językami programowania. Z powodzeniem gramatyki Chomsky'ego służą również do budowania modeli procesów biologicznych, czy też procesów badanych przez nauki o społeczeństwie. Teoria gramatyk rozwinęła się w wielu kierunkach, służąc jako formalny opis sekwencyjnych zmian różnorakich obiektów, takich jak, termy, grafy, obrazy, czy fraktale.

System przepisujący

Definicja 1.1

System przepisujący jest to para RS=(A,P), gdzie
A jest dowolnym skończonym zbiorem (alfabetem),
PA*×A* - skończoną relacją (zbiorem praw).

Fakt, że para (u,v)P zapisujemy, uvP i nazywamy prawem przepisywania lub produkcją w systemie RS.

Definicja 1.2

Niech RS=(A,P) będzie dowolnym systemem przepisującym, a x,yA* dowolnymi słowami.

System RS przepisuje słowo x na słowo y (generuje y z x) bezpośrednio, co oznacza się symbolem
xy,

jeśli istnieją słowa x1,x2A* oraz prawo uvP takie, że

x=x1ux2,y=x1vx2.
System RS przepisuje słowo x na słowo y (generuje y z x), co oznacza się symbolem
x*y,
jeśli istnieją słowa w0,w1,,wkA* oraz k0 takie, że
w0=x,wk=y,wiwi+1dlai=0,1,...k1.

Bezpośrednie wyprowadzenie jest relacją na wolnym monoidzie A*, a wyprowadzenie * zwrotnym i przechodnim domknięciem tej relacji.

Ciąg (w0,w1,,wk) nazywamy wyprowadzeniem lub wywodem w systemie RS. Liczba k określa długość wyprowadzenia. Wyprowadzenie oznacza się także następująco:
w0w1...wk.
Plik:Ja-lekcja2-w-rys1
Rysunek 1

Przykład 1.1

Niech RS=({a,b,c},{(ba,ab),(ca,ac),(cb,bc)}) będzie systemem przepisującym. W systemie RS słowo aabbcc można wyprowadzić ze słowa cabbac (rysunek 1).

Rozważa się systemy przepisujące generujące lub rozpoznające język.

Definicja 1.3

Niech RS=(A,P) będzie dowolnym systemem przepisującym, a I dowolnym, ustalonym podzbiorem A*.

  • językiem generowanym przez RS nazywamy zbiór
Lgen(RS,I)={wA*:x*w,xI},
  • językiem rozpoznawanym przez RS nazywamy zbiór:
Lacc(RS,I)={wA*:w*x,xI},

Przykład 1.2

Jeśli w przykładzie 1.1 (patrz przykład 1.1.) przyjmiemy I={cab}, to

Lgen(RS,I)={abc,acb,cab}Lacc(RS,I)={cab,cba}


Axel Thue (1863-1922)
Zobacz biografię

Gramatyka, której definicję teraz wprowadzimy, jest szczególnym systemem Thuego. Można powiedzieć, że jest to system Thuego tak określony, aby poprzez wskazanie jedynie poprawnych sposobów generowania napisów definiować język. Gramatyka to jedno z najważniejszych pojęć teorii języków formalnych. Używany poniżej, dla

uA*

i

BA

, symbol

#Bu

oznacza liczbę wystąpień liter z alfabetu

B

w słowie

u

.

Definicja 1.4

Gramatyka jest to system G=(VN,VT,P,v0), w którym

VN - skończony zbiór symboli nieterminalnych (alfabet nieterminalny),

VT - skończony zbiór symboli terminalnych (alfabet terminalny),

P(VNVT)+×(VNVT)* - skończona relacja, zbiór produkcji (praw),

v0VN - symbol początkowy (startowy).

Ponadto zakładamy, że VNVT= i dla każdego (u,v)P#VNu1.

A zatem w gramatyce alfabety terminalny i nieterminalny są rozłącznymi zbiorami, a słowo u występujące po lewej stronie produkcji zawiera co najmniej jeden symbol nieterminalny. Fakt, że para (u,v)P, zapisujemy:
uvP lub uGv.

Wykorzystujemy też zdefiniowane dla systemów przepisujących pojęcia generowania bezpośredniego i generowania *.

Definicja 1.5

Językiem generowanym przez gramatykę G=(VN,VT,P,v0) nazywamy zbiór:

L(G)={xVT*:v0G*x}.

Łatwo zauważyć, że pomiędzy językiem a generującą go gramatyką nie ma odpowiedniości wzajemnie jednoznacznej. Dany język może być generowany przez wiele gramatyk, czasem o bardzo różnej strukturze i własnościach. Stąd potrzeba wprowadzenia pojęcia równoważności językowej dla gramatyk.

Definicja 1.6

Gramatyki G1 i G2równoważne (językowo) wtedy i tylko wtedy, gdy L(G1)=L(G2).

Przykład 1.3

(1) Gramatyka G1=(VN,VT,P,v0), w której VN={v0},VT={a},P={v0v0a,v0a} generuje język
L(G1)={an:n=1,2,...}.
(2) Gramatyka G2=(VN,VT,P,v0), w której VN={v0},VT={a},P={v0v0v0,v0a} generuje język
L(G2)={an:n=1,2,...}.
(3) Gramatyka G3=(VN,VT,P,v0), w której VN={v0,v1,w,w1,w2,z,z1,z2,z3},VT={a,b,c},
P={v0v0z1,v0v1z1,v1aw1,v1av1w1,w1z1w1z3,w1z3wz3,wz3wz,w1ww1w2,w1w2ww2,z2zz1z,ww2ww1,zz1z2z1,z2z1z2z,wb,zc}
generuje język
L(G3)={anbncn:n=1,2,...}.
(4) Gramatyka G4=(VN,VT,P,v0), w której VN={v0,v1,v2},VT={a,b,c},
P={v0abc,v0av1bc,v1bbv1,v1cv2bcc,bv2v2b,av2aav1,av2aa}
generuje język
L(G4)={anbncn:n=1,2,...}.

Gramatyki G1 i G2 są równoważne. Równoważne również są gramatyki G3 i G4.

Klasyfikacja Chomsky'ego

Wprowadzimy teraz cztery typy gramatyk określonych, jak powiedziano już wcześniej, przez Noama Chomsky'ego.

Definicja 2.1

Gramatyka G=(VN,VT,P,v0) jest typu (i) dla i=0,1,2,3 wtedy i tylko wtedy, gdy spełnia następujące warunki:

typ(0): każda gramatyka, czyli system spełniajacy definicję 1.4 (patrz definicja 1.4.)
typ(1): kontekstowa, czyli gramatyka, w której każde prawo ze zbioru P ma postać
u1vu2u1xu2,
gdzie u1,u2(VNVT)*,vVN,x(VNVT)+ lub
v01,
przy czym, jeśli v01P, to v0 nie występuje po prawej stronie w żadnym prawie z P,
typ (2): bezkontekstowa, czyli gramatyka, w której każde prawo ze zbioru P ma postać
vx,
gdzie vVN,x(VNVT)*,
typ (3): regularna, czyli gramatyka, w której każde prawo ze zbioru P ma postać
vvxlubvx,
gdzie v,vVN,xVT*.

Przykład 2.1

Gramatyki z przykładu 1.3 (patrz przykład 1.3.) są odpowiednio

(1) G1 - typu (3)
(2) G2 - typu (2)
(3) G3 - typu (1)
(4) G4 - typu (0)

Natomiast język L(G1)=L(G2) jest typu (3),
język L(G3)=L(G4) jest typu (1).

W oparciu o wprowadzone typy gramatyk określamy odpowiadające im rodziny (klasy) języków, oznaczając przez

𝟎: - rodzinę wszystkich języków typu 0,
𝟏: - rodzinę wszystkich języków typu 1, czyli języków kontekstowych,
𝟐: - rodzinę wszystkich języków typu 2, czyli języków bezkontekstowych,
𝟑: - rodzinę wszystkich języków typu 3, czyli języków regularnych.

Pomiędzy wprowadzonymi rodzinami języków zachodzą następujące zależności:

𝟑/𝟐/𝟏/𝟎

Inkluzje pierwsza i trzecia wynikają bezpośrednio z definicji odpowiednich klas języków, a więc z definicji gramatyk regularnej i bezkontekstowej oraz kontekstowej i typu (0). Natomiast fakt, że 𝟐𝟏 udowodnimy później. Podobnie z dalszych rozważań wynika, że powyższe inkluzje są właściwe.

Noam Avram Chomsky (1928-)
Zobacz biografię

Gramatyki spełniają warunek efektywności syntetycznej. Systemami, które realizują warunek efektywności analitycznej, są automaty. Automaty działają w ten sposób, iż pod wpływem zewnętrznego sygnału zmieniają swój stan. W efekcie tej zmiany rozpoznają bądź nie ciągi takich sygnałów reprezentowane przez słowa. Zatem działanie automatu polega na testowaniu kolejno słów z

A*

i określaniu, które z nich są rozpoznawane (spełniają określone kryteria), a które nie są rozpoznawane. Ogół słów rozpoznanych przez automat tworzy język rozpoznawany przez ten automat. Dla każdej z określonych powyżej rodzin języków, w sensie Chomsky'ego określa się odpowiadającą jej rodzinę automatów.

Język L jest typu (i) dla i=0,1,2,3 wtedy i tylko wtedy, gdy jest rozpoznawany przez jakiś automat z odpowiedniej rodziny. Definicje automatów i ich własności wprowadzane będą sukcesywnie przy prezentowaniu poszczególnych rodzin języków.