Konečný automat Teorie programovacích jazyků

Podobné dokumenty
Turingovy stroje. Teoretická informatika Tomáš Foltýnek

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

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(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Teoretická informatika - Úkol č.1

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

F (x, h(x)) T (g)(x) = g(x)

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

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

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

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

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

Úvod do informatiky. Miroslav Kolařík

Syntaxí řízený překlad

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

AUTOMATY A GRAMATIKY

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

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

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.

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

Vlastnosti regulárních jazyků

PRAVDĚPODOBNOSTNÍ PŘÍSTUP K HODNOCENÍ DRÁTKOBETONOVÝCH SMĚSÍ. Petr Janas 1 a Martin Krejsa 2

Grafické řešení úloh LP se dvěma neznámými

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

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

Lexikální analýza Teorie programovacích jazyků

Minimalizace KA - Úvod

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.

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

Teoretická informatika TIN 2013/2014

ZÁKLADY TEORETICKÉ INFORMATIKY

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

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

Naproti tomu gramatika je vlastně soupis pravidel, jak

Konečný automat. Jan Kybic.

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

Teoretická informatika

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

Jednoznačné a nejednoznačné gramatiky

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

Deterministický konečný automat

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

Čí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:

Aritmetika s didaktikou I.

= 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

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

Postup při měření rychlosti přenosu dat v mobilních sítích dle standardu LTE (Metodický postup)

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

Průřezové charakteristiky základních profilů.

VY_42_Inovace_24_MA_2.04_Množiny ve slovních úlohách pracovní list

ELEKTŘINA A MAGNETIZMUS Řešené úlohy a postupy: Ampérův zákon

Automaty a gramatiky(bi-aag)

Třídy složitosti P a NP, NP-úplnost

popel, glum & nepil 16/28

Sekvenční logické obvody

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/31

Fakulta informačních technologií. Teoretická informatika

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Návrh algoritmů pro sémantické akce při výstavbě interpretu metodou rekurzivního sestupu

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Spojitost a limita funkce

Implementace LL(1) překladů

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

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

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

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Regulární a bezkontextové jazyky I.

Automaty a gramatiky

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Teoretická informatika

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Turingovy stroje. Turingovy stroje 1 p.1/28

SPOTŘEBITELSKÝ ÚVĚR. Při rozhodování o splátkové společnosti se budeme řídit výší RPSN. Pro nákup zboží si zvolíme. Dl = >k=0

Složitost Filip Hlásek

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vztah jazyků Chomskeho hierarchie a jazyků TS

2 Formální jazyky a gramatiky

Úvod do informatiky. Miroslav Kolařík

VLHKOST HORNIN. Dělení vlhkostí : Váhová (hmotnostní) vlhkost w - poměr hmotnosti vody ve vzorku k hmotnosti pevné fáze (hmotnosti vysušeného vzorku)

Operační výzkum. Síťová analýza. Metoda CPM.

Kuličkové šrouby a matice - ekonomické

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2016

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

10. Techniky formální verifikace a validace

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

ANALÝZA A KLASIFIKACE DAT

Zápočtové úlohy pro rok ZS 2015

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

STATICKY NEURČITÉ RÁMOVÉ KONSTRUKCE S PODDAJNOU PODPOROU SILOVÁ METODA

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

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

Transkript:

Konečný automat Teorie programovacích jazyků oc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@menelu.cz

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Osnova nešní přenášky 1 Automaty v běžném životě 2 Konečný automat efinice a konfigurace automatu přecho mezi konfiguracemi reprezentace přechoové funkce varianty konečných automatů 3 Metoy konstrukce konečného automatu zaveení pomocné struktury na stavech moulární návrh převo z regulárního výrazu a regulární gramatiky 4 Deterministický konečný automat algoritmus převou NKA na DKA implementace v programovacím jazyce Teorie programovacích jazyků Přenáška 4: Konečný automat 2 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Automaty v běžném životě zapni V Z vypni Teorie programovacích jazyků Přenáška 4: Konečný automat 3 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Automaty v běžném životě t Č t z v Ž Č v V v Ž Z v t Z t Teorie programovacích jazyků Přenáška 4: Konečný automat 4 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Automaty v běžném životě provést změny ruh jízenky Zobrazena cena vhoit mince Připraven zrušit Tisk vzít lístek Teorie programovacích jazyků Přenáška 4: Konečný automat 5 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Konečný automat Virtuální stroj skláající se z říicí jenotky a čtecího zařízení, které čte vstupní pásku zleva oprava Říicí jenotka se může nacházet v konečném počtu vnitřních stavů (jeiná paměť uchovávající honotu) Čtecí zařízení snímá jenotlivé symboly věty ze vstupní pásky Vstupem konečného automatu je věta w Výstupem je informace, za věta w patří o jazyka L Kleeneho věta Libovolný jazyk je regulární právě tehy, kyž je rozpoznatelný konečným automatem. Teorie programovacích jazyků Přenáška 4: Konečný automat 6 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Konečný automat a a b a b b b a... jenosměrnávstupnípáska M říicí jenotka Obecně eterministický stroj = výpočet a implementace automatu jsou jenoznačné Při návrhu je ale často výhoné uvažovat neeterministický automat, který násleně převeeme na ekvivalentní eterministický Teorie programovacích jazyků Přenáška 4: Konečný automat 7 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Konečný automat Definice Neeterministický konečný automat je pětice M = (Q, Σ, δ, q 0, F), ke: Q je neprázná konečná množina vnitřních stavů Σ je konečná množina vstupních symbolů (abecea) δ : Q Σ 2 Q je přechoová funkce q 0 Q je počáteční stav automatu F Q je množina koncových stavů Definice umožňuje i F =, takový automat nepřijme žáné slovo a jím rozpoznávaný jazyk bue prázný Teorie programovacích jazyků Přenáška 4: Konečný automat 8 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Konfigurace automatu Definice Dvojici (q, w) Q Σ nazveme konfigurace konečného automatu. Konfiguraci (q 0, w), ke q 0 je počáteční stav automatu a w je vstupní věta, nazveme počáteční. Konfiguraci (q F, ϵ), ke q F F, nazveme koncovou. Konfigurace efinuje situaci, v níž se automat nachází, pomocí aktuálního vnitřního stavu a osu nepřečtené části vstupní věty Věta je přijata (akceptována), jestliže se automat během své činnosti ostane o koncové konfigurace Teorie programovacích jazyků Přenáška 4: Konečný automat 9 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Přecho mezi konfiguracemi Přecho o jené konfigurace k násleující efinuje přechoová funkce δ na záklaě aktuálního vnitřního stavu a přečteného symbolu ze vstupní pásky je-li násleujících stavů více, je automat neeterministický je-li násleující stav nejvýše jeen, je automat eterministický Příkla Automat M = ({q 0, q 1, q 2, q 3 }, {a, b, c}, δ, q 0, {q 3 }) s přechoovou funkcí δ: δ(q 0, a) = q 1 δ(q 1, c) = q 0 δ(q 2, a) = q 1 δ(q 3, c) = q 3 δ(q 0, b) = q 2 δ(q 1, c) = q 3 δ(q 2, b) = q 3 Teorie programovacích jazyků Přenáška 4: Konečný automat 10 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Relace přechou a stavy automatu Na množinou konfigurací automatu Q Σ efinujeme relaci přechou, tzv. krok Definice Jestliže q i Q, q j Q, w Σ, a Σ, potom (q i, aw) (q j, w) právě tehy, kyž δ(q i, a) = q j u DKA, resp. q j δ(q i, a) u NKA. Teorie programovacích jazyků Přenáška 4: Konečný automat 11 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Relace přechou a stavy automatu Bueme používat označení k pro k-tou mocninu, + pro tranzitivní uzávěr a pro tranzitivní a reflexivní uzávěr relace Definice Stav q Q je osažitelný, poku existuje přecho (q 0, w) n (q, ϵ) pro nějaké n 0, w Σ. Poku takový přecho neexistuje, stav q Q je neosažitelný. Teorie programovacích jazyků Přenáška 4: Konečný automat 12 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Automat jako prostřeek specifikace jazyka Definice Automat přijímá (akceptuje) větu w Σ, jestliže platí (q 0, w) (q F, ϵ) pro nějaké q F F. Jazyk popsaný automatem je potom množina vět ze vstupní abecey, které jsou aným automatem akceptovány Definice Jazyk L(M) popsaný automatem M je vyjářen jako L(M) = {w Σ (q 0, w) (q F, ϵ) q F F}. Teorie programovacích jazyků Přenáška 4: Konečný automat 13 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Reprezentace přechoové funkce Tabulka přechoů řáky jsou označeny stavy z Q počáteční stav je označen, koncové stavy sloupce jsou označeny symboly z Σ pole tabulky obsahují výsleky přechoové funkce, tj. pomnožiny množiny stavů Diagram přechoů stavy jsou znázorněny jako uzly grafu koncové stavy jsou vyznačeny vojitým kroužkem mezi uzly jsou orientované spojnice ohonocené příslušným terminálním symbolem Výpočetní (stavový) strom pouze pro eterministické automaty jsou znázorněny pouze osažitelné stavy Teorie programovacích jazyků Přenáška 4: Konečný automat 14 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Reprezentace přechoové funkce Příkla M = ({q 0, q 1, q 2, q 3 }, {a, b, c}, δ, q 0, {q 3 }) δ a b c q 0 {q 1 } {q 2 } q 1 {q 0, q 3 } q 2 {q 1 } {q 3 } q 3 {q 3 } q 0 a b c q 1 q 2 a c b q 3 c Zpracování věty acbacbbc: (q 0, acbacbbc) (q 1, cbacbbc) (q 0, bacbbc) (q 2, acbbc) (q 1, cbbc) (q 0, bbc) (q 2, bc) (q 3, c) (q 3, ϵ) Teorie programovacích jazyků Přenáška 4: Konečný automat 15 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Varianty konečných automatů Neeterministický konečný automat násleujících stavů může být více, tj. δ : Q Σ 2 Q využití při konstrukci automatu z regulární gramatiky Zobecněný neeterministický konečný automat obsahuje ϵ-kroky, tj. δ : Q (Σ {ϵ}) 2 Q využití při konstrukci automatu z regulárního výrazu Deterministický konečný automat násleující stav je určen jenoznačně, tj. δ : Q Σ Q využití při implementaci v programovacím jazyku Totální automat eterministický automat s totální přechoovou funkcí v kažém stavu je schopen reagovat na všechny signály ( q Q)( a Σ)( p Q) že takové, δ(q, a) = p Teorie programovacích jazyků Přenáška 4: Konečný automat 16 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Metoy konstrukce konečného automatu Zaveení pomocné struktury na stavech stavy konečného automatu přestavují konečnou paměť, o níž je možné ukláat informace o osu přečtené části vstupní věty informaci spojenou s aným stavem je účelné zachytit přímo v jeho označení Příkla L = { w {a, b} w poslovo obsahuje abaa } b a a a b a a q ǫ q a q ab q aba q abaa b b b Teorie programovacích jazyků Přenáška 4: Konečný automat 17 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Metoy konstrukce konečného automatu Moulární návrh (synchronní paralelní kompozice) využití uzávěrových vlastností regulárních jazyků pro M 1 a M 2 lze sestrojit automat rozpoznávající L M1 L M2, L M1 L M2, L M1 L M2 a L M1 \ L M2 Příkla L 1 = { w {0, 1} w 0 mo 2 = 0 }, L 2 = { w {0, 1} w 1 mo 3 = 0 } L = L 1 L 2 = { w {0, 1} w 0 mo 2 = 0 w 1 mo 3 = 0 } 0 1 r2 1 1 q1,r1 q1,r2 q1,r3 1 1 1 0 1 0 0 0 0 0 0 1 1 r1 r3 q2,r1 q2,r2 q2,r3 q1 q2 0 0 1 0 1 Teorie programovacích jazyků Přenáška 4: Konečný automat 18 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Konstrukce automatu převoem REGULÁRNÍ VÝRAZ KONEČNÝ AUTOMAT REGULÁRNÍ GRAMATIKA Teorie programovacích jazyků Přenáška 4: Konečný automat 19 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Regulární gramatika konečný automat Algoritmus Vstup: (Pravá) regulární gramatika G = (N, Σ, P, S). Výstup: Neeterministický konečný automat M = (Q, Σ, δ, q 0, F) takový, že L G = L M. Metoa: 1 Q = {q A A N} {q F } 2 Σ M = Σ G 3 q B δ(q A, a) pro kažé pravilo A ab P, q F δ(q A, a) pro kažé pravilo A a P 4 q 0 = q S 5 F = {q F } {q S S ϵ P} Teorie programovacích jazyků Přenáška 4: Konečný automat 20 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Regulární gramatika konečný automat Příkla Regulární gram. G = ({S, A, B, C}, {,,.}, P, S) esetinných čísel: S A A C B B A A C C.B Ekvivalentní konečný automat M = (Q, Σ, δ, q 0, F): 1 Q = {q S, q A, q B, q C, q F } 2 Σ = {,,.} 3 δ(q S, ) = {q A, q C, q F }, δ(q S, ) = {q A }, δ(q A, ) = {q A, q C, q F }, δ(q B, ) = {q B, q F }, δ(q C,.) = {q B } 4 q 0 = q S 5 F = {q F } Teorie programovacích jazyků Přenáška 4: Konečný automat 21 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Regulární gramatika konečný automat Příkla (pokračování) M = ({q S, q A, q B, q C, q F }, {,,.}, δ, q S, {q F }) δ. q S {q A, q C, q F } {q A} q A {q A, q C, q F } q B {q B, q F } q C {q B } q F q S q A q F q B. q C Teorie programovacích jazyků Přenáška 4: Konečný automat 22 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Regulární výraz konečný automat Algoritmus q q p a q {ǫ} {a} F p F G q F G p s q ǫ ǫ p s q F+G F G F Teorie programovacích jazyků Přenáška 4: Konečný automat 23 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Regulární výraz konečný automat Příkla (a+b) c(aa+b) q A (a+b) ǫ ǫ q A q B q C c (aa+b) ǫ ǫ q D q E q F q G ǫ q H ǫ q Z q Z ǫ a ǫ c ǫ b ǫ ǫ ǫ q A q B q C q D q E a q F q G q H q Z a b c b a q E1 q A q D a q Z b a q E1 Teorie programovacích jazyků Přenáška 4: Konečný automat 24 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat NKA DKA Algoritmus Vstup: Neeterministický automat M = (Q, Σ, δ, q 0, F) Výstup: Deterministický automat M = (Q, Σ, δ, q 0, F ) takový, že L M = L M Metoa: 1 Nová množina stavů bue množinou všech pomnožin půvoní množiny stavů, tj. Q = {M M Q} = 2 Q 2 q 0 = {q 0 } 3 Koncové stavy jsou všechny, které (coby množiny) obsahují alespoň jeen půvoní koncový stav, tj. M F M F 4 δ (M, a) = {q q δ(p, a) p M} Teorie programovacích jazyků Přenáška 4: Konečný automat 25 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat NKA DKA Při práci s reprezentací přechoové funkce tabulkou postupujeme jenouše takto: rozšíříme množinu Q tak, aby několik půvoních stavů tvořilo jeen nový stav, např. z {q A, q B } vytvoříme q AB tento nový kompozitní stav přebírá vazby a vlastnosti všech půvoních stavů, z nichž vznikl kompozitní stav použijeme právě tam, ke výsleek přechoové funkce není jeiný stav, ale množina stavů, tey δ(q i, a) > 1 v tabulce pak není nezbytné psát množinové závorky Převoem může vzniknout velké množství nových stavů, z nichž mnohé jsou neosažitelné a nabytečné, proto je nutné násleně tyto nepotřebné stavy ostranit (v uveeném pořaí) Teorie programovacích jazyků Přenáška 4: Konečný automat 26 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat NKA DKA Příkla M = ({q S, q A, q B, q C, q F }, {,,.}, δ, q S, {q F }) M = ({q S, q A, q B, q C, q F, q AC F, q B F }, {,,.}, δ, q S, {q F, q AC F, q B F }) δ. q S {q A, q C, q F } {q A} q A {q A, q C, q F } q B {q B, q F } q C {q B } q F δ. q S q AC F q A q A q B q C q F q AC F q B F q B q AC F q AC F q B q B F q B F Teorie programovacích jazyků Přenáška 4: Konečný automat 27 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat NKA DKA Příkla (pokračování) q A q S q F q B. q C q A q F.. q S q AC F q B q C q B F Teorie programovacích jazyků Přenáška 4: Konečný automat 28 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Ostranění neosažitelných stavů Algoritmus Vstup: Konečný automat M = (Q, Σ, δ, q 0, F) Výstup: Ekvivalentní automat M = (Q, Σ, δ, q 0, F Q ) bez neosažitelných stavů Metoa: 1 Polož S 0 = {q 0 }, i = 1. 2 Konstruuj S i = {q δ(p, a) = q p S i 1 a Σ} S i 1. 3 Je-li S i S i 1, polož i = i + 1 a opakuj krok 2. 4 Je-li S i = S i 1, polož Q = S i a skonči. Teorie programovacích jazyků Přenáška 4: Konečný automat 29 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Ostranění nabytečných stavů Algoritmus Vstup: Konečný automat M = (Q, Σ, δ, q 0, F) bez neosažitelných stavů Výstup: Ekvivalentní automat M = (Q, Σ, δ, q 0, F Q ) bez nabytečných stavů Metoa: 1 Polož E 0 = {F}, i = 1. 2 Konstruuj E i = {q δ(q, a) = p p E i 1 a Σ} E i 1. 3 Je-li E i E i 1, polož i = i + 1 a opakuj krok 2. 4 Je-li E i = E i 1, polož Q = E i a skonči. Teorie programovacích jazyků Přenáška 4: Konečný automat 30 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Ostranění stavů Příkla δ. q S q AC F q A q A q AC F q A. q B q B q B F q S q AC F q AC F q AC F q B q B F q B F q B F Q = {q S, q A, q B, q AC F, q B F } Teorie programovacích jazyků Přenáška 4: Konečný automat 31 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Stavový strom automatu Příkla q S δ. q S q AC F q A q A q AC F. q A q B q AC F q B F q AC F q AC F q B q AC F q AC F q B q B F q B F q B F q B F Teorie programovacích jazyků Přenáška 4: Konečný automat 32 / 33

Automaty v běžném životě Konečný automat Metoy konstrukce konečného automatu Deterministický konečný automat Implementace konečného automatu Simulace programovým moulem přecházejícím mezi jenotlivými konfiguracemi Aktuální vnitřní stav automatu je moelován jenouchou proměnnou, která může nabývat honot z množiny stavů Čtecí mechanismus je realizován proceurou, která je schopna ze vstupu oat násleující terminální symbol Realizace logickou funkcí, jejímž jeiným výslekem je zpráva o akceptaci věty (true), nebo o první chybě vstupu (false) Teorie programovacích jazyků Přenáška 4: Konečný automat 33 / 33