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