Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vztah bezkontextových jazyků a ZA Věta: Nechť G=(N,T,P,S) je bezkontextová gramatika. Potom můžeme zkonstruovat zásobníkový automat M takový, že L(M)=L(G).

Podobné prezentace


Prezentace na téma: "Vztah bezkontextových jazyků a ZA Věta: Nechť G=(N,T,P,S) je bezkontextová gramatika. Potom můžeme zkonstruovat zásobníkový automat M takový, že L(M)=L(G)."— Transkript prezentace:

1 Vztah bezkontextových jazyků a ZA Věta: Nechť G=(N,T,P,S) je bezkontextová gramatika. Potom můžeme zkonstruovat zásobníkový automat M takový, že L(M)=L(G). Důkaz: konstrukcí nedeterministického zásobníkového automatu Z gramatiky G sestrojíme automat M=({q}, , , ,q 0,Z 0,Ø) tak, že  =T,  =N  T, q 0 =q, Z 0 =S, a přechodové zobrazení je definováno následovně: 1) Je-li A   pravidlo z P, potom  (q,e,A) obsahuje (q,  ) 2)  (q,a,a) = {(q, e)} pro všechna a  T

2 Vztah bezkontextových jazyků a ZA Příklad: Nechť G=({E,T,F},{+,*,(,),a},P,E), kde P = { E  E+T | T T  T*F | F F  (E) | a } Odpovídající zásobníkový automat M takový, že L(M)=L(G): M=({q},{+,*,(,),a}, {+,*,(,),a,E,T,F}, ,q,E,Ø), přičemž  (q,e,E) = {(q, E+T), (q,T)}  (q,e,T) = {(q, T*F), (q,F)}  (q,e,F) = {(q, (E)), (q,a)}  (q,x,x) = {(q, e)} pro všechna x  {+,*,(,),a}

3 Vztah bezkontextových jazyků a ZA Pro vstupní řetězec a+a*a může automat M vykonat následující posloupnost přechodů: (q, a+a*a,E) (q, a+a*a,E+T) (q, a+a*a,T+T) (q, a+a*a,F+T) (q, a+a*a,a+T) (q, +a*a,+T) (q, a*a,T) (q, a*a,T*F) (q, a*a,F*F) (q, a*a,a*F) (q, *a,*F) (q, a, F) (q, a, a) (q, e, e) Jde o analogii odvození: E  E+T  T+T  F+T  a+T  a+T*F  …..  a+a*a              

4 Vztah bezkontextových jazyků a ZA Z ilustrativního příkladu je zřejmá činnost automatu Nejprve se na zásobníku vytváří generuje příslušná větná forma a následně při kontrole se vstupním slovem dochází k mazání shodných terminálů ze zásobníku Jedná se o takzvanou syntaktickou analýzu metodou shora-dolů, protože od startovacího symbolu gramatiky vytváříme postupně levou derivaci příslušného řetězce Lze vytvořit i automat pracující metodou zdola-nahoru,kdy se z řetězce postupnými redukcemi dostáváme zpět k startovnímu symbolu

5 Vztah bezkontextových jazyků a ZA Příklad: Vytvořte zásobníkový automat M ke gramatice G=({S 1, S 2 },{a, b, if, then, else}, P, S 1 ) P={S 1  if b then S 1 | if b then S 2 else S 1 | a S 2  if b then S 2 else S 2 | a } takový, že L(M)= L(G).

6 Vztah bezkontextových jazyků a ZA Věta: Nechť M=(Q, , , ,q 0,Z 0,F) je zásobníkový automat. Potom existuje bezkontextová gramatika G=(N,T,P,S) taková, že L(M)=L(G). Důkaz: konstrukcí bezkontextové gramatiky Z automatu sestrojujeme gramatiku tak, že množina neterminálů využívá symbolů [qZp], kde q, p  Q a Z  a nový symbol S. Tím se částečně zakódují jednotlivé konfigurace (aktuální stav, stav zásobníku, nový stav) a podle tvaru přechodového zobrazení a vstupního symbolu se vytvoří pravidla (viz např. Češka 2002)

7 Vztah bezkontextových jazyků a ZA Shrnutí: Tvrzení L je jazyk generovaný bezkontextovou gramatikou L je jazyk přijímaný zásobníkovým automatem (koncovým stavem) L je jazyk přijímaný zásobníkovým automatem prostřednictvím vyprázdnění zásobníku jsou vzájemně ekvivalentní.

8 Vlastnosti bezkontextových jazyků Pumping lemma pro bezkontextové jazyky Věta: Pro každý bezkontextový jazyk L existují takové konstanty p,q  N, že libovolné slovo w  L, pro které platí |w|>p, je možné vyjádřit ve tvaru w=x 1 y 1 v y 2 x 2, kde 1. |y 1 v y 2 |  q 2. y 1 y 2  e 3. x 1 y 1 i v y 2 i x 2  L pro každé i  0.

9 Vlastnosti bezkontextových jazyků Nástin důkazu: Pokud je v odpovídající gramatice G n neterminálů, zvolíme konstanty p=2 n a q=2 n+1 Potom nejdelší cesta v příslušném derivačním stromu obsahuje alespoň n+2 vrcholů.Jelikož poslední symbol je terminál, bude tam alespoň n+1 neterminálů => nejméně jeden se zde vyskytuje 2x Vyjádřeno pomocí odvození: S  * x 1 Ax 2  + x 1 y 1 A y 2 x 2  + x 1 y 1 v y 2 x 2 to ale znamená, že v gramatice G lze provést i derivace S  * x 1 y 1 i v y 2 i x 2 pro každé i  0

10 Vlastnosti bezkontextových jazyků Grafické znázornění důkazu: x 1 y 1 v y 2 x 2 A A A S

11 Vlastnosti bezkontextových jazyků Grafické znázornění důkazu: x 1 y 1 y 2 x 2 y 1 v y 2 A A A S A

12 Pumping lemma - využití Jde o analogickou větu k pumping lemmatu pro regulární jazyky Analogické je i využití – k důkazu, že určitý jazyk není bezkontextový. Tvrzení: Jazyk L = {a i b i c i |i  1} není bezkontextový. Důkaz: Pro důkaz sporem předpokládejme,že zadaný jazyk je bezkontextový.

13 Pumping lemma - využití Potom dle pumping lemmatu musí existovat přirozená čísla p, q taková, že pro každé slovo w jazyka L, pro které platí |w|>p, je možné toto slovo vyjádřit ve tvaru w=x 1 y 1 v y 2 x 2, kde 1. |y 1 v y 2 |  q 2. y 1 y 2  e 3. x 1 y 1 i v y 2 i x 2  L pro každé i  0. Zvolíme-li k>p/3, potom slovo a k b k c k má dostatečnou délku a lze jej napsat ve výše uvedeném tvaru. Jelikož y 1 y 2  e, alespoň jedno y i je neprázdné a obsahuje nejméně jedno písmenko.

14 Pumping lemma - využití Pokud neprázdné y i obsahuje různá písmenka, bude při iteraci docházet k porušování pořadí písmen ve slově x 1 y 1 i vy 2 i x 2 a výsledné slovo nebude patřit do L. Odtud je zřejmé, že neprázdné y i může obsahovat tedy pouze jediné písmenko či více písmen stejného typu. Potom ovšem při iteraci bude růst počet těchto písmen ve slově x 1 y 1 i vy 2 i x 2 (respektive může růst i počet dvou různých písmen za předpokladu,že obě slova y i jsou neprázdná) a výsledné slovo opět nebude patřit do L. Tím dostáváme spor s předpokladem, že L je bezkontextový.

15 Vlastnosti bezkontextových jazyků Věta: Nechť L 1 a L 2 jsou bezkontextové jazyky. Potom L 1  L 2 je také bezkontextový jazyk. Důkaz: Nechť G 1 = (N 1,T,P 1,S 1 ) a nechť G 2 = (N 2,T,P 2,S 2 ). Lze předpokládat (nebo přejmenováním zajistit) N 1  N 2 =Ø Potom lze velmi jednoduše sestrojit gramatiku G=(N,T,P,S) takovou,že N = N 1  N 2  {S}, kde S je nový symbol (S  N 1 a S  N 2 ) a P = P 1  P 2  {S  S 1, S  S 2 }

16 Vlastnosti bezkontextových jazyků Věta: Třída bezkontextových jazyků není uzavřena vůči operaci průnik. Důkaz: Pro důkaz sporem předpokládejme uzavřenost na průnik. Nechť L 1 = {a i b j c k |i,j,k  0, i=j} a nechť L 2 = {a i b j c k |i,j,k  0, j=k}. Potom L 1  L 2 = {a i b i c i |i  0} by byl také bezkontextový jazyk, čímž se dostáváme do sporu, protože tento jazyk bezkontextový není.

17 Deterministické bezkontextové jazyky V předcházející části jsme ukázali, že ke každé bezkontextové gramatice lze sestrojit zásobníkový automat, který daný jazyk přijímá. Takový automat lze považovat za syntaktický analyzátor příslušného jazyka. Problémem je, že takto zkonstruovaný analyzátor je obecně nedeterministický a jeho praktické využití je tedy omezené. Z hlediska praxe jsou důležité tzv. deterministické bezkontextové jazyky, které lze analyzovat deterministickými syntaktickými analyzátory.

18 Deterministický zásobníkový automat DEF: Deterministický zásobníkový automat M je sedmice M=(Q, , , ,q 0,Z 0,F), kde Q je konečná množina vnitřních stavů automatu  je konečná množina vstupních symbolů  je konečná množina zásobníkových symbolů  je přechodová funkce  : Qx(  {e})x   Qx  * taková, že buď pro každé a  obsahuje  (q,a,Z) nejvýše jeden prvek a  (q,e,Z)=Ø, nebo  (q,a,Z)=Ø pro všechna a  a  (q,e,Z) obsahuje nejvýše jeden prvek q 0 je počáteční stav automatu (q 0  Q) Z 0 je počáteční zásobníkový symbol (Z 0  ) F je množina koncových stavů (F  Q)

19 Deterministický zásobníkový automat Poznámka: Pokud uvažujeme deterministický zásobníkový automat, můžeme namísto  (q,a,Z)={(p,W)} psát pouze  (q,a,Z)=(p,W) Poznámka: Na rozdíl od konečných automatů, kde lze dokázat,že nedeterminismus nerozšiřuje schopnosti automatu rozpoznávat širší třídu jazyků, v případě zásobníkových automatů platí, že ne každý jazyk přijímaný zásobníkovým automatem může být přijímán deterministickým zásobníkovým automatem. Obecný algoritmus převodu nedeterministického zásobníkového automatu na deterministický neexistuje!!

20 Deterministické bezkontextové jazyky DEF: Jazyk L se nazývá deterministický bezkontextový jazyk, jestliže existuje deterministický zásobníkový automat, který jazyk L přijímá. Tvrzení: Třída deterministických bezkontextových jazyků (DBJ) je vlastní podtřídou jazyků bezkontextových DBJ 3

21 Deterministické bezkontextové jazyky Příklad: Navrhněte deterministický zásobníkový automat přijímající jazyk L={wcw R | w  {a,b} + }. Řešení: ukládej postupně symboly na zásobník a po přečtení středového symbolu c porovnávej vstupní symboly se symboly postupně umazávanými ze zásobníku M=({q 0,q 1,q 2 }, {a,b,c}, {Z,a,b}, , q 0, Z, {q 2 })  (q 0,X,Y)= (q o,XZ) pro všechna X  {a,b} a Y  {Z,a,b}  (q 0,c,Y)= (q 1,Y) pro všechna Y  {a,b}  (q 1,X,X)= (q 1,e) pro všechna X  {a,b}  (q 1,e,Z)= (q 2,e)

22 Deterministické bezkontextové jazyky Shrnutí: Deterministické bezkontextové jazyky tvoří sice vlastní podmnožinu všech bezkontextových jazyků, ale na straně druhé je jejich menší obecnost výhodou z hlediska implementace procesu syntaktické analýzy. 1. Odpovídající syntaktický analyzátor je efektivní (pracuje v čase omezeném lineárně a lineárně omezenou pamětí) 2. Syntaktická analýza je realizována jednoduchým algoritmem pracujícím nad určitými tabulkami, které se vytvoří na základě znalosti gramatiky 3. Jelikož pracuje bez návratů, usnadňuje se lokalizace syntaktických chyb

23 Závěrečné opakování Příklad: Navrhněte automat sledující vstupy a výstupy z budovy, který kontroluje, zda v budově nikdo nezůstal. Příklad: Napište gramatiku generující příslušný jazyk. Příklad: Navrhněte automat přijímající jazyk L={w| w  {0,1} +, w obsahuje právě o dvě 0 více než 1} Lze výše uvedené automaty navrhnout jako deterministické zásobníkové automaty?


Stáhnout ppt "Vztah bezkontextových jazyků a ZA Věta: Nechť G=(N,T,P,S) je bezkontextová gramatika. Potom můžeme zkonstruovat zásobníkový automat M takový, že L(M)=L(G)."

Podobné prezentace


Reklamy Google