Języki i gramatyki bezkontekstowe

Transkrypt

Języki i gramatyki bezkontekstowe
Hierarchia Chomsky‘ego
Gramatyki nieograniczone
Def. Gramatyką nieograniczoną (albo typu 0) nazywamy
uporządkowaną czwórkę G=<V,Σ,P,S> gdzie:
% Σ - skończony alfabet symboli końcowych (alfabet, nad
którym tworzymy język),
% V - skończony alfabet zmiennych gramatyki, rozłączny z
Σ,
% P - skończony zbiór reguł produkcji, tj napisów postaci
β#γ, gdzie β*(V(Σ)+, γ*(V(Σ)*,
% wyróżniona
zmienna
S
nazywana
symbolem
początkowym.
A zatem słowo αGβ dla α,β*V* (słowo β daje się
wyprowadzić w jednym kroku z α), gdy α=xyz i β=xsz dla
pewnych słów s,x,y,z*(V(Σ)* oraz y#s jest regułą produkcji.
Tradycyjnie przez G* oznaczymy domknięcie zwrotnoprzechodnie relacji G.
Def.
Językiem
generowanym
przez
nieograniczoną G jest zbiór:
L(G) = {w*Σ*: S*G w}.
gramatykę
Def. Języki generowane przez gramatyki nieograniczone
nazywamy językami rekurencyjnie przeliczalnymi (RP).
1
Twierdzenie. Dla każdego alfabetu Σ istnieje język nie
należący do klasy rekurencyjnie przeliczalnych.
Dowód. Jest to prosty wniosek z twierdzenia o
nieopisywalności wszystkich języków. Wystarczy zauważyć,
że każdą gramatykę nieograniczoną można prosto zakodować
używając np. alfabetu Γ=Σ({‘,’,1,’(‘,’)’,A,#}.
Gramatyki kontekstowe
Przypuśćmy, że na produkcje α#β gramatyki typu 0
nałożymy warunek, że β ma być co najmniej tak długie, jak α.
Wtedy gramatykę tę nazywamy gramatyką kontekstową, a
generowany przez nią język – językiem kontekstowym (CS).
Def. Gramatyką kontekstową nazywamy gramatykę typu 0,
w której:
% dla każdej reguły α#β zachodzi warunek |α|"|β| (reguły są
nieskracające),
% celem
umożliwienia wyprowadzenia słowa pustego
dopuszczamy istnienie jednego wyjątku w postaci reguły
pustej S#ε (S jest symbolem początkowym), o ile S nie
występuje w prawej stronie żadnej reguły.
Fakt. Każdą gramatykę kontekstową można algorytmicznie
sprowadzić do postaci normalnej, w której wszystkie reguły
(być może poza pustą) są postaci α1Aα2#α1βα2, przy czym
β&ε oraz α1,β,α2*(V(Σ)*.
2
Produkcje w postaci normalnej wyglądają jak produkcje
bezkontekstowe, których możliwość zastosowania jest
warunkowana wystąpieniem po obu stronach zmiennej A słów
α1 i α2. (lewy i prawy kontekst). Gramatyka bezkontekstowa
w postaci normalnej jest więc gramatyką kontekstową z
kontekstami pustymi.
Twierdzenie. Problem słowa dla języków kontekstowych jest
rozstrzygalny.
Dowód.
Jeśli w=ε, to wystarczy sprawdzić istnienie reguły S#ε. W
przeciwnym razie w digrafie o wierzchołkach α*(Σ(V)+ z |α|
"|w| i łukach zgodnych z relacją αGβ sprawdzamy istnienie
drogi z wierzchołka S do w (jest ona wyprowadzeniem słowa
w).
Twierdzenie. Problemy pustości i skończoności są dla
języków kontekstowych nierozstrzygalne.
Dowody niebawem ...
Prawie każdy język, jaki możemy sobie wyobrazić, jest
językiem kontekstowym.
Przykład.
Gramatyka kontekstowa dla języka L={anbncn:n*N}
3
Mamy więc Σ={a,b,c} oraz V={S,B,C,F} oraz reguły:
(1) S#aSF, (2) S#aF, (3) F#BC,
(4) CB#BC,
(5) aB#ab, (6) bB#bb,
(7) bC#bc, (8) cC#cc
Wyprowadzenie dowolnego słowa z L:
(n -1)
(n)
(n -1)n/2
S ─(1)
──
─# a n-1SF n-1 ─(2)
─
─# a n F n ─(3)
──
# a n (BC) n ─(4)
──
─#
(5)
(6)(n-1)
(7)
(8)(n-1)
n n n
n
n-1 n
n n n
n n
n! 1
a B C ──
─# a bB C ── ─
─# a b C ──
─# a b cC ── ─
─# a n b n c n
Należy jeszcze pokazać, że gramatyka nie tworzy żadnych
innych słów nad Σ.
Rozważmy wyprowadzenie słowa. Możemy zauważyć że na
pewno należy po regule (1) zastosować (2), gdyż inaczej nie
zniknie zmienna S. Tyle ile razy zastosowaliśmy reguły (1) i
(2), trzeba zastosować regułę (3) celem zlikwidowania
zmiennej F. Teraz jedyną szansą na usunięcie zmiennych B i C
jest ich zamiana na b i c odpowiednio regułami (5),...,(8) –
wśród nich oczywiście pierwsza zostanie zastosowana (5),
generująca pierwszą literę różną od a. Równolegle można
stosować regułę (4) przemieszczającą zmienne B w lewo i C
w prawo. Należy zauważyć, że ewentualne pierwsze
wygenerowanie przedrostka postaci anbmc..., gdzie n>m
oznacza, że w dalszej części frazy istnieje zmienna B, której w
żaden sposób nie da się zamienić na literę.
4
Automaty liniowo ograniczone
Automatem liniowo ograniczonym (LBA) nazywamy pewną
modyfikację
niedeterministycznego
dwukierunkowego
automatu skończonego, który może w trakcie chodzenia po
taśmie zapisywać dodatkowe symbole pomocnicze w
odwiedzanych komórkach.
+ S ł o w o ,
Automat
Automat posiada zestaw dodatkowych symboli Γ rozłączny
z Σ i zawierający ograniczniki.
% Początkowo stawiamy automat na pierwszej komórce taśmy
wejściowej.
% Automat może "podróżować" po taśmie dowolnie długo,
może też z niej spaść.
% Akceptacja słowa następuje wtedy, gdy maszyna może
trafić w trakcie drogi do stanu akceptującego.
% W każdym ruchu automat może zastąpić oglądany właśnie
symbol innym z Σ(Γ tj. formalnie funkcja przejścia jest
funkcją
częściową
postaci:
δ:Q$(Σ(Γ)#
Pfin(Q${Lewo,Stój,Prawo}$(Σ(Γ)). W stanie q widząc
symbol a automat niedeterministycznie wybiera z δ(q,a)
trójkę postaci: (nowy stan, kierunek ruchu na taśmie,
symbol pozostawiany w opuszczanej komórce). Można
przyjąć, że ograniczniki są "niezamazywalne".
%
5
% Klasa języków kontekstowych = klasa języków
akceptowanych przez automaty liniowo ograniczone.
% Gramatyki kontekstowe i automaty liniowo ograniczone
możemy traktować jak równoważne opisy języków
kontekstowych i efektywnie tłumaczyć jeden zapis na drugi.
Właściwości zamkniętości języków
kontekstowych
Twierdzenie. Klasa języków kontekstowych jest efektywnie
zamknięta na operacje teoriomnogościowe (,',c.
Dowód.
Suma – mając dane gramatyki G1 i G2 w postaci
normalnej o rozłącznych zbiorach zmiennych tworzymy
nową dodając symbol początkowy S i produkcje S#S1,
S#S2.
% Dopełnienie – trudny (oparty na automacie), więc
pomijamy ...
%
Przekrój - L'M=((Lc)((Mc))c
%
6
Hierarchia Chomsky‘ego
Cztery klasy języków, generowane przez gramatyki klasy 0 o
coraz słabszych ograniczeniach (nazywane odpowiednio
językami typu 3, 2, 1, 0):
% języki regularne (Reg) – gramatyki lewostronnie liniowe
(A#w lub A#wB, gdzie w*Σ* i A,B*V)
% języki bezkontekstowe (CF) – gramatyki bezkontekstowe
(A#γ, gdzie A*V a γ*(V(Σ)*),
% języki kontekstowe (CS) – gramatyki kontekstowe (α#β,
gdzie α,β*(V(Σ)+, |α|"|β|, ew. S#ε),
% języki
rekurencyjnie
przeliczalne
–
gramatyki
nieograniczone (α#β, gdzie α*(V(Σ)+, β*(V(Σ)*).
Def. Powyższe cztery klasy języków są nazywane hierarchią
Chomsky‘ego, który zdefiniował te klasy jako potencjalne
modele dla języków naturalnych
Twierdzenie o hierarchii. Dla każdego alfabetu Σ o co
najmniej dwóch literach zachodzi:
Reg ) CF ) CS ) RP
przy czym każda z inkluzji jest właściwa.
Dowód. Zachodzenie inkluzji jest oczywiste, bowiem każda
gramatyka klasy wcześniejszej (ew. w postaci normalnej) jest
gramatyką klasy późniejszej. Zawierania są ścisłe, bowiem
znamy przykłady języków bezkontekstowych nieregularnych
oraz kontekstowych niebezkontekstowych. Przykładem języka
rekurencyjnie przeliczalnego niekontekstowego będzie język z
nierozstrzygalnym problemem słowa.
7
Klasy języków:
Klasa
Języki
regularne
Języki
Języki
Języki
bezkontekstowe kontekstowe rekurencyjnie
przeliczalne
Typ
3
2
1
0
Rodzaj
Gramatyka
Gramatyka
Gramatyka Gramatyka
gramatyki liniowa
bezkontekstowa kontekstowa nieograniczona
Typ
Deterministyczny Niedeterm.
Niedeterm. Deterministyczna
maszyny
automat
automat ze
automat
maszyna
akceptującej skończony
stosem
liniowo
Turinga
ograniczony
Zamkniętość klas na operacje:
”-” oznacza, że klasa nie jest zamknięta na operację, ”+” - że jest i można tę operację
przeprowadzić efektywnie.
Języki
regularne
Suma (
Przekrój '
Dopełnienie c
+
+
+
Języki
Języki
Języki
bezkontekstowe kontekstowe rekurencyjnie
przeliczalne
+
+
+
+
+
+
-
Problemy decyzyjne:
”+” oznacza rozstrzygalność, ”-” - nierozstrzygalność
Problemy:
Słowa
Pustości
Skończoności
Zawierania
języków
Równości
języków
Języki
regularne
+
+
+
+
+
Języki
Języki
Języki
bezkontekstowe kontekstowe rekurencyjnie
przeliczalne
+
+
+
+
-
-
-
8

Podobne dokumenty