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

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

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

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

Naproti tomu gramatika je vlastně soupis pravidel, jak

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

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

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

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

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

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

Vlastnosti regulárních jazyků

Teoretická informatika - Úkol č.1

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

Minimalizace KA - Úvod

Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

Jednoznačné a nejednoznačné gramatiky

2 Formální jazyky a gramatiky

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

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

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

Syntaxí řízený překlad

ZÁKLADY TEORETICKÉ INFORMATIKY

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

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

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

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

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

Úvod do informatiky. Miroslav Kolařík

Teoretická informatika TIN 2013/2014

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

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Konečný automat Teorie programovacích jazyků

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

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

Teoretická informatika

Úvod do informatiky. Miroslav Kolařík

Matematická logika. Miroslav Kolařík

Hypergrafové removal lemma a Szemérediho

PŘEDNÁŠKA 7 Kongruence svazů

Vrcholová barevnost grafu

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Naproti tomu gramatika je vlastně soupis pravidel, jak

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

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

Množiny, relace, zobrazení

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

Kongruence na množině celých čísel

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

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

Univerzální Turingův stroj a Nedeterministický Turingův stroj

Automaty a gramatiky

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

YZTI - poznámky ke složitosti

Modely Herbrandovské interpretace

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 3. PREDNÁŠKA - KOMPAKTNÍ PROSTORY.

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

Lineární algebra : Lineární prostor

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

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

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

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

8 Přednáška z

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

H {{u, v} : u,v U u v }

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

4 Pojem grafu, ve zkratce

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

9 Kolmost vektorových podprostorů

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

2. přednáška 8. října 2007

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

LIMITA A SPOJITOST FUNKCE

Důkaz Heineho Borelovy věty. Bez újmy na obecnosti vezmeme celý prostor A = M (proč? úloha 1). Implikace. Nechť je (M, d) kompaktní a nechť.

9. T r a n s f o r m a c e n á h o d n é v e l i č i n y

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

Riemannův určitý integrál

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

Dijkstrův algoritmus

1 Kardinální čísla. množin. Tvrzení: Necht X Cn. Pak: 1. X Cn a je to nejmenší prvek třídy X v uspořádání (Cn, ),

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

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Limita a spojitost funkce

Teoretická informatika

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

Matematická analýza 1

Základy matematické analýzy

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Základy logiky a teorie množin

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

Operace s maticemi. 19. února 2018

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

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

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Matematická logika. Miroslav Kolařík

Transkript:

Základy teoretické informatiky Formální jazyky a automaty Petr Osička KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI

Outline Literatura Obsah J.E. Hopcroft, R. Motwani, J.D. Ullman Introduction to Automata Theory, Languages, and Computation, 2nd ed. Addison-Wesley, 2 P. Martinek Základy teoretické informatiky. Elektronická skripta M. Sipser Introduction to the Theory of Computation PWS Publishing Company, 997 Formální jazyky a automaty (3 přednášky) 2 Vyčíslitelnost a složitost (2 přednášky) Osička (Univerzita Palackého v Olomouci) YZTI LS 25 / 43

Gramatiky Definice Abeceda je konečná neprázdná množina. Její prvky označujeme jako symboly. Řetěz (slovo) nad abecedou je posloupnost symbolů z této abecedy. Počet symbolů v řetezu označujeme jako délku řetezu, značíme pomocí. Souvislou podposloupnost řetězu označujeme jako podřetěz. Řetěz s délkou (neobsahuje žádné symboly) je prázdný řetěz značený ϵ. Spojením řetězů x = x x 2... x n a y = y y 2... y m je řetez xy = x x 2... x n y y 2... y m. Jazyk nad abecedou je množina řetězů nad touto abecedou. Jazyk všech řetezů nad abecedou Σ značíme Σ Příklad Abeceda Σ = {a, b, c, d}. Řetěz x = abbbcd. Pak x = 6, dcaa není podřetězem x, bc je podřetězem x. Spojením ababa a cdcdd je ababacdcdd. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 2 / 43

Gramatika množina pravidel pro odvozování řetězů Definice Gramatika je čtveřice (N, Σ, P, S), kde N je abeceda neterminálních symbolů (proměnných). Σ je abeceda terminálních symbolů. Platí, že N Σ =. P je množina odvozovacích pravidel. Odvozovací pravidlo je uspořádaná dvojice řetězců (α, β) nad abecedou Σ N, přičemž α obsahuje alespoň jeden neterminální symbol. Pro přehlednost pravidla značíme α β. P musí obsahovat alespoň jedno pravidlo, kde α = S. S je neterminální symbol, který označujeme jako startovací. Definice Nechť x, y jsou řetezy nad abecedou N Σ. Řekneme, že y přímo odvodíme (přímo derivujeme) z x, značeno x y, když existuje pravidlo α β P takové, že α je podřetězem x y dostaneme tak, že právě jeden podřetěz α v x nahradíme řetězem β. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 3 / 43

Definice (pokračování) Řetěz y odvodíme (derivujeme) z x, značeno x + y, když existuje posloupnost řetězů z, z 2,..., z n taková, že z = x, z n = y, z i z i+ pro všechna přípustná i. x y právě když x + y nebo x = y. Definice Jazykem generovaným gramatikou G = (N, Σ, P, S) je množina L(G) = {w Σ S w} Osička (Univerzita Palackého v Olomouci) YZTI LS 25 4 / 43

Příklad (Gramatiky a odvozování) Σ = {+,, a, b, (, )}, N = {S, I}, Pravidla: S I S + S S S (S) I ai bi a b Odvození: S S S S (S) S (S + S) I (S + S) a (S + S) a (I + S) a (ai + S) a (ab + S) a (ab + I) a (ab + b) počáteční symbol S S S S (S) S S + S S I I a S I I ai I b S I I b Poznámka Zápis více pravidel se stejnou levou stranou zkracujeme tak, že je napíšeme na pravou stranu prvního z pravidel oddělené znakem ' ' (přitom ovšem ' ' nesmí patřit do žádné z abeced). Neterminály se většinou značí velkými písmeny (nebo speciálními řetězci), terminály malými písmeny, příp. spec znaky. Počáteční symbol je znak S. Gramatiky pak lze specifikovat pouze pravidly (abecedy jsou pak tvořeny příslušnými znaky v pravidlech) Osička (Univerzita Palackého v Olomouci) YZTI LS 25 5 / 43

Chomského hierarchie gramatik Typ gramatiky podle obecné definice Kontextově závislá gramatika (typ ) pravidla ve tvaru γ Aγ 2 γ βγ 2, kde γ, γ 2, β jsou řetězy nad Σ N, β ϵ a A N. Bezkontextová gramatika (typ 2) pravidla ve tvaru A β, kde β je řetěz nad Σ N, β ϵ, A N. Regulární gramatika (typ 3) pravidla ve tvaru A β, kde A N, β je buď terminální symbol nebo řetěz ab, kde a je terminál a B je neterminál. U gramatik typů až 3 připoušíme pravidlo S ϵ, pokud se S nevyskytuje na pravé straně žádného pravidla. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 6 / 43

Jazyky generované gramatikami přebírají názvy těchto gramatik, hovoříte tedy o kontextově závislých, bezkontextových a regulárních jazycích (jazycích typu,,2,3). Věta Pro i =, 2, 3 platí Každá gramatika typu i je i gramatikou typu i. 2 Každý jazyk typu i je i jazykem typu i. Věta Pro i =,, 2 existuje jazyk typu i, který není jazykem typu i +. Poznámka U bezkontextových jazyků můžeme připustit i pravidla typu N ϵ pro obecný neterminál N. V tom případě by první věta na tomto slajdu neplatila. Nicméně druhá věta by pořád platila. Gramatiku, které obsahuje pravidla typu N ϵ lze převést na bezkontextovou gramatiku podle původní definice. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 7 / 43

Příklad (Typy gramatik) Kontextově závislá gramatika S abc asbc CB WB, WB WC, WC BC, bb bb cc cc bc bc Př: S asbc aabcbc aabbcc aabbcc aabbcc aabbcc Bezkontextová gramatika S I S + S S S (S) I ai ai a b Regulární gramatika S P 2P 3P... 9P P... 9 P... 9P, R R... 9 R... 9R Př.: S P 2P 2, R 2, 3R 2, 32 Osička (Univerzita Palackého v Olomouci) YZTI LS 25 8 / 43

Konečné automaty Definice (Deterministický) konečný automat (DKA) je pětice (Q, Σ, δ, q, F), kde Q je konečná množina stavů Σ je vstupní abeceda δ je přechodová funkce s definičním oborem Q Σ a oborem hodnot Q q Q je počáteční stav F Q je množina koncových stavů. Stavový diagram = grafické znázornění konečného automatu pomocí orientovaného grafu pro každý stav z množiny Q jeden uzel, koncové stavy označíme dvojitou čarou (případně jinak, např. barvou), počáteční uzel označíme pomocí slova start a šipky. pokud δ(q, a) = q 2 přidáme orientovanou hranu ze stavu q do stavu q 2, kterou popíšeme pomocí a. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 9 / 43

Příklad (Konečný automat) q start q q 2, Vidíme, že Q = {q, q, q 2 }, Σ = {, }, F = {q 2 }, počáteční stav je q a δ je dána δ q q q q q q 2 q 2 q 2 q 2 Dohoda o mrtvém stavu: Funkce δ je úplná. Při popisu větších automatů občas můžeme specifikovat δ jako neúplnou. Předpokládáme existenci speciálního stavu (mrtvý stav), který je výsledkem aplikace δ na argumenty, pro které není výsledek specifikován. Mrtvý stav není koncový. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 / 43

Výpočet konečného automatu inicializace: na vstupu máme řetěz w, automat je v počátečním stavu q obecný krok: q je aktuální stav, a je první znak řetezu na vstupu. Automat přejde do stavu δ(q, a) a odebere a z řetezce konec: výpočet končí v momentě, kdy je řetez na vstupu prázdný. Pokud je aktuální stav koncový, automat přijímá. Definice Rozšířená přechodová funkce je funkce ^δ : Q Σ Q definovaná ^δ(q, ϵ) = q pro řetěz w = xa, kde a Σ a x Σ máme ^δ(q, w) = δ(^δ(q, x), a) Jazyk přijímaný konečným automatem A = (Q, Σ, δ, q, F) je L(A) = {w Σ ^δ(q, w) F} Osička (Univerzita Palackého v Olomouci) YZTI LS 25 / 43

Příklad (Výpočet deterministického automatu) Konfigurace je dvojice q, w, kde q je aktuální stav a w je nepřečtený řetez. Automat při výpočtu přejde (v několika krocích) z q, w do q i, ϵ. Pokud je q i koncový, automat přijímá. q start q q 2, Pro vstupní řetěz projde automat konfiguracemi q, q, q, q, q 2, q 2, q 2, ϵ a přijímá. Vídíme například, že ^δ(q, ) = q, ^δ(q, ) = q 2. Automat přijímá všech řetězy, které obsahují jako podřetěz. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 2 / 43

Definition Nedeterministický konečný automat (NKA) je pětice (Q, Σ, δ, q, F), kde Q je konečná množina stavů Σ je vstupní abeceda δ je přechodová funkce s definičním oborem Q Σ a oborem hodnot 2 Q q Q je počáteční stav F Q je množina koncových stavů. Definice Rozšířená přechodová funkce je funkce ^δ : Q Σ 2 Q definovaná ^δ(q, ϵ) = {q} pro řetěz w = xa, kde a Σ a x Σ máme ^δ(q, w) = q ^δ(q,x) δ(q, a) Jazyk přijímaný nedeterministickým konečným automatem A = (Q, Σ, δ, q, F) je L(A) = {w Σ ^δ(q, w) F } Osička (Univerzita Palackého v Olomouci) YZTI LS 25 3 / 43

Příklad (Nedeterministický automat), q start q q 2 Vidíme, že Q = {q, q, q 2 }, Σ = {, }, F = {q 2 }, počáteční stav je q a δ je dána δ q {q, q } {q } q {q 2 } q 2 Např. ^δ(q, ) = {q, q }, ^δ(q, ) = {q, q }, ^δ(q, ) = {q, q 2 }. Konfigurace ted netvoří seznam, ale strom. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 4 / 43

Příklad (Nedeterministický automat), q start q q 2 První dvě urovně stromu konfigurací (hrany označeny čtenými symboly) q q q q q q q q 2 q q q Osička (Univerzita Palackého v Olomouci) YZTI LS 25 5 / 43

Věta Ke každému DKA A existuje NKA B tak, že L(A) = L(B). 2 Ke každému NKA B existuje DKA A tak, že L(A) = L(B). Důkaz. K DKA A = (Q, Σ, δ A, q, F) sestavíme NKA B = (Q, Σ, δ B, q, F) tak, že vezmeme δ B (q, a) = {q } právě když δ A (q, a) = q. Pak platí, že ^δ B (q, w) = {^δ A (q, w)}, a tedy L(A) = L(B). 2 K NKA B = (Q B, Σ, δ B, q, F B ) sestavíme DKA A = (Q A, Σ, δ A, {q }, F A ) tak, že vezmeme Q A = 2 Q B S Q B, S F B právě když S F B pro S Q B a a Σ definujeme δ A (S, a) = q S δ B(q, a). Z Q A lze vynechat izolované stavy, tj. stavy, do kterých se A nikdy nemůže dostat. Nyní ukážeme, že ^δ A ({q }, w) = ^δ B (q, w) pro každý řetez w nad Σ. Odtud pak plyne, že L(A) = L(B). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 6 / 43

pokračování. Důkaz provedeme indukcí přes délku řetezu w. Pro w = ϵ plyne tvrzení přímo z definic. Máme totiž ^δ A ({q }, ϵ) = ^δ B (q, ϵ) = {q }. Nechť w = xa, kde a Σ a x je řetěz nad Σ. Předpokládejme, že platí ^δ A ({q }, x) = ^δ B (q, x) = K. Potom z definice rozšířené přechodové funkce a z konstrukce δ A plyne ^δ A ({q }, w) = δ A (^δ A ({q }, x), a) = q K δ B (q, a), ^δ B (q, w) = q ^δ B (q,x) δ B (q, a) = q K δ B (q, a). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 7 / 43

Příklad (Převod NKA na DKA), q start q q 2 {q, q } start {q } {q, q 2 } Osička (Univerzita Palackého v Olomouci) YZTI LS 25 8 / 43

Věta Ke každé regulární gramatice G existuje NKA A takový, že L(G) = L(A). Důkaz. Ke gramatice G = (N, Σ, P, S) sestavíme NKA A = (Q, Σ, δ, q, F), kde Q = N {M}, kde M je nově dodaný symbol q = S { {M, S} pokud S ϵ P F = {M} jinak δ(b, a) = {C B ac P} {M B a P} Pokud gramatika obsahuje pravidlo S ϵ, pak q je koncový stav a tedy A přijímá ϵ. Nechť w = a a 2... a k. Potom S w právě když existují pravidla S a B, B a 2 B 2,, B k a k. Tato pravidla existují právě když B δ(q, a ), B 2 δ(b, a),, M δ(b k, a k ). A tedy M ^δ(q, w). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 9 / 43

Věta Ke každému NKA A existuje regulární gramatika G taková, že L(M) = L(G). Důkaz. K NKA A = (Q, Σ, δ, q, F) sestavíme gramatiku G = (N, Σ, P, S), kde N = Q S = q P = {B ac C δ(b, a)} {B a δ(b, a) F } {S ϵ pokud S F} Důkaz ekvivalence jazyků je analogický druhé části důkazu předchozí věty (ekvivalence uvažujeme v opačném směru). Gramatika G nemusí být nutně regulární. Může se stát, že obsahuje pravidlo S ϵ a S se vyskytuje na pravé straně nějakého pravidla. G lze ovšem převést na regulární gramatiku následovně: Přidáme nový počáteční neterminál S. Pro každé pravidlo S α přidáme pravidlo S α. Odstraníme pravidlo S ϵ. Ke každému pravidlu B as přidáme pravidlo B a. Důkaz toho, že nová gramatika generuje ekvivalentní jazyk s G je ponechán jako cvičení. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 2 / 43

Příklad (Převod gramatiky na automat) Gramatika: S P 2P 3P... 9P P... 9 P... 9P, R R... 9 R... 9R Automat:,..., 9,..., 9, start S P R,..., 9,..., 9,..., 9 M Osička (Univerzita Palackého v Olomouci) YZTI LS 25 2 / 43

Příklad (Převod automatu na gramatiku) Automat q start q q 2 Gramatika: q q q q Osička (Univerzita Palackého v Olomouci) YZTI LS 25 22 / 43

Definice Automat s ϵ přechody (ϵ-nka) je nedeterministický konečný automat s přechodovou funkcí rozšířenou o ϵ přechody, tj δ : Q (Σ {ϵ}) 2 Q. Přechod δ(q, ϵ) = {q, q 2,... } značí, že automat může přejít ze stavu q do některého ze stavů q, q 2,... a nepřečíst přitom znak ze vstupu. Definice ϵ-uzávěr stavu q, ozn Enclose(q) je definován: q Enclose(q), pokud je p Enclose(q), pak Enclose(q) obsahuje všechny stavy z množiny δ(p, ϵ). Definice Rozšířená přechodová funkce ϵ-nka je dána: ^δ(q, ϵ) = Enclose(q) Pro w = xa, kde a je symbol a x je řetěz: Vezmeme množinu K = p ^δ(q,x) δ(p, a) a uzavřeme ji. Tedy ^δ(q, w) = p K Enclose(p). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 23 / 43

Příklad (Automat s ϵ přechody),..., 9,..., 9 ϵ, +, start q q, q,..., 9 2 q ϵ 3 q 5,..., 9, q 4 Automat přijímá desetinná čísla, s volitelným znaménkem. Buď před desetinnou čárkou nebo za desetinnou čárkou musí být neprázdný řetěz číslic. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 24 / 43

Věta Ke každému DKA A existuje ϵ-nka B tak, že L(A) = L(B). 2 Ke každému ϵ-nka B existuje DKA A tak, že L(A) = L(B). Důkaz. Upravíme konstrukci NKA B z předchozího důkazu (věta o stejné výpočetní síle DKA a NKA) tak, že přechodovou funkci rozšíříme o δ B (q, ϵ) = pro každý stav q. Pro každý stav q pak platí, že Enclose(q) = {q} a z definice rozšířené přechodové funkce automatu B pak plyne, že L(A) = L(B). 2 K NKA B = (Q, Σ, δ B, q, F) sestavíme DKA A = (Q A, Σ, δ A, q A, F A ) tak, že vezmeme Q A = 2 Q B q A = Enclose(q ) pro S Q B platí: S F B právě když S F B pro S Q B a a Σ sestavíme množinu K = q S δ B(q, a) a poté vezmeme ^δ A (S, a) = q K Enclose(q). Z Q A lze vynechat izolované stavy, tj. stavy, do kterých se A nikdy nemůže dostat. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 25 / 43

pokračování. Indukcí přes délku řetezu w dokážeme, že ^δ B (q, w) = ^δ A (q A, w). Pokud w = ϵ, pak ^δ B (q ) = Enclose(q ) a ^δ A (q A, ϵ) = q A = Enclose(q ). Nechť w = xa pro řetěz x a symbol a. Předp. že ^δ B (q, x) = ^δ A (q A, x) = K. Pak si všimneme, že přechodová funkce automatu A, je zkonstruována stejně, jako rozšířená přechodová funkce automatu B, tedy že ^δ A (q A, w) = δ A (K, a) = q K Enclose(q) = q ^δ B (q,x) Enclose(q) = ^δ B (q, w). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 26 / 43

Příklad (Převod ϵ-nka na DKA) Automat, který obdržíme převodem automatu z předchozího příkladu. Vynechán mrtvý stav.,..., 9,..., 9,..., 9 +,,..., 9, start {q, q } {q } {q, q 4 } {q 2, q 3, q 5 },,,..., 9 {q 2 } {q 3, q 5 },..., 9 Osička (Univerzita Palackého v Olomouci) YZTI LS 25 27 / 43

Uzávěrové vlastnosti regulárních jazyků Regulární jazyky jsou uzavřeny na operaci, pokud aplikací operace na regulární jazyky dostaneme opět regulární jazyk. Definice Zřetezením jazyků L a M je jazyk LM = {xy x L, y M}. Pro i =, 2, 3... definujeme jazyk L i následovně: L = L L i = L i L Pozitivním uzávěrem jazyka L je jazyk L + = j= L j. Uzávěrem jazyka L je jazyk L = L + {ϵ} Osička (Univerzita Palackého v Olomouci) YZTI LS 25 28 / 43

Věta Regulární jazyky jsou uzavřeny na následující operace: sjednocení 2 doplněk 3 průnik 4 rozdíl 5 zřetězení 6 pozitivní uzávěr, uzávěr Důkaz. Uvedeme jenom kostry důkazů. Uvažme jazyk L přijímaný DKA A L a jazyk M přijímaný DKA A M. Pak ϵ-nka, který získáme vytvořením nového počátečního stavu, a přidáním ϵ přechodů z tohoto nového stavu do počátečních stavů automatů A L a A M, přijímá L M. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 29 / 43

pokračování. 2 Automat, který přijímá doplněk jazyka L (doplněk L značíme L) získáme tak, že v automatu A L = (Q, Σ, δ, q, F), který přijímá L, nastavíme množinu koncových stavů na Q F. 3 Plyne z předhozího, protože L M = L M. 4 Plyne z předchozího, protože L M = L M. 5 Uvažme jazyk L přijímaný DKA A L a jazyk M přijímaný DKA A M. ϵ-nka, který obdržíme přidáním ϵ přechodů z koncových stavů A L do počátečního stavu automatu A M, přijímá jazyk LM, pokud jako jeho koncové stavy ponecháme pouze koncové stavy automatu A M. 6 Uvažme jazyk L přijímaný NKA A L. Pak ϵ-nka, který získáme přidáním nového počátečního stavu q, přidáním nového koncového stavu q f, přidáním ϵ přechodů ze všech koncových stavů automatu A L do počátečního stavu automatu A L, ϵ přechodu ze stavu q do počátečního stavu automatu A L, ϵ přechodu ze všech koncových stavů A L do q f, a ϵ přechodu z q do q f, přijímá jazyk L (jediný koncový stav je nyní q f ). Pokud při konstrukci vynecháme přechod z q do q f, přijímá automat L +. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 3 / 43

Regulární výrazy Definition Nechť Σ je abeceda neobsahující symboly ϵ,, +,,, (, ). Regulární výraz na abecedou Σ je definován induktivně jako:, ϵ, a pro a Σ jsou regulární výrazy, pokud jsou R a R 2 regulární výrazy, pak i (R + R 2 ), (R R 2 ), (R ) jsou regulární výrazy. Definice Regulární výraz R nad abecedou Σ indukuje jazyk L(R) nad touto abecedou, který je definován: pokud R =, pak L(R) =. Pokud R = ϵ, pak L(R) = {ϵ}. Pokud R = a, kde a Σ, pak L(R) = {a}. Nechť R a R 2 jsou regulární výrazy. Potom L((R + R 2 )) = L(R ) L(R 2 ), L((R R 2 )) = L(R )L(R 2 ), L((R ) ) = L(R ). Osička (Univerzita Palackého v Olomouci) YZTI LS 25 3 / 43

Věta Jazyk generovaný regulárním výrazem je regulární. 2 Ke každému regulárnímu jazyku existuje regulární výraz, který ho indukuje. Důkaz., {ϵ}, {a} pro a Σ jsou regulární jazyky. Zbytek tvrzení plyne z toho, že regulární jazyky jsou uzavřeny na sjednocení, průnik a uzávěr. 2 Vynechán. Volitelná četba převod regulárního výrazu na automat převod automatu na regulární výraz Osička (Univerzita Palackého v Olomouci) YZTI LS 25 32 / 43

Příklad (Regulární výrazy a jejich jazyky) Abychom mohli vynechat některé závorky, určíme prioritu symbolů, má přednost před, které má přednost před +. Symbol se někdy vynechává. Σ = {a, b} R = a, L(R) = {a} R = ab, L(R) = {ab} R = a(a + b), L(R) = {aa, ab} R = a (a + b), L(R) = {a, b, aa, ab, aaa, aab,... } R = (a + b) a(a + b), L(R) = {w Σ w obsahuje symbol a} R = ϵ + a + b, L(R) = {ϵ, a} {b n n N} Osička (Univerzita Palackého v Olomouci) YZTI LS 25 33 / 43

Minimalizace DKA Definice Řekneme, že stavy q a p v DKA jsou ekvivalentní když platí: Pro všechny řetězy w platí, že ^δ(p, w) je koncový stav, právě když ^δ(q, w) je koncový stav. Stavy, které nejsou ekvivalentní, označujeme jako rozlišitelné. DKA A a DKA B jsou ekvivalentní, právě když přijímají stejný jazyk. Věta DKA A a DKA B jsou ekvivalentní právě když jejich počáteční stavy jsou ekvivalentní. Poznámka Pokud A a B pracují nad stejnou abecedou, lze mluvit o ekvivalenci stavu z automatu A se stavem z automatu B (je nutné použít přechodovou funkci ze správného automatu!) Osička (Univerzita Palackého v Olomouci) YZTI LS 25 34 / 43

Minimalizace DKA Věta Relace mezi stavy R = { p, q p a q jsou ekvivalentní} je ekvivalence. Důkaz. Reflexivita a symetrie plynou přímo z definice. Ověříme tranzitivitu. Sporem. Předpokládejme, že p, q R a q, r R a současně p, r / R. Potom existuje řetěz w takový, že právě jeden ze stavů ^δ(p, w) a ^δ(r, w) je koncový. Pokud je ^δ(q, w) koncový, pak z p, q R plyne, že že ^δ(p, w) je koncový a ^δ(r, w) není koncový. Tedy q, r / R, což je spor. Pokud ^δ(q, w) není koncový, pak z q, r R plyne, že ^δ(r, w) není koncový a tedy ^δ(p, w) je koncový. Pak ale p, q / R, což je spor. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 35 / 43

Algoritmus pro nalezení dvojic rozlišitelných stavů (table-filling algoritmus): Vstupem algoritmu je DKA A, výstupem je seznam všech dvojic rozlišitelných stavů v A. všechny dvojice stavů označíme jako nerozlišitelné 2 Pokud q je koncový stav a p není koncový stav, je dvojice p, q rozlišitelná. 3 Nechť p a q jsou stavy, pro které existuje symbol a takový, že δ(p, a) = s a δ(q, a) = r, a s, r jsou již označeny za rozlišitelné. Pak jsou p a q rozlišitelné. 4 Opakujeme předchozí bod, dokud lze najít rozlišitelný pár stavů. Poznámka krok 3 algoritmu lze provádět po kolech. V každém kole hledáme dvojice stavů p, q takové, že existuje symbol a takový, že stavy δ(p, a) a δ(q, a) byly označeny jako rozlišitelné v minulém kole. Prvním kolem je krok 2. algoritmus tedy vlastně hledá pro každou dvojici p, q řetěz w, který je rozlišuje (tedy právě jeden ze stavů ^δ(p, w) a ^δ(q, w) je koncový). V kroku 2 je w = ϵ, v každém kole se pak w prodlužuje o jeden symbol (připojený na začátek!) Osička (Univerzita Palackého v Olomouci) YZTI LS 25 36 / 43

Příklad start A B C D E F G H A B C D E F G B C D E F G H Pomocí označíme dvojice stavů, z nichž jeden je koncový (tedy C) a druhý není 2 Pomoci označíme dvojice stavů p, q takové, že právě jeden ze stavů δ(p, ), δ(q, ) nebo právě jeden ze stavů δ(p, ), δ(q, ) je C. Protože C je rozlišitelný od každého stavu, jsou i p, q rozlišitelné. 3 Pomocí označíme dvojice stavů p, q takové, že alespoň jedna z dvojic stavů δ(p, ), δ(q, ) a δ(p, ), δ(q, ) byla v minulém kole označena pomocí. Protože tato dvojice je rozlišitelná, jsou rozlišitelné i p, q. V dalším kole již nerozlišitelné stavy nenajdeme. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 37 / 43

Věta Pokud table-filling algoritmus neoznačí dvojici stavů jako rozlišitelnou, pak jsou tyto stavy ekvivalentní. Důkaz. Sporem. Předpokládejme, že tvrzeni neplati, tj. existuje dvojice rozlišitelných stavů (p, q), které algoritmus jako rozlišitelné neoznačil (dvojici říkáme bad pair). Jistě existuje řetěz w = a a 2... a n takový, že právě jeden ze stavů ^δ(p, w) a ^δ(q, w) je koncový. Předpokládejme, že (p, q) je bad pair s nejkratším takovým w (mezi všemi bad pairy). Stavy r = δ(p, a ) a s = δ(q, a ) jsou rozlišitelné řetezem a 2 a 3... a n. Tento řetěz je ale kratší než w a tedy (r, s) není bad pair (algoritmus je správně označil jako rozlišitelné). Z indukčního kroku algoritmu pak ale plyne, že p, q označí jako rozlišitelné. To je spor s předpokladem. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 38 / 43

Minimalizace DKA = nalezení ekvivalentního DKA s minimálním počtem stavů. Algoritmus pro minimalizaci DKA A (výsledkem je DKA B) Z automatu A odstraníme nedosažitelné stavy (např. průchodem do šírky, pokud si automat představíme jako orientovaný graf). 2 Pomocí table-filling algoritmu nalezneme relaci ekvivalence na množině stavů automatu A. 3 Nalezneme rozklad množiny stavů automatu A na třídy. Tento rozklad je množinou stavů automatu B. 4 Nechť T, S jsou třídy rozkladu. Potom přechodovou funkci automatu B nastavíme na δ B (T, a) = S, právě když pro každý stav q T platí, že δ A (q, a) S. 5 Počátečním stavem automatu B je třída rozkladu, která obsahuje počáteční stav automatu A. 6 Množina koncových stavů automatu B je tvořena třídami rozkladu, které obsahují jenom koncové stavy automatu A. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 39 / 43

Věta Uvažme DKA A a DKA M, který je ekvivalentní s A a má minimální počet stavů. Pak automat B, který obdržíme z automatu A algoritmem z předchozího slajdu má stejný počet stavů jako M. Důkaz. Všimněme si, že A,B,M přijímají stejný jazyk. B a M navíc neobsahují nedosažitelné stavy. Předpokládejme, že množiny stavů automatů M a B jsou disjuktní. Spustíme algoritmus table-filling na oba automaty M a B současně (a tedy zjištujeme i ekvivalenci stavů z různých automatů). Počáteční stavy obou automatů jsou ekvivalentní (protože přijímají stejný jazyk). Každý ze stavů automatu B je ekvivalentní alespoň jednomu stavu automatu M. Protože pro řetěz w, stav q, do kterého se B dostane po přečtení w, a stav p, do kterého se M dostane po přečtení w platí, že p a q jsou ekvivalentní (jinak by počáteční stavy B a M byly rozlišitelné pomocí w). Uvažme stav q automatu M a množinu K alespoň dvou stavů automatu B takovou, že všechny její prvky jsou ekvivalentní s q. Pak jsou ale i prvky K vzájemně ekvivalentní. Ovšem B nemůže obsahovat nerozlišitelné stavy a tedy ke každému stavu automatu B existuje právě jeden ekvivalentní stav automatu N. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 4 / 43

Příklad start A B C D E F G H start {A, E} {B, H} {C} {F} {G} Jediný nedosažitelný stav je D. Pomocí ekvivalence získané table-filling algoritmem získáme rozklad {{A, E}, {B, H}, {C}, {F}, {G}}. Přechody doplníme podle definice. Počáteční stav je {A, E}, koncový stav je {C}. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 4 / 43

Pumping lemma Lemma (pumping lemma pro regulární jazyky) Pro každý regulární jazyk L existuje konstanta n tak, že pro každý řetez w L od délce alespoň n lze rozdělit na tři podřetězy w = xyz tak, že y ϵ xy n pro každé k patří xy k z do L Důkaz. Jazyk L je přijímán DKA A, za číslo n vezmeme počet jeho stavů. Uvažme řetěz w = a a 2... a s z L délky alepoň n. Pro i =,,..., n definujume stavy p i = ^δ(q, a... a i ), p = q. Při přijetí w projde A všemi s n + stavy p i, ale A má jenom n stavů, tudíž musí jeden stav navštívit vícekrát. Tzn. existují čísla l < m n taková, že p l = p m (m n protože první stav, který se zopakuje je nejhůře p n, v tomto případě pokrývají p,..., p n všech n stavů automatu). Nyní můžeme w rozdělit na x = a... a l, y = a l+..., a m a z = a m+... a s. První podmínka je zjevně splněna. Druhá podmínka je také splněna, protože stav m n. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 42 / 43

pokračování. Po zpracování x se A dostane do stavu p l, poté k krát zpracuje y (po každém zpracování se dostane opět od p l ). Poté zpracuje z a dostane se z p l do koncového stavu. O jazyce můžeme dokázat, že není regulární, tak, že ukážeme, že pro něj neplatí pumping lemma. Příklad Tvrzení: Jazyk L = { n n n N} není regulární. Uvažme libovolnou přirozenou konstantu m. Pak můžeme vzít řetez w = m m. Chceme najít x, y, z tak, aby w = xyz a aby řetězce odpovídaly pumping lemmatu. Protože y má délku alespoň jedna a xy má délku maximálně m, je y řetěz tvořený jenom symboly. Pro k pak xy k z nepatří do L, protože obsahuje různé počty a. Pokud tedy platí první dvě podmínky pumping lemmatu, nemůže platit ta třetí. Tedy pumping lemma pro L neplatí. Osička (Univerzita Palackého v Olomouci) YZTI LS 25 43 / 43