From 8db114406f194be9ed36d0c4e49dc5eabbd4535a Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Wed, 29 May 2024 17:28:59 +0200
Subject: [PATCH] =?UTF-8?q?Automaty=20s=20v=C3=BDstupem=20a=20line=C3=A1rn?=
 =?UTF-8?q?=C3=AD=20redukce?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 01-regular/regular.tex | 41 +++++++++++++++++++++++++++++++++++++++++
 TODO                   |  2 --
 2 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/01-regular/regular.tex b/01-regular/regular.tex
index 4d381bd..cf6b7a1 100644
--- a/01-regular/regular.tex
+++ b/01-regular/regular.tex
@@ -250,6 +250,30 @@ jak automatem~$A_1$, tak~$A_2$. Proto $L(A) = L(A_1) \cap L(A_2)$.
 Průnik dvou regulárních jazyků je zase regulární jazyk.
 }
 
+\subsectionstar{Automaty s~výstupem}
+
+Automat může místo rozpoznávání jazyka produkovat výstup.
+To můžeme definovat například následovně:
+
+\defn{\em{Mooreův stroj}
+je uspořádaná pětice $(Q,\Sigma,\Delta,\delta,q_0,G)$, kde:
+\list{o}
+\:$Q$ je konečná neprázdná \em{množina stavů,}
+\:$\Sigma$ je konečná neprázdná \em{vstupní abeceda,}
+\:$\Delta$ je konečná neprázdná \em{výstupní abeceda,}
+\:$\delta: Q\times \Sigma \rightarrow Q$ je \em{přechodová funkce,}
+\:$q_0\in Q$ je \em{počáteční stav,}
+\:$G: Q\rightarrow \Delta$ je \em{výstupní funkce.}
+\endlist
+}
+
+\defn{
+Výpočet stroje nad vstupem $\alpha\in\Sigma^*$ délky~$n$ definujeme opět jako
+posloupnost stavů $s_0,s_1,\ldots,s_n$, kde $s_i = \delta^*(q_0,\alpha[{}:i]$).
+\em{Výstup stroje} je pak řetězec $G(s_1)\ldots G(s_n)$.
+Stroj tedy počítá nějakou funkci ze~$\Sigma^n$ do~$\Delta^n$.
+}
+
 \exercises
 
 \excmt{
@@ -314,6 +338,23 @@ kde~$S$ je počet stavů KMP.}
 \ex{Dokažte, že iterační lemma není ekvivalence: najděte neregulární jazyk~$L$,
 který \uv{jde pumpovat}.}
 
+\exx{Sestrojte Mooreův stroj na sčítání binárních čísel $x_n\ldots x_0$
+a $y_n\ldots y_0$. Stroj na vstupu dostane posloupnost dvojic bitů $(x_0,y_0)
+\ldots (x_n,y_n)$ od nejnižšího řádu k~nejvyššímu, na výstupu vydá bity součtu
+v~tomtéž pořadí.}
+
+\exx{Jiný způsob, jak automatem produkovat výstup, dává \em{Mealyho stroj.}
+Ten tvoří výstup přechodovou funkcí $\delta: Q\times\Sigma \rightarrow Q\times\Delta$,
+která každé dvojici stavu a znaku se vstupu přiřadí nový stav a znak k~vypsání
+na výstup. Ukažte, že Mealyho stroje umí počítat tytéž funkce jako Mooreovy stroje.
+}
+
+\exx{Podobně jako u~\cc{NP}-úplnosti můžeme i zde jazyky porovnávat vhodnými redukcemi.
+Jazyk $K$ se dá regulárně převést na jazyk~$L$ ($K\rightarrow_R L$), pokud existuje funkce~$f$ spočítatelná
+Mooreovým strojem taková, že platí $\alpha\in K$ právě tehdy, když $f(\alpha)\in L$.
+Dokažte, že pokud $K\rightarrow_R L$ a $L$ je regulární, pak $K$ je regulární.
+}
+
 \endexercises
 
 \section{Nedeterministické automaty}
diff --git a/TODO b/TODO
index 294d5d1..a5dfb92 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,5 @@
 Regulární:
 
-- Automaty s výstupem -> cvičení
-    ... pak by se dala definovat regulární redukce mezi jazyky
 - obrázek ke kongruencím: automat, automatová kongruence, syntaktická kongruence
 - cvičení na redukci automatů
 
-- 
GitLab