Úvod 1. 3 Regulární jazyky Konečné jazyky Pumping Lemma pro regulární jazyky a nekonečné jazyky Sjednocení...

Podobné dokumenty
Automaty a gramatiky(bi-aag)

Je regulární? Pokud ne, na regulární ji upravte. V původní a nové gramatice odvod te řetěz 1111.

Minimalizace automatů. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 28. března / 31

Automaty a gramatiky

Definice. Necht M = (Q, T, δ, q 0, F ) je konečný automat. Dvojici (q, w) Q T nazveme konfigurací konečného automatu M.

Automaty a gramatiky. Úvod do formáln. lních gramatik. Roman Barták, KTIML. Příklady gramatik

Teorie jazyků a automatů I

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

Automaty a gramatiky

Teorie jazyků a automatů

Převody Regulárních Výrazů. Minimalizace Konečných. Regulární jazyky 2 p.1/35

Automaty a gramatiky. Organizační záležitosti. Přednáška: na webu ( Proč chodit na přednášku?

6. Zobrazení δ: (a) δ(q 0, x) obsahuje x i, x i Z. (b) δ(x i, y) obsahuje y j, x i y j P 7. Množina F je množinou koncových stavů.

Automaty a gramatiky. Roman Barták, KTIML. Důkaz věty o isomorfismu reduktů. Věta o isomorfismu reduktů. Pro připomenutí

Teorie jazyků a automatů

Petriho sítě PES 2007/2008. Doc. Ing. Tomáš Vojnar, Ph.D.

Úvod do Teoretické Informatiky ( UTI)

2.5.4 Věta. Každý jazyk reprezentovaný regulárním výrazem je regulárním jazykem.

( ) ( ) Sinová věta II. β je úhel z intervalu ( 0;π ). Jak je vidět z jednotkové kružnice, úhly, pro které platí. Předpoklady:

Deterministický konečný automat

Lineární nerovnice a jejich soustavy

4. přednáška 22. října Úplné metrické prostory. Metrický prostor (M, d) je úplný, když každá cauchyovská posloupnost bodů v M konverguje.

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

Větu o spojitosti a jejich užití

ANALYTICKÁ GEOMETRIE V PROSTORU

Formální jazyky. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 6. března / 48

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

Obecně: K dané funkci f hledáme funkci ϕ z dané množiny funkcí M, pro kterou v daných bodech x 0 < x 1 <... < x n. (δ ij... Kroneckerovo delta) (4)

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

MULTIDIMENSIONÁLNÍ JAZYKY A JEJICH AUTOMATY MULTI-DIMENSIONAL LANGUAGES AND THEIR AUTOMATA

56. ročník Matematické olympiády. b 1,2 = 27 ± c 2 25

4.4.1 Sinová věta. Předpoklady: Trigonometrie: řešení úloh o trojúhelnících.

3.2.1 Shodnost trojúhelníků I

Jsou to rovnice, které obsahují neznámou nebo výraz s neznámou jako argument logaritmické funkce.

Zavedení a vlastnosti reálných čísel PŘIROZENÁ, CELÁ A RACIONÁLNÍ ČÍSLA

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

( t) ( t) ( t) Nerovnice pro polorovinu. Předpoklady: 7306

+ c. n x ( ) ( ) f x dx ln f x c ) a. x x. dx = cotgx + c. A x. A x A arctgx + A x A c

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

VIII. Primitivní funkce a Riemannův integrál

Vztah jazyků Chomskeho hierarchie a jazyků TS

Podobnosti trojúhelníků, goniometrické funkce

Komplexní čísla tedy násobíme jako dvojčleny s tím, že použijeme vztah i 2 = 1. = (a 1 + ia 2 )(b 1 ib 2 ) b b2 2.

Až dosud jsme se zabývali většinou reálnými posloupnostmi, tedy zobrazeními s definičním

x + F F x F (x, f(x)).

Reprezentovatelnost částek ve dvoumincových systémech

Hyperbola, jejíž střed S je totožný s počátkem soustavy souřadnic a jejíž hlavní osa je totožná

ZÁKLADNÍ POZNATKY. p, kde ČÍSELNÉ MNOŽINY (OBORY) N... množina všech přirozených čísel: 1, 2, 3,, n,

3 Algebraické výrazy. 3.1 Mnohočleny Mnohočleny jsou zvláštním případem výrazů. Mnohočlen (polynom) proměnné je výraz tvaru

Jak již bylo uvedeno v předcházející kapitole, můžeme při výpočtu určitých integrálů ze složitějších funkcí postupovat v zásadě dvěma způsoby:

Konstrukce na základě výpočtu I

INTEGRACE KOMPLEXNÍ FUNKCE KŘIVKOVÝ INTEGRÁL

ZÁKLADY. y 1 + y 2 dx a. kde y je hledanou funkcí proměnné x.

LINEÁRNÍ DIFERENCIÁLNÍ ROVNICE 2.ŘÁDU

NEWTONŮV INTEGRÁL. V předchozích kapitolách byla popsána inverzní operace k derivování. Zatím nebylo jasné, k čemu tento nástroj slouží.

( ) ( ) ( ) Exponenciální rovnice Řeš v R rovnici: = ŘEŠENÍ: Postup z předešlého výpočtu doplníme využitím dalšího vztahu: ( ) t s t

písemná a ústní část porozumění látce + schopnost formalizace

Syntaxí řízený překlad

2.1 - ( ) ( ) (020201) [ ] [ ]

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Riemannův určitý integrál.

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 Σ

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

Integrály definované za těchto předpokladů nazýváme vlastní integrály.

Matice. a B =...,...,...,...,..., prvků z tělesa T (tímto. Definice: Soubor A = ( a. ...,..., ra

Spojitost funkce v bodě, spojitost funkce v intervalu

10. Suffixové stromy

( a) Okolí bodu

8. cvičení z Matematiky 2

Základy teorie matic

VIII. Primitivní funkce a Riemannův integrál

Vlastnosti regulárních jazyků

integrovat. Obecně lze ale říct, že pokud existuje určitý integrál funkce podle různých definic, má pro všechny takové definice stejnou hodnotu.

V předchozích kapitolách byla popsána inverzní operace k derivování. Zatím nebylo jasné, k čemu tento nástroj slouží.

Půjdu do kina Bude pršet Zajímavý film. Jedině poslední řádek tabulky vyhovuje splnění podmínky úvodního tvrzení.

2.2.9 Grafické řešení rovnic a nerovnic

je jedna z orientací určena jeho parametrizací. Je to ta, pro kterou je počátečním bodem bod ϕ(a). Im k.b.(c ) ( C ) (C ) Obr Obr. 3.5.

Úlohy krajského kola kategorie A

2. Funkční řady Studijní text. V předcházející kapitole jsme uvažovali řady, jejichž členy byla reálná čísla. Nyní se budeme zabývat studiem

4.4.3 Kosinová věta. Předpoklady:

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

P2 Číselné soustavy, jejich převody a operace v čís. soustavách

DERIVACE A INTEGRÁLY VE FYZICE

2.7.7 Obsah rovnoběžníku

2.8.5 Lineární nerovnice s parametrem

R n výběr reprezentantů. Řekneme, že funkce f je Riemannovsky integrovatelná na

Definice limit I

Přednáška 9: Limita a spojitost

3. APLIKACE URČITÉHO INTEGRÁLU

m n. Matice typu m n má

3.2. LOGARITMICKÁ FUNKCE

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

7.5.8 Středová rovnice elipsy

OBECNÝ URČITÝ INTEGRÁL

Zkoušku snadno provedeme tak, že do soustavy (1), která je ekvivalentní dané soustavě rovnic, dosadíme příslušné hodnoty s a p.

3.1.3 Vzájemná poloha přímek

Naproti tomu gramatika je vlastně soupis pravidel, jak

(1) přičemž všechny veličiny uvažujeme absolutně. Její úpravou získáme vztah + =, (2) Přímé zvětšení Z je dáno vztahem Z = =, a a

Nerovnosti a nerovnice

Integrál a jeho aplikace Tomáš Matoušek

Transkript:

Osh Úvod 1 1 Teoretická informtik 2 1.1 Vznik vývoj teoretické informtiky................... 2 1.1.1 Mtemtik............................. 2 1.1.2 Jzykověd............................. 5 1.1.3 Biologie............................... 6 1.2 Možnosti použití teoretické informtiky................. 8 2 Konečné utomty 9 2.1 Konečný utomt.............................. 9 2.2 Nedeterminismus.............................. 12 2.3 Totální utomt............................... 15 2.4 Odstrnění nepotřených stvů utomtu................ 16 2.4.1 Nedosžitelné stvy........................ 16 2.4.2 Ndytečné stvy.......................... 17 3 Regulární jzyky 19 3.1 Konečné jzyky............................... 19 3.2 Pumping Lemm pro regulární jzyky nekonečné jzyky...... 20 3.3 Uzávěrové vlstnosti třídy regulárních jzyků............. 22 3.3.1 Sjednocení.............................. 23 3.3.2 Zřetězení............................... 24 3.3.3 Iterce................................ 25 I

OBSAH II 3.3.4 Pozitivní iterce........................... 26 3.3.5 Zrcdlový orz.......................... 26 3.3.6 Průnik................................ 27 3.3.7 Homomorfismus.......................... 29 4 Regulární výrzy 30 4.1 Možnosti využití regulárních výrzů................... 30 4.2 Definice.................................... 31 4.3 Vzth ke konečným utomtům..................... 32 4.4 Využití vzthu regulárních výrzů k reg. jzykům........... 36 4.4.1 Důkzy uzávěrových vlstností regulárních jzyků...... 36 4.4.2 Normovný utomt........................ 37 4.4.3 Minimlizce konečného utomtu............... 38 5 Formální grmtiky 44 5.1 Generování slov jzyk........................... 44 5.2 Regulární grmtiky............................ 46 5.3 Chomského hierrchie grmtik..................... 50 5.3.1 Grmtiky v Chomského hierrchii............... 50 5.3.2 Související typy grmtik..................... 51 5.4 Operce nd slovy jzyky........................ 52 6 Bezkontextové jzyky 54 6.1 Bezkontextové grmtiky......................... 54 6.2 Vlstnosti ezkontextových grmtik.................. 56 6.2.1 Bezkontextová grmtik nezkrcující.............. 56 6.2.2 Redukovná grmtik...................... 58 6.2.3 Grmtik ez jednoduchých prvidel............. 61 6.2.4 Dlší typy ezkontextových grmtik.............. 62 6.3 Normální formy pro ezkontextové grmtiky............. 63 6.3.1 Chomského normální form................... 63 6.3.2 Greichov normální form................... 65

Kpitol 1 Teoretická informtik Tto kpitol je především motivční dovíme se zde, jký má teoretická informtik význm, jk vznikl tké jké jsou možnosti jejího prktického použití. 1.1 Vznik vývoj teoretické informtiky Vznik teoretické informtiky tři kořeny: 1. mtemtik, 2. jzykověd, 3. iologie. 1.1.1 Mtemtik Počátek 20. století: rozvoj logiky. Roku 1936 zjištění: Nelze cokoliv jednoznčně určit vypočítt. Otázk: Co lze vypočítt? = Turingův stroj dlší výpočetní modely Aln Turing (1912 1954) Vytvořil Turingův stroj jko mtemtický model N tomto stroji lze vypočítt právě to, co je vypočittelné. 2

KAPITOLA 1 TEORETICKÁ INFORMATIKA 3 $ 0 1 1 X A $ (jednostrnně) nekonečná pásk čtecí zápisová hlv, pohy oěm směry Konečná řídicí jednotk stv (proměnná, vnitřní pmět ) Orázek 1.1: Turingův stroj Vlstnosti Turingov stroje: řídicí jednotk se vždy nchází v některém z předem určených stvů, čtecí zápisová hlv je vždy n některém políčku pásky, v kždém kroku se stroj řídí podle stvu jednotky podle oshu políčk, n které ukzuje hlv, podle těchto dvou údjů se rozhodne o kci, která spočívá ve změně stvu jednotky (npříkld ze stvu nčítání do stvu nčteno neo ze stvu prcuji do stvu vypínám ), přepsání oshu políčk n pásce něčím jiným (neo může políčko zůstt eze změny), posun n pásce vprvo, vlevo, neo může hlv zůstt n stejném políčku. Výsledkem činnosti stroje ovykle ývá osh pásky, důležitou informcí může ýt stv, ve kterém stroj skončil výpočet (je množin koncových stvů). Dlší modely: Turingův stroj yl moc složitý pro některé jednodušší výpočty, proto vznikly jednodušší modely konečný utomt zásoníkový utomt. Vlstnosti konečného utomtu: řídicí jednotk se vždy nchází v některém z předem určených stvů, čtecí hlv je vždy n některém políčku pásky,

KAPITOLA 1 TEORETICKÁ INFORMATIKA 4 0 1 1 8 3 f w jednostrnně nekonečná pásk čtecí hlv, pohy doprv Konečná řídicí jednotk stv (proměnná, vnitřní pmět ) Orázek 1.2: Konečný utomt v kždém kroku se stroj řídí podle stvu jednotky podle oshu políčk, n které ukzuje hlv, podle těchto dvou údjů se rozhodne o kci, která spočívá ve změně stvu jednotky (npříkld ze stvu nčítání do stvu nčteno neo ze stvu prcuji do stvu vypínám ), posunem n pásce o políčko vprvo. Nrozdíl od Turingov stroje se čtecí hlv posouvá v kždém kroku o políčko doprv nemá možnost zpisovt. Výsledkem činnosti utomtu je pouze informce o tom, ve kterém stvu stroj skončil, zd přečetl celý osh pásky (když nepřečetl zsekl se pro dný osh pole n pásce momentální stv tře není definován žádná kce). 0 1 1 8 3 f w jednostrnně nekonečná pásk čtecí hlv, pohy doprv Konečná řídicí jednotk stv (proměnná, vnitřní pmět ) 5 Z zásoník Orázek 1.3: Zásoníkový utomt

KAPITOLA 1 TEORETICKÁ INFORMATIKA 5 Vlstnosti zásoníkového utomtu: řídicí jednotk se vždy nchází v některém z předem určených stvů, čtecí hlv je vždy n některém políčku pásky, utomt má k dispozici zásoník, kde přidává shor tké shor vyírá, v kždém kroku utomt vyjme jeden prvek ze zásoníku, řídí se podle tohoto vyjmutého symolu, stvu jednotky tké se může (nemusí) řídit podle oshu políčk, n které ukzuje hlv, podle těchto tří (neo dvou) údjů se rozhodne o kci, která spočívá ve změně stvu jednotky (npříkld ze stvu nčítání do stvu nčteno neo ze stvu prcuji do stvu vypínám ), posunem n pásce o políčko vprvo, pokud v tomto kroku četl symol ze vstupní pásky (tj. když čte ze vstupu, zároveň se posune dál), může uložit do zásoníku jkýkoliv počet prvků (i žádný), to postupně po jednom, ten, který vložil jko poslední, ude hned v dlším kroku vyjmut. Nrozdíl od konečného utomtu čtecí hlv nemusí prcovt v kždém kroku (ud čte zároveň se posune, neo neprcuje vůec), nemá možnost zpisovt pohyuje se jen směrem doprv. Výsledkem činnosti je informce o stvu, ve kterém stroj skončil, zd přečetl celý osh pásky, přípdně může ýt důležité, zd do konce výpočtu stčil vyprázdnit celý zásoník. 1.1.2 Jzykověd Formální grmtik řeší, jk se slov utvářejí (u mtemtických kořenů yl řešen prolém rozpoznávání již utvořených slov či sekvencí signálů). Nom Chomskij Zkouml syntxi jzyk schopnost lidí mluvit. Všechny jzyky jsou utvořeny přiližně stejným způsoem, mjí stejný zákld. Definice 1.1 (Formální grmtik) Formální grmtik je souor oecných prvidel, generujeme větu n zákldě její struktury (syntxe).

KAPITOLA 1 TEORETICKÁ INFORMATIKA 6 Příkld 1.1 S [egin]a[end] A P; A P;A P [vypis]t T [pismenko] T [pismenko]t S [egin]a[end] [egin]p;[end] [egin]p;p;[end] [egin][vypis]t;p;[end] [egin][vypis][pismenko]t;p;[end]... [egin][vypis][pismenko][pismenko][pismenko]; [vypis][pismenko][pismenko][pismenko][pismenko];[end] Zákldní princip: Vět se skládá ze slov, při skládání částí potřeujeme tké pomocná slov ( oecné termíny ), z která můžeme dosdit posloupnost skládjící se ze slov pomocných slov rekurze. Pomocná slov = neterminální symoly, skutečná slov = terminální symoly Typy formálních grmtik: Grmtik odpovídjící Turingovu stroji: prvidl α β Bezkontextová grmtik: prvidl A β td. 1.1.3 Biologie Aristid Lindenmyer. Lindenmyerovy systémy (L-Systémy) zjistil, že když uprví formální grmtiku pozmění její chování, dokáže npříkld simulovt růst vývoj rostliny neo dělení uněk. Prvidlo: Výpočet: 4 8...

KAPITOLA 1 TEORETICKÁ INFORMATIKA 7 Jeho žáci pk přišli n možnost grfické interpretce L-Systémů různé typy frktálů. U frktálů generovných L-Systémy jde o to, jk poměrně složitý nákres vygenerovt co nejjednodušším řetězcem oyčejných symolů, které mjí význm určité instrukce (vykresli čáru, popojdi ez vykreslení, otoč se doprv, dolev, ulož písmeno do zásoníku, vyjmi písmeno ze zásoníku, pod.). Upltňuje se rekurze, tedy totéž prvidlo (neo ttáž prvidl) se používá pořád dokol tk dlouho, dokud nevznikne dosttečně dlouhá složitá posloupnost instrukcí. () () (c) (d) Orázek 1.4: Několik frktálů vygenerovných pomocí L-Systémů

KAPITOLA 1 TEORETICKÁ INFORMATIKA 8 Npříkld orázek 1.4c n strně 7 vznikl z řetězce F+F+F+F+F+F tk, že jsme rekurzívně všechny symoly F (i ty nově přidávné) zprcovli prvidlem F F[+F+F]F. 1.2 Možnosti použití teoretické informtiky stvové progrmování, překldče modelování mtemtických výpočtů nlýz přirozeného jzyk (kontrol prvopisu, překldy, td.) L-Systémy: iologie, frktály (mlířství, filmy, pod.), fyzik (teorie chosu, modelování turulence, studium tornád, td.) porovnávání složitosti různých lgoritmů děljících totéž DNA-výpočty fyzik kvntové počítče...

Kpitol 2 Konečné utomty Nejdřív se udeme zývt nejjednodušším typem modelů, které yly zmíněny v kpitole 1.1.1 o mtemtických kořenech teoretické informtiky, konečnými utomty, tké se podíváme n zákldy práce s jednoduchými grmtikmi, se kterými jsme se už trochu seznámili v kpitole 1.1.2. 2.1 Konečný utomt Konečný utomt je vždy v některém (vnitřním) stvu, který si můžeme předstvit jko proměnnou nývjící předem stnovených hodnot. Prcuje jednoduše tk, že n zákldě informce o svém momentálním stvu dále podle signálu, který dostl (symolu n vstupu) se přesune do některého jiného stvu zároveň se posune n vstupu, tedy očekává dlší signál (je připrven nčíst dlší symol z pásky). N orázcích 2.1, 2.2 2.3 vidíme několik jednoduchých digrmů (orientovných grfů) konečných utomtů. Digrm přehledně (u jednodušších utomtů) zorzuje přechody mezi stvy (šipky) signály (symoly), které jsou při tomto přechodu nčítány zprcovávány (ohodnocení šipek). vypni V zpni Z Popis: V.......... vypnuto Z.......... zpnuto Orázek 2.1: Elektrický spotřeič jko konečný utomt 9

KAPITOLA 2 KONEČNÉ AUTOMATY 10 z v V v t Č t OČ OZ v t t Z v Popis: V.................. vypnuto Č, Z......... červená, zelená OČ.... ornžová od červené OZ..... ornžová od zelené Orázek 2.2: Semfor jko konečný utomt km km Zorzen cen vhodit mince Připrven zrušit Tisk vzít lístek Orázek 2.3: Automt n jízdenky Definice 2.1 (Konečný utomt) Konečný utomt je uspořádná pětice A=(Q,Σ,δ,q 0,F), kde je Q... neprázdná konečná množin stvů Σ... neprázdná konečná eced (množin signálů) δ... přechodová funkce, definovná níže q 0... počáteční stv, q 0 Q F... množin koncových stvů, F Q, F Definice 2.2 (Přechodová funkce) Přechodová funkce δ konečného utomtu (dále KA) A=(Q,Σ,δ,q 0,F) je zorzení δ: Q Σ Q δ(stv, signál) = stv Npříkld: δ(vypnuto, zpni) = zpnuto

KAPITOLA 2 KONEČNÉ AUTOMATY 11 Potřeujeme vědět: ve kterém jsme stvu, co ještě zývá přečíst (zprcovt). Tyto informce jsou uloženy v konfigurci utomtu, která se postupně mění. Definice 2.3 (Konfigurce konečného utomtu) OznčmeΣ množinu všech slov, která lze utvořit ze symolů ecedy Σ. Konfigurce KA je uspořádná dvojice(q, w), kde q Q, w Σ (nepřečtená část vstupní pásky). Počáteční konfigurce:(q 0,w 0 ) (jsme v počátečním stvu w 0 je celé zprcovávné slovo) Koncová konfigurce:(q f,ε), q f F (ε je prázdné slovo, tj. řetězec s délkou 0, neoli celé slovo již ylo zprcováno) Definice 2.4 (Přechod mezi konfigurcemi) Relce přechodu mezi konfigurcemi je definován jko :(Q,Σ ) (Q,Σ ), kde pltí: (q i,w) (q j,w) δ(q i,)=q j (relce přechodu mezi konfigurcemi je tedy závislá n funkci přechodu δ). Definice 2.5 (Výpočet slov v konečném utomtu) Výpočet slov v konečném utomtu je posloupnost konfigurcí spojených relcí přechodu, zčínjící počáteční konfigurcí s dným slovem končící některou koncovou konfigurcí. Příkld 2.1 Výpočet slov v konečném utomtu semforu n orázku 2.2 n strně 10 může ýt npříkld tkový: (V,zttttttv) (Č,ttttttv) (itshpe OČ,tttttv) (Z,ttttv) (OZ,tttv) (Č,ttv) (OČ,tv) (Z,v) (V,ε) Jiný konečný utomt: (q 0,cd) (q 3,cd) (q 1,cd) (q 3,d) (q 3,ε) kde všechny přechody mezi konfigurcemi jsou určeny funkcí δ: δ(q 0,)=q 3, td., q 3 ptří do množiny koncových stvů.

KAPITOLA 2 KONEČNÉ AUTOMATY 12 Definice 2.6 (Rozpoznání (přijímání) slov konečným utomtem) Konečný utomt A=(Q,Σ,δ,q 0,F) rozpoznává (přijímá) slovo w, pokud existuje posloupnost výpočtu tohoto slov v utomtu, tedy pokud se lze z počáteční konfigurce(q 0,w 0 ) postupným upltňováním relcí přechodu dostt do některé koncové konfigurce. Definice 2.7 (Jzyk) Jzyk L je množin slov nd dnou ecedou Σ (některá podmnožin množiny všech slov utvořených z písmen ecedyσ), tedy L Σ. Jzyk může oshovt tké prázdné slovo ε. Definice 2.8 (Jzyk konečného utomtu) Jzyk konečného utomtu A je množin všech slov, která utomt přijímá, znčíme L(A). Definice 2.9 (Rozpoznání jzyk utomtem) Automt A rozpoznává jzyk L j, pokud přijímá právě slov jzyk L j (tj. přijímá všechn slov jzyk, le nepřijímá žádné slovo do jzyk neptřící). Znčíme L j = L(A) (jzyk L j je rozpoznáván utomtem A, je jeho jzykem). Příkld 2.2 A=({q 0,q 1 }, {,}, δ, q 0, {q 1 }) Digrm: δ funkce: q 0 q 1 δ(q 0,)=q 0 δ(q 0,)=q 1 δ(q 1,)=q 0 Jeden z možných výpočtů v utomtu: (q 0,) (q 0,) (q 0,) (q 1,ε) Tulk: stv\vstup q 0 q 0 q 1 q 1 - q 0 Jzyk utomtu: L(A)={ } {( ) i i 0} = {( ) } = { ( ) } 2.2 Nedeterminismus V zákldní definici konečného utomtu existuje pro kždé slovo přijímné utomtem právě jedn cest v digrmu utomtu, tedy výpočet je vždy jednoznčný.

KAPITOLA 2 KONEČNÉ AUTOMATY 13 Výhodou tohoto postupu je, že tkto vytvořený konečný utomt se sndněji progrmuje, protože v klsickém progrmování je jednoznčnost nutnou podmínkou. Někdy je všk jednodušší vytvořit utomt, který tuto vlstnost nemá, tedy pro některá přijímná slov může existovt více různých cest v digrmu. Zde si tkový utomt definujeme ukážeme si tké způso převedení n původní formu. Definice 2.10 (Nedeterministický konečný utomt) Nedeterministický konečný utomt (NKA) je tkový konečný utomt A=(Q,Σ,δ,q 0,F), kde δ: Q Σ P(Q). Poznámk: P(Q) je potenční množin množiny Q, je to množin všech jejích podmnožin (včetně prázdné množiny tké smotné množiny Q). V některých stvech n určitý signál může existovt více než jedn možnost jk regovt, dokonce pro některá slov může v grfu utomtu existovt více různých cest od počátečního stvu do některého koncového. V deterministickém utomtu (DKA) pro jedno slovo existuje právě jedn cest v grfu (je utomtem rozpoznáváno) neo žádná cest. Definice 2.11 (Jzyk rozpoznávný NKA) Jzyk rozpoznávný NKA je L(A)={w Σ (q 0,w) (q f,ε),q f F }. Poznámk: Jzyk rozpoznávný nedeterministiským konečným utomtem je tedy množin všech slov nd ecedou Σ, pro která existuje lespoň jeden výpočet (cest v grfu utomtu) od počátečního do některého (kteréhokoliv) koncového stvu. Vět 2.1 Necht A je nedeterministický KA. Potom existuje deterministický KA A tkový, že L(A)=L(A ) (tj. rozpoznávjí stejný jzyk). Důkz: A=(Q,Σ,δ,q 0,F) nedeterministický (ten máme) A =(Q,Σ,δ,q 0,F ) deterministický (ten chceme vytvořit) Stvy nového utomtu udou odpovídt množinám stvů původního. Pro kždou rovnost δ(q i,)={q j,q k } stvy (množiny) {q i }, {q j,q k } udou ptřit ke stvům nového utomtu. Postup: Q = {M M Q}=P(Q) nová množin stvů ude množinou všech podmnožin původní množiny stvů,

KAPITOLA 2 KONEČNÉ AUTOMATY 14 q 0= {q 0 } počáteční stv je jednoprvková množin oshující původní počáteční stv, M F M F koncové stvy jsou všechny, které (coy množiny) oshují lespoň jeden původní koncový stv, δ (M,)={q q δ(p,),p M} všechny prvky množiny zprcujeme podle původního utomtu, pk shrneme výsledky do množiny. Pokud prcujeme s reprezentcí δ-funkce ve tvru tulky, můžeme jednoduše postupovt tk, že v tulce původního utomtu uzávorkujeme ohodnocení řádků uňky do množinových závorek pk pro kždou množinu z uněk, kterou není ohodnocen žádný řádek, přidáme řádek tulky doplníme osh uněk n dném řádku. Jk určit osh nové uňky: pokud je řádek ohodnocen množinou {q i,q j,...}, pk do uňky sepíšeme osh uněk n řádcích {q i }, {q j },... v dném sloupci, tedy vlstně sjednocujeme řádky jednotlivých prvků množiny. Příkld 2.3 L={,} = {{,} n n 0} A={q 0,q 1,q 2 }, {,},δ,q 0, {q 2 }) A =(Q,Σ,δ,q 0,F ) Nedeterministický: A q 0 q 0 q 0,q 1 q 1 - q 2 q 2 - - Deterministický: A {q 0 } {q 0 } {q 0,q 1 } {q 1 } {q 2 } {q 2 } {q 0,q 1 } {q 0 } {q 0,q 1,q 2 } {q 0,q 1,q 2 } {q 0 } {q 0,q 1,q 2 } Odstrníme nepotřené stvy: A {q 0 } {q 0 } {q 0,q 1 } {q 0,q 1 } {q 0 } {q 0,q 1,q 2 } {q 0,q 1,q 2 } {q 0 } {q 0,q 1,q 2 }

KAPITOLA 2 KONEČNÉ AUTOMATY 15 2.3 Totální utomt Ovykle není nutné, y utomt dokázl v kždém stvu regovt n jkýkoliv signál, le z určitých okolností se tto vlstnost může hodit. Můžeme si předstvit tře situci, kdy progrmátor chce npst progrm dosttečně roustní, který y dokázl regovt n jkýkoliv vstup, v přípdě chyného vstupu tře chyovým hlášením (tedy přechodem do chyového stvu s ptřičným ošetřením). Definice 2.12 (Totální utomt) Totální (úplný) konečný utomt je deterministický konečný utomt, ve kterém lze ve všech stvech regovt n kterýkoliv symol ecedy, tj. přechodová funkce δ je totální: q Q, Σ p Q:δ(q,)=p (ke kždému stvu symolu ecedy existuje stv, do kterého přejdeme z dného stvu n dný symol). Vět 2.2 Ke kdému (deterministickému) konečnému utomtu A existuje totální utomt A tkový, že L(A)=L(A ). Náznk důkzu konstrukce: převedeme utomt n deterministický, vytvoříme nový stv, který ude fungovt jko odpdkový koš, do tohoto stvu nsměrujeme chyějící přechody, přidáme smyčku (přechod zčínjící končící ve stejném stvu) u stvu pro kždý symol ecedy. Příkld 2.4 0 A 0 1 1 A A B A B Deterministický: 0 B C - C - C C 1 A 0 1 A A B Zúplnění: B C C C 0,1 0 1 A B 1 0 0 C 1

KAPITOLA 2 KONEČNÉ AUTOMATY 16 2.4 Odstrnění nepotřených stvů utomtu Definice 2.13 (Nedosžitelný stv) Nedosžitelný stv je stv q i tkový, že neexistuje posloupnost přechodů (q 0,w) (q i,w ) tedy nelze se do tohoto stvu dostt z počátečního stvu. Definice 2.14 (Ndytečný stv) Ndytečný stv je stv q i tkový, že neexistuje žádná posloupnost přechodů (q i,w ) (q f,ε) kde q f F (koncový stv), tedy z tohoto stvu se nelze dostt do žádného koncového stvu. 2.4.1 Nedosžitelné stvy Vytvoříme množinu stvů, ke kterým se dá dostt z počátečního stvu postupujeme od strtovcího symolu. Příkld 2.5 Původní utomt: q 0 q 1 - q 1 q 2 q 1 q 2 - - q 3 q 4 q 1 q 4 q 1 - q 0 q 3 q 1 q 4 q 2 S 0 = {q 0 }, hledáme prvky S i 1 n oznčeních řádků, přidáme osh uněk řádku S 1 = {q 0,q 1 } (z q 0 se dá dostt do q 1 ) S 2 = {q 0,q 1,q 2 } (z q 0 q 1 se dá dostt tky do q 2 ) S 3 = {q 0,q 1,q 2 } = S 2... nová množin stvů Po úprvě: q 0 q 1 - q 1 q 2 q 1 q 2 - - q 0 q 1 q 2

KAPITOLA 2 KONEČNÉ AUTOMATY 17 Postup: vytvoříme množinu S 0, do ní dáme počáteční stv utomtu, S 0 = {q 0 }, vytvoříme množinu S 1 tk, že do ní dáme prvky množiny S 0 dále všechny stvy, do kterých vede přechod ze stvů množiny S 0 (tj. zde přidáme všechny stvy, do kterých se dá dostt přímo z q 0 ), postupně vytváříme množinys i tk, že dos i zřdíme nejdřív osh množiny S i 1 pk přidáme všechny stvy, do kterých vede přechod z některého stvu z množiny S i 1, končíme, když už se do množiny nic nedá přidt, tedy S i = S i 1, výsledkem je nová množin stvů. Vzorec: S 0 = {q 0 } S i = S i 1 {q δ(p,) q,p S i 1, Σ} 2.4.2 Ndytečné stvy Příkld 2.6 Předpokládáme zde, že nedosžitelné stvy jsou již odstrněny. q 0 q 1 q 3 q 0 q 1 q 2 q 1 q 4 q 2,q 5 Původní utomt: q 2 q 2 - q 3 q 4 - q 3 q 4 q 5 q 4 q 5 q 4 q 5 q 5 - E 0 = {q 1,q 2 }, hledáme prvky E i 1 v uňkách řádků, přidáme oznčení řádků E 1 = {q 1,q 2,q 0 } (z q 0 se dá dostt do q 1 ) E 2 = {q 1,q 2,q 0 } = E 1... nová množin stvů Po úprvě: q 0 q 1 q 3 q 1 q 2 q 2 q 2 - q 0 q 1 q 2

KAPITOLA 2 KONEČNÉ AUTOMATY 18 Postup: odstrníme nedosžitelné stvy, vytvoříme množinu E 0, do které zřdíme všechny koncové stvy utomtu, tj. E 0 = F, vytvoříme množinu E 1 tk, že do ní dáme prvky množiny E 0 dále všechny stvy, ze kterých vede přechod do stvů množiny E 0, postupně vytváříme množiny E i tk, že do E i zřdíme nejdřív osh množiny E i 1 pk přidáme všechny stvy, ze kterých vede přechod do některého stvu z množiny E i 1, končíme, když už se do množiny nic nedá přidt, tedy E i = E i 1, výsledkem je nová množin stvů. Vzorec: E 0 = F E i = E i 1 {q δ(q,) p,p E i 1, Σ}

Kpitol 3 Regulární jzyky Definice 3.1 (Regulární jzyk) Regulárními jzyky oznčujeme všechny jzyky, které jsou rozpoznávné konečnými utomty. Jzyk je tedy regulární, pokud lze sestrojit konečný utomt, který tento jzyk rozpoznává. Ve všech dosud uvedených příkldech yly použity jzyky nekonečné, le k regulárním jzykům ptří tké konečné jzyky. Dále se stručně podíváme n možnosti konečných jzyků potom n nekonečné jzyky jednu z možností, jk zjistit, zd nekonečný jzyk je či není regulární. 3.1 Konečné jzyky Definice 3.2 (Konečný jzyk) Konečný jzyk je jzyk, který oshuje konečně mnoho slov. Vět 3.1 Všechny konečné jzyky jsou regulární. Důkz: Pro konečný jzyk sestrojíme konečný utomt jednoduše tk, že pro kždé slovo jzyk vytvoříme jednu větev výpočtu (nedeterministický utomt). Délk větví utomtu ude odpovídt délce jednotlivých slov jzyk. Poznámk: Můžeme mít ud jeden koncový stv společný pro všechn rozpoznávná slov, neo kždé slovo ude mít svůj vlstní koncový stv. Toho se využívá npříkld u překldčů, kdy při rozpoznávání konečného množství slov 19

KAPITOLA 3 REGULÁRNÍ JAZYKY 20 (klíčových slov) pro kždé slovo máme zvláštní koncový stv, podle toho, ve kterém skončí výpočet, určíme, o jké slovo šlo. Příkld 3.1 L={if,then,this} Nedeterministický ( otrocký postup): Deterministický: i t S t f q 1 h q 3 q 2 e n q 4 q 5 h i s q 7 q 8 q 9 q 6 q 10 f q 1 i t h S q 3 q 7 q 2 e n q 4 q 5 i q 8 s q 9 q 6 q 10 Reprezentce přechodové funkce tulkou (chceme, y yl utomt deterministický): A i f t h e n s S A 1 A 2 K 1 K 2 K 3 A 1 K 1 A 2 A 3 A 3 A 5 A 4 A 4 K 2 A 5 K 3 3.2 Pumping Lemm pro regulární jzyky nekonečné jzyky Motivce. Pumping lemm (pumpovcí vět) určuje, že nekonečné regulární jzyky mjí jednu konkrétní vlstnost. Proto pokud dokážeme, že dný jzyk tuto vlstnost nemá, můžeme o něm říci, že není regulární.

KAPITOLA 3 REGULÁRNÍ JAZYKY 21 Aeced je vždy konečná množin počet stvů utomtu je vždy konečný ychom mohli prcovt s dosttečně dlouhými slovy (nekonečného jzyk) s délkou větší než počet stvů utomtu, musí ýt někde smyčk, která způsoí, že se část slov opkuje. q 0 q 1 c q 2 q 0 q 1 Orázek 3.1: Ukázky grfů konečných utomtů nekonečných jzyků Vět 3.2 Necht L je regulární jzyk. Pk existuje celé číslo p, p >0 tk, že kždé slovo w L, w > p, lze rozdělit n tři části w=xyz tk, že y ε ( y >0) kždé slovo ve tvru xy k z, k N je tké slovem tohoto jzyk, tedy xy k z L. Poznámk: sestrojený konečný utomt. Z číslo p můžeme dosdit počet stvů utomtu, pokud máme Příkld 3.2 L={ 2n n 0} Zvolíme p=2. Pro nějké i > p může ýt tře 2i = ( 2 ) ( 2(i 1) ) ε (tedy x= 2, y= 2(i 1), z= 0 = ε) Použijeme číslo k 0: k=0: xy 0 z = 2 L............................... OK k=1: xy 1 z = 2i L...............................OK k=2: xy 2 z = 2 ( 2(i 1)) 2 = 2(2i 1) L............ OK... k= p:xy p z = 2 + p 2(i 1) = 2(pi p+1) L..... OK Poznámk: Pumping lemm se ovykle nepoužívá v zákldním tvru, le spíše pro důkz, že dný jzyk není regulární větu orátíme: Původní: Když je jzyk regulární, pk existuje p... Orátíme: Když neexistuje p..., pk jzyk není regulární.

KAPITOLA 3 REGULÁRNÍ JAZYKY 22 Postup: Hledáme dosttečně dlouhé slovo dného jzyk, pro které neexistuje žádné rozdělení w=xyz tkové, že xy k z L. 1. zvolíme w L dosttečně dlouhé, 2. zvolíme rozdělení n w=xyz, 3. zvolíme k, 4. vyroíme w k = xy k z, 5. pokud w k L návrt k odu 3, pokud to ještě jde, 6. když to není možné (pro všechnk slovoxy k z ptří do jzyk), návrt k odu 2, 7. když to není možné (všechn rozdělení jsme otestovli fungují), návrt k odu 1, 8. jink: nšli jsme slovo w, pro které neexistuje žádné rozdělení xyz splňující uvedené podmínky, tedy jsme dokázli, že L není regulární jzyk. Předposlední od se u regulárního jzyk tké některých jzyků neregulárních provádí do nekonečn, což vyplývá z fktu, že Pumping Lemm je pouze implikce, ne ekvivlence. Tedy vět říká, že kždý regulární jzyk má dnou vlstnost, le neříká, že tuto vlstnost nemá žádný neregulární jzyk. Poznámk: Pumping lemm lze ve skutečnosti použít i v přípdě, že jzyk je konečný ve větě stojí... kždé slovo w L, w > p, lze..., ovšem když zvolíme p oprvdu dosttečně dlouhé (delší než kterékoliv slovo jzyk), pk vlstně není co testovt vlstnosti jzyk větě odpovídjí. 3.3 Uzávěrové vlstnosti třídy regulárních jzyků Definice 3.3 (Uzvřenost třídy jzyků vzhledem k operci ϕ) Dná tříd jzyků je uzvřená vzhledem k operci ϕ, pokud po upltnění této operce n jzyky z dné třídy výsledný jzyk ptří opět do této třídy. Poznámk: Možné operce, které z tohoto hledisk zkoumáme, jsou sjednocení, zřetězení, iterce, pozitivní iterce, průnik, doplněk, zrcdlový orz (reverze), homomorfismus, sustituce.

KAPITOLA 3 REGULÁRNÍ JAZYKY 23 3.3.1 Sjednocení Vět 3.3 Tříd regulárních jzyků je uzvřen vzhledem k operci sjednocení. Důkz: Budeme předpokládt, že některé dv regulární jzyky L 1 L 2 jsou rozpoznávány utomty A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ), A 2 =(Q 2,Σ 2,δ 2,q0,F 2 2 ), L 2 = L(A 2 ), Q 1 Q 2 =. Vytváříme jzyk L=L 1 L 2 utomt A=(Q,Σ,δ,q 0,F), L=L(A): Stv q 0 je nový, tedy musí pltit q 0 / Q 1, q 0 / Q 2, Q=Q 1 Q 2 {q 0 }, F= F 1 F 2, Σ=Σ 1 Σ 2. δ-funkce simuluje cesty v původních utomtech (přejímá předpisy δ 1 δ 2 ), přidáváme pouze inicilizci přechod z počátečního stvu q 0, dlší přechody již přejímáme. Ze stvu q 0 přecházíme do těch stvů, do kterých se přechází z původních q0 1 q0. 2 δ 1 (p,) p Q 1, δ(p,)= δ 2 (p,) p Q 2, δ 1 (q0,) 1 δ 2 (q0,) 2 p=q 0 Příkld 3.3 L 1 = { i j i >0,j 0} L 2 = { i c j i >0,j 0} A 1 =({p 0,p 1,p 2 }, {,}, δ 1,p 0, {p 1,p 2 }) A 2 =({q 0,q 1,q 2 }, {,c}, δ 2,q 0, {q 1,q 2 }) L=L 1 L 2 = { i j i >0,j 0} { i c j i >0,j 0} A=({s 0,p 0,p 1,p 2,q 0,q 1,q 2 }, {,,c}, δ,s 0, {p 1,p 2,q 1,q 2 }) Původní: Po sjednocení: p 0 p 1 p 2 c c q 0 q 1 q 2 s 0 p 0 p 1 p 2 c c q 0 q 1 q 2

KAPITOLA 3 REGULÁRNÍ JAZYKY 24 A 1 c p 0 p 1 p 1 p 1 p 2 p 2 p 2 A 2 c q 0 q 1 q 1 q 1 q 2 q 2 q 2 A c s 0 p 1,q 1 p 0 p 1 p 1 p 1 p 2 p 2 p 2 q 0 q 1 q 1 q 1 q 2 q 2 q 2 3.3.2 Zřetězení Vět 3.4 Tříd regulárních jzyků je uzvřen vzhledem k operci zřetězení. Důkz: Budeme předpokládt, že některé dv regulární jzyky L 1 L 2 jsou rozpoznávány utomty A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ) A 2 =(Q 2,Σ 2,δ 2,q0,F 2 2 ), L 2 = L(A 2 ), Q 1 Q 2 =. Vytváříme jzyk L=L 1 L 2 utomt A=(Q,Σ,δ,q 0,F), L=L(A). q 0 = q0, 1 Q=Q 1 Q 2, Σ=Σ 1 Σ 2, pokud ε / L 2, pk F= F 2, jink F= F 1 F 2 δ 1 (p,) p Q 1 F 1, δ(p,)= δ 2 (p,) p Q 2, δ 1 (p,) δ 2 (q0,) 2 p F 1 Příkld 3.4 L 1 = { i i 0} L 2 = { () i c {0,1} i 0 } A 1 =({p 0,p 1 }, {,}, δ 1,p 0, {p 1 }) A 2 =({q 0,...,q 3 }, {,,c}, δ 2,q 0, {q 0,q 1 }) A=({p 0,p 1,q 0,q 1,q 2,q 3 }, {,,c}, δ,p 0, {p 1,q 0,q 1 })

KAPITOLA 3 REGULÁRNÍ JAZYKY 25 Původní: p 0 c p 1 q 0 q 3 q 2 q 1 Po zřetězení: p 0 c c p 1 q 0 q 3 q 2 q 1 3.3.3 Iterce Vět 3.5 Tříd regulárních jzyků je uzvřen vzhledem k operci iterce. Důkz: Budeme předpokládt, že některý regulární jzyk L 1 je rozpoznáván utomtem A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ). Vytváříme jzyk L=L 1 utomt A=(Q,Σ,δ,q 0,F), L=L(A). q 0 = q 1 0, Q=Q 1, Σ=Σ 1, F= F 1 {q 0 }, δ 1 (p,) p / F 1, δ(p,)= δ 1 (p,) δ 1 (q0,) 1 p F 1 Příkld 3.5 L 1 = { i i 0} A 1 =({p 0,p 1,p 2 }, {,}, δ 1,p 0, {p 2 }) A=({p 0,p 1,p 2 }, {,}, δ,p 0, {p 0,p 2 }) Původní: Po iterci: p 0 p 1 p 2 p 0 p 1 p 2

KAPITOLA 3 REGULÁRNÍ JAZYKY 26 3.3.4 Pozitivní iterce Vět 3.6 Tříd regulárních jzyků je uzvřen vzhledem k operci pozitivní iterce. Důkz: Budeme předpokládt, že některý regulární jzyk L 1 je rozpoznáván utomtem A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ). Vytváříme jzyk L=L + 1 utomt A=(Q,Σ,δ,q 0,F), L=L(A). q 0 = q0, 1 Q=Q 1, Σ=Σ 1, F= F 1, δ 1 (p,); p / F 1, δ(p,)= δ 1 (p,) δ 1 (q0,); 1 p F 1 Příkld 3.6 L 1 = { i i 0} A 1 =({p 0,p 1,p 2 }, {,}, δ 1,p 0, {p 2 }) A=({p 0,p 1,p 2 }, {,}, δ,p 0, {p 2 }) Původní: Po pozitivní iterci: p 0 p 1 p 2 p 0 p 1 p 2 3.3.5 Zrcdlový orz Vět 3.7 Tříd regulárních jzyků je uzvřen vzhledem k operci zrcdlového orzu (reverze). Důkz: Budeme předpokládt, že některý regulární jzyk L 1 je rozpoznáván utomtem A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ). Vytváříme jzyk L=L R 1 utomt A=(Q,Σ,δ,q 0,F), L=L(A).

KAPITOLA 3 REGULÁRNÍ JAZYKY 27 Princip: orátíme všechny cesty tk, y zčínly tm, kde původně končily nopk. q 0 je nově přidán (nelze všechny původní koncové stvy prohlásit z počáteční), nsměrujeme ho tm, odkud původně vedly šipky ke koncovým stvům, Q=Q 1 q 0, Σ=Σ 1, F= {q0} 1 { p δ 1 ( p,) p} p q 0 δ(p,)= { p δ 1 ( p,)=p} { p δ 1 ( p,)=p q f, q f F 1 } p=q0 Příkld 3.7 L 1 = { i {1,2} i 0 } { i c i 0}={ i i 0} {,,c} A 1 =({q 0,q 1,q 2,q 3 }, {,,c}, δ 1,q 0, {q 2,q 3 }) A=({q 0,q 1,q 2,q 3,s 0 }, {,,c}, δ,s 0, {q 0 }) L=L R 1 = {,,c} { i i 0} Původní: q 0 q 1 q 2 c q 3 Po zrcdlení:,c q 0 q 1 q 2 s 0 c q 3 3.3.6 Průnik Průnikem dvou jzyků je jzyk oshující právě t slov, která jsou v oou zprcovávných jzycích. Vět 3.8 Tříd regulárních jzyků je uzvřen vzhledem k operci průniku. Důkz: Budeme předpokládt, že některé dv regulární jzyky L 1 L 2 jsou rozpoznávány utomty

KAPITOLA 3 REGULÁRNÍ JAZYKY 28 A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ) A 2 =(Q 2,Σ 2,δ 2,q0,F 2 2 ), L 2 = L(A 2 ), Q 1 Q 2 =. Vytváříme jzyk L=L 1 L 2 utomt A=(Q,Σ,δ,q 0,F), L=L(A). Do průniku dvou množin (jzyk není nic jiného než množin slov) řdíme právě ty prvky (slov), které jsou v oou množinách zároveň. Když použijeme konečné utomty, spustíme výpočet dného slov n oou utomtech zároveň. Protože podle definice musí utomt v kždém kroku zprcovt jeden symol slov, v oou utomtech musí ýt výpočet téhož slov stejně dlouhý (n cestě v grfu je stejný počet stvů), tyto stvy si tedy mohou vzájemně odpovídt. Proto ve výsledném simulujícím utomtu udou stvy reprezentovány uspořádnými dvojicemi, kde první prvek dvojice je stv prvního utomtu, druhý prvek je stv druhého utomtu. Q={[q i,q j ] q i Q 1,q j Q 2 }, q 0 =[q0,q 1 0], 2 F= {[q i,q j ] q i F 1,q j F 2 }, Σ=Σ 1 Σ 2 (neoσ=σ 1 Σ 2, vyjde to nstejno), δ([q i,q j ],)=[δ 1 (q i,),δ 2 (q j,)], Σ Příkld 3.8 L 1 = { n n 0} L 2 = { n n 0} Dv původní utomty: p 0 q 0 p 1 q 1 Výsledný utomt: [0,0] [0,1] p 2 [1,1] Prcujeme zároveň v oou utomtech: p 0 p 1 p 2 1 2 3 4 q 0 q 1 [2,1]

KAPITOLA 3 REGULÁRNÍ JAZYKY 29 3.3.7 Homomorfismus Definice 3.4 (Homomorfismus) použitý n řetězce znků s opercí zřetězení je jednoznčné zorzení, které zchovává neutrální prvek (v nšem přípdě prázdný řetězec ε) tké smotnou operci zřetězení, tedy: h(ε)=ε h( w)=h() h(w) Zde si pouze ukážeme postup n příkldu, důkz ude proveden později v jiné kpitole. Vět 3.9 Tříd regulárních jzyků je uzvřen vzhledem k operci homomorfismu. Nznčení postupu důkzu: Budeme předpokládt, že některý regulární jzyk L 1 je rozpoznáván utomtem A 1 =(Q 1,Σ 1,δ 1,q0,F 1 1 ), L 1 = L(A 1 ), dále že existuje homomorfismus h definovný pro všechny symoly jzykσ 1. Vytváříme jzyk L=h(L 1 ) utomt A=(Q,Σ,δ,q 0,F), L=L(A). Postup si ukážeme n příkldu. Příkld 3.9 L 1 = { i i >0} h()=ccc, h()=cd h(l 1 )={c 3 (cd) i i >0} Původní utomt: q 0 q 1 q 2 Po plikci homomorfismu: c q 0 c c q 4 q 3 d q 1 c c q 5 q 2 d q 6

Kpitol 4 Regulární výrzy 4.1 Možnosti využití regulárních výrzů Regulární výrzy se v různých podoách využívjí v prxi, zejmén při vyhledávání (n internetu neo tře hledání souoru v počítči), neo tehdy, když chceme něco provést s množinou ojektů (souorů, textu v souorech, v dtázích, pod.) potřeujeme tuto množinu nějk specifikovt. Vyhledávání n internetu (npříkld Google): fktoriál pscl OR C++ chceme progrm pro výpočet fktoriálu v Psclu neo C++ mrvenec -Ferd chceme stránky o mrvencích, le ne s Ferdou mrvencem Vyhledávání n počítči (Windows, DOS, Unixy): *.txt všechny souory s příponou.txt?ps*.* znmená tře opsné.doc, upsnec.exe, xps.xls, td. Vyhledávání n počítči (Unixy): [-z]*[0-9] všechny řetězce zčínjící mlým písmenem končící číslicí 30

KAPITOLA 4 REGULÁRNÍ VÝRAZY 31 [!0-9]*.? vše, co zčíná mlým, přímo z ním může ýt jkýkoliv řetězec, který nezčíná číslicí, pk je tečk z ní ještě jeden znk Možnosti použití: vyhledávání n internetu, vyhledávání souorů neo čehokoliv dlšího textového n počítči, prohledávání souorů n počítči (hledáme řetězec) ve Windows npříkld findstr, v Unixech npříkld grep, dtáze, elektronické slovníky (cizojzyčné i výkldové), podpor v progrmovcích jzycích, td. 4.2 Definice Definice 4.1 (Regulární výrz) Definujeme pomocnou množinu Φ = {, ε, +,,,(,)}. Množin RV(Σ) všech regulárních výrzů nd ecedou Σ je nejmenší množin slov tková, že slov se skládjí ze symolů ecedyσ Φ,ΣΦjsou disjunktní, RV(Σ), ε RV(Σ), RV(Σ) pro kždé Σ, jestliže α,β RV(Σ), pk tky (α+β) RV(Σ), (α β) RV(Σ), (α) RV(Σ). Symol pro zřetězení se ovykle nemusí psát. Regulární výrz oznčuje množinu řetězců s dnou vlstností, jzyk je tké množin řetězců (slov) s dnou vlstností kždý regulární výrz určuje některý jzyk.

KAPITOLA 4 REGULÁRNÍ VÝRAZY 32 Operce nd jzyky:... prázdný jzyk ε... {ε} (jzyk oshující jen slovo s nulovou délkou), Σ... {} (jzyk oshující jen slovo s délkou 1) α+β... {α} {β} (sjednocení) α β... {α} {β} (zřetězení) (α)... {α} (iterce) Sjednocení, zřetězení iterci oznčujeme jko regulární operce. Příkld 4.1 Ukážeme si několik regulárních jzyků ekvivlentních regulárních výrzů. L 1 = { i c() j i,j 0} R 1 = c() L 2 = {1 2i w i >0,w {0,1} } R 2 =(11)(11) (0+1) L 3 = { i i >0} { i i 0} R 3 = + L 4 = {ε} ({ 4 i i 0} { 2 2i+1 i 0}) {c i i 0} R 4 = ε+( + () )c 4.3 Vzth ke konečným utomtům Vět 4.1 Jzyky určené regulárními výrzy jsou právě regulární jzyky, tedy právě jzyky rozpoznávné konečnými utomty. Důkz: (podle reg. výrzu sestrojíme konečný utomt) Regulární jzyk je konstruován z množin pomocí operátorů sjednocení, zřetězení iterce. Všechny tyto operátory mjí svůj ekvivlent u regulárních výrzů. Důkz lze provést mtemtickou indukcí: áze: pro regulární výrzy, {ε}, {}, Σ dokážeme jednoduše zkonstruovt konečný utomt,

KAPITOLA 4 REGULÁRNÍ VÝRAZY 33 q q p q indukční krok: předpokládejme, že pro regulární výrzy α β dokážeme sestrojit konečné utomty (včetně těch v ázi), již dříve jsme dokázli (pomocí utomtů), že tříd regulárních jzyků je uzvřen vzhledem k opercím sjednocení, zřetězení iterce, tedy použijeme postupy popsné v důkzech těchto opercí pro sestrojení konečných utomtů reprezentujících reg. výrzy α+β, α β (α). Důkz: (podle utomtu sestrojíme reg. výrz) Musíme popst regulárním výrzem všechny cesty vedoucí z počátečního stvu do některého koncového stvu utomtu. Definujeme: R ij = {w Σ (i,w) A i (j,ε)} Je to množin všech slov tkových, která lze v utomtu zprcovt tk, že počáteční stv je i skončíme ve stvu j. Jestliže je množin stvů {1,2,...,n}, pk jzykem utomtu je množin R 1k k F (sjednotíme všechny cesty zčínjící v počátečním stvu končící v některém z koncových stvů). Pro postupnou konstrukci množin R ij použijeme: R k ij= {w R ij pokudexistuje m: (i,w) + A i (m,u) + A i (j,ε), (4.1) w u ε,pk m k} (4.2) Je to podmnožin množiny R ij tková, že n cestě v utomtu, která je zprcováním slov z této množiny, se ncházejí pouze stvy s indexem menším neo rovným číslu k (nepltí pro krjní stvy i j, ty mohou ýt i vyšší než k).

KAPITOLA 4 REGULÁRNÍ VÝRAZY 34 Postupujeme dle následujícího vzorce: R k+1 ij = R k ij+ ( R k i,k+1 (R k k+1,k+1) R k k+1,j To je rekurzivní vzorec pro výpočet množin R k ij nejdřív vezmeme všechn slov, která lze rozpoznt cestou přes stvy k, pk přidáme slov, která jsou zprcováván cestou oshující nejméně jednou stv k+1 (tedy nejdřív cest z i do stvu k+1, pk přípdně smyčk přes tento i Rij k j stv stvy k, potom zpátky ze stvu k+1 do j). Bází rekurze jsou jednoduché utomty, kde zchycujeme přímý přechod ze stvu i do j: R 0 ij: (+ε) i (ε) i i ) k+1 R k k+1,k+1 R k i,k+1 j R k k+1,j první přípd použijeme, když ve stvu i existuje smyčk přes tento stv: R 0 ii= +ε druhý přípd použijeme pro stv, ve kterém neexistuje smyčk (máme pouze prázdný přechod ): R 0 ii= ε třetí přípd použijeme pro dv různé stvy i j, mezi kterými vede přímý přechod: R 0 ij= pokud mezi stvy i j nevede přímý přechod, ude R 0 ij=. Postup: vytvoříme R 0 ij pomocí definice utomtu (z tulky neo digrmu), podle rekurzívního vzorce vypočteme dlší množiny R k ij ž ke k= n, pltí R n ij = R ij, dostneme pro i=1 j F všechny cesty v utomtu vedoucí od počátečního stvu (i=1) do koncových stvů, výsledný regulární výrz pro celý utomt je j F R 1j. Příkld 4.2 Uvedený postup si ukážeme n utomtu se třemi stvy. Upozorňujeme, že složitost postupu nrůstá s množstvím stvů geometrickou řdou.

KAPITOLA 4 REGULÁRNÍ VÝRAZY 35 c 1 2 1 3 2 2 3 3 1 R 0 11= +ε R 0 12= R 0 13= c R 0 21= R 0 22= +ε R 0 23= R 0 31= R 0 32= R 0 33= ε 1 c 2 3 R 1 11=(+ε)+((+ε)(+ε) (+ε))= R 1 12= +((+ε)(+ε) )= R 1 13= c+((+ε)(+ε) c)= c R 1 21= + = R 1 22=(+ε)+ =+ε R 1 23= + = R 2 11= +( (+ε) )= R 1 31= +((+ε) (+ε))= R 1 32= +((+ε) )= R 1 33= ε+((+ε) c)=ε+ c R 2 12= +( (+ε) (+ε)= R 2 13= c+( (+ε) )= c+ R 2 21= +((+ε)(+ε) )= R 2 22=(+ε)+((+ε)(+ε) (+ε))= R 2 23= +((+ε)(+ε) )= R 2 31= +( (+ε) )= R 2 32= +( (+ε) (+ε))= R 2 33=(ε+ c)+( (+ε) )=ε+ c+ R 3 12= +(( c+ )(ε+ c+ ) )= = +(( c+ )( c+ ) ) R 3 13=( c+ )+(( c+ )(ε+ c+ ) (ε+ c+ ))= =( c+ )+(( c+ )(+ c+ ) (ε+ c+ )) R 12 = R 3 12, R 13 = R 3 13 R(A)=R 12 + R 13

KAPITOLA 4 REGULÁRNÍ VÝRAZY 36 4.4 Využití vzthu regulárních výrzů k reg. jzykům 4.4.1 Důkzy uzávěrových vlstností regulárních jzyků Dokážeme uzvřenost třídy regulárních jzyků vzhledem k sustituci, protože homomorfismus je vlstně speciálním přípdem sustituce, tk i uzvřenost třídy regulárních jzyků vzhledem k homomorfismu (ztím jsme si tuto operci ukázli jen n příkldu). Definice 4.2 (Sustituce) použitá n řetězce znků s opercí zřetězení je zorzení, které zchovává neutrální prvek (v nšem přípdě prázdný řetězec ε) tké smotnou operci zřetězení, tedy: s(ε)=ε s( w)=s() s(w) Rozdíl oproti homomorfismu: homomorfismus přiřzuje kždému znku původní ecedy právě jeden řetězec, sustituce přiřzuje kždému znku původní ecedy množinu řetětců, v přípdě regulární sustituce jde o množinu, která je reprezentovná regulárním jzykem, homomorfismus je tedy speciální přípd sustituce. Vět 4.2 Tříd regulárních jzyků je uzvřen vzhledem k operci sustituce. Důkz: Máme jzyk L 1 nd ecedouσ 1 reprezentovný regulárním výrzem. Sustituce σ je určen tk, že pro kždý prvek ecedyσ 1, Σ 1, máme regulární výrz σ() nd ecedou. Po upltnění sustituce vznikne jzyk σ(l 1 ) nd ecedou Σ 1 tk, že v regulárním výrzu původního jzyk nhrdíme všechny symoly ecedyσ 1 příslušnými regulárními výrzy σ().

KAPITOLA 4 REGULÁRNÍ VÝRAZY 37 Příkld 4.3 L= +( ) σ 1 ()=m, σ 1 ()=p q+ p σ 1 (L)=m (p q+ p)+((p q+ p)m ) σ 2 ()=c, σ 2 ()=c σ 2 (L)=c c +(c c) = c σ 3 ()=d, σ 3 ()=d σ 3 (L)=d d+(d d ) = d σ 4 ()=e, σ 4 ()=f σ 4 (L)=e f +(e f ) =(e f ) =(e+f) 4.4.2 Normovný utomt Definice 4.3 (Normovný utomt) Normovný utomt je deterministický utomt ez nedosžitelných stvů, jehož stvy jsou oznčeny jednoznčně (jednoznčným postupem). Účel: O dvou ekvivlentních utomtech, které nejsou normovné, můžeme říci, že jsou stejné ž n oznčení stvů. Normováním si zjednodušíme porovnávání utomtů, protože dv ekvivlentní normovné utomty jsou shodné i včetně oznčení stvů (nemusíme prověřovt různé komince uspořádných dvojic stvů). Postup: Stvyiutomtu uspořádáme podle nejkrtších slov z jzykůl i (udeme indexovt sestupně, největší slovo dostne nejmenší index). Porovnáváme podle délky, stejně dlouhá slov podle ecedy. u kždého stvu i utomtu zjistíme nejkrtší slovo příslušného jzyk L i, je možné, že udeme potřeovt více tkových slov, seřdíme podle délky sestupně, pokud vyjdou dvě stejně dlouhá slov u více stvů, porovnáme je podle ecedy,

KAPITOLA 4 REGULÁRNÍ VÝRAZY 38 pokud vyjdou stejná slov u více stvů, použijeme u kždého druhé nejkrtší slovo (td. dokud nenjdeme rozdíl, ten njdeme určitě jsou to různé jzyky), seřzené stvy oindexujeme (pojmenujeme) od 1. Příkld 4.4 Znormujeme utomt A=({q 0,q 1,q 2 }, {,}, δ, q 0, {q 1 }) q 0 q 1 q 0 q 2 q 1 Původní utomt: q 1 q 1 q 2 q 2 q 2 q 1 L(q 0 )= +, nejmenší slov jsou,,,,... L(q 1 )=, nejmenší slov jsou ε,,,... L(q 2 )=, nejmenší slov jsou,,,... Jk vidíme, nejkrtší slovo oshuje jzyk L(q 1 ), proto tomuto jzyku přiřdíme nejvyšší index (3). Zývjící dv jzyky mjí první dvě nejmenší slov stejná, ž v třetím slově se liší < proto jzyku L(q 0 ) přiřdíme druhý nejvyšší index (2). 2 3 2 1 3 Po znormování: 3 3 1 2 1 3 Jk si můžeme všimnout n příkldu 4.4 jk můžeme tké zjistit úvhou, koncové stvy většinou mívjí přiřzeny nejvyšší indexy proti směru výpočtu (tedy směrem od koncových k počátečnímu stvu) se indexy ovykle snižují. To všk není tk úplně prvidlem tře v příkldu 4.4 nemá počáteční stv nejnižší index. 4.4.3 Minimlizce konečného utomtu Minimlizcí udeme rozumět především snížení počtu stvů utomtu. Tento postup může ýt užitečný při porovnávání jzyků rozpoznávných dvěm (npo-

KAPITOLA 4 REGULÁRNÍ VÝRAZY 39 hled) různými utomty, le tké při optimlizci progrmů vytvořených stvovým progrmováním podle konečného utomtu. Definice 4.4 (Ekvivlentní utomty) Dv konečné utomty A 1 A 2 jsou ekvivlentní, pokud rozpoznávjí tentýž jzyk, tj. L(A 1 )=L(A 2 ). Definice 4.5 (Minimální utomt) Konečný utomt je minimální, jestliže neexistuje žádný s ním ekvivlentní utomt, který má menší počet stvů. Vět 4.3 Ke kždému konečnému utomtu lze sestrojit ekvivlentní minimální konečný utomt. Postup: vytvoříme ekvivlentní deterministický utomt, odstrníme nedosžitelné stvy, vytvoříme ekvivlentní redukovný utomt, vhodně přeznčíme stvy znormujeme utomt. Využijeme konstrukci podílového utomtu (viz podílová grup pod.). Redukce stvů utomtu Redukce stvů utomtu A=(Q,Σ,δ,q 0,F): pro všechny stvy q utomtu vytvoříme pomocné utomty A q tk, že vezmeme původní utomt A stv q použijeme jko počáteční, tedy q Q: A q =(Q,Σ,δ,q,F), oznčíme L q = L(A q ), zvedeme relci ekvivlence n množině stvů utomtu Q, definujeme ji tkto: pro jkékoliv dv stvy p,q Q pltí: p q L p = L q (dv stvy jsou ekvivlentní, pokud se rovnjí jzyky příslušných pomocných utomtů), když při postupu ze dvou různých stvů dostáváme totéž, pk jsou tyto stvy změnitelné můžeme je shrnout do jediného stvu, tedy všechny cesty mířící do q přesměrujeme do p stv q odstrníme,

KAPITOLA 4 REGULÁRNÍ VÝRAZY 40 toto odstrňování provádíme tk dlouho, dokud v utomtu existují ekvivlentní stvy. Definice 4.6 (Podílový utomt) Necht A=(Q,Σ,δ,q 0,F) je konečný utomt ez nedosžitelných stvů. Vytvoříme třídy ekvivlence oshující některý stv q Q: [q]={p p Q,p q} Podílový utomt A podle ekvivlence je A = {Q,Σ,δ,[q 0 ],F ), kde Q = {[q] q Q}, δ ([q],)=[δ(q,)], F = {[f] f F } Konstrukci podílového utomtu použijeme pro redukci stvů původního utomtu, proto o tkto vytvořeném utomtu udeme hovořit tké jko o redukovném. Je poměrně sndné dokázt, že podílový utomt je ekvivlentní s původním utomtem ( shrnujeme cesty, které jsou shodné). N příkldu si ukážeme vytvoření podílového utomtu včetně hledání ekvivlentních stvů. Postup: Vytvoříme utomty A i =(Q,Σ,δ,i,F) (jko počáteční stv použijeme i Q), zjímjí nás jzyky L i = L(A i ). Ty pk porovnáme zprcujeme ekvivlentní. Budeme postupovt následovně: vytvoříme množiny R 0 ij, rekurzívně vypočteme dlší množiny R k ij ž ke k=8, zjistíme jzyky L(i)= Rif 8 f F porovnáme je, pokud některé dv stvy rozpoznávjí stejný jzyk, jeden z nich odstrníme s přesměrováním všech přímých cest vedoucích do tohoto stvu, utomt převedeme do normálního tvru (znormujeme).

KAPITOLA 4 REGULÁRNÍ VÝRAZY 41 Příkld 4.5 A=(Q,Σ,δ,1,F)=({1,2,...,8}, {,},δ,1, {8}) deterministický ez nedosžitelných stvů 1 2 4 2 6 3 3 8 4 5 3 5 7 6 6 8 7 7 8 8 8 1 2 4 6 3 5 8 7 Jzyky L i vytvoříme postupem popsným výše: L 1 = R18= 8 + + L 2 = R28= 8 L 3 = R38= 8 L 4 = R48= 8 + L 5 = R58= 8 = L 2 L 6 = R68= 8 = L 3 L 7 = R78= 8 = L 3 L 8 = R88= 8 zprcujeme stvy 5, 6, 7. Původní utomt: 1 2 4 2 6 3 3 8 4 5 3 5 7 6 6 8 7 7 8 8 8 1 2 4 6 3 5 8 7

KAPITOLA 4 REGULÁRNÍ VÝRAZY 42 Po odstrnění stvu 5: 1 2 4 2 6 3 3 8 4 2 3 6 6 8 7 7 8 8 8 1 2 4 6 3 8 7 Po odstrnění stvu 6: 1 2 4 2 3 3 3 8 4 2 3 7 7 8 8 8 1 2 4 3 8 7 Po odstrnění stvu 7: 1 2 4 2 3 3 3 8 4 2 3 8 8 1 2 4 3 8 Tkto vytvořený utomt je už sice redukovný, le ještě ne minimální. Aychom mohli splnit podmínku sndného porovnávání utomtů, musíme náš utomt ještě normovt. Využijeme jzyky dílčích utomtů, které jsme zjistili dříve: L 1 = R18= 8 + + L 2 = R28= 8

KAPITOLA 4 REGULÁRNÍ VÝRAZY 43 L 3 = R38= 8 L 4 = R48= 8 + L 8 = R88= 8 Z těchto jzyků vyereme nejkrtší slov t porovnáme: Stv i Nejkrtší slovo jzyk L i Nové oznčení stvu 1 1 2,,... 2 3 4 4,,... 3 8 ε 5 Výsledný utomt po znormování: 1 2 3 2 4 3 2 4 4 4 5 5 5 1 3 2 4 5

Kpitol 5 Formální grmtiky Až dosud jsme se zývli možnostmi zjišt ování, zd zdné slovo neo posloupnost signálů vyhovuje dným podmínkám, tedy zd ptří do určitého jzyk. V této kpitole se udeme zývt možnostmi generování slov vyhovujících dným podmínkám, tedy ptřících do určitého jzyk. 5.1 Generování slov jzyk Definice 5.1 (Zákldní pojmy formálních grmtik) Aeced je neprázdná konečná množin, jejíž prvky nzýváme znky, symoly, signály. Slovo nd ecedouσje konečná posloupnost symolů ecedyσ, tj. w Σ. Jzyk n ecedouσje množin slov L nd ecedouσ, tj. L Σ. Automt rozpoznává slovo, tj. dostne již existující slovo n vstup rozhodne, zd ptří do dného jzyk. Grmtik vytváří (generuje) slov dného jzyk, popisuje strukturu jzyk. Použití grmtik při generování slov si nejdřív ukážeme n příkldu. 44

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 45 Příkld 5.1 L= (c+c c) S S 1 S A 2 S cb 3 A c 4 B B 5 B c 6 Generujeme slovo cc: S cb cb cb cc Není co přepisovt konec Úspornější přehlednější způso zápisu (shrneme prvidl se stejnou levou strnou n jeden řádek): S S A cb 1, 2, 3 A c 4 B B c 5, 6 Definice 5.2 (Formální grmtik) Formální grmtik je uspořádná čtveřice (posloupnost) G=(N,T,P,S), kde N je neprázdná konečná množin neterminálních symolů (neterminální eced), T je neprázdná konečná množin terminálních symolů (terminální eced), pltí N T=, P je neprázdná konečná množin prvidel, P ((N T) N(N T) ) (N T) jink: αaβ γ, kde A N, α,β,γ (N T) S je strtovcí symol grmtiky, S N. Definice 5.3 (Relce kroku odvození ) Necht w 1,w 2 (N T) pro grmtiku G=(N,T,P,S). Slovo w 2 lze přímo (v jednom kroku) odvodit ze slov w 1 (píšeme w 1 G w 2, ovykle stčí ), jestliže existuje prvidlo(α β) P, w 1 = x 1 αx 2, w 2 = x 1 βx 2 (podřetězec α nhrdíme řetězcem β). Symol je reflexivním trnzitivním uzávěrem relce, tj. npříkld zápis w 1 w 2 w 3 w 4 w 5 lze zkrátit n w 1 w 5.

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 46 Definice 5.4 (Jzyk) Jzyk generovný grmtikou G =(N, T, P, S) je množin L(G)={w T S G w} Definice 5.5 (Větná form, vět) Větná form grmtiky G =(N, T, P, S) je kterékoliv slovo α tkové, že S G α, tedy je to kterékoliv slovo, které lze odvodit ze strtovcího symolu pomocí prvidel grmtiky. Vět grmtiky G = (N,T,P,S) je tková větná form w, která se skládá pouze z terminálních symolů, tedy S G w, w T. Můžeme říci, že jzyk generovný grmtikou je množin všech vět této grmtiky. Definice 5.6 (Ekvivlence grmtik) Grmtiky G 1 G 2 jsou ekvivlentní, pokud generují tentýž jzyk, tedy L(G 1 )=L(G 2 ). Definice 5.7 (Derivce) Derivce slov α délky n v grmtice G =(N, T, P, S) je posloupnost slov α 1, α 2,... α n tková, že α 1 = S, α n = α, α i G α i+1 i: 1 i n 1. 5.2 Regulární grmtiky Definice 5.8 (Regulární grmtik) Regulární grmtik je tková formální grmtik G=(N,T,P,S), kde P je množin prvidel ve tvru A neo A B, kde A,B N, T, pokud se S nevyskytuje n prvé strně žádného prvidl, může existovt i prvidlo S ε. Vět 5.1 Jzyky generovné regulárními grmtikmi jsou právě regulární jzyky. Postup princip důkzu si nejdřív ukážeme n příkldech. Příkld 5.2 G=({S,A}, {,,c,d}, P, S), kde v P jsou prvidl S S A c A A cs d

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 47 Vytvořený konečný utomt: c d S A S S,A X c A A S X c d X X L= ( c ) (c+ d)= (c ) d+ ( c ) c Příkld 5.3 G=({S,A,B}, {,}, P, S), kde v P jsou prvidl S A ε A A B B A Vytvořený konečný utomt: S A X A X A,B B A X L=ε++ ( ) S X A B Důkz: (G=(N,T,P,S) A=(Q,Σ,δ,q 0,F)) ecedσ=t, počáteční stv q 0 = S, stvy Q=N {X}, musí ýt X / N (X je nově přidný), koncové stvy: pokud(s ε) P, pk F= {X,S}, jink F= {X}, δ funkce: pro kždé prvidlo(u V) P je δ(u,) V, pro kždé prvidlo(u ) P je δ(u,) X.

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 48 Příkld 5.4 A=({q 0,q 1,q 2,q 3 }, {,},δ,q 0, {q 2,q 3 }) q 0 q 1 q 1 q 0,q 2 q 0 q 1 q 2 q 3 q 2 q 2 q 3 q 3 q 3 Automt uprvíme, ychom mohli použít postup přesně opčný postupu převodu grmtiky n utomt: q 0 q 1 q 1 q 0,q 2,X X q 2 q 2,X q 3,X q 3 q 3,X q 0 q 1 q 2 q 3, X Výsledná grmtik její úprv (jen nhrdíme neterminály velkými písmeny): q 0 q 1 q 1 q 0 q 2 q 2 q 2 q 3 q 3 q 3 S A A S B B B C C C L=() +() = () (ε+ ) Příkld 5.5 A=({q 0,q 1,q 2,q 3 }, {,,c},δ,q 0, {q 0,q 3 }) c q 0 q 1 q 1 q 2 q 0,q 1 q 2 q 2 q 3 q 0 q 1 c q 2 q 3 q 3

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 49 Uprvíme utomt, tentokrát musíme řešit i počáteční stv: q 3 X c q 0 q 1 q 1 q 2 q 0,q 1,X q 2 q 2 S q 1 X S q 0 q 1 c q 2 q 3 c X Stv q 3 se stává ndytečným, neexistuje žádná cest vedoucí od něho do koncového stvu. Výsledná grmtik převedení neterminálů n velká písmen: S q 1 ε q 0 q 1 q 1 q 2 q 0 q 1 q 2 q 2 c L=ε+( ) (+ c) S B ε A B B C A B C C c Důkz: (A=(Q,Σ,δ,q 0,F) G=(N,T,P,S)) uprvíme utomt uprvený je A =(Q,Σ,δ,q 0,F ) F = {X}, duplikujeme přímé přechody vedoucí do původních koncových stvů, vytvořené přesměrujeme do X, pokud q 0 F, vytvoříme nový počáteční stv S, F = {X,S}, q 0=S, Σ:δ (S,)=δ(q 0,), T=Σ, N= Q {X}, strtovcí symol je q 0, prvidl P : pro všechny přechody δ(q i,) q j (q i q j ) P, pokud q j / F, jink(q i ) P, jestliže S F, pk(s ε) P.

KAPITOLA 5 FORMÁLNÍ GRAMATIKY 50 5.3 Chomského hierrchie grmtik Po jzykovědci Nomu Chomském je pojmenován hierrchie zákldních typů formálních grmtik. Grmtiky v této hierrchii mjí jedno společné sekvenční způso generování slov. To znmená, že v kždém kroku odvození je použito právě jedno prvidlo n právě jednom místě v přepisovném slově. V hierrchii njdeme čtyři typy grmtik oznčených čísly 0, 1, 2, 3. Třídy (tedy množiny) jzyků generovné těmito grmtikmi oznčujeme L(0), L(1), L(2), L(3). Mimo hierrchii, le v těsné vzě n ni, existují dlší typy grmtik, n které se tké podíváme. 5.3.1 Grmtiky v Chomského hierrchii Chomského hierrchie zhrnuje tedy čtyři typy grmtik. U kždého typu si uvedeme přípdný slovní název dále oznčení, které se kromě L(číslo) používá pro oznčení související třídy jzyků, tvr prvidel ekvivlentní stroj, který rozpoznává stejnou třídu jzyků. Definice 5.9 (Grmtiky Chomského hierrchie) 1. Grmtiky typu 0 (rekurzívně vyčíslitelné, RE Recursively Enumerle) žádné zvláštní podmínky n tvr prvidel (jen n levé strně musí ýt lespoň jeden neterminál): (N T) N(N T) (N T) jiný zápis: αaβ γ, A N,α,β,γ (N T) ekvivlentní stroj: Turingův stroj (TS) 2. Grmtiky typu 1 (nezkrcující, monotónní) pro prvidl musí nvíc kromě podmínek grmtik typu 0 pltit: α β, α β, α,β (N T) může existovt prvidlo S ε, pokud se S nenchází n prvé strně žádného prvidl