Formln jazyky a gramatiky Gramatika generativn zpsob uren
Formální jazyky a gramatiky Gramatika = generativní způsob určení jazyka Považujme nyní za základní symbol slovo, vyšší je věta. Struktura věty je definována určitými pravidly: pravidla věta
Formální jazyky a gramatiky Způsob zápisu gramatických pravidel: <definovaná jednotka> definice Lomené závorky naznačují, že jednotku je nutné dále specifikovat pomocí dalších jednotek Gramatická pravidla použitá k definici předchozí věty: <věta> <podmětná část> <přísudková část> <podmětná část > <podstatné jméno> <podstatné jméno > tom < přísudková část > <sloveso> <předmětná část> < sloveso > hraje <předmětná část> <podstatné jméno> <podstatné jméno > hokej
Formální jazyky a gramatiky Přestože se to zdá být snadné, formalizace přirozeného jazyka není vůbec jednoduchá Tom hraje golf. – Golf hraje Tom. slovosled Tom s Jirkou …. Jirka s Tomem … skloňování Tom má rád Evu. Eva má ráda Toma. časování I po překonání těchto obtíží budeme mít velký problém, protože každá gramatika umožňuje generovat gramaticky správné věty (syntakticky správné, přípustné), ale nezaručuje sémantickou správnost Hokej hraje hokej. Tom jí polévku. – Polévka jí Toma.
Formální jazyky a gramatiky Zpracování přirozeného jazyka naráží na nejasnosti: Fonetické Lexikální – mít x mýt; typ x tip; led x let – kolo; kohoutek; hustý; léto Syntaktické – Maso se solí. (dva syntaktické stromy) Sémantické – Všichni ti lžou. Každý student má přístup do budovy. x (student(x) y (budova(y) & má_přístup(x, y)) y (budova(y) x (student(x) má_přístup(x, y))
Formální jazyky a gramatiky Při běžné lidské komunikaci v přirozeném jazyce jsme citliví i na kontext celé situace a dovozujeme si význam řečeného: To se ti opravdu povedlo. Učí se dobře, to nemohu říci. Kniha se nevešla na poličku, protože byla příliš malá. oproti větě Kniha se nevešla na poličku, protože byla příliš velká.
Gramatika K definici gramatiky jsou potřebné neterminální symboly = symboly, které musí být dále definovány terminální symboly = prvotní symboly jazyka přepisovací pravidla = gramatická pravidla potřebná k tvorbě vět počáteční symbol = neterminál, od něhož odvozování začíná DEF: Gramatikou nazýváme čtveřici G=(N, T, P, S), kde N je konečná množina neterminálů T je konečná množina terminálů, přičemž N T=Ø S N je počáteční (startovní, iniciační) symbol a P je množina přepisovacích pravidel, která je konečnou podmnožinou množiny (N T)*N (N T)* x (N T)*
Gramatika Poznámky k definici gramatiky: Zápis (N T)*N (N T)* x (N T)* znamená požadavek na alespoň jeden neterminál na levé straně pravidla Konečnost množin je vyžadována proto, že nekonečné množiny jednak nemají praktický smysl, nebo je lze zakódovat Užitečné konvence (BNF – Backus-Naurova forma /ALGOL/): Neterminály označujeme velkými latinskými písmeny Terminály označujeme malými latinskými písmeny Slova složená z neterminálů a terminálů označujeme malými řeckými písmeny Přepisovací pravidla se stejnou levou stranou, tj. 1, 2, …, k zapíšeme jako 1| 2| … | k
Příklady gramatik Příklad 1: G = ({A}, {a, b}, P, A), přičemž P = { A a. Ab | e } Příklad 2: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P={B A|C A a. A | b. A | e C 0 C | 1 C | e } Příklad 3: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P = { B AC A a | b | a. A | b. A C 0 | 1 | 0 C | 1 C }
Použití gramatiky Základem generování vět jazyka jsou přepisovací pravidla DEF: Buď G=(N, T, P, S) gramatika. Potom nad množinou (N T)* definujeme relaci derivace G následujícím způsobem: jestliže (N T)* a (N T)* , potom dané řetězce jsou v relaci G , tj. G , pokud v P existuje pravidlo . Jestliže , (N T)* a platí G , potom říkáme, že je možné v jednom kroku odvodit (derivovat) z (přímo odvodit).
Použití gramatiky Příklad: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P = { B AC A a | b | a. A | b. A C 0 | 1 | 0 C | 1 C } AC G aa. AC … přímé odvození (A a. A) … postupné odvození (AC 2 G aa. AC ) B G AC G ab. C G ab 11 C G ab 111 (B 6 G ab 111 ) G ……. G ( *G )
Použití gramatiky DEF: Nechť G=(N, T, P, S) je gramatika. Množinu řetězců (N T)* , které jsou odvoditelné z počátečního symbolu S, nazýváme množina větných forem. Množina větných forem V je formálně definována jako V={ | S *G , (N T)* } DEF: Nechť G=(N, T, P, S) je gramatika. Jazykem L(G) specifikovaným gramatikou G nazýváme množinu řetězců, T*, které jsou odvoditelné z počátečního symbolu S. Formálně tedy: L(G)={ | S *G , T* }
Použití gramatiky Poznámky k definici: Věty jazyka L(G) jsou složeny pouze z terminálů. Pokud je z kontextu zřejmé, kterou gramatiku G při odvozování máme na mysli, stačí psát místo G Platí vztah 1 jazyk má 1 gramatiku? Nikoliv – i různé gramatiky mohou mít stejné odvozovací možnosti. DEF: Gramatiky G 1 a G 2 jsou ekvivalentní, pokud platí L(G 1)=L(G 2)
Příklad ekvivalentní gramatiky Příklad: G 1 = ({A, B, C}, {a, b, …, z}, P 1, A), P 1 = { A B | AC B a C a | b | …. | z } G 2 = ({D, E}, {a, b, …, z}, P 2, D), P 2 = { D a | a. E E EE | a | b | …. | z } L(G 1) = ? , L(G 2) = ? L(G 1) = L(G 2) = {všechna slova začínající písmenem a}
Důsledky Nezáleží tedy na druhu, tvaru či počtu přepisovacích pravidel, ale rozhodující jsou odvozovací možnosti. Jelikož lze daný jazyk popsat vícero ekvivalentními gramatikami, je účelné gramatiky dále zkoumat nejen z hlediska toho, jaký jazyk popisují, ale i jakým způsobem ho popisují. Vhodným omezením tvaru přepisovacích pravidel je možné gramatiky rozdělit do tříd a v návaznosti na to klasifikovat i příslušné jazyky.
Klasifikace gramatik Noam Chomski – podle tvaru přepisovacích pravidel DEF: Nechť G=(N, T, P, S) je gramatika. Potom G je gramatika typu O (neomezená), jestliže na přepisovací pravidla neklademe žádná omezení gramatika typu 1 (kontextová), jestliže každé přepisovací pravidlo z P má tvar , kde (N T)* N (N T)*, (N T)+ a platí | | | | gramatika typu 2 (bezkontextová), jestliže každé přepisovací pravidlo z P má tvar A , A N, (N T)* gramatika typu 3 (regulární), jestliže každé přepisovací pravidlo z P má tvar A b. B nebo A b, kde A N, B N, b T
Doplnění prázdného slova Někdy potřebujeme specifikovat jazyk obsahující prázdné slovo i pro kontextové a regulární gramatiky (výše uvedené definice by to vylučovaly) Tradičně se reší přidáním nového počátečního symbolu S 1 a dvou přepisovacích pravidel S 1 S, S 1 e V takovémto případě budeme i nadále mluvit o gramatice kontextové či regulární
Hierarchie gramatik Z definice jednotlivých typů gramatik je automaticky zřejmé, že: Každá regulární gramatika G je bezkontextová Každá bezkontextová gramatika G je kontextová Každá kontextová gramatika G je gramatikou bez omezení
Hierarchie jazyků DEF: Jazyk nazýváme regulární, jestliže je možné jej generovat regulární gramatikou. DEF: Jazyk nazýváme bezkontextový, jestliže je možné jej generovat bezkontextovou gramatikou. DEF: Jazyk nazýváme kontextový, jestliže je možné jej generovat kontextovou gramatikou. DEF: Jazyk nazýváme bez omezení, jestliže je možné jej generovat gramatikou bez omezení. Zřetelně platí: 3 2 1 0
- Slides: 18