diff --git a/01-regular/regular.tex b/01-regular/regular.tex index 297db04408807e670ce701f0fd00e521681322b4..9b320c17a73d4325d096a42f18d7a89c40a5b05f 100644 --- a/01-regular/regular.tex +++ b/01-regular/regular.tex @@ -107,7 +107,7 @@ Tedy existuje-li konečný automat~$A$ takový, že $L = L(A)$. přijímací stavy mají tučný zelený okraj.} \examplen{počítání jedniček}{ -Uvažme jazyk $L_3 = \{ \alpha\in\{\0,\1\} \mid |\alpha|_{\1} \bmod 3 = 0 \}$, +Uvažme jazyk $L_3 = \{ \alpha\in\{\0,\1\}^* \mid |\alpha|_{\1} \bmod 3 = 0 \}$, tedy jazyk slov, jejichž počet jedniček je dělitelný třemi. Tento jazyk je regulární. O~tom se snadno přesvědčíme sestrojením automatu: bude mít stavy $\{0,1,2\}$ odpovídající možným zbytkům po dělení počtu zatím přečtených jedniček třemi. Stav~0 bude jak počáteční, @@ -905,7 +905,7 @@ Nyní ukážeme, jak ekvivalentní stavy sloučit: \defn{Nechť $A=(Q,\Sigma,\delta,q_0,F)$ DFA, $\approx$ ekvivalence jeho stavů a pro každý stav $s\in Q$ je $[s]$ jeho ekvivalenční třída. Pak definujeme \df{faktorový automat} $A/\mathord{\approx} = (Q',\Sigma,\delta',q'_0,F')$, kde: -\tightlist{o} +\list{o} \:$Q' = \{[s] \mid s\in Q\}$, \:$\delta'([s],x) = [t]$, kdykoliv $\delta(s,x)=t$, \:$q'_0 = [q_0]$, @@ -1016,7 +1016,239 @@ V~tomto oddílu prozkoumáme některé souvislosti mezi teorií automatů a algebrou. Předpokládáme čtenáře zběhlého v~základech algebry, takže důkazy jsou zde poněkud hutnější. -\subsection{Monoidy a polookruhy} +\subsection{Kanonické automaty} + +Když jsme zkoumali jazyk $L_{01} = \{ \0^n\1^n \}$, intuice nám říkala, že by neměl být +regulární, protože si po načtení $\0^n$ musíme pamatovat libovolně velké číslo~$n$, +na což nestačí konečná paměť automatu. Nyní se pokusíme něco jako paměť potřebnou +k~rozpoznávání jazyka zavést pořádně. + +\defn{Nechť $L$ je nějaký jazyk nad abecedou~$\Sigma$. Řetězce $\alpha,\beta \in \Sigma^*$ +jsou rozlišitelné vzhledem k~$L$, pokud existuje nějaký suffix $\sigma\in\Sigma^*$ +takový, že právě jeden z~řetězců $\alpha\sigma$ a~$\beta\sigma$ leží v~$L$. +} + +\defn{\em{Syntaktická kongruence} neboli \em{Nerodova kongruence}\foot{Pro zjednodušení +výkladu zde nerozlišujeme levé kongruence od pravých. Brzy to uvedeme na pravou míru.} +jazyka $L\subseteq\Sigma^*$ je binární relace~$\sim_L$ na množině řetězců~$\Sigma^*$ +taková, že $\alpha\sim_L\beta$ právě tehdy, když $\alpha$ a~$\beta$ nejsou +rozlišitelné vzhledem k~$L$. +} + +\obs{Syntaktická kongruence je ekvivalence na množině~$\Sigma^*$.} + +\example{ +Pro jazyk $L_{01}$ jsou každá dvě slova $\0^n$ a~$\0^m$ ($n\ne m$) navzájem rozlišitelná, +stačí zvolit suffix~$\1^n$, takže syntaktická kongruence má nekonečně mnoho tříd. +Naopak pro jazyk $\{ \0^n \mid n \bmod 3 = 0 \}$ +jsou slova $\0^n$ a $\0^m$ rozlišitelná právě tehdy, když $n-m$ je dělitelné třemi; +syntaktická kongruence má proto jenom 3~třídy určeně zbytkem po dělení délky řetězce třemi. +} + +Ukážeme, že kdykoliv má syntaktická kongruence konečně mnoho tříd, jazyk +je regulární. Dokážeme totiž vytvořit automat, jehož stavy odpovídají třídám +synaktické kongruence. (Časem uvidíme, že platí i opačná implikace.) + +\defn{\df{Kanonický automat} pro jazyk~$L\subset\Sigma^*$ je $A_L = (Q,\Sigma,\delta,q_0,F)$, kde: +\list{o} +\:$Q = \{ [\alpha] \mid \alpha\in\Sigma^* \}$ je množina ekvivalenčních tříd syntaktické ekvivalence~$\sim_L$, +\:$\delta([\alpha],x) = [\alpha x]$, +\:$q_0 = [\varepsilon]$, +\:$F = \{ [\alpha] \mid \alpha\in L \}$. +\endlist +} + +\obs{Opět nezáleží na volbě reprezentantů tříd. Kdykoliv $[\alpha]=[\alpha']$, tak slova $\alpha$ +a~$\alpha'$ nejsou rozlišitelná žádným suffixem, a~proto ani $\alpha x$ a $\alpha' x$ +nemohou být rozlišitelná, takže $[\alpha x] = [\alpha' x]$. Také z~$[\alpha]=[\alpha']$ +plyne, že $\alpha$ i~$\alpha'$ jsou buď obě v~$L$, nebo obě mimo~$L$ -- jinak by slova +byla rozlišitelná prázdným suffixem. +} + +\lemma{Kanonický automat~$A_L$ přijímá jazyk~$L$. +} + +\proof +Indukcí podle délky řetězce~$\alpha$ dokážeme, že $\delta(q_0,\alpha) = [\alpha]$. +Stav $[\alpha]$ je přijímací právě tehdy, když $\alpha\in L$. +\qed + +Podobně se můžeme dívat na všechny automaty -- stavům vždy můžeme přiřadit nějaké +ekvivalenční třídy slov. + +\defn{\df{Automatová kongruence} pro automatu $A=(Q,\Sigma,\delta,q_0,F)$ je binární relace +$\simeq_A$ na množině slov $\Sigma^*$ taková, že $\alpha\simeq_A\beta$ právě tehdy, když +po zpracování slov $\alpha$ a~$\beta$ automat skončí ve stejném stavu (tedy $\delta^*(q_0,\alpha) += \delta^*(q_0,\beta)$). +} + +\lemma{Nechť $L$ je jazyk automatu~$A$ a $\alpha\simeq_A\beta$. Potom slova $\alpha$ +a $\beta$ nejsou rozlišitelná žádným suffixem, takže platí $\alpha\sim_L\beta$. +} + +\proof +Pokusme se $\alpha$ od~$\beta$ oddělit nějakým suffixem~$\sigma$. +Automat po zpracování $\alpha$ a~$\beta$ skončí v~tomtéž stavu~$s$. +Potom $\delta^*(q_0,\alpha\sigma) = \delta^*(q_0,\beta\sigma) = \delta^*(s,\sigma)$, +takže $\alpha\sigma\in F$ právě tehdy, když $\beta\sigma\in F$. K~oddělení tedy nedošlo. +\qed + +\cor{ +Automatová kongruence~$\simeq_A$ je tedy zjemněním syntantické kongruence~$\sim_L$. +Ekvivalenční třídy kongruence~$\sigma_A$ navíc odpovídají dosažitelným stavům +automatu~$A$. Proto automat má alespoň tolik stavů, kolik je tříd syntaktické kongruence. +} + +Z~toho už snadno získáme následující slavnou větu. + +\theoremn{Myhillova-Nerodova}{ +Jazyk~$L$ je regulární právě tehdy, když jeho syntaktická kongruence~$\sim_L$ +má konečně mnoho tříd. +} + +\proof +Nechť $\sim_L$ má konečně mnoho tříd. Pak existuje kanonický automat pro~$L$, +takže $L$ je regulární. +Naopak existuje-li nějaký automat~$A$ přijímající jazyk~$L$, uvažme jeho +automatovou kongruenci~$\simeq_A$. Počet jejích tříd je shora omezený počtem +stavů automatu, tudíž je konečný. A~jelikož automatová kongruence je zjemněním +syntaktické, musí mít syntaktická také konečně mnoho tříd. +\qed + +\subsection{Izomorfismus automatů} + +Mnoha různými odvětvími matematiky se jako červená nit vine pojem \em{izomorfismu.} +Odhlédneme-li od detailů, vždy se tím myslí bijekce mezi nějakými dvěma množinami, +která zachovává nějaké vlastnosti. + +\example{Izomorfismus neorientovaných grafů $G=(V,E)$ a $G'=(V',E')$ je bijekce +$f: V\rightarrow V'$, která zachovává vlastnost \uv{být spojen hranou}. +Tedy $\{u,v\}\in E$ právě tehdy, když $\{f(u),f(v)\} \in E'$. +Existuje-li taková bijekce, řekneme, že grafy $G$ a~$G'$ jsou izomorfní, +a představujeme si, že se liší jenom pojmenováním vrcholů. Snadno nahlédneme, že vlastnost +\uv{být izomorfní} je ekvivalence na grafech. +} + +Podobně můžeme definovat izomorfismus konečných automatů. + +\defn{\df{Izomorfismus automatů} $A = (Q,\Sigma,\delta,q_0,F)$ a $A' = (Q',\Sigma,\delta',q'_0,F')$ +je bijekce $f: Q\rightarrow Q'$, pro kterou platí: + +\list{o} +\:$f(q_0) = q'_0$, +\:$s\in F \Leftrightarrow f(s)\in F'$, +\:$\delta(s,x) = t \Leftrightarrow \delta'(f(s),x) = f(t)$. +\endlist + +Pokud taková bijekce existuje, řekneme, že automaty $A$ a~$A'$ jsou izomorfní, což značíme $A\cong A'$. +} + +\obs{ +Relace~$\cong$ je ekvivalence na automatech. +} + +\note{ +Izomorfismus tedy zachovává vlastnosti \uv{být počáteční stav}, \uv{být koncový stav} +a přechody mezi stavy. Izomorfní automaty se proto liší jen pojmenováním stavů. S~touto +představou je následující tvrzení jen cvičením z~dosazování do definic: +} + +\lemma{ +Izomorfní automaty rozpoznávají tentýž jazyk. +} + +\proof +Nechť mezi automaty $A=(Q,\Sigma,\delta,q_0,F)$ a $A'=(Q',\Sigma,\delta',q'_0,F')$ vede izomorfismus~$f$. +Uvažme slovo $\alpha\in\Sigma^*$ délky~$n$ a výpočet automatu~$A$ nad tímto slovem. To je nějaká posloupnost stavů +$q_0=s_0,s_1,\ldots,s_n$. Funkce~$f$ tento výpočet zobrazí na posloupnost stavů +$s'_0=f(s_0),s'_1=f(s_1),\ldots,s'_n=f(s_n)$. + +Ověříme, že tato posloupnost je výpočtem automatu~$A'$ nad tímtéž slovem. +Použijeme vlastnosti z~definice izomorfismu. Nejprve ověříme $s'_0 = f(s_0) = f(q_0) = q'_0$. +Podle definice výpočtu je $s_{i+1} = \delta(s_i, \alpha[i])$, takže +$s'_{i+1} = f(s_{i+1}) = f(\delta(s_i, \alpha[i])) = \delta'(f(s_i), \alpha[i]) = \delta'(s'_i, \alpha[i])$. + +Nakonec víme, že $s_n\in F$ právě tehdy, když $s'_n = f(s_n) \in F'$, takže automaty +se shodnou na tom, zda slovo~$\alpha$ přijmou. Jelikož $\alpha$ jsme mohli zvolit libovolně, +znamená to, že automaty přijímají tentýž jazyk. +\qed + +\subsection{Minimální automaty} + +Postupně ukážeme, že všechny redukované automaty přijímající jazyk~$L$ +jsou izomorfní s~kanonickým automatem~$A_L$. + +\lemma{ +Nechť $A$ je automat přijímající jazyk~$L$. +Stavy $s$ a~$t$ jsou ekvivalentní právě tehdy, když jejich třídy automatové kongruence~$\simeq_A$ +leží v~těže třídě syntaktické kongruence~$\sim_L$. +} + +\proof +Nechť $T_s$ a~$T_t$ jsou třídy kongruence~$\simeq_A$ příslušné ke stavům~$s$, $t$ +a $\alpha\in T_s$ a $\beta\in T_t$ jsou nějací reprezentanti těchto tříd. Platí tedy +$s=\delta^*(q_0,\alpha)$ a $t=\delta^*(q_0,\beta)$. + +Stavy $s$ a~$t$ jsou ekvivalentní právě tehdy, když pro každé dva suffixy~$\sigma$ +je $\delta^*(s,\sigma)\in F \Leftrightarrow \delta^*(t,\sigma)\in F$. To je totéž +jako $\delta^*(q_0,\alpha\sigma)\in F \Leftrightarrow \delta^*(q_0,\alpha\sigma)\in F$, +čili $\alpha\sigma\in L \Leftrightarrow \beta\sigma\in L$, a~to je přesně $\alpha\sim_L\beta$. +\qed + +\cor{ +Automat bez nedosažitelnych stavů je redukovaný právě tehdy, když automatová kongruence je rovna +syntaktické kongruenci jazyka. Kanonický automat je proto vždy redukovaný. +} + +Rovnost tříd obou kongruencí nám dá postup, jak sestrojit izomorfismus +s~kanonickým automatem. Z~toho plyne následující věta, která se někdy považuje +za druhou část tvrzení Myhillovy-Nerodovy věty. + +\theorem{ +Nechť~$A$ je redukovaný automat přijímající jazyk~$L$. +Potom~$A$ je izomorfní s~kanonickým automatem pro jazyk~$L$. +} + +\proof +Nechť $A=(Q,\Sigma,\delta,q_0,F)$ je daný redukovaný automat +a $A_L=(Q',\Sigma,\delta',q'_0,F')$ je kanonický automat pro jazyk~$L$. + +Definujme funkci~$f$, která každému stavu $s\in Q$ přiřadí příslušnou třídu $f(s)$ +automatové kongruence~$\simeq_A$. Z~předchozího víme, že pro redukovaný automat jsou třídy kongruence~$\simeq_A$ +rovny třídám syntaktické kongruence~$\sim_L$. Takže $f$ přiřazuje stavům automatu~$A$ +stavy kanonického automatu~$A_L$. Tato funkce je bijekce a ukážeme, že je to dokonce izomorfismus +automatů. To už je jednoduché cvičení na dosazování do definic. + +Nejprve ověříme kompatibilitu s~přechodovou funkcí. Chceme, aby platilo +$f(\delta(s,x)) = \delta'(f(s),x)$. +Jelikož automat~$A$ má všechny stavy dosažitelné, existuje nějaké slova~$\alpha$, +po jehož zpracování automat skončí ve stavu~$s$. Platí tedy $\alpha\in f(s)$, +což je totéž jako $f(s) = [\alpha]$. +Po zpracování slova $\alpha x$ automat skončí ve stavu $s' = \delta(s,x)$, +jehož třída je $f(s') = [\alpha x]$. +To odpovídá přechodu kanonického automatu: podle jeho definice je $\delta'([\alpha],x) = [\alpha x]$. + +Pak ověříme, že $f(q_0) = q'_0$. Třída $f(q_0)$ obsahuje slova, po kterých automat +skončí v~počátečním stavu, takže $f(q_0) = [\varepsilon]$. To je ovšem~$q'_0$ z~definice +kanonického automatu. + +Nakonec potřebujeme zkontrolovat kompatibilitu s~přijímacími stavy: +Stav~$s$ s~třídou $f(s) = [\alpha]$ je přijímací právě tehdy, když $\alpha\in L$, +což je právě když $f(s)\in F'$. +\qed + +\defn{ +Automat $A$ je \df{minimální,} pokud má mezi všemi automaty přijímajícími jazyk~$L$ +nejmenší počet stavů. +} + +\cor{ +Každý minimální automat je redukovaný (jinak bychom redukcí získali menší automat). +Tudíž je izomorfní s~kanonickým automatem~$A_L$. Jazyk má tedy (až na izomorfismus) +právě jedne minimální automat. +} + +\subsectionstar{Monoidy a polookruhy} \defn{ \df{Monoid} je algebraická struktura $(X,\cdot,1)$, kde $X$ je množina prvků, @@ -1076,7 +1308,7 @@ jsou svázány distributivitou $(A\cup B)\cdot C = A\cdot C \cup B\cdot C$ a analogicky z~opačné strany. } -\subsection{Lineární rovnice pro jazyky} +\subsectionstar{Lineární rovnice pro jazyky} Pojďme prozkoumat, jak se chovají rovnice typu $X=AX\cup B$, kde $X$ je neznámý jazyk a $A$ a~$B$ známé jazyky. To je analogie lineárních rovnic, jen v~okruhu jazyků @@ -1178,99 +1410,8 @@ To vyjde, neboť koeficienty soustavy jsou konečné, a~tedy regulární jazyky a řešení soustavy z~nich umíme vyjádřit pomocí operací regulárních výrazů. } -\subsection{Izomorfismus automatů} - -Mnoha různými odvětvími matematiky se jako červená nit vine pojem \em{izomorfismu.} -Odhlédneme-li od detailů, vždy se tím myslí bijekce mezi nějakými dvěma množinami, -která zachovává nějaké vlastnosti. - -\example{Izomorfismus neorientovaných grafů $G=(V,E)$ a $G'=(V',E')$ je bijekce -$f: V\rightarrow V'$, která zachovává vlastnost \uv{být spojen hranou}. -Tedy $\{u,v\}\in E$ právě tehdy, když $\{f(u),f(v)\} \in E'$. -Existuje-li taková bijekce, řekneme, že grafy $G$ a~$G'$ jsou izomorfní, -a představujeme si, že se liší jenom pojmenováním vrcholů. Snadno nahlédneme, že vlastnost -\uv{být izomorfní} je ekvivalence na grafech. -} - -Podobně můžeme definovat izomorfismus konečných automatů. - -\defn{\df{Izomorfismus automatů} $A = (Q,\Sigma,\delta,q_0,F)$ a $A' = (Q',\Sigma,\delta',q'_0,F')$ -je bijekce $f: Q\rightarrow Q'$, pro kterou platí: - -\list{o} -\:$f(q_0) = q'_0$, -\:$s\in F \Leftrightarrow f(s)\in F'$, -\:$\delta(s,x) = t \Leftrightarrow \delta'(f(s),x) = f(t)$. -\endlist - -Pokud taková bijekce existuje, řekneme, že automaty $A$ a~$A'$ jsou izomorfní, což značíme $A\cong A'$. -} - -\obs{ -Relace~$\cong$ je ekvivalence na automatech. -} - -\note{ -Izomorfismus tedy zachovává vlastnosti \uv{být počáteční stav}, \uv{být koncový stav} -a přechody mezi stavy. Izomorfní automaty se tedy liší jen pojmenováním stavů. S~touto -představou je následující tvrzení jen cvičením z~dosazování do definic: -} - -\lemma{ -Izomorfní automaty rozpoznávají tentýž jazyk. -} - -\proof -Nechť mezi automaty $A=(Q,\Sigma,\delta,q_0,F)$ a $A'=(Q',\Sigma,\delta',q'_0,F')$ vede izomorfismus~$f$. -Uvažme slovo $\alpha\in\Sigma^*$ délky~$n$ a výpočet automatu~$A$ nad tímto slovem. To je nějaká posloupnost stavů -$q_0=s_0,s_1,\ldots,s_n$. Funkce~$f$ tento výpočet zobrazí na posloupnost stavů -$s'_0=f(s_0),s'_1=f(s_1),\ldots,s'_n=f(s_n)$. - -Ověříme, že tato posloupnost je výpočtem automatu~$A'$ nad tímtéž slovem. -Použijeme vlastnosti z~definice izomorfismu. Nejprve ověříme $s'_0 = f(s_0) = f(q_0) = q'_0$. -Podle definice výpočtu je $s_{i+1} = \delta(s_i, \alpha[i])$, takže -$s'_{i+1} = f(s_{i+1}) = f(\delta(s_i, \alpha[i])) = \delta'(f(s_i), \alpha[i]) = \delta'(s'_i, \alpha[i])$. - -Nakonec víme, že $s_n\in F$ právě tehdy, když $s'_n = f(s_n) \in F'$, takže automaty -se shodnou na tom, zda slovo~$\alpha$ přijmou. Jelikož $\alpha$ jsme mohli zvolit libovolně, -znamená to, že automaty přijímají tentýž jazyk. -\qed - -\subsection{Redukce automatu} - -TODO: - -\list{o} -\:Odstranění nedosažitelných stavů (možná později?) -\:Připomenutí ekvivalencí a jejich tříd, zjemnění ekvivalence -\:Ekvivalence stavů -\:Algoritmus na konstrukci ekvivalence (indukce podle délky oddělujícího slova) -\:Cvičení: využití algoritmu pro test, zda dva automaty přijímají tentýž jazyk -\:Faktorizace stavů $\Rightarrow$ redukovaný automat, jeho ekvivalence stavů je triviální -\:Plán: dva redukované automaty pro tentýž jazyk jsou izomorfní -\endlist - -\subsection{Kongruence slov a Myhillova-Nerodova věta} - -TODO: - -\list{o} -\:Co je to kongruence na monoidu -\:Automatová kongruence (potřebujeme všechny stavy dosažitelné) -\:Syntaktická kongruence (asi jen jednostranná) -\:Automatová kongruence je zjemněním syntaktické -\:Myhillova-Nerodova věta: jazyk je regulární $\Leftrightarrow$ levá/pravá syntaktická - kongruence má konečně mnoho tříd. -\:Nějaké příklady jazyků a jejich kongruencí -\:Dva stavy jsou ekvivalentní, pokud jejich kongruenční třídy patří do téže třídy syntaktické kongruence. -\:Pokud dva automaty mají tutéž automatovou kongruenci, jsou izomorfní. -\:Důsledek: Redukované automaty pro tentýž jazyk jsou izomorfní. -\endlist - \exercises -\ex{Charakterizujte všechna řešení rovnice $X=AX\cup B$ v~případě, že $\varepsilon\in A$. - \ex{Homomorfismus se od izomorfismu liší tím, že nevyžadujeme, aby zobrazení bylo bijektivní. Můžeme si tedy představit, že je to izomorfismus jednoho objektu s~nějakou podmnožinou druhého objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~něj také plyne, @@ -1278,6 +1419,8 @@ objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~n } \ex{Formulujte definici izomorfismu pro nedeterministické automaty.} + +\exx{Charakterizujte všechna řešení rovnice $X=AX\cup B$ v~případě, že $\varepsilon\in A$. } \endexercises