Bezkontextové gramatiky a jazyky
description
Transcript of Bezkontextové gramatiky a jazyky
Bezkontextové gramatiky a jazyky
Bezkontextové gramatiky
BKG sú gramatiky s pravidlamiA α
Kde A N
α (N T)*
Pripúšťame teda e-pravidlá ( e na pravej strane), ale vieme, že tento problém možno ošetriť rozšírenou gramatikou
BKG, BKJ a Programovacie jazyky BGK sú základným špecifikačným
prostriedkom programovacích jazykov Nie sú celkom dostatočné, niekedy sa
„vyžaduje“ kontext Problém „nedostatočnosti“ sa rieši dohodou
na úrovni jazyka Neopúšťa sa úroveň bezkontextovosti – je
to podstatne jednoduchšie a účinnejšie
Derivácia a jej reprezentácia
Pri analýze nás zaujíma nielen „výsledok“ (generované slovo), ale aj proces, ako sme sa k danému slovu dostali – proces derivácie
Umožňuje nám zistiť vlastnosti gramatiky Existuje viacero spôsobov reprezentácie derivácie Najčastejšie sa používa:
– Klasická postupnosť vetných foriem– Postupnosť čísiel pravidiel použitých v derivácii –
rozbor– Derivačný strom
Derivačný strom
Derivačný strom je orientovaný, vrcholovo ohodnotený strom s usporiadanými nasledovníkmi každého vrcholu (ak vrchol má nasledovníkov).
Nech G = (N, T, P, S) je BKG. Potom orientovaný, vrcholovo ohodnotený a usporiadaný strom D je derivačným stromom pre G, ak má nasledujúce vlastnosti:
Derivačný strom df
1. Každý vrchol je ohodnotený symbolom z N T { e }
2. Ohodnotenie koreňa stromu je S3. Ak vrchol má aspoň jedného nasledovníka, potom
je ohodnotený symbolom z N4. Ak u1 , u2, …. , uk sú priami nasledovníci
vrchola u, ktorý je ohodnotený symbolom A N a jeho nasledovníci sú ohodnotený zľava doprava symbolmi A1, A2, ... , Ak , potom musí v P existovať pravidlo A A1A2 ... Ak
Príklad
Majme gramatikuG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
Reprezentácia derivácie
Najprv zistime, či reťazec 34.25z-13 je z jazyka L(G). Pokúsime sa ho získať deriváciou z A (začiatočného symbolu gramatiky G)
A môžeme vybrať jednu z alternatív pravidla A B | BzD. Vyberieme druhú. Dostaneme:A BzD na ďalšiu deriváciu môžeme vybrať neterminál B alebo D. Budeme postupovať „systémovo“ a vyberať vždy neterminál „prvý zľava“. Dostaneme:
A BzD
A BzD CEzD
použijeme pravidlo C e a dostaneme
A BzD EzD
použijeme pravidlo E F.F a
dostaneme
A BzD EzD F.FzD
postupujeme analogicky ďalej a
postupne dostaneme
A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
A BzD EzD F.FzD
A BzD EzD F.FzD FG.FzD GG.FzD 3G.FzD 34.FzD 34.FGzD 34.GGzD 34.2GzD 34.25zD 34.25zCF 34.25z-F
A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
A * 34.25z-F
34.25z-FG
34.25z-GG
34.25z-1G
34.25z-13
Reťazec 34.25z-13 je z jazyka L(G), pretože existuje derivácia A * 34.25z-13.
A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
Zodpovedajúci derivačný strom
A
B zD
C E
eF . F
F G
G
3
F G
4G
2
5
C F
- F G
G
1
3
Niektoré vlastnosti DS
Neukazuje postup, ako bol vytvorený
Má štruktúru
Zo štruktúry sa dajú zistiť vlastnosti derivácie i samotnej gramatiky
Rez DS
Rezom DS D nazývame množinu vrcholov C s vlastnosťami
Žiadne dva vrcholy z C neležia na jednej ceste z koreňa DS
K C nemožno pridať žiadny vrchol aby sa neporušila prvá vlastnosť
Rez DS a Vetná forma
Zreťazením vrcholov rezu DS v usporiadaní zľava doprava dostaneme VF
Príklady rezov DS z nášho príkladu
C1 = {B, z, D} VF: BzD; A * BzD
C2 = { C, E, z, -, F, G}
C3 = {C, 3, 4, ., 2, 5, z, -, 1, 3}
Ľavá a pravá derivácia
Reprezentácia derivácie klasickou postupnosťou VF v derivácii sa robí systematickou deriváciou neterminálu v každom kroku derivácie
Deriváciou neterminálu prvého zľava dostávame – ľavú deriváciu
Deriváciou neterminálu prvého sprava dostávame – pravú deriváciu
Vetné formy v ľavej / pravej derivácii nazývame ľavé / pravé vetné formy
Viacznačné gramatiky
Majme gramatiku G1 = ({ S }, {a, b, if, then, else}, P, S)P:S if b then S else SS if b then SS a
Do jazyka L(G1) patrí aj veta if b then if b then a else aPretože existuje derivácia
S if b then S if b then if b then S else S if b then if b then a else S if b then if b then a else a
Jedinečnosť a nejedinečnosť derivácieOtázky: existuje k uvedenej vete jazyka L(G1) viac
derivácií ? Aj viac ľavých alebo pravých derivácií?
Môže to mať nejaké dôsledky?
Príklad
Majme gramatiku pre zjednodušený AV
G2 = (N, T, P, S)
P:
E E + T | T
T T * F | F
F ( E ) | a | b | c
Zistime, či reťazec – výraz (a + b) * c
patrí do jazyka L(G2)
(a + b) * c
Ľavá derivácia D1: E T T * F F * F ( E ) * F (E + T) * F (T + T) * F (F + T) * F (a + T) * F (a + F) * F (a + b) * F (a + b) * c
Daný reťazac patrí do jazyka L(G2).Pravá derivácia D2: E T T * F T * c F * c
( E ) * c ( E + T ) * c ( E + F ) * c ( E + b ) * c ( T + b ) * c ( F + b ) * c ( a + b ) * c
Aj táto derivácia ukazuje že daný reťazec je „výrazom“ a patrí do L(G2)
E E + T | T
T T * F | F
F ( E ) | a | b | c
Reprezentácia derivačným stromom
E
TT * F
F
( E )
E +T
T
F
a
F
b
c
Derivačný strom pre D2
Derivácii D2 zodpovedá rovnaký derivačný strom – strom s rovankou štruktúrou
Derivačný strom jasne ukazuje aj „viazanie“ operandov operátormi + a *.
Pozrime sa na deriváciu výrazu a + b * c Otázka? Ako sú teraz viazané operandy a
operátory
a + b * c Derivácia
E E + T T + T F + T a + T a + T * F a + F * F a + b * F a + b * c
a + b * c Derivačný strom
E
E + T
T
F
a
T *F
F
b
c
a + b * c Derivačný strom
Z DS vidieť „správne“ viazanie operátorov a operandov
Otázka. Je jediný? Skúste pravú deriváciu
Iná G pre jednoduchý AV
Majme gramatiku
G = ({E}, {+, *, (, ), a, b, c }, P, E)
P: E E + E | E * E | (E) | a | b | c
Zistime znova, či reťazec a + b * c patrí do jazyka L(G)
Derivácie a + b * c
D1: E E + E a + E a + E * E a + b * E a + b * c - je to ľavá derivácia
D2: E E * E E + E * E a + E * E a + b * E a + b * c - je to tiež ľavá derivácia
Obe derivácie ukazujú že reťazec a + b * c patrí do jazyka L(G)
Otvorená je otázka viazanosti operátorov a operandov.
Lepšie to bude vidieť z derivačného stromu.
Derivačný strom a + b * c
D1: E
E+
E
a E * E
b c
E
E * E
E + E
a b
c
D2
Závery z reprezentácie derivácie
Derivačné stromy D1 a D2 k tomu istému výrazu – slovu jazyka majú rôznu štruktúru
D1 a D2 ukazujú rôznu viazanosť operátorov a operandov, čo má za následok rôzne významy daných výrazov
Viacznačná gramatika df
BKG gramatika G = (N, T, P, S) je nejednoznačná – viacznačná, ak existuje aspoň jedno slovo w L(G) pre ktoré existuje viac derivačných stromov s odlišnou štruktúrou.
Ekvivalentne platí, že gramatika G je viacznačná ak existuje aspoň jedno slovo w L(G) pre ktoré existuje viac ľavých (pravých) derivácií.
Príklad s príkazom if
Majme gramatiku G1 = ({ S }, {a, b, if, then, else}, P, S)P: S if b then S else S S if b then S S a
Do jazyka L(G1) patrí aj veta if b then if b then a else aK tejto vete však existujú nasledujúce dve ľavé derivácie a teda je
viacznačná: D1: S if b then S if b then if b then S else S if b then if b then a else S if b then if b then a else a D2: S if b then S else S if b then if b then S else S if b then if b then a else S if b then if b then a else a
Nejednoznačnosť gramatík a jazyky Nejednoznačnosť gramatiky sa nemusí
týkať jazyka Gramatiku možno často transformovať na
jednoznačnú Jazyky pre ktoré nemožno gramatiku
transformovať na jednoznačnú nazývame inherentne nejednoznačné
Transformácia gramatík
Existencia ekvivalentných gramatík, t.j. gramatík špecifikujúcich ten istý jazyk, vedie na myšlienku „prechodu“ alebo transformáciu jednej gramatiky na druhú – ekvivalentnú gramatiku.
Rozoberieme si niektoré algoritmy zisťujúce vlastnosti gramatík a jazykov i transformáciu pri zachovaní ekvivalentnosti.
Je L(G) neprázdny ?
Vstup: BKG Výstup: Áno – ako L(G) , inak NiePostup: Algoritmus A1
1. N0 := ; i := 1;
2. Ni := { A /A α P, α (Ni-1 T)*} Ni-1
3. Ak Ni Ni-1 tak i := i + 1 a prejdi na krok 1 inak Ne := Ni
4. Ak S Ne tak Áno inak Nie
Príklad
Daná je gramatikaG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9Treba zistiť, či L(G) je neprázdny.
Postup
N0 = N1 = {C, G} N2 = {C, G, F} N3 = {C, G, F, D, E} N4 = {C, G, F, D, E, B} N5 = {C, G, F, D, E, B, A} N6 = {C, G, F, D, E, B, A} N5 = N6 algoritmus končí a keďže A N6 jazyk L(G) je
neprázdny.
P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
Príklad
Majme „modifikovanú“ gramatiku z predchádzajúceho príkladu (nemáme čísla so znamienkom, tak „vypustíme“ toto pravidlo)
G = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, …, 9, z}, P, A)P: A B | BzDB CED CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
Postup
N0 = N1 = {G}
N2 = {G, F}
N3 = {G, F, E}
N4 = {G, F, E}
N3 = N4 algoritmus končí a keďže A N4 jazyk L(G) je prázdny.
P: A B | BzDB CED CFE F. | F.F | .FF G | FGG 0 | 1 | … | 9
Nedostupné a nadbytočné symbolyDefinícia gramatiky ako štvorice (N, T, P, S)
evokuje (právom) otázku, či sa všetky symboly „využijú“
Druhým dôvodom je, že gramatika vymedzuje gramatické pravidlá jazyka, ktorý špecifikuje a tie vedú priamo na jej množinu pravidiel. Preto sa často hovorí, že- neterminály sú tie symboly, ktoré sa objavia aspoň raz
na ľavej strane niektorého pravidla, ostatné sa implicitne považujú za terminály
Nedostupné symboly
Nech G = (N, T, P, S) je BKG. Potom symbol X N T nazývame nedostupným, ak sa neobjaví v žiadnej VF gramatiky G. Teda neexistuje také αXβ, že platí A + αXβ, pre nejaké α, β z (N T)* .
Takýto symbol možno z G vylúčiť.
Vylúčenie nedostupných symbolov – Algoritmus A2Vstup: BKG G = (N, T, P, S)
Výstup: G’ = (N’, T’, P’, S), pre ktorú platí:- L(G’) = L(G)- pre všetky X N’ T’ existuje také
α, β z (N’ T’)* , že: S G’* αXβ
Postup
1. V0 := { S } ; i := 1;
2. Vi := { X / A αXβ P, A Vi-1 } Vi-1
3. Ak Vi Vi-1 , potom i := i + 1 a pokračuj krokom 2. Inak
N’ := Vi N
T’ := Vi T
P’ := {A α / A Vi , α Vi* , A α P }
G’ = (N’, T’, P’, S)
Nadbytočné symboly
Nech G = (N, T, P, S) je BKG. Potom symbol X N T nazývame nadbytočným, ak neexistuje derivácia
S * wXy * wxy, pre w, x, y T*
Vylúčenie nadbytočných symbolov – algoritmus A3Vstup: BKG G = (N, T, P, S), taká, že L(G) Výstup: G’ = (N’, T’, P’, S), pre ktorú platí:
- L(G’) = L(G)- žiadny symbol z N’ T’ nie je nadbytočný
Postup
1. Použitím algortimu A1 získame množinu neterminálov Ne, z ktorých možno generovať terminálne reťazce. Vytvoríme gramatiku G1 = (Ne , T, P1, S ), kde
P1 = {A α / A Ne , α (Ne T) *, A α P}
Vylúčime tým tie neterminály, z ktorých nemožno generovať terminálne reťazce
2. Použitím algoritmu A2 na G1vylúčime symboly, ku ktorým sa nemôžeme dostať a dostaneme gramatiku G’ = (N’, T’, P’, S)
Príklad
Majme gramatiku
G = ( {S, A, B}, { a, b}, P, S)
P: S a | A
A AB
B b
Aplikáciou algoritmu A3 vylúčime nadbytočné symboly.
Postup
Krok 1. Aplikácia A3 – vytvoríme množinu neterminálov, Ne, z ktorých možno generovať terminálne reťazce.
N0 =
N1 = {B, S}
N2 = {B, S}
N1 = N2 = > Ne = {B, S}
G1 = ( {S, B}, { a, b}, P1, S)
P1 : S a B b
Postup Krok 2
Krok2. Aplikácia A2 – vylúčime nedostupné symboly
V0 = { S }
V1 = { S, a }
V2 = { S, a }
Výslednou gramatikou bude gramatika
G’ = ({ S }, { a }, { S a }, S )
Gramatika bez e – pravidla
BKG G = (N, T, P, S) budeme nazývať gramatikou bez e pravidla , ak P neobsahuje pravidlo A e, okrem prípadného pravidla S e
Niekedy je výhodné gramatiku transformovať tak, aby sme dostali ekvivalentnú gramatiku, ale bez e pravidla. Umožňuje nám to algoritmus A4.
Vylúčenie e pravidiel
Vstup : BKG G = (N, T, P, S)
Výstup: ekvivalentná gramatika
G’ = (N’, T, P’, S)
bez e pravidiel
Postup
1. Analogický ako v algoritme A3 – vytvoríme množinu neterminálov, Ne, z ktorých možno generovať prázdny reťazec - e.
Ne = { A / A N, A G+ e }
2. Vytvorenie P’:
Vytvorenie P’
a) Ak A α0B1α1B2α2 … Bkαk P pre k 0, a pre 1 i k je Bi Ne , ale žiadny symbol v αj nie je v Ne pre 0 j k , potom do P’ vložíme všetky pravidlá tvaru:
A α0X1α1X2α2 … Xkαk ,
kde Xi je buď Bi alebo e, s prípadnou výnimkou pravidla A e .
b) Ak S Ne , pridáme do P’ pravidlá: S’ S, S’ e, kde S’ bude nový začiatočný symbol gramatiky G’ a N’ = N
{ S’ }. Inak sa N’ = N, S’ = S.3. G’ = (N’, T, P’, S’)
Príklad
Majme gramatikuG = ({A, B, C, D, E, F, G}, { +, -, ., 0, 1, z}, P, A)P: A B | BzDB CEC + | - | eD CFE F. | F.F | .FF G | FGG 0 | 1
Úprava
N0 = N1 = { C }
N2 = { C }Úprava gramatikyA B | BzDB CE | EC + | -D CF | FE F. | F.F | .FF G | FGG 0 | 1
Premenovávacie pravidlo
Pravidlo gramatiky tvaru A B , kde A, B N nazývame premenovávacie
Takéto pravidlo sa dá z gramatiky vylúčiť a vytvoriť ekvivaletnú gramatiky bez premenovávacích pravidiel.
Postup
Vstup: BKG G bez e-pravidiel Výstup: ekvivaletná gramatika G’ bez premenovávacích pravdiel.
1. Pre každé A N vytvor množinu NA = { B / A * B} takto:
a. N0 = { A } ; i := 1;
b. Ni = { C / B C P, B Ni-1 } Ni-1 ;
c. ak Ni Ni-1 tak i := i + 1 a pokračuje na b.
inak NA = Ni
2. Vytvor P’ takto: Pre všetky A také, že B NA a pre všetky pravidlá B α P, ktoré nie sú premenovávacie, vlož do P’ pravidlá A α
3. G’ = (N, T, P’, S)
Príklad
Majme gramatiku G = (N, T, P, S)
P: E E + T | T
T T * F | F
F ( E ) | a
Transformácia:
NE = {E, T, F}
NT = {T, F}
NF = {F}
Vlastná úprava
E E + T | T * F | ( E ) | a
T T * F | ( E ) | a
F ( E ) | a
Cyklus
Ak G = (N, T, P, S) je BKG, potom cyklom nazývame deriváciu A + A
Cyklus vzniká v dôsledku používania e-pravidiel a premenovávacích pravidiel.
Cyklus možno z gramatiky odstrániť vylúčením „príčiny“, teda e- pravidiel a premenovávacích pravidiel.
Vlastná gramatika
BKG budeme nazývať vlastnou gramatikou, ak je bez cyklov, e-pravidiel a bez nadbytočných symbolov
Normálne formy BKG
Normálny tvar BKG je taký tvar BKG, do ktorého možno transformovať ľubovoľnú inú gramatiku pri zachovaní ekvivalentnosti
Zvyčajne má určité vlastnosti Najčastejšie sa stretávame s normálnym tvarom - Chomského – CHNT – ponúka redukovanú
dľžku pravých strán pravidiel - Greibachovej - GNT – je bez ľavej rekurzie,
dokonca každá pravá strana pravidla začína terminálom
Chomského NT
BKG G = (N, T, P, S) je v CHNT ak každé pravidlo z P má jeden z nasledujúcich tvarov
1. A BC kde A, B, C N2. A a kde A N, a T3. S e ak e L(G), pričom S sa
nenachádza na pravej strane žiadneho pravidla.
Greibachovej NT
BKG G = (N, T, P, S) bez e-pravidiel, až na prípad S e ak e L(G), pričom S sa nenachádza na pravej strane žiadneho pravidla, je v GNT ak každé pravidlo z P tvar
A aα
Kde α N*, a T
Zásobníkové automaty
Umožňujú špecifikovať BKJ akceptačným spôsobom Používajú sa ako model syntaktickej analýzy pre BKJ Analýza sa robí simuláciou ľavej alebo pravej
derivácie, pričom simulácia pravej derivácie sa robí pomocou inverznej relácie derivácie – redukcie
Použitie ZA ako modelov SA vedie na ZA, ktorý umožňuje operovať nad reťazcom symbolov ktoré sú na vrchu zásobníka a voláme ho - Rozšírený ZA
Zásobníkové automaty df
Zásobníkovým automatom budeme nazývať sedmicu
H = (Q, T, Z, δ , q0 , z0, F) kde
Q je množina stavov,
T je množina vstupných symbolov – vstupná abeceda
Z je množina symbolov zásobníka
q0 je začiatočný stav, q0 Q
z0 je začiatočný symbol zásobníka
F je množina koncových stavov
δ je zobrazenie Q x (T { e }) x Z 2Q x Z*
Poznámky
Zásobníkový automat (ZA) je vo všeobecnosti nedeterministický
ZA umožňuje e-prechody – vstup sa neberie do úvahy ( nič sa ani v danom prechode zo vstupu neakceptuje)
V každom kroku (prechode) generuje - na vrch zásobníka reťazec symbolov zásobníka,
možno aj prázdny reťazec (Z*)Činnosť sa aj v tomto prípade definuje pomocou
prechodového zobrazenia
Konfigurácia ZA
Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom nad Q x T* x Z* definujeme konfiguráciu ZA H ako trojicu (q, u, ) kde
q Q u T* , Z* Začiatočná konfigurácia: (q0, i, z0), kde i je vstupný reťazec
Koncová konfigurácia: (qf , e, )
kde qf F je koncový stav
Relácia prechodu
Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom nad množinou konfigurácií Q x T* x Z* definujeme reláciu prechodu nasledujúcim spôsobom.
Ak a T { e } ; x T*; z Z ; , Z* ; Potom (q, ax, z) (r, x, )práve vtedy, ak δ(q, a, z) obsahuje (r, )Analogický ako pre KA možno definovať stupeň a uzávery
relácie prechodu n , * , +
Jazyk špecifikovaný ZA
Nech H = (Q, T, Z, δ , q0 , z0, F) je ZA. Potom jazyk L(H), špecifikovaný ZA H je definovaný takto:
L(H) = {w / (q0 , w, z0) * (qf , e, ),
qf F, w T* , Z*}Jazyk špecifikovaný ZA - s prázdnym zásobníkom
Le(H) = { w / (q0 , w, z0 ) * (qf , e, e ),
qf F, w T* }Poznámka: oba prípady špecifikujú tú istú triedu
jazykov. Existuje ekvivalentný ZA
Rozšírený ZA
RZA bude operovať nad vrchom zásobníka, ale „vrchom“ bude prvých n symbolov na vrchu zásobníka
Potrebujeme ošetriť „obrátenú“ postupnosť symbolov v zásobníkua – robíme to tak, že v zápise bude vrch zásobníka vpravo
Ide teda iba o „rozšírenie“ ZA pre ošetrenie uvedenej potreby
Rozšírený ZA df
Rozšíreným zásobníkovým automatom nazývame 7 – cu
H = (Q, T, Z, δ , q0 , z0, F)
Význam symbolov, okrem zobrazenia δ, zostáva nezmenený.
Konfigurácia je tiež definovaná rovnako.Zobrazenia δ je definované takto:δ : Q x (T { e }) x Z* 2
Q x Z*
Relácia prechodu
Ak a T { e } ; x T*; , , Z* ;
Potom
(q, ax, ) (r, x, )
práve vtedy, ak δ(q, a, ) obsahuje (r, )Analogický ako pre KA možno definovať stupeň a
uzávery relácie prechodu n , * , +
Vzťah ZA k BKG
Nech G = (N, T, P, S) je BKG. Potom existuje ZA M = (Q, T, Z, δ , q0 , z0, F) s vlastnosťou L(M) = L(G).
Konštrukcia je nasledujúca:
Q = {q}; F = {q}; q0 = q; z0 = S; T = T z gramatiky;
Z = { N T}
δ: 1. Ak A P, tak (q, ) δ(q, e, A)
2. δ(q, a, a) = {(q, e) } pre všetky a T.
Vzťah RZA k BKG
Nech G = (N, T, P, S) je BKG. Potom existuje RZA M = (Q, T, Z, δ , q0 , z0, F) s vlastnosťou L(M) = L(G)
Konštrukcia je nasledujúca:
Q = {q, r}; F = {r}; q0 = q; T = T z gramatiky;
Z = { N T z0}δ: 1. Ak A P, tak (q, A) δ(q, e, ) 2. δ(q, a, e) = {(q, a) } pre všetky a T.
3. δ(q, e, z0S) = {(r, e) }
Determinizmus
ZA i RZA sú vo všeobecnosti nedeterministické
Existujú podmienky determinizmu, ktorú sú nasledujúce:
Deterministický ZA
ZA M = (Q, T, Z, δ , q0 , z0, F) nazývame determiniistický, ak pre každé q Q, x T a každé z Z platí jedna z nasledujúcich podmienok
1. | δ(q, x, z) | 1 a | δ(q, e, z) | = 2. | δ(q, x, z) | = a | δ(q, e, z) | 1
DRZA
RZA M = (Q, T, Z, δ , q0 , z0, F) nazývame deterministický, ak pre každé q Q, x (T { e }), a , , Z* spľňa nasledujúce podmienky:
1. | δ(q, x, ) | 1
2. Ak δ(q, x, ) , δ(q, x, ) a potom ani jeden z reťazcov , nie je prefixom / postfixom jeden druhého (vzhľadom na orientáciu vrchu zásobníka
OK