Vztah bezkontextových jazyků a ZA

23
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, =NT, 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 aT

description

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 - PowerPoint PPT Presentation

Transcript of Vztah bezkontextových jazyků a ZA

Page 1: Vztah bezkontextových jazyků a ZA

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 automatuZ gramatiky G sestrojíme automat M=({q},,,,q0,Z0,Ø)

tak, že =T, =NT, q0=q, Z0=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 aT

Page 2: Vztah bezkontextových jazyků a ZA

Vztah bezkontextových jazyků a ZA

Příklad: Nechť G=({E,T,F},{+,*,(,),a},P,E), kdeP = { 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}

Page 3: Vztah bezkontextových jazyků a ZA

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

Page 4: Vztah bezkontextových jazyků a ZA

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

Page 5: Vztah bezkontextových jazyků a ZA

Vztah bezkontextových jazyků a ZA

Příklad: Vytvořte zásobníkový automat M ke gramatice

G=({S1, S2},{a, b, if, then, else}, P, S1)

P={S1 if b then S1 | if b then S2 else S1 | a

S2 if b then S2 else S2 | a }

takový, že L(M)= L(G).

Page 6: Vztah bezkontextových jazyků a ZA

Vztah bezkontextových jazyků a ZA

Věta: Nechť M=(Q,,,,q0,Z0,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é gramatikyZ automatu sestrojujeme gramatiku tak, že množina

neterminálů využívá symbolů [qZp], kde q, pQ 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)

Page 7: Vztah bezkontextových jazyků a ZA

Vztah bezkontextových jazyků a ZA

Shrnutí:

Tvrzení

L je jazyk generovaný bezkontextovou gramatikouL 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í.

Page 8: Vztah bezkontextových jazyků a ZA

Vlastnosti bezkontextových jazyků

Pumping lemma pro bezkontextové jazyky

Věta: Pro každý bezkontextový jazyk L existují takové konstanty p,qN, že libovolné slovo wL, pro které platí |w|>p, je možné vyjádřit ve tvaru

w=x1y1v y2x2 ,

kde1. |y1v y2|q

2. y1y2e

3. x1y1iv y2

ix2 L pro každé i0.

Page 9: Vztah bezkontextových jazyků a ZA

Vlastnosti bezkontextových jazyků

Nástin důkazu:Pokud je v odpovídající gramatice G n neterminálů, zvolíme konstanty p=2n a q=2n+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 2xVyjádřeno pomocí odvození:

S * x1Ax2 + x1y1A y2x2 + x1y1v y2x2

to ale znamená, že v gramatice G lze provést i derivace S * x1y1

iv y2ix2 pro každé i0

Page 10: Vztah bezkontextových jazyků a ZA

Vlastnosti bezkontextových jazyků

Grafické znázornění důkazu:

x1 y1 v y2 x2

A

A

A

S

Page 11: Vztah bezkontextových jazyků a ZA

Vlastnosti bezkontextových jazyků

Grafické znázornění důkazu:

x1 y1 y2 x2

y1 v y2

A

A

A

S

A

Page 12: Vztah bezkontextových jazyků a ZA

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 = {aibici |i1} není bezkontextový.

Důkaz:Pro důkaz sporem předpokládejme,že zadaný jazyk je bezkontextový.

Page 13: Vztah bezkontextových jazyků a ZA

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=x1y1v y2x2 , kde

1. |y1v y2|q

2. y1y2e

3. x1y1iv y2

ix2 L pro každé i0.

Zvolíme-li k>p/3, potom slovo akbkck má dostatečnou délku a lze jej napsat ve výše uvedeném tvaru. Jelikož y1y2e, alespoň jedno yi je neprázdné a obsahuje nejméně jedno písmenko.

Page 14: Vztah bezkontextových jazyků a ZA

Pumping lemma - využití

Pokud neprázdné yi obsahuje různá písmenka, bude při iteraci docházet k porušování pořadí písmen ve slově x1y1

ivy2ix2 a výsledné slovo nebude patřit do L.

Odtud je zřejmé, že neprázdné yi 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ě x1y1

ivy2ix2 (respektive může růst i počet dvou

různých písmen za předpokladu,že obě slova yi 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ý.

Page 15: Vztah bezkontextových jazyků a ZA

Vlastnosti bezkontextových jazyků

Věta: Nechť L1 a L2 jsou bezkontextové jazyky. Potom

L1 L2 je také bezkontextový jazyk.

Důkaz:Nechť G1 = (N1,T,P1,S1) a nechť G2 = (N2,T,P2,S2).

Lze předpokládat (nebo přejmenováním zajistit) N1 N2=Ø

Potom lze velmi jednoduše sestrojit gramatiku G=(N,T,P,S) takovou,že N = N1 N2 {S}, kde S je nový symbol (SN1 a SN2)

a P = P1 P2 {SS1, SS2}

Page 16: Vztah bezkontextových jazyků a ZA

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ť L1 = {aibjck |i,j,k0, i=j}

a nechť L2 = {aibjck |i,j,k0, j=k}.

Potom L1 L2 = {aibici |i0}

by byl také bezkontextový jazyk, čímž se dostáváme do sporu, protože tento jazyk bezkontextový není.

Page 17: Vztah bezkontextových jazyků a ZA

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.

Page 18: Vztah bezkontextových jazyků a ZA

Deterministický zásobníkový automat

DEF: Deterministický zásobníkový automat M je sedmice M=(Q,,,,q0,Z0,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

q0 je počáteční stav automatu (q0Q)

Z0 je počáteční zásobníkový symbol (Z0)

F je množina koncových stavů (FQ)

Page 19: Vztah bezkontextových jazyků a ZA

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!!

Page 20: Vztah bezkontextových jazyků a ZA

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.

0 1 2 DBJ3

Page 21: Vztah bezkontextových jazyků a ZA

Deterministické bezkontextové jazyky

Příklad: Navrhněte deterministický zásobníkový automat přijímající jazyk L={wcwR| 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=({q0,q1,q2}, {a,b,c}, {Z,a,b}, , q0, Z, {q2})

(q0,X,Y)= (qo,XZ)pro všechna X{a,b} a Y{Z,a,b}

(q0,c,Y)= (q1,Y) pro všechna Y{a,b}

(q1,X,X)= (q1,e) pro všechna X{a,b}

(q1,e,Z)= (q2,e)

Page 22: Vztah bezkontextových jazyků a ZA

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

Page 23: Vztah bezkontextových jazyků a ZA

Závěrečné opakování

Příklad 1: Navrhněte automat sledující vstupy a výstupy z budovy, který kontroluje, zda v budově nikdo nezůstal.

Příklad 2: Napište gramatiku generující příslušný jazyk.

Příklad 3: Sestrojte k této gramatice ekvivalentní automat (syntaktický analyzátor) a porovnejte s výsledkem získaným v příkladu výše.

Příklad 4: 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?