PRŮBĚH PŘEDNÁŠKY FORMÁLNÍ JAZYKY A AUTOMATY (ZIMNÍ SEMESTR 2012/2013) =========================== 10.10.2012 =========================== Konečná abeceda, slovo, jazyk. Zřetězení jazyků, asociativita, iterace jazyka. u \in X, u \not\in L neimplikují L různé od LX. Příklad X = {eps, a}, L = ba^*. Konečná reprezentace jazyka pomocí generování nebo rozpoznávání. Nedeterministický algoritmus, příklady generování a rozpoznávání symetrických slov. Generativní systém definující jazyk a^n b^n, n \ge 0. Obousměrný deterministický automat se zásobníkem může rozpoznávat symetrická slova. =========================== 17.10.2012 =========================== Dvojcestný zásobníkový automat pro symetrická slova. Příklad L = LX, když X={eps, u} a slovo u nepatří do L. Uvažujeme gramatiku G, jejíž terminální abeceda je \Sigma, neterminální abeceda je \Gamma a počáteční symbol je S \in \Gamma. Odvozovací pravidlo je tvaru \alpha -> \beta, kde \alpha a \beta jsou slova ve sjednocení terminální a neterminální abecedy a \alpha obsahuje alespoň jeden neterminál. Relace => a její iterace =>^*. Jazyk definovaný gramatikou je L(G) = {u \in \Sigma^*; S =>^* u} Důkaz korektnosti generativního systému pro jazyk a^n b^n, n \ge 0. Chomského hierarchie, postupné omezování tvaru pravidel. Třída 0, částečně rekurzivní jazyky, libovolná pravidla s neprázdnou levou stranou. Třída 1, kontextové jazyky. Jsou to jazyky rozpoznatelné nebo generovatelné nedeterministickýcm TS (Turingův stroj) s lineárním omezením prostoru. Deterministicky vyžadují kvadratický prostor, ale již se nejedná o charakterizaci. Pravidla gramatiky mají pravou stranu alespoň tak dlouhou jako levou stranu. Bez újmy na obecnosti lze požadovat, aby pravidla byla tvaru x A y -> x \beta y. Od tohoto tvaru pravidel je odvozen název kontextové gramatiky. Třída 2, bezkontextové gramatiky. Pravidla jsou tvaru A -> \beta. Třída 3, regulární gramatiky. Pravidla jsou některého z tvarů A -> a B A -> eps Stejnou třídu jazyků dostaneme pro zobecněné regulární gramatiky, které mají pravidla tvaru A -> \beta B A -> \beta kde \beta je libovolné slovo v terminální abecedě. Cvičení. Rozšiřte gramatiku pro {a^n b^n} na gramatiku pro {a^n b^n c^n}. =========================== 24.10.2012 =========================== Řešení úlohy o generování jazyka a^i b^i c^i. Složitost testování w \in L(G) a L(G_1) = L(G_2) na různých stupních Chomského hierarchie. Kontextové jazyky jsou právě rovny jazykům rozpoznatelným nedeterministickým Turingovým strojem v lineárním prostoru, tedy prostoru O(n), kde n je délka vstupního slova. Zavedení Turingova stroje (TS) pomocí přechodové funkce, programovací jazyk pro TS. Příklad TS pro kopírování slova na dvou páskách a jedné pásce. =========================== 31.10.2012 =========================== Program na kopírování slova na jedné pásce TS. Konfigurace TS zapsaná pomocí slova v konečné abecedě. Důkaz uzavřenosti třídy NSPACE(s(n)) na komplement (Immerman). Zavedení přechodových diagramů, definice přijímaného jazyka. =========================== 7.11.2012 =========================== Ekvivalence základních a rozšířených regulárních gramatik. Zavedení speciálních regulárních gramatik, které jsou zobecňují základní regulární gramatiky a jsou speciálním případem rozšířených regulárních gramatik. Mezi speciálními regulárními gramatikami a přechodovými diagramy existuje bijekce, která zachovává definovaný jazyk. Z toho plyne, že regulární gramatiky všech tří typů a přechodové diagramy definují stejnou třídu jazyků. Definice konečného automatu a konečného automatu s výstupem. Cvičení: Nalezeněte automat s výstupem, který rozlišuje typy čísel ve zdrojovém kódu programu. =========================== 14.11.2012 =========================== Dokončen automat pro rozpoznávání čísel. Popsány regulární výrazy a jazyk, který reprezentují. Příklady převodu PD na KA pro jazyk (a+b)^* a (a+b)^k a pro jazyk slov obsahujících ababc. KA lze přímočaře převést na ekvivalentní PD. Popsána podmnožinová konstrukce KA k libovolnému PD, důkaz jejich ekvivalence příště. =========================== 21.11.2012 =========================== Důkaz podmnožinové konstrukce KA k danému PD. Důkaz ekvivalence PD a RV. Cvičení. Najděte RV pro KA popsaný některou z tabulek a b c 1 2 1 3 2 1 3 2 3 3 2 1 a b 1 2 3 2 1 4 3 4 1 4 3 2 V obou případech je počáteční stav 1 a množina přijímajících stavů {1}. =========================== 28.11.2012 =========================== Neprobrali jsme cvičení z minula. Poznámka: astronomický jev 21.12.2012. Ekvivalence KA a RV. Operace s jazyky reprezentovanými KA. Test neprázdnosti jazyka definovaného PD a test ekvivalence KA. Neregulární jazyky, pumpovací lemma a třídy ekvivalence slov podle jazyka. Důkaz exponenciální velikosti KA pro (a+b)^*a(a+b)^k. Příklad bezkontextové gramatiky. =========================== 5.12.2012 =========================== Dokončení příkladů z minula. Příklad slova, které nelze odvodit v gramatice pro aritmetické výrazy. Bezkontextové jazyky jsou uzavřeny na sjednocení, zřetězení a iteraci. Definice nevypouštějící gramatiky, ke každé gramatice G existuje nevypouštějící gramatika reprezentující jazyk L(G) - {eps}. Chomského normální forma, ke každé gramatice G existuje gramatika v Chomského normální formě reprezentující jazyk L(G) - {eps}. Věta o nahrazení (pumping lemma, uvwxy theorem) a použití pro důkaz, že jazyk a^i b^i c^i není bezkontextový. =========================== 12.12.2012 =========================== Cvičení. Rozhodněte, které z následujících jazyků jsou bezkontextové. (1) správná uzávorkování pomocí závorek ([ podle parity hloubky vnoření (2) výrokové formule (3) pravdivé výrokové formule Jazyky slov tvaru a^i1 b^i2 c^i3 nebo a^i1 b^i2 c^i3 d^i4 zadané abecedou a podmínkami na exponenty. (4) abcd, i1 <= 2 i2, i2 <= 2 i3, i3 <= 2 i4, i4 <= 2 i1 (5) abcd, i1 <= 2 i2, i2 <= 2 i3, i3 <= 2 i4 (6) abc, i1 <= 2 i2, i2 <= 2 i3 Cvičení. a^i1 b^i2 c^i3 d^i4 s podmínkami (1) i1 = i2, i3 = i4 (2) i1 = i3, i2 = i4 (3) i1 = i4, i2 = i3 =========================== 19.12.2012 =========================== Příklad konstrukce lineární gramatiky pro jazyk slov tvaru "u^R,v", kde čárka je prvek abecedy, u,v jsou slova z {0, 1}^* a platí hodnota(v) = hodnota(u) + 1 a hodnota(u) \ge 1, kde zápisem hodnota(u) rozumíme přirozené číslo, které je ve dvojkové soustavě zapsané slovem u. Požadujeme, že slova u, v nezačínají číslicí 0. Slovo u^R je reverze slova u, tedy slovo zapsané s opačným pořadím symbolů. Lineární gramatika je taková, že v každé větné formě odvoditelné v dané gramatice je nejvýše jeden neterminál. Konstrukce proběhla v několika krocích (a) KA s výstupem, který dostává na vstup dvojice binárních číslic slov u, v počínaje nejnižším řádem (tedy od konce) a počítá binární zápis rozdílu v - u, opět od nejnižších řádů. (b) KA, který rozpoznává dvojice slov u, v splňující podmínku hodnota(v) = hodnota(u) + 1. (c) Přepsání získaného KA jako obrácené regulární bezkontextové gramatiky, která generuje dvojice slov tak, že generuje slova v abecedě dvojic symbolů. Například slovo 11 10 10 01 10 00 00 10 representuje dvojici slov 1 1 1 0 1 0 0 1, 1 0 0 1 0 0 0 0, kde první slovo je tvořené prvními symboly z každé dvojice, druhé slovo je tvořeno druhými symboly z každé dvojice. (d) Bezkontextová gramatika byla dále upravena opět na lineární gramatiku, ale tak, že první symboly z generovaných dvojic byly generovány za neterminálem a druhé symboly byly generovány před neterminálem. =========================== 2.1.2013 =========================== Konstrukce bezkontextové gramatiky pro komplement jazyka výpočtů TS. Důsledek. Otázka, zda L(G) = \Sigma^* pro obecnou bezkontextovou gramatiku G, je algoritmicky nerozhodnutelná. Výpočet součtu součinů číslic k ciferných čísel. Zobecnění pomocí grafů pro libovolnou podmnožinu definovanou regulárním jazykem.