Teorie jazyků a automatů

Podobné dokumenty
Teorie jazyků a automatů I

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

Teorie jazyků a automatů

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.

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 Teoretické Informatiky ( UTI)

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

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

Automaty a gramatiky

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

Větu o spojitosti a jejich užití

Lineární nerovnice a jejich soustavy

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

2.8.5 Lineární nerovnice s parametrem

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ů.

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

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

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

3.2.1 Shodnost trojúhelníků I

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

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

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:

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)

ANALYTICKÁ GEOMETRIE V PROSTORU

13. Exponenciální a logaritmická funkce

Reprezentovatelnost částek ve dvoumincových systémech

Spojitost funkce v bodě, spojitost funkce v intervalu

+ 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

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

8. cvičení z Matematiky 2

Logaritmus. Předpoklady: 2909

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

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

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

2.2.9 Grafické řešení rovnic a nerovnic

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

Podobnosti trojúhelníků, goniometrické funkce

3. ROVNICE A NEROVNICE Lineární rovnice Kvadratické rovnice Rovnice s absolutní hodnotou Iracionální rovnice 90

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

4.4.3 Kosinová věta. Předpoklady:

Logaritmické rovnice I

KVADRATICKÁ FUNKCE (vlastnosti, grafy)

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

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

{ } ( ) ( ) Vztahy mezi kořeny a koeficienty kvadratické rovnice. Předpoklady: 2301, 2508, 2507

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:

( a, { } Intervaly. Předpoklady: , , , Problém zapíšeme snadno i výčtem: { 2;3; 4;5}?

a i,n+1 Maticový počet základní pojmy Matice je obdélníkové schéma tvaru a 11

Úlohy krajského kola kategorie A

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

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

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

7.5.8 Středová rovnice elipsy

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

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

63. ročník matematické olympiády III. kolo kategorie A. Ostrava, března 2014

1. LINEÁRNÍ ALGEBRA 1.1. Matice

Definice limit I

Riemannův určitý integrál.

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ží.

(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

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

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

10. Suffixové stromy

INTEGRACE KOMPLEXNÍ FUNKCE KŘIVKOVÝ INTEGRÁL

DERIVACE A INTEGRÁLY VE FYZICE

( ) ( ) ( ) 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

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

m n. Matice typu m n má

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

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

Souhrn základních výpočetních postupů v Excelu probíraných v AVT listopad r r. . b = A

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

Hyperbola a přímka

Přednáška 9: Limita a spojitost

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

Ohýbaný nosník - napětí

Příklad 22 : Kapacita a rozložení intenzity elektrického pole v deskovém kondenzátoru s jednoduchým dielektrikem

Neurčité výrazy

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

Hledání hyperbol

M - Příprava na 3. zápočtový test pro třídu 2D

Úlohy školní klauzurní části I. kola kategorie C

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

2.5.9 Vztahy mezi kořeny a koeficienty kvadratické rovnice

Nerovnosti a nerovnice

2.5.9 Vztahy mezi kořeny a koeficienty kvadratické rovnice

5.1.5 Základní vztahy mezi body, přímkami a rovinami

DIGITÁLNÍ UČEBNÍ MATERIÁL. Název školy SOUpotravinářské, Jílové u Prahy, Šenflukova 220. Název materiálu VY_32_INOVACE / Matematika / 03/01 / 17

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.

OBECNÝ URČITÝ INTEGRÁL

3. Kvadratické rovnice

Výpočet obsahu rovinného obrazce

Logaritmická funkce teorie

Při výpočtu obsahu takto omezených rovinných oblastí mohou nastat následující základní případy : , osou x a přímkami. spojitá na intervalu

3. APLIKACE URČITÉHO INTEGRÁLU

Transkript:

Šárk Vvrečková Teorie jzyků utomtů Sírk příkldů pro cvičení II Zákldy teoretické informtiky Ústv informtiky Filozoficko-přírodovědecká fkult v Opvě Slezská univerzit v Opvě Opv 24. listopdu 2016

Anotce: Tento dokument oshuje příkldy ke cvičením z předmětů Teorie jzyků utomtů II Zákldy teoretické informtiky II. Studenti zde njdou řešené příkldy s podroně popsným postupem neřešené příkldy, n kterých si mohou smi postupy procvičit. Teorie jzyků utomtů II sírk příkldů pro cvičení RNDr. Šárk Vvrečková, Ph.D. Dostupné n: http://vvreckov.zm.slu.cz/forml.html Ústv informtiky Filozoficko-přírodovědecká fkult v Opvě Slezská univerzit v Opvě Bezručovo nám. 13, Opv Sázeno v systému LATEX Tto inovce předmětu Prktikum z operčních systémů je spolufinncován Evropským sociálním fondem Státním rozpočtem ČR, projekt č. Z.1.07/2.3.00/09.0197, Posílení konkurenceschopnosti výzkumu vývoje informčních technologií v orvskoslezském krji.

Předmluv o njdeme v těchto skriptech Tto skript jsou určen pro studenty informtických oorů n Ústvu informtiky Slezské univerzity v Opvě, do cvičení předmětů Teorie jzyků utomtů II Zákldy teoretické informtiky II, jde vlstně o jkousi cvičenici sírku příkldů. Nvzujeme n odoná skript pro cvičení z předmětu z předchozího semestru, tedy předpokládjí se již zákldní znlosti v olsti teoretické informtiky, le ve skutečnosti se ooje skript temticky poněkud překrývjí. Je to z toho důvodu, že ěhem několik let procházejí o předměty rozsáhlými změnmi, snhou je při přeskupování témt nepotrht souvislosti. V tomto předmětu pokrčujeme pokročilejšími témty týkjícími se regulárních ezkontextových jzyků přecházíme k jzykům typu 0 1, kterými jsme se v předchozím semestru téměř nezývli. ílem předmětu je ncvičit si způso myšlení používný kromě jiného při provádění důkzů využívání logické dedukce. Znčení Ve skriptech se používjí následující revné ikony: Nové pojmy, znčení pod. jsou oznčeny modrým symolem, který vidíme zde vlevo. Tuto ikonu (stejně jko následující) njdeme n zčátku odstvce, ve kterém je nový pojem zváděn. Konkrétní postupy jsou znčeny tké modrou ikonou. Jsou sice proírány n přednáškách, le máme je i zde, ychom si je při procvičování připomněli. Některé části textu jsou oznčeny filovou ikonou, což znmená, že jde o nepovinné úseky, které nejsou proírány (většinou; studenti si je mohou podle zájmu vyžádt neo smi prostudovt). Jejich účelem je dorovolné rozšíření znlostí studentů o pokročilá témt, n která ovykle při výuce nezývá moc čsu. Žlutou ikonou jsou oznčeny odkzy, n kterých lze získt dlší informce o témtu. Nejčstěji u této ikony njdeme weové odkzy n stránky, kde se dné témtice jejich utoři věnují podroněji. Červená je ikon pro upozornění poznámky. iii

iv Pokud je množství textu ptřícího k určité ikoně větší, je celý lok ohrničen prostředím s ikonmi n zčátku i konci: Příkld Tkto vypdá prostředí s řešeným příkldem. Příkldy jsou ovykle komentovány, y yl jsný postup jejich řešení. Úkol Otázky úkoly, náměty n vyzkoušení, které se doporučuje při procvičování učiv provádět, jsou uzvřeny v tomto prostředí. Pokud je v prostředí více úkolů, jsou číslovány. Definice V tkovém prostředí definujeme pojem či vysvětlujeme sice reltivně známý, le komplexní pojem s více význmy či vlstnostmi.

Osh Předmluv iii 1 Regulární jzyky 1 1.1 Opkování............................................ 1 1.2 Konečné jzyky......................................... 3 1.3 Uzávěrové vlstnosti operce nd regulárními jzyky................... 5 1.3.1 Pozitivní iterce.................................... 5 1.3.2 Zrcdlový orz (reverze)............................... 6 1.3.3 Průnik.......................................... 9 1.4 Pumping lemm pro regulární jzyky............................. 13 1.5 inimlizce konečného utomtu.............................. 18 1.6 Vytvoření regulárního výrzu podle konečného utomtu................. 22 2 Bezkontextové grmtiky 27 2.1 Úprvy ezkontextových grmtik.............................. 27 2.1.1 Převod n nezkrcující ezkontextovou grmtiku................. 27 2.1.2 Redukce grmtiky................................... 29 2.1.3 Odstrnění jednoduchých prvidel.......................... 31 2.1.4 Levá prvá rekurze.................................. 33 2.2 Normální formy ezkontextových grmtik......................... 40 2.2.1 homského normální form.............................. 40 2.2.2 Greichové normální form.............................. 42 2.3 Uzávěrové vlstnosti ezkontextových jzyků........................ 45 2.4 Pumping lemm pro ezkontextové jzyky.......................... 48 3 Zásoníkový utomt 52 3.1 Připomenutí jk prcuje zásoníkový utomt....................... 52 3.2 Zásoníkový utomt podle ezkontextové grmtiky................... 58 v

vi 4 Jzyky typu 0 60 4.1 Turingův stroj......................................... 60 4.1.1 o je to Turingův stroj pojmy znčení...................... 60 4.1.2 Nvrhujeme Turingův stroj pro dný jzyk..................... 61 4.2 Grmtiky typu 0....................................... 66 4.2.1 Návrh grmtiky typu 0................................ 66 4.2.2 Kurodov normální form............................... 68

vii

Kpitol 1 Regulární jzyky 1.1 Opkování Nejdřív si zopkujeme něco z toho, co jsme se nučili v minulém semestru. Zákldy musíme znát dokonle, protože n nich udeme stvět po celý semestr. Příkld Jzyky zdné regulárním výrzem zpíšeme v množinovém zápisu. Ke kždému jzyku npíšeme množinu všech jeho slov, která jsou krtší než 5. L 1 = () nožinový zápis: L 1 = {() n : n 0} Slov krtší než 5: {w L 1 : w < 5} = {ε,, } nemotechnická pomůck: z index v množinovém zápisu doszujeme postupně čísl od nejnižší hodnoty zdného rozshu, tj. od 0. Všimněte si symolického zápisu nelze npst rovnítko mezi jzyk L 1 množinu slov tohoto jzyk krtších než 5, je tře to zpst jink. L 2 = nožinový zápis: L 2 = { m n : m, n 0} Všimněte si: je tře použít dv nvzájem nezávislé indexy! Slov krtší než 5: {w L 2 : w < 5} = {,,,,,, 4, 2, 2, 3 } nemotechnická pomůck: z indexy m n v množinovém zápisu doszujeme čísl nvzájem nezávisle (m = n = 0, m = 1 n = 0, m = 0 n = 1, td.). Pozor, prázdné slovo do jzyk neptří! Příkld Určíme typ zdného jzyk v homského hierrchii. Pokud se jedná o regulární jzyk, vytvoříme ekvivlentní regulární výrz. Vypíšeme všechn slov jzyk krtší než 5. L 1 = { () i () j : i, j 0 } Jde o regulární jzyk. Ekvivlentní regulární výrz: L 1 = () () 1

Kpitol 1 Regulární jzyky 2 Slov krtší než 5: {w L 1 : w < 5} = { ε, 2, 2, 2 2, 4, 4} L 2 = { () i () i : i 0 } Tento jzyk je sice podoný předchozímu, le není to regulární jzyk (je ezkontextový). Proto nelze vytvořit ekvivlentní regulární výrz. Jk poznáme, že není regulární? Pokud je tře (při zprcování slov jzyk utomtem) synchronizovt dvě neo dokonce více částí slov (npříkld proto, že totéž písmeno indexu se vyskytuje n více místech v množinové reprezentci), nejde o regulární jzyk. To lze dokázt npříkld pomocí Pumping lemmtu (udeme rát později). Slov krtší než 5: {w L 2 : w < 5} = { ε, 2 2} Srovnejte s odonou množinou pro jzyk L 1 z tohoto příkldu. L 3 = { 0 i 1 i 0 i : i 1 } Jde o jzyk typu 1 v homského hierrchii, není to regulární ni ezkontextový jzyk. Slov krtší než 5: {w L 3 : w < 5} = {010} Příkld Vypíšeme všechn slov jzyk krtší než 5. L 1 = { i j : 1 i j } { c k : k 3 } Slov krtší než 5: {w L 1 : w < 5} = {, 2, 2 2, ε, c, c 2, c 3} Poměrně čstou chyou ývá otočení relčního znménk. V předpisu druhé množiny sjednocení máme symol menší neo rovno, ne nopk, musíme tedy vypst slov o délce 0 ž 3. L 2 = { i j : 1 i j } { i j : 1 j i } Když se pozorně podíváme n množiny, jejichž průnikem je jzyk L 2, zjistíme, že tento jzyk můžeme zpst jednodušeji, protože první množin nám dává podmínku symolů má ýt stejně neo více než symolů, druhá množin předepisuje symolů má ýt stejně neo méně než symolů : L 2 = { i i : i 1 } Slov krtší než 5: {w L 2 : w < 5} = {, 2 2} Pozor n rozdíl mezi sjednocením průnikem, záměn těchto dvou množinových opercí je poměrně čstou chyou. Příkld Pro zdné jzyky sestrojíme konečný utomt ve všech třech reprezentcích. L 1 = δ-funkce: A 1 = ({q 0, q 1 }, {, }, δ, q 0, {q 1 }) δ(q 0, ) = q 1 δ(q 1, ) = q 1 Tulk přechodů: Stvový digrm: q 0 q 1 q 0 q 1 q 1 q 1 Všimněte si, že u δ-funkce je nutné uvádět plnou specifikci, y ylo zřejmé, který stv je počáteční které stvy jsou koncové, u jiných reprezentcí jsou tyto informce zznmenány jink.

Kpitol 1 Regulární jzyky 3 L 2 = + ε δ-funkce: A 2 = ({q 0, q 1 }, {, }, δ, q 0, {q 0, q 1 }) δ(q 0, ) = q 1 δ(q 1, ) = q 1 Tulk přechodů: q 0 q 1 q 1 q 1 Stvový digrm: q 0 q 1 Úkol Srovnejte utomty pro jzyky L 1 L 2 z předchozího příkldu všimněte si, jké důsledky mělo přidání prázdného slov k jzyku u jednotlivých reprezentcí utomtu. Příkld Pro zdný jzyk sestrojíme konečný utomt ve všech třech reprezentcích. L = + δ-funkce: A = ({q 0, q 1, q 2 }, {, }, δ, q 0, {q 1, q 2 }) δ(q 0, ) = q 1 δ(q 0, ) = q 2 δ(q 1, ) = q 1 δ(q 2, ) = q 2 Tulk přechodů: Stvový digrm: q 0 q 1 q 2 q 1 q 1 q 2 q 2 q 0 q 1 q 2 Všimněte si, jkým způsoem se v reprezentcích utomtu projevil operce sčítání regulárních (pod)výrzů. Jzyk lze zpst tké následovně v množinovém zápisu s využitím operce sjednocení množin: L = { i : i 0 } { i : i 0 } 1.2 Konečné jzyky Všechny konečné jzyky jsou regulární, proto pro ně dokážeme sestrojit konečný utomt. U konečného utomtu pro konečný jzyk ývá ovyklý poždvek n rozlišitelnost nčítných slov podle koncového stvu, tedy pro kždé slovo jzyk y měl existovt smosttný koncový stv. Pk ez nutnosti porovnávání vstupu s jednotlivými slovy jzyk sndno zjistíme, které slovo ylo nčteno podle koncového stvu, ve kterém skončil výpočet. Postup je jednoduchý pro kždé slovo jzyk vytvoříme větev ve stvovém digrmu. Jestliže chceme utomt deterministický (opět jde o ovyklý poždvek, pokud tento postup používáme při progrmování), stčí sloučit počátky těch větví, které stejně zčínjí (konce větví nesmíme sloučit, neylo y možné rozpoznt slov jzyk podle koncových stvů!).

Kpitol 1 Regulární jzyky 4 Příkld Podle zdného konečného jzyk vytvoříme konečný utomt. L = {hrd, hrom, polom, ohrd} q r 1 q 2 q d 3 h h q r 5 q o 6 q m 7 q 0 p q o o 9 q l 10 q o 11 q h 14 q r 15 q 16 q 4 q 8 q m 12 q 13 q d 17 q 18 q 19 Dále chceme, y utomt yl deterministický se zchováním možnosti rozlišit rozpoznávná slov podle koncového stvu. První dvě slov jzyk zčínjí stejným podřetězcem, tedy zčátky prvních dvou větví sloučíme: h q 0 p o q r 1 q 2 o q o 9 q l 10 q h 14 q r 15 q d 3 q m 7 q o 11 q 16 q 4 q 8 q m 12 q 13 q d 17 q 18 q 19 V konečném utomtu pro konečný jzyk nesmí ( ni nemůže) ýt žádná smyčk (cyklus) kdyy yl, pk y ylo možné tuto smyčku jkýkolivpočetkrát zopkovt rozpoznávný jzyk y yl nekonečný. Úkoly 1. Vytvořte konečný utomt pro následující jzyky (deterministický, to tk, y pro kždé slovo jzyk existovl jeden konečný stv): () L = {strom, stroj, výstroj} () L = {if, else, elif} (c) L c = {red, write, writell, mtrix} (d) L d = {delfín, ry, velry} Poznámk: V přípdě (c) ude koncový stv větve pro druhé slovo součástí větve pro třetí slovo (pokud vytvoříme deterministický utomt). To je v pořádku, vlstnost rozpoznávání podle koncového stvu zůstává zchován. 2. Vytvořte konečný utomt (stvový digrm), který ude rozpoznávt všechn slov nd ecedou Σ = {,, c}, jejichž délk je () právě 3 znky, () nejvýše 3 znky (tj. 0, 1, 2 neo 3 znky).

Kpitol 1 Regulární jzyky 5 1.3 Uzávěrové vlstnosti operce nd regulárními jzyky V předchozím semestru jsme se zývli zákldními uzávěrovými vlstnostmi regulárních jzyků, to uzvřeností vzhledem k regulárním opercím (sjednocení, zřetězení, iterce). V tomto semestru se podíváme n některé zývjící operce. 1.3.1 Pozitivní iterce Pozitivní iterce se používá podoně jko (ěžná) iterce, le ztímco iterce znmená řetězení 0, 1, 2,..., při pozitivní iterci zčínáme při řetězení ž 1, 2,.... temticky můžeme zpst iterci pozitivní iterci následovně: L = L i L + = i=0 i=1 Postup je stejný jko u iterce, le pokud počáteční stv původního utomtu neptřil do množiny koncových stvů (tj. slovo ε neptřilo do jzyk), neude koncovým stvem ni po úprvě utomtu. Není nutné vytvářet nový počáteční stv. Oznčme A 1 = (Q, Σ, δ 1, q 0, F ) původní utomt, pk utomt rozpoznávjící jzyk, který je pozitivní itercí původního jzyk, je A = (Q, Σ, δ, q 0, F ). Přechodová { funkce: δ 1 (r, x) : r Q F, x Σ (přechody z jiných než koncových stvů zkopírujeme), δ(r, x) = δ 1 (r, x) δ 1 (q 0, x) : r F, x Σ Přechody vedoucí z koncových stvů tké přejmeme, přidáme kopie přechodů vedoucích z q 0. Příkld Vytvoříme pozitivní iterci jzyk následujícího utomtu: A 1 = ({A, B,, D}, {0, 1, 2}, δ 1, A, {B, D}) L i 0 1 A 2 0 2 B 1 D 0 1 2 A A B B D B D D δ 1 (A, 0) = A δ 1 (A, 1) = B δ 1 (A, 2) = δ 1 (B, 1) = D δ 1 (B, 2) = B δ 1 (, 0) = D Přidáváme pouze nové přechody, počáteční stv neudeme zřzovt do množiny koncových stvů, protože v původním utomtu tké neylo rozpoznáváno slovo ε: 0 0 1 A 2 2 0 2 1, 2 B 1 1 D 0 A 0 1 2 A B B A D, B B, D D A B

Kpitol 1 Regulární jzyky 6 A = ({A, B,, D}, {0, 1, 2}, δ, A, {B, D}) δ(a, 0) = A δ(a, 1) = B δ(a, 2) = δ(b, 1) = D δ(b, 2) = B δ(, 0) = D δ(b, 0) = A δ(b, 1) = B δ(b, 2) = δ(d, 0) = A δ(d, 1) = B δ(d, 2) = Poznámk: Pokud původní jzyk L oshuje slovo ε, pk pltí L nerovnjí pltí L = L + {ε}. = L +, v opčném přípdě se tyto jzyky Úkoly 1. Zkonstruujte konečný utomt jzyk, který je pozitivní itercí jzyk následujícího utomtu: q 0 q 1 q 2 A 1 q 0 q 1 q 2 q 1 q 2 q 0 q 1 2. Zkonstruujte konečný utomt jzyk, který je pozitivní itercí jzyk následujícího utomtu: 0 1 D 1 0 1 D D E E E E 1.3.2 Zrcdlový orz (reverze) Reverze je převrácení. Zrcdlový orz slov sestrojíme tk, že je zrcdlově převrátíme, tj. npříkld ze slov cd získáme slovo (cd) R = dc. Zrcdlový orz jzyk je jzyk oshující všechn slov původního jzyk, le převrácená. Operce zrcdlení je sm k soě inverzní když slovo (neo jzyk) revertujeme dvkrát, dostáváme původní slovo (jzyk). Zrcdlení můžeme zpst tkto: L R = { w : w R L } Pokud udeme při reverzi prcovt s konečným utomtem, především převrátíme všechny cesty, které v utomtu existují (tj. převrátíme všechny přechody) změníme počáteční koncové stvy. Dále musíme vyřešit jeden prolém počáteční stv musí ýt vždy jen jeden, le koncových stvů může ýt oecně jkýkoliv počet. Proto rozlišíme dv přípdy pokud původní utomt má jen jediný koncový stv, stčí postup nznčený v předchozím odstvci. Jestliže všk má více koncových stvů,

Kpitol 1 Regulární jzyky 7 musíme zjistit, y po reverzi existovl jen jediný počáteční stv. Proto vytvoříme nový stv, který v soě ude shrnovt vlstnosti původních koncových stvů (resp. nových počátečních stvů) týkjící se přechodů související s ukončením výpočtu. Pokud počáteční stv původního utomtu ptřil do množiny koncových stvů, ude koncovým stvem tké počáteční stv po reverzi. Oznčme A 1 = (Q 1, Σ, δ 1, q 0, F 1 ) původní utomt, pk utomt rozpoznávjící jzyk, který je reverzí původního jzyk, je A = (Q 1 {s 0 }, Σ, δ, s 0, F ), množin koncových stvů je F = {q 0, s 0 }, pokud q 0 F 1, jink F = {q 0 } (záleží n tom, zd do původního jzyk ptřilo ε). Přechodová funkce: { p : δ 1 (p, x) = r, x Σ, δ(r, x) = t : δ 1 (t, x) F 1, pokud r = s 0, x Σ. N přechodové funkci vidíme, že podle prvního řádku předpisu se všechny přechody orátí (tj. změní se zdroj cíl přechodu), podle druhého řádku vytvoříme přechody vedoucí z přidného stvu s 0 (zstupujícího původní koncové stvy). Příkld Provedeme operci zrcdlení jzyk tohoto konečného utomtu: A 1 = ({q 0, q 1, q 2, q 3 }, {,, c}, δ 1, q 0, {q 1 }) q 0 q 1 c c q 2 q 3 c q 0 q 1 q 2 q 1 q 1 q 2 q 3 q 1 q 3 q 2 δ 1 (q 0, ) = q 1 δ 1 (q 0, ) = q 2 δ 1 (q 1, c) = q 1 δ 1 (q 2, ) = q 3 δ 1 (q 2, c) = q 1 δ 1 (q 3, ) = q 2 Orátíme všechny přechody. Protože máme jen jediný koncový stv, stčí pk jen změnit počáteční koncový stv (neudeme vytvářet nový stv s 0 ). U tulky se změňují oznčení řádků s oshem uněk n tomto řádku. A R = ({q 0, q 1, q 2, q 3 }, {,, c}, δ, q 1, {q 0 }) q 0 q 1 c c q 2 q 3 c q 0 q 1 q 0 q 1, q 2 q 2 q 0, q 3 q 3 q 2 δ 1 (q 1, ) = q 0 δ 1 (q 2, ) = q 0 δ 1 (q 1, c) = q 1 δ 1 (q 3, ) = q 2 δ 1 (q 1, c) = q 2 δ 1 (q 2, ) = q 3 Ukázk odvození slov v utomtu A 1 jeho reverze v utomtu A R : A 1 : (q 0, c) (q 2, c) (q 3, c) (q 2, c) (q 1, ε) A R : (q 1, c) (q 2, ) (q 3, ) (q 2, ) (q 0, ε)

Kpitol 1 Regulární jzyky 8 Příkld Podíváme se n složitější přípd konečný utomt s více koncovými stvy. Postup ude podoný, le nvíc řešíme nutnost existence jediného počátečního stvu. Je dán tento konečný utomt: c A B A B c B D A, D D D D Jsou zde dv koncové stvy. Nejdřív přesměrujeme všechny přechody oznčíme nový koncový stv, ž v druhém kroku (utomt vprvo) vytvoříme nový počáteční stv podoným postupem, jký jsme použili npříkld u sjednocení (tm šlo tké o simulci nhrzení dvou počátečních stvů jediným). c c A B A B s 0 s 0 D A, B A c c B A D D A D D B Ukázk odvození slov v utomtu A 1 jeho reverze v utomtu A R : A 1 : (q 0, ) (q 2, ) (q 0, ) (q 2, ) (q 1, ε) A R : (s 0, ) (q 2, ) (q 0, ) (q 2, ) (q 0, ε) Poslední přípd, n který se podíváme, je konečný utomt s více koncovými stvy, kde tké počáteční stv ptří do množiny koncových stvů. Příkld Pro operci zrcdlení je dán tento konečný utomt: A 1 = ({q 0, q 1, q 2 }, {, }, δ 1, q 0, {q 0, q 1 }) q 0 q 1 q 2 q 0 q 1 q 2 q 1 q 2 q 0 q 1 δ 1 (q 0, ) = q 1 δ 1 (q 0, ) = q 2 δ 1 (q 2, ) = q 0 δ 1 (q 2, ) = q 1 N rozdíl od předchozích příkldů udou ve výsledném utomtu dv koncové stvy. Stv q 0 ude koncový, protože v původním utomtu je počátečním stvem, stv s 0 ude koncový, protože do jzyk původního utomtu ptří slovo ε, jehož převrácením je opět slovo ε pro jeho rozpoznání musí ýt počáteční stv (tj. s 0 ) v množině koncových stvů.

q 2 q 2 q 0 Kpitol 1 Regulární jzyky 9 A R = ({s 0, q 0, q 1, q 2 }, {, }, δ, s 0, {q 0, s 0 }) q 0 s 0, q 1 q 2 s 0 q 0, q 2 q 2 q 0 q 2 q 1 q 0 q 2 q 2 q 0 δ(s 0, ) = {q 0, q 2 } δ(s 0, ) = {q 2 } δ(q 1, ) = {q 0 } δ(q 2, ) = {q 0 } δ(q 0, ) = {q 2 } δ(q 1, ) = {q 2 } Úkoly 1. Zkonstruujte konečný utomt jzyk, který je reverzí (zrcdlovým orzem) jzyk následujícího utomtu: 0 1 D 1 0 1 D D E E E E 2. Vytvořte konečný utomt jzyk, který je reverzí jzyk následujícího utomtu. Pro o utomty (uvedený i ten, který vytvoříte) sestrojte tulku přechodů. q 0 q 1 3. Vytvořte konečný utomt rozpoznávjící jzyk L = {ε, tisk, tis, síto} tk, y jednotlivá slov jzyk yl rozpoznávná koncovým stvem (tj. pro kždé slovo vlstní koncový stv). Potom proveďte reverzi tohoto utomtu. 4. Vytvořte zrcdlový orz jzyk tohoto konečného utomtu (má jediný koncový stv, který je zároveň počátečním stvem): q 0 q 1 q 2 q 1 q 2 1.3.3 Průnik Když vytváříme konečný utomt pro průnik dvou jzyků pomocí utomtů, které je rozpoznávjí, tk vlstně simulujeme (prlelně) činnost oou těchto utomtů. Po přečtení kždého signálu ze vstupu provedeme jeden krok v oou utomtech zároveň. Ve výsledném utomtu jsou proto stvy uspořádnými dvojicemi stvů z prvního druhého původního utomtu (pozor, záleží n pořdí).

Kpitol 1 Regulární jzyky 10 Oznčme A 1 = (Q 1, Σ 1, δ 1, q 1, F 1 ) je první utomt, A 2 = (Q 2, Σ 2, δ 2, q 2, F 2 ) je druhý utomt, pk utomt rozpoznávjící jzyk, který je průnikem jzyků oou utomtů, je A P = (Q 1 Q 2, Σ 1 Σ 2, δ, [q 1, q 2 ], F 1 F 2 ), kde operce je krtézským součinem uvedených množin. Přechodová funkce: ( ) [ ] δ [p, r], x = δ 1 (p, x), δ 2 (r, x), kde p Q 1, r Q 2, x Σ 2, x Σ 1 Σ 2 Poznámk: Všimněte si, že v definici výsledného utomtu máme krtézský součin původních množin stvů ( totéž pro koncové stvy). Ve skutečnosti mnoho z těchto stvů je nedostupných neo ndytečných, což můžeme vyřešit redukcí. Příkld Sestrojíme konečný utomt rozpoznávjící průnik jzyků následujících dvou utomtů: q 0 q 1 q 2 q 3 p 0 p 1 p 3 p 2 p 4 A 1 = ({q 0,..., q 3 }, {, }, δ 1, q 0, {q 2 }) A 2 = ({p 0,..., p 4 }, {, }, δ 2, p 0, {p 4 }) δ 1 (q 0, ) = {q 0 } δ 1 (q 0, ) = {q 1 } δ 1 (q 1, ) = {q 1, q 2 } δ 1 (q 2, ) = {q 3 } δ 1 (q 3, ) = {q 2 } δ 2 (p 0, ) = {p 1, p 3 } δ 2 (p 1, ) = {p 2 } δ 2 (p 1, ) = {p 1 } δ 2 (p 2, ) = {p 0 } δ 2 (p 3, ) = {p 4 } Nejdřív si vyznčíme průěh simulce. Není to nutné ( u složitějšího utomtu je to prkticky neproveditelné), le n digrmu lépe pochopíme prlelnost oou zprcování téhož slov (červeně jsou spojeny stvy, ve kterých jsou utomty ve stejném kroku zprcování slov) orázek vprvo. Npříkld pro slovo prlelně procházíme dvojicemi stvů [q 0, p 0 ], pk [q 0, p 1 ], [q 1, p 1 ], [q 2, p 1 ], [q 3, p 2 ], [q 2, p 0 ], dále [q 3, p 3 ] [q 2, p 4 ]. Protože y ylo hodně náročné ( tké nedeterministické q 0 q 1 p 0 p 1 p 3 q 2 p 2 p 4 těžko nprogrmovtelné) tkto vyhledávt všechny dvojice stvů, ve kterých se nchází výpočet v oou utomtech ve stejném kroku, použijeme jinou (trochu otrockou ) metodu: jko množinu stvů použijeme množinu všech uspořádných dvojic, kde první prvek je stv prvního utomtu druhý prvek je stv druhého utomtu, q 3

Kpitol 1 Regulární jzyky 11 vytvoříme δ-funkci neo tulku přechodů, ve které zchytíme společné přechody n stejný signál v oou utomtech, odstrníme nepotřené stvy. Počátečním stvem ude uspořádná dvojice oshující počáteční stvy oou původních utomtů, koncové stvy udou všechny uspořádné dvojice, ve kterých jsou o původní stvy koncovými. Jednodušší je využití tulky přechodů. Podle tulek původních utomtů vytvoříme tulku pro výsledný utomt (komince řádků ve stejném sloupci). q 0 q 0 q 1 q 1 q 1, q 2 q 2 q 3 q 3 q 2 p 0 p 1, p 3 p 1 p 2 p 1 p 2 p 0 p 3 p 4 p 4 Tulk přechodů výsledného konečného utomtu má 4 5 = 20 řádků: (pokrčování) [q 0, p 0 ] [q 0, p 1 ], [q 0, p 3 ] [q 0, p 1 ] [q 0, p 2 ] [q 1, p 1 ] [q 0, p 2 ] [q 1, p 0 ] [q 0, p 3 ] [q 1, p 4 ] [q 0, p 4 ] [q 1, p 0 ] [q 1, p 1 ] [q 1, p 1 ], [q 2, p 1 ] [q 1, p 2 ] [q 1, p 0 ], [q 2, p 0 ] [q 1, p 3 ] [q 1, p 4 ], [q 2, p 4 ] [q 1, p 4 ] [q 2, p 0 ] [q 3, p 1 ], [q 3, p 3 ] [q 2, p 1 ] [q 3, p 2 ] [q 2, p 2 ] [q 2, p 3 ] [q 2, p 4 ] [q 3, p 0 ] [q 3, p 1 ] [q 2, p 1 ] [q 3, p 2 ] [q 2, p 0 ] [q 3, p 3 ] [q 2, p 4 ] [q 3, p 4 ] Nyní odstrníme nepotřené (tj. nedosžitelné ndytečné) stvy tk, jk jsme se učili v předchozím semestru, osh množin je průěžně tříděn pro usndnění porovnávání. S 0 = {[q 0, p 0 ]} S 1 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 3 ]} S 2 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 3 ], [q 0, p 2 ], [q 1, p 1 ], [q 1, p 4 ]} S 3 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 1 ], [q 1, p 4 ], [q 1, p 0 ], [q 2, p 1 ]} S 4 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 1 ], [q 1, p 4 ], [q 2, p 1 ], [q 3, p 2 ]} S 5 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 1 ], [q 1, p 4 ], [q 2, p 1 ], [q 3, p 2 ], [q 2, p 0 ]} S 6 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 1 ], [q 1, p 4 ], [q 2, p 0 ], [q 2, p 1 ], [q 3, p 2 ], [q 3, p 1 ], [q 3, p 3 ]} S 7 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 1 ], [q 1, p 4 ], [q 2, p 0 ], [q 2, p 1 ], [q 3, p 1 ], [q 3, p 2 ], [q 3, p 3 ], [q 2, p 4 ]} S 8 = {[q 0, p 0 ], [q 0, p 1 ], [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 1 ], [q 1, p 4 ], [q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 1 ], [q 3, p 2 ], [q 3, p 3 ]} = S 7 Odstrnili jsme stvy [q 0, p 4 ], [q 1, p 2 ], [q 1, p 3 ], [q 2, p 2 ], [q 2, p 3 ], [q 3, p 0 ], [q 3, p 4 ], které jsou nedosžitelné z počátečního stvu. Zývá odstrnit ndytečné stvy.

Kpitol 1 Regulární jzyky 12 Dále prcujeme s touto tulkou přechodů: [q 0, p 0 ] [q 0, p 1 ], [q 0, p 3 ] [q 0, p 1 ] [q 0, p 2 ] [q 1, p 1 ] [q 0, p 2 ] [q 1, p 0 ] [q 0, p 3 ] [q 1, p 4 ] [q 1, p 0 ] [q 1, p 1 ] [q 1, p 1 ], [q 2, p 1 ] [q 1, p 4 ] [q 2, p 0 ] [q 3, p 1 ], [q 3, p 3 ] [q 2, p 1 ] [q 3, p 2 ] [q 2, p 4 ] [q 3, p 1 ] [q 2, p 1 ] [q 3, p 2 ] [q 2, p 0 ] [q 3, p 3 ] [q 2, p 4 ] Odstrníme ndytečné symoly (ze kterých neexistuje cest do koncového stvu): E 0 = {[q 2, p 4 ]} E 1 = {[q 2, p 4 ], [q 3, p 3 ]} E 2 = {[q 2, p 4 ], [q 3, p 3 ], [q 2, p 0 ]} E 3 = {[q 2, p 0 ], [q 2, p 4 ], [q 3, p 3 ], [q 3, p 2 ]} E 4 = {[q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 2 ], [q 3, p 3 ]} E 5 = {[q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 2 ], [q 3, p 3 ], [q 1, p 1 ], [q 3, p 1 ]} E 6 = {[q 1, p 1 ], [q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 1 ], [q 3, p 2 ], [q 3, p 3 ], [q 0, p 1 ]} E 7 = {[q 0, p 1 ], [q 1, p 1 ], [q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 1 ], [q 3, p 2 ], [q 3, p 3 ], [q 0, p 0 ]} E 8 = {[q 0, p 0 ], [q 0, p 1 ], [q 1, p 1 ], [q 2, p 0 ], [q 2, p 1 ], [q 2, p 4 ], [q 3, p 1 ], [q 3, p 2 ], [q 3, p 3 ]} = E 7 Po odstrnění stvů [q 0, p 2 ], [q 0, p 3 ], [q 1, p 0 ], [q 1, p 4 ] dostáváme tuto tulku přechodů (s původním oznčením stvů po přeznčení n písmen): [q 0, p 0 ] [q 0, p 1 ] A B [q 0, p 1 ] [q 1, p 1 ] B [q 1, p 1 ] [q 1, p 1 ], [q 2, p 1 ], E [q 2, p 0 ] [q 3, p 1 ], [q 3, p 3 ] D G, K [q 2, p 1 ] [q 3, p 2 ] E H [q 2, p 4 ] F [q 3, p 1 ] [q 2, p 1 ] G E [q 3, p 2 ] [q 2, p 0 ] H D [q 3, p 3 ] [q 2, p 4 ] K F Přeznčení stvů není povinné, zde jsme to provedli pouze kvůli zvýšení přehlednosti. Jk vidíme, získli jsme utomt s devíti stvy.

Kpitol 1 Regulární jzyky 13 Stvový digrm (stvy jsou přeznčené): A B E G H D K F Úkoly 1. Vytvořte deterministické konečné utomty pro jzyky L 1 = {if, then, else} L 2 = {if, iff, elif}, v kždém z utomtů stčí jediný koncový stv pro všechn slov dného jzyk. Potom výše uvedeným postupem vytvořte utomt rozpoznávjící průnik těchto jzyků. 2. Sestrojte konečný utomt, který rozpoznává průnik jzyků následujících utomtů (prcujte s tulkmi přechodů). Odstrňte nedosžitelné ndytečné stvy sestrojte stvový digrm. 0 1 A B A B D D B 0 1 E F F F H H H H Pro kontrolu: po odstrnění nepotřených stvů y měl utomt mít osm stvů, z toho jeden koncový, jeden cyklus přes jeden stv jeden cyklus přes tři stvy. 1.4 Pumping lemm pro regulární jzyky Pumping lemm nám pomáhá určit, zd není dný jzyk regulární. Zákldní znění lemmtu je následující: Lemm (Pumping lemm pro regulární jzyky) Jestliže L je regulární jzyk, pk existuje přirozené číslo p > 0 tkové, že pro kždé slovo w L tkové, že w > p, existuje lespoň jedno rozdělení slov w ve formě w = x y z, kde y ε x y p k 0 je x y k z L (1.1) V symolickém zápisu: Lemm (Pumping lemm pro regulární jzyky symolický zápis) L je regulární jzyk p N, p > 0 tkové, že w L, w > p rozdělení w = x y z y > 0 x y p k 0 je x y k z L (1.2)

Kpitol 1 Regulární jzyky 14 o z toho vyplývá? Pumping lemm je implikce říká, že pokud je jzyk regulární, pk má dnou vlstnost. Ale nemusí nutně pltit, že jzyk, který má dnou vlstnost, je regulární (protože se nejedná o ekvivlenci). Jestliže chceme tuto větu použít pro důkz toho, že dný jzyk není regulární, musíme znění uprvit srovnejte původní otočené znění: L L (REG) p > 0 w: w > p rozdělení... k 0: x y k z L p > 0 w: w > p rozdělení... k 0: x y k z / L L / L (REG) Tkže njdeme jedno dosttečně dlouhé slovo, projdeme všechn jeho rozdělení x y z vyhovující podmínkám lemmtu pro kždé rozdělení njdeme jedno číslo k 0 pro pumpování. Lemm používáme n dosttečně dlouhá slov, tedy delší než p. Podmínk x y p je důležitá: dokáže nám hodně redukovt počet vyhovujících rozdělení slov. V prxi to znmená, že v částech x y je omezený počet symolů, tedy npříkld se zde nesmí vyskytovt žádný index lížící se délce vyrného slov. Poznámk: Uvědomme si, z čeho vět vyplývá pokud je jzyk regulární, pk existuje konečný utomt, který tento jzyk rozpoznává. Když už máme konečný utomt, můžeme si z číslo p dosdit jednoduše počet stvů utomtu. Pk podmínk dosttečně dlouhé slovo (tj. w > p) znmená, že výpočet slov se ude sestávt z více než p kroků, tedy musí existovt stv, přes který půjde tento výpočet více než jednou (protože v kždém kroku výpočtu je zprcován právě jeden symol slov dochází ke změně stvu). Pokud tedy výpočet prochází přes lespoň jeden stv dvkrát, znmená to, že ve výpočtu je smyčk (tj. v grfu utomtu se ve smyčce dostáváme od prvního výskytu opkovného stvu ve výpočtu k jeho dlšímu výskytu). Tedy v nšem slově njdeme první smyčku ve výpočtu, část slov zprcovnou n cestě k této smyčce prohlásíme z x, část slov zprcovného ve smyčce (jejím prvním průěhu) z y zytek slov ude z. Oprvdu hledáme první smyčku n cestě jko prostřední část rozdělení použijeme první průěh smyčky, to odpovídá podmínce x y p. Příkld Nejdřív si ukážeme, jk ověřit, že regulární jzyk tuto vlstnost má. Postup si ukážeme n jzyku L = { i j : i, j 0 } Pro tento jzyk dokážeme sestrojit konečný utomt, tedy víme, že se jedná o regulární jzyk. Vlstnost popsnou v Pumping lemm si můžeme předstvit tkto: q 0 q 1 použijeme p rovno počtu stvů konečného utomtu, tedy p = 3, vezmeme jkékoliv slovo jzyk delší než 3, npříkld w = 3 (má délku 5), q 1

Kpitol 1 Regulární jzyky 15 w je delší než počet stvů utomtu, je tedy zřejmé, že některá část slov ude vyhodnocován v cyklu, při pohledu n stvový digrm utomtu vidíme, že tento cyklus jde přes jediný stv, to q 0, vhodné rozdělení může ýt npříkld w = () () ( 2 ), po pumpování prostřední části dostáváme slov () () k ( 2 ) = k+2, pro jkékoliv k 0 tto slov ptří do jzyk L. ohli ychom zvolit jiné dlouhé slovo, npříkld 8. Odpovídjící rozdělení y ylo () () ( 5 ). Vidíme, že prostřední část slov vlstně odpovídá části slov, která prochází cyklem (nejméně jednou). Pumpování s indexem k pk odpovídá knásonému průchodu cyklem v utomtu. Pltí Pumping lemm pro všechny regulární jzyky včetně konečných? Smozřejmě no. Pro kždý konečný jzyk existuje konečný utomt, který ho rozpoznává. Jko p si u konečného jzyk zvolíme opět uď počet stvů tohoto utomtu neo číslo ještě větší. V Pumping lemm se píše pro kždé slovo w dného jzyk delší než p..., le nepíše se tm, že tkové slovo oprvdu musí existovt. Oprvdu žádné tkové neexistuje, protože kdyy existovlo slovo delší než počet stvů utomtu, musel y ýt v grfu stvového digrmu cyklus, cyklus znmená nekonečný jzyk. Tkže Pumping lemm pltí i pro konečné jzyky. Úkol U následujících regulárních jzyků vytvořte stvový digrm, vyerte dosttečně dlouhé slovo delší než počet stvů utomtu, určete některé vhodné rozdělení slov n tři části podle podmínek Pumping lemmtu ukžte, že pro jkékoliv číslo k jde opět o slovo z dného jzyk. Prcujte s těmito jzyky: () L = { i : i 0 } () L = { () i : i 0 } (c) L c = { () i : i 1 } (d) L d = { 000(111) i : i 0 } (e) L c = {disk, dt, plt} (f) L d = N (množin přirozených čísel, zde včetně 0) Ovyklejším způsoem použití Pumping lemmtu je její orázená form: místo tvrzení Regulr(L) Vlstnost(L, p) dokzujeme Vlstnost(L, p) Regulr(L) tedy Pokud neexistuje žádné p tkové, že pro kždé slovo delší než p dokážeme njít dné rozdělení, pk jzyk není regulární. Aychom mohli dokázt, že prcujeme s oprvdu jkkoliv dlouhým slovem, použijeme v určení slov proměnnou v exponentu, kterou v přípdě potřey můžeme jkkoliv zvyšovt (do nekonečn), npříkld proměnnou i ve slově () i.

Kpitol 1 Regulární jzyky 16 Dále u zvoleného slov zkoušíme různé možnosti jeho rozdělení n tři části tk, y prostřední část neyl prázdné slovo. Nemusíme hledt solutně všechny možnosti (to ychom hledli do nekonečn), le je tře vystihnout různé možné způsoy umístění hrnic mezi potenciálními částmi. Pro kždé možné rozdělení pk njdeme lespoň jednu hodnotu k, pro kterou x y k z neptří do jzyk. Končíme tehdy, když se podří njít slovo tkové, že pro jkékoliv jeho rozdělení vždy njdeme lespoň jednu hodnotu k tkovou, že x y k z neptří do dného jzyk. Příkld Ukážeme, že jzyk L = { n 2n : n 0 } není regulární. Vyereme dosttečně dlouhé slovo jzyk. Protože nemáme zkonstruován konečný utomt pro tento jzyk (smozřejmě, vždyť ve skutečnosti neexistuje), musíme vyrt tkové slovo, o kterém si můžeme ýt jisti, že je oprvdu dlouhé. Npříkld w = i 2i pro nějké i, dosttečně velké. Použili jsme konstntu i, o které víme jen jedinou konkrétní věc je větší než 0 (protože musí ýt větší než nějké číslo p, které je větší než 0). Slovo máme, to dosttečně reprezenttivní, vlstně nám určuje všechn dlouhá slov dného jzyk. Zývá projít všechn možná rozdělení x y z tohoto slov dokázt, že pro některé k 0 slovo x y k z neptří do jzyk L. U jednotlivých možností udeme volit k = 0 neo k = 2. Hledáme tková rozdělení w = x y z, kde pltí: x > 0, x y p. Ve skutečnosti můžeme všechn tková rozdělení popst tkto: x y z Podmínky x y k z k = 0 r s i r s 2i s > 0 r+ks+i r s 2i i s 2i / L, protože s > 0 Ve schémtu r s i r s 2i máme zkódován všechn rozdělení odpovídjící podmínkám Pumping lemmtu, stčí z r, s doszovt vhodná mlá čísl. Pro kždé možné rozdělení (tedy vlstně jediné multirozdělení ) jsme nšli k tkové, že xy k z neptří do jzyk, proto L není regulární jzyk. Poznámk: Všimněte si, že ve schémtu se index i nevyskytuje v prvních dvou částech slov. Protože x y p víme, že 3i > p, můžeme ez újmy n oecnosti prohlásit, že ve skutečnosti jsme zvolili dokonce i > p, tedy y se nám do prvních dvou částí slov nevešlo. Tkže si tímto způsoem usndňujeme práci s hledáním vhodných rozdělení. Příkld Dokážeme, že jzyk L = { n : n je prvočíslo} není regulární. Kdyy tento jzyk yl regulární, pk y pro kždé dosttečně dlouhé slovo jzyk existovlo rozdělení s výše uvedenými vlstnostmi. Zvolme slovo w = i, kde i je některé dosttečně velké prvočíslo. Nyní určíme rozdělení pro w = x y z (v tomto přípdě není moc možností, jk volit). Zvolme tedy x = r, y = s, z = i r s, se zchováním podmínek lemmtu (to znmená, že s > 0, r + s p).

Kpitol 1 Regulární jzyky 17 Pro pumpování určíme index k = i + 1. To můžeme, protože v modifikci věty máme k 0, číslo i je z nšeho pohledu konstntní ( dosttečně velké, určitě větší než 0). Určíme tedy w k = r+k s+i r s = k s+i s, konkrétně w i+1 = (i+1) s+i s = is+i = i (s+1). Exponent lze rozložit n součin dvou čísel i, s+1, která jsou oě větší než 2, proto se nejedná o prvočíslo slovo w i+1 neptří do jzyk L. Z toho vyplývá, že L není regulární. Poznámk: Všimněte si, že jsme vlstně použili důkz sporem. Předpokládli jsme, že dný jzyk je regulární, le ke konci důkzu jsme tento předpokld popřeli. Příkld Dokážeme, že jzyk L = { } n2 : n 1 není regulární. Vezměme si dosttečně dlouhé slovo w = i2 (pro dosttečně velkou konstntu i). Toto slovo rozdělíme n tři části následovně: i2 = x1 x2 x 3, tedy pltí následující rovnice nerovnice: i 2 = x 1 + x 2 + x 3 x 2 > 0 x 1 + x 2 p Pumpování: w k = x1 k x2 x 3. Předpokládejme, že jzyk L je regulární. Pk y muselo pltit, že počet symolů ve slově w k je druhou mocninou některého přirozeného čísl, tedy x1 k x2 x 3 = m2 pro některé číslo m 1. Z toho vyplývá následující vzth: x 1 + k x 2 + x 3 = m 2. Uvědomte si, co je zde konstntou co je proměnnou: čísl i, x 1, x 2, x 3 jsou pro nás konstntmi, protože je npevno volíme (pro jedno dosttečně dlouhé slovo konkrétní rozdělení tohoto slov. Nproti tomu k je proměnná (protože u regulárního jzyk y vzth měl pltit pro všechn k 0), m je proměnná závislá n proměnné k (když roste hodnot k, roste i hodnot proměnné m). Vzth x 1 +k x 2 +x 3 = m 2 můžeme tedy přepst tkto: k x 2 +(x 1 +x 3 ) = m 2, přičemž n levé strně rovnice máme lineární funkci proměnné k, n prvé strně rovnice máme mocninnou funkci (závislé) proměnné m, přičemž se jedná o funkce n množině přirozených čísel (neo celých nezáporných čísel). Pokud y se oprvdu jednlo o regulární jzyk, pk y muselo ýt možné ke kždé hodnotě k njít odpovídjící hodnotu pro proměnnou m (tedy kždé slovo w k y mělo ptřit do jzyk L), le jk víme, lineární mocninná funkce n kldné poloose se kryjí v mximálně dvou odech spor. Proto jzyk L není regulární. Pumping lemm není ekvivlence, le pouze implikce. Proto mohou existovt jzyky, které sice nejsou regulární, le přesto dnou vlstnost splňují. ůže se jednt npříkld o jzyk vzniklý zřetěnením regulárního neregulárního jzyk. Příkld Jzyk L = { i j c 2j : i, j 0 } není regulární, přesto splňuje Pumping lemm. ůžeme zvolit npříkld slovo w = m pro některé dosttečně velké číslo m.

Kpitol 1 Regulární jzyky 18 Toto slovo lze rozdělit n tři části x y z = r s m r s při zchování podmínek s > 0, r + s p pumpovt n w k = r+k s+m r s = k s+m s, přičemž i po pumpování po doszení jkéhokoliv celého nezáporného čísl z k dostneme opět slovo ptřící do jzyk L. Tkže jzyk L splňuje podmínky Pumping lemmtu, třeže se nejedná o regulární jzyk. Poznámk: o z toho plyne? Když jzyk splňuje Pumping lemm, nemůžeme tvrdit, že je regulární. A nopk když se nepodří pomocí Pumping lemm dokázt, že jzyk není regulární, tk to ještě neznmená, že je regulární. Úkoly 1. Ukžte, že jzyk L = {() n : n 0} splňuje vlstnosti uvedené v Pumping lemmtu. 2. Pomocí Pumping lemmtu dokžte, že jzyk L = { n c n : n 1} není regulární. 3. Pomocí Pumping lemmtu dokžte, že jzyk L = { ww R : w {, } } není regulární. ůžete zvolit npříkld slovo v = i 2i i, které tké ptří do jzyk L, stčí dokázt, že pro toto slovo neexistuje vhodné rozdělení pro pumpování. 4. Pomocí Pumping lemmtu dokžte, že jzyk L = { 2n : n 0 } není regulární. 1.5 inimlizce konečného utomtu inimlizce konečného utomtu je snížení počtu stvů při rozpoznávání téhož jzyk, to n úroveň solutně nezytnou vzhledem k rozpoznávnému jzyku, přičemž výsledný utomt y měl ýt totální. Účelem může ýt smotné snížení počtu stvů (npříkld z důvodu sndnějšího nprogrmování či snížení složitosti utomtu) neo zjištění porovntelnosti dvou utomtů. Při minimlizci utomtu A postupujeme tkto: utomt A y měl ýt deterministický; pokud není, převedeme ho do deterministického tvru, odstrníme nedostupné stvy (tj. stvy, do kterých nevede cest z počátečního stvu) první část redukce stvů utomtu (druhou část nemusíme provádět, je víceméně součástí lgoritmu minimlizce), pokud utomt není totální, zúplníme ho (tj. přidáme odpdkový koš ), dále prcujeme se třídmi ekvivlence: vytvoříme pomocnou tulku, ve které udeme pro přehlednost oznčovt třídy římskými čísly, rozdělíme stvy do dvou skupin nekoncové (tříd I) koncové (tříd II), tkto oznčíme řádky pomocné tulky, sloupce udou oznčeny prvky množiny Σ jko v původní přechodové tulce, doplníme osh uněk tulky: uď I (pokud se z dného stvu řádek přechází n dný symol sloupec do stvu ze třídy I) neo II (pokud se z dného stvu n dný symol přechází do stvu ptřícího do třídy II),

Kpitol 1 Regulární jzyky 19 srovnáme řádky v rámci jednotlivých tříd: pokud řádky v rámci třídy mjí stejný osh, tuto třídu pro dný krok nedělíme, le pokud se řádky uvnitř třídy liší oshem uněk, rozdělíme třídu n podtřídy, osh uněk přizpůsoíme novému rozdělení, opkujeme předchozí od tk dlouho, dokud je co dělit. Příkld inimlizujeme následující konečný utomt: 1 2 3 4 1 2 2 3 4 3 4 3 4 Automt je deterministický, le není totální. Automt zúplníme: 1 2 X 2 3 4 3 X X 4 3 4 X X X Sestrojíme pomocnou tulku se třídmi: V přechodové tulce máme n řádku pro stv 1 v uňkách stvy 2 tříd X, přičemž o ptří do třídy I; proto do pomocné tulky dáme do oou I 1 I I uněk oznčení třídy I. 2 II I N řádku přechodové tulky pro stv 2 vidíme, že se přechází do stvů 4 II I 3 4, které ptří do tříd II I. Tedy do pomocné tulky dáme oznčení X I I tříd II I. II 3 I I Podoně pro dlší stvy podle přechodové tulky oshu tříd. Jk vidíme, z řádků v první třídě mjí stejný osh 1 X, pk řádky 2 4. Proto třídu I rozdělíme n dvě části (stvy 1 X necháme ve třídě I, stvy 2 4 přesuneme do nové třídy III). Protože se změnil příslušnost stvů ve třídách, musíme změnit i osh uněk, čímž vytvoříme novou verzi pomocné tulky: Postupujeme stejně jko u první verze pomocné tulky podle původní přechodové tulky momentálního oshu tříd. Ze stvu 1 přechá- tříd I 1 III I zíme do stvů 2 X, přičemž první z nich teď ptří do třídy III druhý X I I do třídy I, tedy v uňkách udou III I. III 2 II III Tkto zprcujeme celou tulku, včetně těch řádků, jejichž třídy jsme 4 II III v tomto kroku nedělili (tdy nám náhodou vychází n řádku oznčeném II 3 I I 3 tentýž osh, le mohlo y to vyjít jink). V dlším kroku postupujeme odoně. Ve třídě I máme dv řádky, kždý z nich má jiný osh uněk, tedy ji rozdělíme. Třídu III neudeme dělit, její řádky mjí stejný osh uněk. tříd Po rozdělení třídy I opět přepíšeme osh uněk tk, y odpovídl I 1 III IV momentálnímu rozdělení stvů do tříd. IV X IV IV Při pohledu n pomocnou tulku zjistíme, že máme čtyři třídy, přičemž III 2 II III ve třídě III jsou sice dv stvy, le osh uněk n jejich řádcích 4 II III je stejný, tedy je neudeme dělit. Osttní třídy jsou jednoprvkové. Z pomocné II 3 IV IV tulky je zřejmé, že stvy 2 4 jsou nvzájem zstupitelné.

Kpitol 1 Regulární jzyky 20 Algoritmus končí zývá sestvit výslednou přechodovou tulku. áme dvě možnosti: uď použijeme původní oznčení stvů stvy 2 4 sloučíme do jediného (pro který zvolíme npříkld oznčení 2), neo prostě jko oznčení stvů použijeme názvy tříd. Původní oznčení stvů: 1 2 X X X X 2 3 2 3 X X Oznčení stvů třídmi: I III IV IV IV IV III II III II IV IV Příkld inimlizujeme následující konečný utomt (počáteční stv je prvkem množiny koncových stvů): 1 4 2 5 3 1 2 4 2 2 3 3 3 2 4 1 5 5 3 2 Automt je deterministický úplný, tedy nemusíme provádět žádné předěžné úprvy. Vytvoříme sekvenci pomocných tulek, ve kterých udeme prcovt se třídmi: tříd tříd I 2 I II I 2 I IV 4 II II III 4 II IV II 1 I I II 1 I III 3 II I IV 3 IV I 5 II I 5 IV I V druhém kroku jsme rozdělili oě původní třídy, máme tedy celkem čtyři různé třídy. Dlší dělení už se provádět neude, protože pouze ve třídě IV máme víc než jeden stv, o stvy z této třídy mjí shodný osh uněk n řádku. Zývá vytvořit výsledný utomt: Původní oznčení stvů: 1 2 4 2 2 3 3 3 2 4 1 3 1 4 2 3 Oznčení stvů třídmi: II I III I I IV IV IV I III II IV

Kpitol 1 Regulární jzyky 21 Příkld inimlizujeme následující konečný utomt: 1 2 6 2 4 5 3 6 3 4 1 4 5 3 2 6 5 1 Automt je deterministický úplný, nemusíme provádět žádné předěžné úprvy. Vytvoříme sekvenci pomocných tulek, ve kterých udeme prcovt se třídmi: tříd tříd I 2 I I I 2 III I 3 II I 5 III I 4 II I III 3 II III 5 I I 4 II III II 1 I II II 1 I II 6 I II 6 I II áme tři třídy, v kždé dv stvy, le dál dělit nemůžeme, protože v rámci tříd je osh uněk n různých řádcích shodný. Výsledný utomt má tři stvy: Původní oznčení stvů: 1 2 1 2 3 2 3 1 3 Oznčení stvů třídmi: II I II I III I III II III Ztímco v předchozích příkldech se víceméně dlo předem odhdnout, které stvy udou nvzájem změnitelné, tdy už to tk zřejmé neylo. Podřilo se nám minimlizovt utomt n polovinu původního počtu stvů zůstl nám jen jeden koncový stv. Úkoly 1. inimlizujte následující konečný utomt (nezpomeňte ho předem uprvit není totální): 1 2 4 3 5 1 2 4 2 3 2 3 4 2 2 5 3 5

Kpitol 1 Regulární jzyky 22 2. Následující (nedeterministický) konečný utomt převeďte n deterministický (po převodu odstrnění nepotřených stvů y měl mít čtyři stvy), podle potřey převeďte n totální, minimlizujte ho. 1 3 2 1 1, 2 3 2 1 3 1 1.6 Vytvoření regulárního výrzu podle konečného utomtu Pokud máme zjistit jzyk rozpoznávný zdným konečným utomtem, ovykle vytváříme regulární výrz (který pk můžeme převést do množinové reprezentce). Postupujeme tkto: 1. Pokud je to nutné, přeznčíme stvy (tk, y yly oznčeny čísly od 1). 2. Jko ázi rekurze (indukce) použijeme přímé cesty mezi dvěm stvy, n kterých se nenchází žádný dlší stv (tj. přechody); znčíme je Rij 0 dokážeme je jednoduše zjistit přímo z utomtu (v jkékoliv reprezentci), npříkld:... i i, j p j p p j j, p... i, j p Rii 0 = + ε Rij 0 = Rip 0 = Rji 0 = Rjj 0 = ε Rjp 0 = Rpi 0 = Rpj 0 = + Rpp 0 = + ε 3. Indukcí udeme postupně cesty prodlužovt (spojovt). Vytváříme množiny Rij k je to regulární výrz odpovídjící cestě ze stvu i do stvu j vedoucí pouze přes stvy oznčené mximálně číslem k. Postupujeme podle vzorce: R k ij = R k 1 ij + ( R k 1 ik ) (R k 1 kk ) R k 1 kj Používáme výhrdně množiny zjištěné v předchozím kroku (k 1). 4. Postupujeme ž k množinám s horním indexem rovným počtu stvů (tj. v posledním kroku vytvoříme množiny pro cesty mezi stvy, které vedou přes jkékoliv stvy ez omezení). V posledním kroku není tře vyprcovt množiny pro všechny komince stvů (dolní index), le pouze pro cesty z počátečního stvu do koncových stvů. 5. Výsledný regulární výrz je součet (tedy sjednocení) regulárních výrzů odpovídjících cestám z počátečního stvu do jednotlivých koncových stvů.

Kpitol 1 Regulární jzyky 23 Příkld Zjistíme regulární výrz odpovídjící jzyku rozpoznávnému následujícím utomtem: 1 2 3 1 1 2 2 1 3 3 3 Nejdřív vytvoříme množiny R 0 ij regulární výrzy pro nejkrtší cesty ez mezistvů. R 0 11 = + ε R 0 12 = R 0 13 = R 0 21 = R 0 22 = ε R 0 23 = R 0 31 = R 0 32 = R 0 33 = + ε Horní index znmená mximální číslo stvu, přes který může vést cest mezi stvy uvedenými v dolním indexu (omezení z horního indexu se netýká okrjových stvů cesty). Npříkld R13 2 je regulární výrz odpovídjící cestě ze stvu 1 do stvu 3 tkové, že vede přes stvy s číslem mximálně 2, tedy přes stvy 1 2. Horní index udeme postupně zvyšovt. V prvním kroku se setkáme se vzthem ( + ε) = dále ( + ε) =. R 1 11 = ( + ε) + ( + ε) ( + ε) ( + ε) = = + ε + = R 1 12 = + ( + ε) ( + ε) = + = R 1 13 = + ( + ε) ( + ε) = R 1 21 = + ( + ε) ( + ε) = + = R22 1 = ε + ( + ε) = ε + R23 1 = + ( + ε) = R31 1 = + ( + ε) ( + ε) = R32 1 = + ( + ε) = R33 1 = ( + ε) + ( + ε) = + ε V druhém kroku udeme hodně používt vzth (ε + ) = ( ). R11 2 = + (ε + ) = + ( ) R12 2 = + (ε + ) (ε + ) = + ( ) = ( ) R13 2 = + (ε + ) = ( ) R21 2 = + (ε + ) (ε + ) = ( ) R22 2 = ε + + (ε + ) (ε + ) (ε + ) = ( ) R23 2 = + (ε + ) (ε + ) = ( ) R31 2 = + (ε + ) = R32 2 = + (ε + ) (ε + ) = R33 2 = + ε + (ε + ) = + ε Protože máme pouze tři stvy, třetí krok je poslední. Zde není tře vypočítávt výrzy přes všechny dvojice stvů. Potřeujeme pouze ty cesty, které vedou z počátečního stvu do některého koncového. V utomtu jsou dv koncové stvy, dostneme tedy dv regulární výrzy. R12 3 = ( ) + ( ) ( + ε) = ( ) R13 3 = ( ) + ( ) ( + ε) ( + ε) = ( ) + ( ) = = ( ) (ε + ) = ( )

Kpitol 1 Regulární jzyky 24 Výsledkem je regulární výrz odpovídjící jzyku rozpoznávnému dným utomtem: R = R12 3 + R13 3 = = ( ) + ( ) = ( ) (ε + ) = ( ) Příkld Zjistíme regulární výrz odpovídjící jzyku rozpoznávnému následujícím utomtem: 1 2 3 4 1 4 2 2 3 3 3 4 3 Nejdřív vytvoříme množiny R 0 ij : R11 0 = ε R12 0 = R13 0 = R14 0 = R21 0 = R22 0 = ε R23 0 = R24 0 = R31 0 = R32 0 = R33 0 = + ε R34 0 = R41 0 = R42 0 = R43 0 = R44 0 = ε Ve čtyřech krocích (číslo kroku je v horním indexu) zjistíme dlší množiny: R11 1 = ε + ε ε ε = ε R12 1 = + ε ε = R13 1 = + ε ε = R14 1 = + ε = R 1 21 = + ε = R 1 22 = ε + ε = ε + R 1 23 = + = R 1 24 = + ε = R31 1 = R32 1 = R33 1 = + ε + = + ε R34 1 = R41 1 = R42 1 = R43 1 = + = R44 1 = ε + = ε R11 2 = ε + () = () R12 2 = + () (ε + ) = () R13 2 = + () = () R14 2 = + () = + () = () R21 2 = + (ε + )() = () R22 2 = () R23 2 = + (ε + )() = () R24 2 = + (ε + )() = () R11 3 = () + = () R12 3 = () + = () R13 3 = () + () ( + ε) = () R14 3 = () + = () R31 2 = + = R32 2 = R33 2 = + ε + = + ε R34 2 = R41 2 = R42 2 = R43 2 = + = R44 2 = ε + = ε R21 3 = () + = () R22 3 = () + = () R23 3 = () + () ( + ε) = () R24 3 = () + = ()

Kpitol 1 Regulární jzyky 25 R31 3 = R32 3 = R33 3 = + ε + ( + ε) ( + ε) = R34 3 = R41 3 = R42 3 = R43 3 = + ( + ε) = R44 3 = ε Ve čtvrtém kroku nás zjímjí pouze cesty vedoucí z počátečního stvu do koncových stvů: R13 4 = () + () ε = () + () = () + () R14 4 = () + () ε ε = () Regulární výrz odpovídjící jzyku zdného utomtu je R = R13 4 + R14 4 = = () + () + () = () ( + + ) Úkol Zjistěte regulární výrz odpovídjící jzyku následujících konečných utomtů: 1 3 2 1 3 2 Poznámk: V předchozí sekci jsme pro minimlizci utomtu použili postup využívjící pozntky z lgery. Jinou možností y yl následující postup: vezmeme deterministický konečný utomt vytvoříme k němu lterntivní utomty tkové, že jejich definice ude nprosto stejná, ž n počáteční stvy: z počáteční stvy v těchto lterntivních utomtech udeme povžovt postupně všechny stvy utomtu (tedy získáme tolik lterntivních utomtů, kolik je stvů v množině Q), sestrojíme regulární výrzy odpovídjící jzykům postupně všech lterntivních utomtů, pokud regulární výrzy pro některé stvy (coy počáteční v lterntivním utomtu) udou ekvivlentní, pk je prohlásíme z změnitelné sloučíme. Určitě je všem jsné, že tento postup je výrzně náročnější než ten využívjící pozntky z lgery, což si ukážeme n příkldu. Příkld inimlizujeme následující konečný utomt je to tentýž jko v příkldu n strně 19.

Kpitol 1 Regulární jzyky 26 1 2 4 3 1 2 2 3 4 3 4 3 4 Potřeujeme zjistit regulární výrzy odpovídjící cestám z jednotlivých stvů do koncových stvů. áme čtyři stvy, dojdeme tedy ke čtyřem regulárním výrzům. R11 0 = ε R12 0 = R13 0 = R14 0 = R21 0 = R22 0 = ε R23 0 = R24 0 = R31 0 = R32 0 = R33 0 = ε R34 0 = R41 0 = R42 0 = R43 0 = R44 0 = + ε R11 1 = ε R12 1 = R13 1 = R14 1 = R21 1 = R22 1 = ε R23 1 = R24 1 = R31 1 = R32 1 = R33 1 = ε R34 1 = R41 1 = R42 1 = R43 1 = R44 1 = + ε R11 2 = ε R12 2 = R13 2 = R14 2 = R21 2 = R22 2 = ε R23 2 = R24 2 = R31 2 = R32 2 = R33 2 = ε R34 2 = R41 2 = R42 2 = R43 2 = R44 2 = + ε R11 3 = ε R12 3 = R13 3 = R14 3 = R21 3 = R22 3 = ε R23 3 = R24 3 = R31 3 = R32 3 = R33 3 = ε R34 3 = R41 3 = R42 3 = R43 3 = R44 3 = + ε Zjímjí nás pouze cesty vedoucí z jednotlivých stvů do koncových stvů (což je jen stv 3), proto zjistíme pouze tyto regulární výrzy: R13 4 = + = R23 4 = + = R33 4 = ε R43 4 = + ( + ε) = + = Při porovnání zjistíme, že výrzy R23 4 R4 43 se rovnjí, proto jeden z nich můžeme odstrnit. Je jedno, který zvolíme, jen nesmíme zpomenout všechny přechody vedoucí do rušeného stvu přesměrovt do ekvivlentního stvu. 1 2 3 1 2 1 2 3 2 3 2 4 3 Výhodou je, že utomt nemusí ýt totální, nevýhodou je složitá práce s regulárními výrzy, především jejich porovnávání není jednoduché.

Kpitol 2 Bezkontextové grmtiky 2.1 Úprvy ezkontextových grmtik 2.1.1 Převod n nezkrcující ezkontextovou grmtiku Nezkrcující ezkontextová grmtik uď vůec neoshuje ε-prvidl (pokud v jzyce generovném grmtikou není prázdné slovo), neo existuje jediné tkové prvidlo, to pro strtovcí symol grmtiky, pk le pk se strtovcí symol nesmí vyskytovt n prvé strně žádného prvidl (to znmená, že v kždé derivci se vyskytuje pouze n jejím zčátku, pk už ne). Při převodu n nezkrcující grmtiku odstrňujeme ε-prvidl tk, že simulujeme jejich použití. Kdyychom všk pouze simulovli použití ε-prvidel, mohli ychom se dostt do rekurze, které se všk chceme vyhnout. Je dán grmtik G = (N, T, P, S). Vytvoříme množinu N ε všech neterminálů, které lze (tře i po více než jednom kroku) přepst n prázdné slovo ε. Postup je iterční: množin N ε,0 (áze) ude oshovt právě ty neterminály, pro které existuje ε-prvidlo. V dlších krocích do této množiny přidáváme neterminály, které lze přepst n řetězec skládjící se pouze ze symolů, které yly do této množiny přidány v předchozích krocích, tj. N ε,i = N ε,i 1 {X N : X α, α N ε,i 1 }. Vytvořenou množinu N ε použijeme následovně: postupně zprcujeme všechn prvidl grmtiky kromě epsilonových, t odstrníme (ignorujeme), to dle následujících odů, n prvé strně prvidl hledáme všechny výskyty symolů ptřících do N ε, do výsledné množiny prvidel přidáme původní prvidlo pk všechny jeho vrinty, ve kterých je odstrněn jeden, dv, tři,... výskyty symolů z N ε (postupně všechny možné vrice). Tkto vytvořenou množinu prvidel oznčme P. Pokud v jzyce L(G) není slovo ε, jsme hotovi výsledná grmtik je G = (N, T, P, S). Pokud všk v L(G) je prázdné slovo, musíme ho zřdit i do jzyk uprvené grmtiky: přidáme nový neterminál S, S / N, který se stne novým strtovcím symolem, přidáme dvě nová prvidl S S ε. Výsledná grmtik pk je G = (N {S }, T, P {S S ε}, S ). 27