Vztah bezkontextových jazyků a ZA

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Komplexní čísla. Komplexní číslo je uspořádaná dvojice [x, y], kde číslo x představuje reálnou část a číslo y imaginární část. Pokud je reálná část nulová,
Rozhodnutelnost.
Dualita úloh lineárního programování a analýza citlivosti
Limita funkce. Koncentrace 137Cs v odpadním kanálu jaderné elektrárny se v časovém intervalu (t1, t2) řídí rovnicí c (t) = c0e -(t-t0). V čase t1 dojde.
Rovnice roviny Normálový tvar rovnice roviny
Algebra.
ENVIRONMENTÁLNÍ INFORMATIKA A REPORTING
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Ústav technologie, mechanizace a řízení staveb
Varianty Turingova stroje Výpočet funkcí pomocí TS
Lexikální a syntaktická analýza Jakub Yaghob
Funkce.
Základní číselné množiny
Optimalizační úlohy i pro nadané žáky základních škol
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Příklady použití zásobníkového automatu
Church-Turingova teze Univerzální Turingův stroj Diagonalizace
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Formální jazyky a gramatiky
Abeceda a formální jazyk
Formulace a vlastnosti úloh lineárního programování
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Sémantická analýza Jakub Yaghob
Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)
Syntaxí řízený překlad
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Teorie vyčíslitelnosti
Matice.
V matematice existují i seskupení objektů, které nejsou množinami.
Cvičení.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Pre-algebra Antonín Jančařík.
Výroková logika.
Úvod do předmětu Opakování
Funkce více proměnných.
Regulární výrazy Regulární výrazy představují další možnost popisu regulárních jazyků (právě od nich dostaly své jméno). Definice: Množina všech regulárních.
Konečné automaty Vít Fábera.
Formální modely výpočtu Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Pre-algebra Antonín Jančařík.
Turingův stroj.
Množiny.
Automaty a gramatiky.
Číselné posloupnosti.
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
Konečné automaty a vyhledávání
Čísla Množiny a podmnožiny čísel Přirozená čísla Nula Celá čísla
Algoritmicky nerozhodnutelný problém Věta: Problém přijetí prázdného slova Turingovým strojem je algoritmicky nerozhodnutelný. A TM ={  M,e  | M je TS.
String-distributing systems Top-Down / Bottom-Up Ing. Zbyněk Křivka Školitel: Doc. Alexander Meduna.
Formální definice Konečná množina vnitřních stavů Q Konečná vstupní abeceda A Počáteční stav q 0 Množina přijímacích stavů K.
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
Soustavy lineárních rovnic Matematika 9. ročník Creation IP&RK.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Složitost algoritmu Vybrané problémy: Při analýze složitosti jednotlivých algoritmů často narazíme na problém, jakým způsobem vzít v úvahu velikost vstupu.
MNOŽINY RNDr. Jiří Kocourek. Množina: skupina (souhrn, soubor) nějakých objektů.
Funkce Funkce je zobrazení z jedné číselné množiny do druhé, nejčastěji Buď A a B množiny, f zobrazení. Potom definiční obor a obor hodnot nazveme množiny:
Definiční obor a obor hodnot
Překladače 5. Syntaktická analýza
Znázornění dopravní sítě grafem a kostra grafu Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
Překladače 5. Syntaktická analýza
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Překladače Syntaktická analýza
Gödelova(y) věta(y).
MNOŽINY RNDr. Jiří Kocourek.
Konstruktivní úlohy na rotačních plochách
Soustavy lineárních rovnic
Definiční obory. Množiny řešení. Intervaly.
Transkript prezentace:

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},,,,q0,Z0,Ø) tak, že =T, =NT, 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 aT

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}

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

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

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).

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é 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)

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í.

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=x1y1v y2x2 , kde 1. |y1v y2|q 2. y1y2e 3. x1y1iv y2ix2 L pro každé i0.

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 2x Vyjádřeno pomocí odvození: S * x1Ax2 + x1y1A y2x2 + x1y1v y2x2 to ale znamená, že v gramatice G lze provést i derivace S * x1y1iv y2ix2 pro každé i0

Vlastnosti bezkontextových jazyků Grafické znázornění důkazu: x1 y1 v y2 x2 S A A A

Vlastnosti bezkontextových jazyků Grafické znázornění důkazu: x1 y1 y2 x2 y1 v y2 S A A A A

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 |i1} není bezkontextový. Důkaz: Pro důkaz sporem předpokládejme,že zadaný jazyk je bezkontextový.

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. y1y2e 3. x1y1iv y2ix2 L pro každé i0. 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ž y1y2e, alespoň jedno yi je neprázdné a obsahuje nejméně jedno písmenko.

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ě x1y1ivy2ix2 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ě x1y1ivy2ix2 (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ý.

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 (SN1 a SN2) a P = P1  P2  {SS1, SS2}

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,k0, i=j} a nechť L2 = {aibjck |i,j,k0, j=k}. Potom L1  L2 = {aibici |i0} by byl také bezkontextový jazyk, čímž se dostáváme do sporu, protože tento jazyk bezkontextový není.

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.

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 (q0Q) Z0 je počáteční zásobníkový symbol (Z0) F je množina koncových stavů (FQ)

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

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. 1 2 DBJ 3

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)

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. Odpovídající syntaktický analyzátor je efektivní (pracuje v čase omezeném lineárně a lineárně omezenou pamětí) 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 Jelikož pracuje bez návratů, usnadňuje se lokalizace syntaktických chyb

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?