Formální jazyky II
Editovat
Note
|
Bezkontextové jazyky a jejich reprezentace. Varianty zásobníkových automatů (metody akceptování, determinismus a nedeterminismus, rozšířené zásobníkové automaty). Nedeterministická syntaktická analýza. Uzávěrové vlastnosti bezkontextových jazyků. IB102/IB005 |
Bezkontextové jazyky
Bezkontextové jazyky jsou generovány bezkontextovými gramatikami.
Bezkontextová gramatika (CFG)
Gramatika s pravidly tvaru , kde je neterminál a je řetězec terminálů a neterminálů nenulové délky. Výjimkou je , pokud se počáteční neterminál nevyskytuje na pravé straně žádného pravidla.
- Nenormovaný neterminál
-
Nelze se z nich dostat na řetěz terminálů. Neexistuje derivace , pro nějaké .
- Nedosažitelné symbol
-
Nelze se do něj dostat z . Neexistuje derivace pro nějaká .
- Nepoužitelný symbol
-
Neexistuje derivace pro nějaká .
- Redukovaná CFG
-
Neobsahuje nenormované neterminály ani nedosažitelné symboly.
- CFG -pravidel
-
Neobsahuje žádné -pravidlo, nebo obsahuje právě pravidlo a se nevyskytuje na pravé straně žádného pravidla.
- Jednoduché pravidlo
-
, kde .
- Necyklická gramatika
-
Neexistuje neterminál , který by se po nenulovém počtu kroků přepsal sám na sebe .
- Vlastní CFG
-
Je necyklická CFG bez nepoužitelných symbolů a bez -pravidel. Ke každému CFL existuje vlastní CFG.
- Chomského normální forma
-
CFG je v Chomského normální formě, právě když je bez -pravidel a každé pravidlo je v jednom z tvarů:
-
, kde
-
, kde
-
-
- Levorekurzivní neterminál
-
Neterminál je levorekurzivní, pokud existuje derivace .
- Greibachové normální forma
-
CFG je v Greibachové normální formě, právě když je bez -pravidel a každé pravidlo je v jednom z tvarů:
-
, kde
-
-
Zásobníkový automat (PDA)
Šestice , kde
-
je neprázdná konečná množina stavů,
-
je konečná vstupní abeceda,
-
je konečná zásobníková abeceda,
-
je parciální přechodová funkce,
-
je počáteční stav,
-
je počáteční symbol na zásobníku,
-
je množina akceptujících stavů.
Note
|
značí množinu všech konečných podmnožin . |
- Konfigurace
-
Stav PDA. .
- Krok výpočtu
-
je tranzitivní uzávěr nad .
- Jazyk akceptovaný konvovým stavem
-
- Jazyk akceptovaný prázdným zásobníkem
-
Deterministický zásobníkový automat (DPDA)
Zásobnikový automat je deterministický, pokud platí:
-
Pro všechna a platí, že kdykoliv , pak pro všechna .
-
(Když má stav přechod pod , pak tam není žádný jiný.)
-
-
Pro každé obsahuje nejvýše jeden prvek.
-
(Vždycky je maximálně jedna cesta, kam se dá při daném stavu a písmenech jít.)
-
Jazyk je deterministický bezkontextový, pokud existuje DPDA, který ho akceptuje koncovým stavem. Deterministické bezkontextové jazyky jsou podmnožinou bezkontextových jazyků.
Rozšířený zásobníkový automat
Šestice lišící se od PDA jen v typu :
-
je parciální přechodová funkce.
Note
|
Činí rozhodnutí ne na základě vrcholu zásobníku, ale na základě libovolné konečné horní části zásobníku. |
Ke každému rozšířenému PDA existuje ekvivalentní PDA.
- Krok výpočtu
-
Uzávěrové vlastnosti CFL
Operace | Formulka | Uzavřenost |
---|---|---|
Sjednocení |
✓ |
|
Průnik s regulárním jazykem |
✓ |
|
Zřetězení |
✓ |
|
Iterace (i pozitivní) |
(i ) |
✓ |
Průnik |
||
Doplněk |
Uzávěrové vlastnosti DCFL
Operace | Formulka | Uzavřenost |
---|---|---|
Doplňek |
✓ |
|
Průnik s regulárním jazykem |
✓ |
|
Průnik |
||
Sjednocení |
Pumping lemma pro bezkontextové jazyky
Nechť je bezkontextový jazyk. Pak existují (závisející na ) taková, že každé slovo lze psát ve tvaru , kde
-
(alespoň jedno ze slov je neprázdné),
-
a
-
pro všechna .
Nedeterministická syntaktická analýza
Generuje bezkontextová gramatika dané slovo?
Cílem syntaktické analýzy je vybudovat strom derivací (aplikací pravidel gramatiky), které se musely stát, aby analyzované slovo v gramatice vzniklo.
- Shora dolů
-
Od počátečního neterminálu dolů přes levé derivace (rozvíjíme vždy nejlevější neterminál).
-
Mějme dvojici , kde je analyzované slovo.
-
Pokud prvky dvojice začínají stejným terminálem, odstraníme ho u obou
-
Pokud druhý prvek začíná neterminálem, zkus ho rozvinout podle nějakého jeho pravidla.
-
Pokud prvky dvojice začínájí různými neterminály, tak tudy cesta nevede.
-
Pokud dvojice je , tak je slovo generováno danou gramatikou.
-
- Zdola nahoru
-
Od analyzovaného slova až k počátečnímu neterminálu pomocí rozšířeného PDA.
-
Mějme trojici , kde a je nově přidaný počáteční symbol na zásobníku.
-
Postupně načítám písmena zleva a přidávám je zprava do zásobníku (za , protože tady píšeme vrchol vlevo).
-
Když můžu, přepíšu symboly vpravo od na nějaký neterminál (v takovém případě čtu ).
-
Snažím se vyprázdnit zásobník (dostat se do akceptujícího stavu a načíst celé slovo).
-
- Algoritmus CYK (Cock-Younger-Kasami)
-
Deterministický algoritmus založený na analýze zdola nahoru, který má složitost .