Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Podobné dokumenty
Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Jednoznačné a nejednoznačné gramatiky

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/31

Formální jazyky a gramatiky Teorie programovacích jazyků

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

/1: Teoretická informatika(ti) přednáška 4

Teoretická informatika - Úkol č.1

Vztah jazyků Chomskeho hierarchie a jazyků TS

Kapitola 6. LL gramatiky. 6.1 Definice LL(k) gramatik. Definice 6.3. Necht G = (N, Σ, P, S) je CFG, k 1 je celé číslo.

UČEBNÍ TEXTY VYSOKÝCH ŠKOL. Prof. RNDr. Milan Češka, CSc. Gramatiky a jazyky

Automaty a gramatiky

Vysoké učení technické v Brně Fakulta informačních technologií. Gramatiky nad volnými grupami Petr Blatný

Bezkontextové gramatiky nad volnými grupami

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

2 Formální jazyky a gramatiky

Teoretická informatika TIN 2013/2014

Lineární algebra : Násobení matic a inverzní matice

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Lineární algebra : Násobení matic a inverzní matice

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

VI. Maticový počet. VI.1. Základní operace s maticemi. Definice. Tabulku

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Bezkontextové jazyky 3/3. Bezkontextové jazyky 3 p.1/27

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

/01: Teoretická informatika(ti) přednáška 5

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

Strukturální rozpoznávání

Teoretická informatika

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Operace s maticemi. 19. února 2018

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

1 Determinanty a inverzní matice

Výroková a predikátová logika - IV

Interpolace, ortogonální polynomy, Gaussova kvadratura

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS MASTER S THESIS AUTHOR

Lineární algebra : Polynomy

REDUKCE VELIKOSTI GRAMATIKY V SILNÉ GREIBACHOVÉ NORMÁLNÍ FORMĚ

Teoretická informatika TIN

1 Báze a dimenze vektorového prostoru 1

(Cramerovo pravidlo, determinanty, inverzní matice)

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Teoretická informatika

Modely Herbrandovské interpretace

Úvod do lineární algebry

0.1 Úvod do lineární algebry

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Symetrické a kvadratické formy

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Výroková a predikátová logika - II

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

Lineární algebra Kapitola 1 - Základní matematické pojmy

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Formální jazyky a automaty Petr Šimeček

Základy maticového počtu Matice, determinant, definitnost

Základy teoretické informatiky Formální jazyky a automaty

Operace s maticemi

15 Maticový a vektorový počet II

Limita a spojitost funkce

Vlastní čísla a vlastní vektory

Analýza Petriho sítí. Analýza Petriho sítí p.1/28

0.1 Úvod do lineární algebry

Lineární algebra - I. část (vektory, matice a jejich využití)

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

IB112 Základy matematiky

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

Automaty a gramatiky. Roman Barták, KTIML. Separované gramatiky. Kontextové gramatiky. Chomského hierarchie

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Základní datové struktury III: Stromy, haldy

Číselné vektory, matice, determinanty

Úlohy nejmenších čtverců

Automaty a gramatiky. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

DEFINICE Z LINEÁRNÍ ALGEBRY

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Vlastnosti regulárních jazyků

Návrh algoritmů pro sémantické akce při výstavbě interpretu metodou rekurzivního sestupu

Lineární algebra : Lineární prostor

Úvod do informatiky. Miroslav Kolařík

α β ) právě tehdy, když pro jednotlivé hodnoty platí β1 αn βn. Danou relaci nazýváme relace

Lineární zobrazení. 1. A(x y) = A(x) A(y) (vlastnost aditivity) 2. A(α x) = α A(x) (vlastnost homogenity)

Hypergrafové removal lemma a Szemérediho

1. Matice a maticové operace. 1. Matice a maticové operace p. 1/35

(2) [B] Nechť G je konečná grupa tvořena celočíselnými maticemi roměru 2 2 s operací násobení. Nalezněte všechny takové grupy až na izomorfizmus.

1 Soustavy lineárních rovnic

Základy matematické analýzy

Stromy, haldy, prioritní fronty

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Výroková a predikátová logika - V

5 Orientované grafy, Toky v sítích

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Transkript:

Bezkontextové jazyky Bezkontextové jazyky 1 p.1/39

Jazyky typu 2 Definice 4.1 Gramatika G = (N, Σ, P, S) si nazývá bezkontextovou gramatikou, jestliže všechna pravidla z P mají tvar A α, A N, α (N Σ) Lemma 4.1 Každý regulární jazyk je jazykem bezkontextovým. Proč studujeme bezkontextové jazyky? Příklad 4.1 Jazyk L = {a n b n n 0}, jak víme, není jazykem regulárním, je však jazykem bezkontextovým: L = L(G) kde G = ({S}, {a, b}, {S asb, S ε}, S) Bezkontextové jazyky 1 p.2/39

Příklad bezkontextové gramatiky Pro účely demonstrace vysvětlovaných pojmů budeme v následujících příkladech používat následující gramatiku. Příklad 4.2 Gramatika G = ({S,A, B}, {a, b, c}, P,S), kde P obsahuje pravidla S AB A aab ab B bbc bc generuje bezkontextový jazyk L(G) = {a m b m+n c n n 1,m 1} Bezkontextové jazyky 1 p.3/39

Derivační strom Důležitým prostředkem pro grafické vyjádření struktury věty (její derivace) je strom, který se nazývá derivačním nebo syntaktickým stromem. Definice 4.2 Necht δ je věta nebo větná forma generovaná v gramatice G = (N, Σ, P, S) a necht S = v 0 v 1... v k = δ její derivace v G. Derivační strom příslušející této derivaci je vrcholově ohodnocený strom s těmito vlastnostmi: 1. Vrcholy derivačního stromu jsou ohodnoceny symboly z množiny N Σ; kořen stromu je označen výchozím symbolem S. 2. Přímé derivaci v i 1 v i, i = 0,1,...,k kde v i 1 = µaλ, µ, λ (N Σ), A N v i = µαλ A α, α = X 1... X n je pravidlo z P, odpovídá právě n hran (A, X j ),j = 1,...,n vycházejících z uzlu A, jež jsou uspořádány zleva doprava v pořadí (A, X 1 ), (A, X 2 ),...,(A, X n ). 3. Ohodnocení koncových uzlů derivačního stromu vytváří zleva doprava větnou formu nebo větu δ (plyne z 1. a 2.). Bezkontextové jazyky 1 p.4/39

Příklad derivačního stromu Příklad 4.3 derivací: V gramatice z příkladu 4.2 můžeme generovat řetězec aabbbbcc např. S AB aabb aabbbc aabbbcc aabbbbcc Derivační strom odpovídající této derivaci vypadá takto (po stranách jsou uvedena použitá pravidla): S S AB A aab a A b b B c B bbc A ab a A b b B c B bc Bezkontextové jazyky 1 p.5/39

Levá a pravá derivace Ukažme si i jiné derivace věty aabbbbcc, které se liší v pořadí, v němž byly vybírány nonterminály pro přímé derivace. 1. S AB aabb aabbb aabbbbc aabbbbcc 2. S AB AbBc Abbcc aabbbc aabbbbcc Definice 4.3 Necht S α 1 α 2... α n = α je derivace větné formy α. Jestliže byl v každém řetězci α i, i = 1,...,n 1 přepsán nejlevější (nejpravější) nonterminál, pak tuto derivaci nazýváme levou (pravou) derivací větné formy α. Výše uvedené příklady derivací představují levou (1.) a pravou (2.) derivaci. Lemma 4.2 Je-li S α 0 α 1... α n w levá, resp. pravá derivace věty w, pak každá z větných forem α i, i = 1, 2,...,n 1 má tvar: x i A i β i kde x i Σ,A i N, β i (N Σ) resp. γ i B i y i kde y i Σ, B i N, γ i (N Σ) t.j. větné formy levé, resp. pravé derivace mají terminální prefixy, resp. sufixy. Bezkontextové jazyky 1 p.6/39

Fráze větné formy Definice 4.4 Necht G = (N, Σ, P, S) je gramatika a necht řetězec λ = αβγ je větná forma. Podřetězec β se nazývá frází větné formy vzhledem k nonterminálu A z N, jestliže platí: S αaγ A + β Podřetězec β je jednoduchou frází větné formy, jestliže platí: S αaγ A β Nejlevější jednoduchá fráze se nazývá l-frází. Bezkontextové jazyky 1 p.7/39

Příklad 4.4 V gramatice z příkladu 4.1 nalezněte fráze věty aabbbbcc. Nejdříve vytvořme libovolnou derivaci této věty (Příklad 4.2). Na základě této derivace získáme následující fráze k příslušným nonterminálům: Fráze aabbbbcc S aabb A 1 ab A 2 bbcc B 1 bc B 2 Nonterminál Fráze ab a bc jsou jednoduché, ab je l-fráze. Bezkontextové jazyky 1 p.8/39

Vztah fráze a derivačního stromu Podstrom derivačního stromu odpovídá frázi příslušné větné formy. Fráze je tvořena koncovými uzly podstromu. Jednoduchá fráze odpovídá podstromu, jenž je výsledkem přímé derivace A β, a jeho hloubka je rovna jedné. Situaci ilustruje následující obrázek. S A α β γ Bezkontextové jazyky 1 p.9/39

Příklad 4.5 Podstromy derivačního stromu věty aabbbbcc (příklad 4.3) jsou následující stromy odpovídající též frázím z předchozího příkladu. A B S a A b b B c a b b c A B a A b b B c a b b c S a A b b B c A B a b b c a A b b B c Bezkontextové jazyky 1 p.10/39

Víceznačnost gramatik Definice 4.5 Necht G je gramatika. Říkáme, že věta w generovaná gramatikou G je víceznačná, existují-li alespoň dva různé derivační stromy s koncovými uzly tvořícími větu w. Gramatika G je víceznačná, pokud generuje alespoň jednu víceznačnou větu. V opačném případě mluvíme o jednoznačné gramatice. Jazyky, které lze generovat víceznačnou gramatikou, ale které nelze generovat jednoznačnou gramatikou, se nazývají jazyky s inherentní víceznačností. Problém víceznačnosti gramatik je nerozhodnutelný, tj. neexistuje algoritmus, který by byl schopen v konečném čase rozhodnout, zda daná gramatika je nebo není víceznačná. Víceznačnost gramatiky je pokládána za negativní rys (vede k větám, které mají několik interpretací). Na druhé straně může být víceznačná gramatika jednodušší než odpovídající jednoznačná gramatika. Bezkontextové jazyky 1 p.11/39

Víceznačnost gramatik Příklad 4.6 pravidel Uvažujme gramatiku G = ({E}, {+,,,/, (, ),P, E), kde P je množina E E + E E E E E E/E ( E ) i Jazyk L(G) je tvořen aritmetickými výrazy s binárními operacemi. Gramatika G je na rozdíl od gramatiky z příkladu 4.2 víceznačná. Vezměme například větu i + i i a uvažujme všechny možné derivační stromy. E E E + E E * E i E * E E + E i i Není jasné, zda první operací bude násobení (derivační strom vlevo), nebo sčítání (derivační strom vpravo). i i i Bezkontextové jazyky 1 p.12/39

Příklad 4.7 Jednoznačnou gramatikou generující tentýž jazyk je gramatika G = ({E,T, F }, {+,,,/,(, ), i},p, E) s množinou přepisovacích pravidel P definovanou následujícím způsobem: E T E + T E T T F T F T/F F ( E ) i Bezkontextové jazyky 1 p.13/39

Transformace bezkontextových gramatik Bezkontextové jazyky 1 p.14/39

Ekvivalentní gramatiky Definice 4.6 Necht G 1 a G 2 jsou gramatiky libovolného typu Chomského klasifikace. G 1 a G 2 jsou ekvivalentní, pokud L(G 1 ) = L(G 2 ). Věta 4.1 Necht G = (N, Σ,P, S) je gramatika, A αbβ, B N, α, β (N Σ) je pravidlo z P a necht B γ 1 γ 2... γ n jsou všechna B-pravidla z P. Pak gramatika G = (N, Σ, P, S) kde P = P \ {A αbβ} {A αγ 1 β, A αγ 2 β,...,a αγ n β} je ekvivalentní s gramatikou G. Důkaz. Na cvičení. Bezkontextové jazyky 1 p.15/39

Příklad 4.8 Gramatiky s pravidly E E E + T T T T F F F (E) i E + T resp. E E + T F E + F T T T F F F (E) i E T * F jsou ekvivalentní. E + T * F Bezkontextové jazyky 1 p.16/39

Nedostupné a zbytečné symboly Definice 4.7 Necht G = (N, Σ, P, S) je gramatika a X N Σ symbol. Říkáme, že symbol X je nedostupný v G, jestliže v G neexistuje derivace S αxβ pro nějaké α, β (N Σ). Symbol X nazýváme zbytečný v G, jestliže v G neexistuje derivace tvaru S αxβ zxy pro nějaké α, β (N Σ) a zxy Σ. Příklad 4.9 Uvažujme gramatiku G = ({S, A, B}, {a, b}, P, S) s pravidly: S SB a A b B Ba Symboly A, B,b jsou zbytečné. Symboly A, b jsou nedostupné. Poznámka 4.1 G = ({S}, {a}, {S a},s) je ekvivalentní s G. Bezkontextové jazyky 1 p.17/39

Nonterminály generující terminální řetězce Algoritmus 4.1 Výpočet množiny nonterminálů generujících terminální řetězce Vstup: Gramatika G = (N, Σ, P, S). Výstup: Množina N t = {A A + w, w Σ }. Metoda: Počítáme množiny N 0, N 1, N 2,... rekurentně takto: 1. N 0 :=,i = 1 2. N i := {A A α je v P a α (N i 1 Σ) } 3. Je-li N i N i 1, i := i + 1 a vrat se k (2). Je-li N i = N i 1, polož N t = N i a skonči. Bezkontextové jazyky 1 p.18/39

Dostupné symboly Algoritmus 4.2 Výpočet množiny dostupných symbolů Vstup: Gramatika G = (N, Σ, P, S). Výstup: Množina V = {X S αxβ,α, β (N Σ) }. Metoda: 1. V 0 := {S},i = 1 2. V i := {X A αxβ je v P a A V i 1 } V i 1 3. Je-li V i V i 1, i := i + 1 a vrat se k (2). Je-li V i = V i 1, polož V = V i a skonči. Bezkontextové jazyky 1 p.19/39

Odstranění zbytečných symbolů Algoritmus 4.3 Odstranění zbytečných symbolů Vstup: Gramatika G = (N, Σ, P, S). Výstup: Gramatika G = (N,Σ, P,S) bez zbytečných symbolů, L(G) = L(G ). Metoda: 1. Aplikací algoritmu 4.1 na G vypočti množinu N t. 2. Polož G = (N t {S},Σ, P, S), kde P = {A α (A α) P A N t α (N t Σ) }. 3. Aplikací algoritmu 4.2 na G vypočti množinu V. 4. Výslednou gramatiku G sestroj takto: (a) (b) N = N t V Σ = Σ V (c) P = {A α (A α) P A N α V } Poznámka: Sjednocení N t {S} v bodě 2 řeší případ, kdy L(G) = a N t =, ovšem gramatika musí mít svůj startovací symbol. Bezkontextové jazyky 1 p.20/39

Příklad 4.10 Uvažujme gramatiku G = ({S, A, B}, {a, b}, {S a, S A, A AB,B b}, S). 1. N 0 =, N 1 = {S,B}, N 2 = N 1 = N t = {S,B} 2. G = ({S, B}, {a, b}, {S a, B b}, S) 3. V 0 = {S}, V 1 = {S, a}, V 2 = V 1 = V = {S, a} 4. G = ({S}, {a}, {S a}, S). Poznámka 4.2 Pořadí kroků 2. a 4. je významné. Bezkontextové jazyky 1 p.21/39

Odstranění ε-pravidel Definice 4.8 G je gramatikou bez ε-pravidel, jestliže neobsahuje žádné ε-pravidlo (pravidlo tvaru A ε), nebo, pokud ε L(G), potom obsahuje jediné ε-pravidlo S ε a S se pak nevyskytuje na pravé straně žádného přepisovacího pravidla. Algoritmus 4.4 Transformace na gramatiku bez ε-pravidel Vstup: Gramatika G = (N, Σ, P, S). Výstup: Gramatika G = (N,Σ, P,S ) bez ε-pravidel ekvivalentní s G. Metoda: 1. Vypočítej množinu N ε = {A A + ε} 2. Každé pravidlo z P, které není ε-pravidlem, uvažuj ve tvaru A α 0 B 1 α 1 B 2...B k α k, kde B i N ε, α i (N \ N ε Σ) pro i = 1,...,k Toto pravidlo nahrad množinou pravidel, které vzniknou všemi možnými substitucemi B i B i a B i ε pro i = 1,...,k (to jest substitucemi, kdy nonterminály z N ε jsou alternativně ponechávány a vypouštěny). Počet těchto substitucí (nových pravidel) je zřejmě 2 k. 3. Všechna ε-pravidla vypust. 4. Pokud S N ε, pak N = N {S }, kde S je nový nonterminální symbol, a přidej pravidla S ε S, v opačném případě N = N, S = S Bezkontextové jazyky 1 p.22/39

Příklad 4.11 Uvažujme gramatiku G = ({A, B,C}, {a, b, c},p, A) s pravidly: A AbAcBC ε a B b ε C c ε 1. N ε = {A, B,C} 2. A AbAcBC A bacbc A Ab cbc A b cbc. A bc A a B b C c 3. A ε A A A je nový startovací symbol. Bezkontextové jazyky 1 p.23/39

Odstranění jednoduchých pravidel Definice 4.9 Pravidlo tvaru A B, kde A, B N nazýváme jednoduché pravidlo. Algoritmus 4.5 Transformace na gramatiku bez jednoduchých pravidel Vstup: Gramatika G = (N, Σ, P, S) bez ε-pravidel. Výstup: Gramatika G = (N, Σ, P, S) bez jednoduchých pravidel ekvivalentní s G. Metoda: 1. Pro všechny A N vypočítej množinu N A = {B A B}, polož P :=. 2. Necht B α, α / N je pravidlo z P. Potom k P přidej nová pravidla A i α pro všechny A i, kde B N Ai. 3. Výsledná množina pravidel P tvoří všechna pravidla gramatiky G (neobsahuje jednoduchá pravidla). N A1 N A2 N A3 N Ak B B Nová pravidla: A 1 α A 3 α Bezkontextové jazyky 1 p.24/39

Příklad 4.12 Uvažujme gramatiku G = ({E, T,F }, {i,+,, (,)}, P, E) s pravidly: E E + T T T T F F F (E) i 1. Nalezneme množiny N A pro všechny A N: N E = {E, T, F } N T = {T, F } N F = {F } 2. Doplňujeme nová pravidla a vypouštíme jednoduchá pravidla: E E + T T F (E) i T T F (E) i F (E) i Bezkontextové jazyky 1 p.25/39

Cyklus Definice 4.10 Necht G = (N, Σ, P, S) je gramatika, A N. Gramatika G obsahuje cyklus, jestliže A + A. Věta 4.2 Jestliže gramatika G = (N, Σ, P, S) obsahuje cyklus v nonterminálu A, A N a jestliže existuje derivace S αaβ + w, w Σ, α, β (N Σ) pak G je víceznačná. Důkaz. Existuje-li derivace S αaβ + w pak vzhledem k existenci cyklu A + existuje i derivace S αaβ αγ 1 β αγ 2 β... αaβ + w Těmto derivacím přísluší různé derivační stromy. Bezkontextové jazyky 1 p.26/39

Zdroje cyklu Jednoduchá pravidla (tvaru A B), např. A B C A v důsledku pravidel A B, B C, C A ε-pravidla, např. A AB A v důsledku pravidla B ε Bezkontextové jazyky 1 p.27/39

Vlastní gramatika Definice 4.11 Gramatika bez zbytečných symbolů, ε-pravidel a bez cyklů se nazývá vlastní gramatikou. Věta 4.3 Každá bezkontextová gramatika má ekvivalentní vlastní gramatiku. Důkaz. Aplikací algoritmů 4.3 a 4.4 odstraníme zbytečné symboly a ε-pravidla. Jestliže po této transformaci existuje v G derivace A A, tj. cyklus, pak jeho příčinou mohou být pouze jednoduchá pravidla a ty lze odstranit aplikací algoritmu 4.5. Bezkontextové jazyky 1 p.28/39

Odstranění levé rekurze Základem algoritmu je odstranění přímé levé rekurze, tj. levě rekurzivních pravidel, podle následující transformace: Věta 4.4 Necht gramatika G má levě rekurzivní pravidla v nonterminálu A a necht A Aα 1 Aα 2... Aα m β 1 β 2... β n jsou všechna její A-pravidla, přičemž řetězce β i nezačínají symbolem A. Pak gramatika G, ve které budou tato pravidla nahrazena pravidly: A β 1 β 2... β n β 1 A β 2 A... β n A A α 1 α 2... α 1 A α 2 A... α m A kde A je nový nonterminál, je ekvivalentní s G. Bezkontextové jazyky 1 p.29/39

Důkaz. Uvedená transformace nahrazuje pravidla rekurzivní zleva pravidly, které jsou rekurzivní zprava. Označíme-li jazyky L 1 = {β 1, β 2,...,β n } a L 2 = {α 1, α 2,...,α m }, vidíme, že v G lze z nonterminálu A derivovat řetězce tvořící jazyk L 1 L 2. Právě tyto řetězce můžeme však derivovat z A také v gramatice G. Efekt popisované transformace ilustruje následující obrázek. A A A α i1 β j A A α i2 α ik A A α i3 α ik-1 A A α ik α i2 A β j α i1 Bezkontextové jazyky 1 p.30/39

Příklad 4.13 Uvažujme gramatiku G = ({E, T,F }, {i,+,, (,)}, P, E) s pravidly: E E + T T T T F F F ( E ) i E E + T T E T TE α 1 = +T, β 1 = T E +T + TE T T F F T F FT α 1 = F,β 1 = F T F FT F ( E ) i Bezkontextové jazyky 1 p.31/39

Odstranění nepřímé levé rekurze Odstranění nepřímé levé rekurze spočívá v opakovaném aplikování transformace podle věty 4.1 a transformačních vzorců pro odstranění přímé levé rekurze (věta 4.4). Příklad 4.14 S AB A BS b B SA a Uvažujme gramatiku G = ({S, A, B}, {a,b}, P, S) s pravidly: Na pravidlo B SA aplikujeme dvakrát větu 4.1: B ABA B BSBA bba Na všechna B-pravidla B BSBA bba a aplikujme transformaci věty 4.4: B bba a bbab ab B SBA SBAB Bezkontextové jazyky 1 p.32/39

Normální formy bezkontextových gramatik Bezkontextové jazyky 1 p.33/39

Chomského normální forma (CNF) Definice 4.12 Bezkontextová gramatika G = (N, Σ, P, S) je v Chomského normální formě, má-li každé pravidlo z P jeden z těchto tvarů: 1. A BC, kde A, B,C N 2. A a, kde a Σ 3. je-li ε L(G), pak S ε je jediné ε-pravidlo a S se nevyskytuje na pravé straně žádného přepisovacího pravidla. Problém: Necht G = (N, Σ, P, S) je bezkontextová gramatika v CNF a necht w L(G) a S p G w. Jaká je délka řetězce w? Řešení: Označme w = n. Zřejmě platí p = n + (n 1) = 2n 1 w = p + 1 2 Bezkontextové jazyky 1 p.34/39

Věta 4.5 Necht G je bezkontextová gramatika. Pak existuje gramatika G v Chomského normální formě taková, že L(G ) = L(G). Důkaz. (Hlavní myšlenka) Gramatiku G převedeme na ekvivalentní vlastní gramatiku bez jednoduchých pravidel. 1. Pravidla tvaru (1), (2) a (3) ponecháme. 2. Pravidla tvaru A X 1 X 2... X n, kde X i (N Σ) pro i = 1,...,n, n > 2, transformujeme na A X 1 X 2 X 3... X n, kde X 2 X 3...X n je nový nonterminál a X 1 je nový nonterminál pokud X 1 Σ, nebo X 1 = X 1 v opačném případě. 3. Pravidla tvaru A X 1 X 2 transformujeme na pravidla A X 1X 2, kde X i je nový nonterminál pokud X i Σ, nebo X i = X i v opačném případě pro i {1,2} 4. Pro nové nonterminály tvaru X 1 X 2...X n, n 2, zavedeme pravidla X 1 X 2...X n X 1 X 2...X n pro n > 2 a X 1 X 2 X 1X 2 pro n = 2, kde X 2...X n je nový nonterminál a X i je nový nonterminál pokud X i Σ, nebo X i = X i v opačném případě pro i {1,2}. 5. Pro nové nonterminály tvaru X i, kde X i Σ přidáme pravidla tvaru X i X i. Bezkontextové jazyky 1 p.35/39

Příklad 4.15 Uvažujme gramatiku G = ({A, B}, {a,b, c}, P, A) s pravidly: A BAB Ba bc B AB a BBB Po aplikaci transformací (1.)-(4.) získáme CNF ve tvaru: A B AB Ba b c B AB a B BB AB AB BB BB a a b b c c Bezkontextové jazyky 1 p.36/39

Greibachové normální forma (GNF) Definice 4.13 Bezkontextová gramatika G = (N, Σ, P, S) je v Greibachové normální formě, je-li G gramatikou bez ε-pravidel a každé pravidlo z P (vyjma případného pravidla S ε) má tvar: A aα, kde a Σ, α N Lemma 4.3 Necht G = (N, Σ, P, S) je bezkontextová gramatika bez levé rekurze. Pak na N existuje lineární uspořádání takové, že je-li A Bα pravidlo z P, pak A B. Důkaz. Definujme relaci R na N: R = {(A, B) A Bα,A, B N, α (N Σ) } Lze ukázat, že R je částečné uspořádání. Každé částečné uspořádání lze rozšířit na lineární uspořádání. Bezkontextové jazyky 1 p.37/39

Věta 4.6 Ke každé bezkontextové gramatice existuje Greibachové normální forma této gramatiky. Důkaz. (Hlavní myšlenka) Nalezení GNF gramatiky G předpokládá: 1. Odstranění levé rekurze a ε-pravidel. 2. Nalezení lineárního uspořádání na množině nonterminálů. 3. Aplikace substitucí v pořadí opačném k danému uspořádání tak, aby všechna pravidla byla tvaru A aβ, A N, a Σ, β (N Σ). 4. Převod všech pravidel A aβ, A N, β (N Σ) na pravidla tvaru A aα, A N, a Σ, α N. Bezkontextové jazyky 1 p.38/39

Příklad 4.16 Uvažujme gramatiku, jež vznikne odstraněním levé rekurze z typické gramatiky pro aritmetický výraz G = ({E,T, F }, {i,+,, (,)}, P, E) s pravidly: E T TE E +T + TE T F FT T F FT F ( E ) i Nalezneme lineární uspořádání: E E T T F E ( E ) i ( E ) T it ( E ) E ie ( E ) T E it E E +T + TE T ( E ) i ( E ) T it T F FT F i ( E ) Přidáno pravidlo ) ). Bezkontextové jazyky 1 p.39/39