# Konečné automaty

obecné vlastnosti
- konečný počet stavů
- konečný počet vstupů (vstupních symbolů nebo vstupních událostí)
- následující stav je jednoznačně určen stavem a vstupním symbolem
- jednoznačně určený počáteční stav

neřešíme, jakým způsobem zařízení vydává výsledek

### Typy automatů

**Rozpoznávací automat**
- o vstupním řetězci vydává rozhodnutí typu **ano**/**ne**
- **definice**: $A = \left( Q, \sum, \delta, q_{o}, F \right)$
	- $Q$ - konečná neprázdná množina stavů
	- $\sum$ - konečná neprázdná množina vstupních symbolů
	- $q_{0} \in Q$ - počáteční stav
	- $\delta : Q \times \sum \to Q$ - přechodová funkce
	- $F \subseteq Q$ - množina koncových stavů
- **použití**
	- řešení dílčích problémů v překladačích programovacích jazyků
	- jednoduché úlohy AI

**Klasifikační automat**
- vstupní řetězec zařadí do jedné z *n* tříd
- **definice**: $A = \left( Q, \sum, \delta, q_{o}, \{Q_{i}\} \right)$
	- $Q$ - konečná neprázdná množina stavů
	- $\sum$ - konečná neprázdná množina vstupních symbolů
	- $q_{0} \in Q$ - počáteční stav
	- $\delta : Q \times \sum \to Q$ - přechodová funkce
	- $\{Q_{i}\}$ - rozklad množiny stavů (třídy)
- **použití**
	- jednoduché úlohy AI

**Automat s výstupní funkcí** (překladový automat)
- na základě vstupního řetězce vytvoří výstupní řetězec z výstupních symbolů
- **použití**
	- HW - modelování číslicových systémů
	- modelování a návrh systémů logického řízení

Automat Mealyho typu
- výstupní posloupnost určena **posloupností přechodů**, kterými automat při zpracování řetězce prošel
- výstupní řetězec má délku $n$
- **definice**: $A = \left( Q, \sum, O, \delta, q_{o}, \lambda \right)$
	- $Q$ - konečná neprázdná množina stavů
	- $\sum$ - konečná neprázdná množina vstupních symbolů
	- $O$ - konečná neprázdná množina výstupních symbolů
	- $q_{0} \in Q$ - počáteční stav
	- $\delta : Q \times \sum \to \quad$ - přechodová funkce
	- $\lambda : Q \times \sum \to O$ - výstupní funkce
- **použití**
	- pro popis systémů s pulzními výstupy

Automat Mooreova typu
- výstupní posloupnost určena **posloupností stavů**, kterými automat při zpracování řetězce prošel
- výstupní řetězec má délku $n + 1$
- **definice**: $A = \left( Q, \sum, O, \delta, q_{o}, \lambda \right)$
	- $Q$ - konečná neprázdná množina stavů
	- $\sum$ - konečná neprázdná množina vstupních symbolů
	- $O$ - konečná neprázdná množina výstupních symbolů
	- $q_{0} \in Q$ - počáteční stav
	- $\delta : Q \times \sum \to Q$ - přechodová funkce
	- $\lambda : Q \to O$ - výstupní funkce
- **použití**
	- pro popis systémů s hladinovými výstupy

**Konfigurace automatu, ekvivalence rozpoznávacích automatů**
- konfigurací automatu $A = (Q, \sum, \delta, q_{0}, F)$ je každá uspořádaná dvojice $(q, v) \in Q \times \sum *$
	- $q$ - aktuální stav automatu
	- $v$ - doposud nezpracovaná část řetězce
- automaty $A_{1}$ a $A_{2}$ jsou ekvivalentní, jestliže $L(A_{1}) = L(A_{2})$
	- automaty jsou ekvivalentní, pokud rozpoznávají stejný jazyk
	- ekvivalentní mohou být i automaty, které nemají stejný počet stavů

**Způsob popisu konečných automatů**
- přechodový graf (stavový diagram)
- tabulka
- stavový strom

**Zobecněná přechodová funkce deterministického konečného automatu, její vztah k přechodové funkci**
- přechodová funkce: $\delta: Q \times \sum \to Q$
- definiční obor zobecněné funkce $\delta^*$
	- $D(\delta^*) = Q \times \sum^* = Q \times \left( \{e\} \cup \sum \cup \sum^2 \cup \dots \right)$
	- $D(\delta) \subseteq D(\delta^*), \quad \delta^*(q, a) = \delta(q, a) \, \forall q \in Q, \forall a \in \sum$
- zobecněná přechodová funkce je jednoznačně určena přechodovou funkcí
	- lze ji vyjádřit rekurzivně pomocí přechodové funkce
	- $\delta^*(q, wa) = \delta(\delta^*(q, w)a), \delta^*(q, e) = q$