diff --git a/01-regular/regular.tex b/01-regular/regular.tex index 0589111031a295c1e28c234685fa5bea3f123b68..3917d703b0093c3c7c4f19296691d2b846e1dba4 100644 --- a/01-regular/regular.tex +++ b/01-regular/regular.tex @@ -805,7 +805,7 @@ Zamysleme se nad tím, jakých stavů bychom se v~levém automatu dokázali zbav \:Stavy 3 a~4 není potřeba rozlišovat: oba jsou přijímací a po zpracování libovolného slova automat skončí zase v~přijímacím stavu. Můžeme je tedy sloučit do společného stavu 34, který bude přijímací a jak~\|a|, tak~\|b| povedou -opět do stavu 34. +opět do něj. \:Stavy 1 a~2 také není potřeba rozlišovat: v~obou platí, že \|b| nás posune do stavu 34, zatímco po \|a| zůstaneme v~1 nebo~2. Opět je můžeme sloučit @@ -837,8 +837,8 @@ na jehož přijetí se výpočty neshodnou. Snadno ověříme, že relace~$\approx$ je opravdu ekvivalence (je reflexivní, symetrická a tranzitivní). Počítat ji podle definice není praktické, protože -bychom museli otestovat nekonečně mnoho slov. Ukážeme, že ji lze počítat -indukcí. +bychom museli otestovat nekonečně mnoho slov. Ukážeme jednoduchý postup založený +na indukci. \defn{Stavy $s,t\in Q$ jsou \df{ekvivalentní do délky~$k$} (značíme $s\approx_k t$), pokud nejdou oddělit žádným slovem délky nejvýše~$k$. Tedy @@ -863,15 +863,17 @@ slovem~$\alpha'$ délky $k-1$. \endlist } -Z~toho plyne: +Z~toho plynou následující vlastnosti, které nám dávají induktivní postup pro sestrojení +všech ekvivalencí $\approx_0$, $\approx_1$, \dots $$\eqalign{ &(s\approx_0 t) \Longleftrightarrow (s\in F \Leftrightarrow t\in F) \cr &(s\approx_{k+1} t) \Longleftrightarrow (s\approx_0 t) \land (\forall x\in\Sigma: \delta(s,x) \approx_k \delta(t,x)) \cr +&(s\approx_{k+1} t) \Longleftrightarrow (s\approx_k t) \land (\forall x\in\Sigma: \delta(s,x) \approx_k \delta(t,x)) \cr }$$ -To nám dává induktivní postup na sestrojení všech ekvivalencí~$\approx_k$. +Druhá a třetí vlastnost jsou ekvivalentní, jelikož $\mathord{\approx_0}\subseteq\mathord{\approx_k}\subseteq\mathord{\approx_{k+1}}$. -Jelikož každá další ekvivalence je zjemněním té předchozí a tříd není nikdy -víc než stavů automatu, musí se zjemňování po konečně mnoha krocích zastavit +Navíc každá další ekvivalence je zjemněním té předchozí a tříd není nikdy +víc než stavů automatu. Tudíž se zjemňování musí po konečně mnoha krocích zastavit s~$\mathord{\approx_{k+1}} = \mathord{\approx_k}$. Z~toho ovšem plyne $\mathord{\approx_\ell} = \mathord{\approx_k}$ pro všechna $\ell > k$, a~tím pádem i $\mathord{\approx} = \mathord{\approx_k}$. @@ -902,9 +904,9 @@ a~tím pádem i $\mathord{\approx} = \mathord{\approx_k}$. Nyní ukážeme, jak ekvivalentní stavy sloučit: -\defn{Nechť $A=(Q,\Sigma,\delta,q_0,F)$ DFA, $\approx$ ekvivalence jeho stavů +\defn{Nechť $A=(Q,\Sigma,\delta,q_0,F)$ je 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: +\df{Faktorizací} tohoto automatu vznikne \df{faktorový automat} $A/\mathord{\approx} = (Q',\Sigma,\delta',q'_0,F')$, kde: \list{o} \:$Q' = \{[s] \mid s\in Q\}$, \:$\delta'([s],x) = [t]$, kdykoliv $\delta(s,x)=t$, @@ -915,12 +917,13 @@ Pak definujeme \df{faktorový automat} $A/\mathord{\approx} = (Q',\Sigma,\delta' \note{ Stavy faktorového automatu jsou tedy ekvivalenční třídy stavů původního -automatu. Přechod z~ekvivalenční třídy $S$ do $T$ přes znak~$x$ odpovídá -přechodu mezi $s\in S$ do $t\in T$ přes~$x$ v~původním automatu. -Z~vlastností relace~$\approx$ přitom plyne, že nezáleží na volbě reprezentantů $s$ a~$t$: -pro každé $s,s'\in S$ a $x\in\Sigma$ je $sx \approx s'x$. -Podobně třída je přijímací, pokud stavy v~ní ležící byly v~původním automatu přijímací; -opět se na tom všichni reprezentanti třídy shodnou. +automatu. Přechod z~ekvivalenční třídy $[s]$ do $[t]$ přes znak~$x$ odpovídá +přechodu z~$s$ do $t$ přes~$x$ v~původním automatu. +Z~vlastností relace~$\approx$ přitom plyne, že nezáleží na volbě reprezentantů tříd: +kdykoliv platí $[s] = [s']$, pak je také $\delta(s,x) \approx \delta(s',x)$, +čili $[\delta(s,x)] = [\delta(s',x)]$. +Podobně třída je přijímací, pokud stavy v~ní ležící byly v~původním automatu přijímací +a opět se na tom všichni reprezentanti třídy shodnou. } \lemma{ @@ -928,12 +931,19 @@ Faktorizací automatu se nezmění přijímaný jazyk. } \proof -Indukcí podle délky řetězce dokážeme, že pro každý řetězec~$\alpha$ platí -$\delta'(q'_0,\alpha) = \delta'([q_0],\alpha) = [\delta(q_0,\alpha)]$. -Tento stav leží v~$F'$ právě tehdy, když $\delta(q_0,\alpha)$ leží v~$F$. +Dokážeme, že pro každý řetězec~$\alpha$ platí $\delta'^*(q'_0,\alpha) = [\delta^*(q_0,\alpha)]$. +Tento stav leží v~$F'$ právě tehdy, když $\delta^*(q_0,\alpha)$ leží v~$F$. + +Použijeme indukci podle $|\alpha|$. +Základní případ $\alpha=\varepsilon$ je snadný: $\delta'^*(q'_0,\varepsilon) = q'_0 = [q_0] = [\delta^*(q_0,\varepsilon)]$. +Indukční krok: pro $\alpha=\alpha'x$ je $\delta'^*(q'_0,\alpha'x) = \delta'(\delta'^*(q_0,\alpha'), x)$. +To je podle indukčního předpokladu rovno $\delta'([\delta^*(q_0,\alpha')],x)$. +Dosazením do definice~$\delta'$ získáme $[\delta(\delta^*(q_0,\alpha'), x)]$ +a to je rovno $[\delta^*(q_0,\alpha)]$. \qed -\example{Z~levého automatu na obrázku \figref{dfa-reduce} dostaneme faktorizací pravý automat.} +\example{Z~levého automatu na obrázku \figref{dfa-reduce} dostaneme odstraněním nedosažitelného +stavu~5 a faktorizací pravý automat.} \defn{ Automat je \df{redukovaný,} pokud jsou všechny jeho stavy dosažitelné a žádné @@ -948,20 +958,20 @@ Pak automat~$A'$ je redukovaný a přijímá stejný jazyk jako~$A$. } V~příštím oddílu navíc dokážeme, že všechny redukované automaty přijímající -tentýž jazyk jsou v~nějakém smyslu izomorfní. +tentýž jazyk \uv{vypadají stejně}. \subsection{Algoritmus na ekvivalenci stavů} Nyní konstrukci ekvivalence stavů formulujeme jako algoritmus. Postupně budeme vytvářet ekvivalence~$\approx_k$. Budeme je reprezentovat pomocí -ekvivalenčních tříd očíslovaných přirozenými čísly. Pro každy stav~$s$ si budeme +ekvivalenčních tříd očíslovaných přirozenými čísly. Pro každý stav~$s$ si budeme pamatovat číslo $t[s]$ třídy, kam patří. \algo{EkvivalenceStavů} \algin Automat $(Q,\Sigma,\delta,q_0,F)$ -\:Vytvoříme počáteční ekvivalenci~$\approx_0$: +\:Vytvoříme počáteční ekvivalenci~$\approx_0$: \cmt{přijímací a nepřijímací stavy} \::Pro všechny stavy $s\in Q$: -\:::Je-li $s\in F$, pak $t[s]\=2$, jinak $t[s]\=1$. +\:::Je-li $s\in F$, pak $t[s]\=1$, jinak $t[s]\=2$. \::$p \= 2$ \cmt{počet tříd} \:Pro $k=1,2,\ldots,|Q|$: \cmt{postupně vytváříme další ekvivalence~$\approx_k$} \::Pro všechny stavy $s\in Q$: @@ -1010,10 +1020,10 @@ Algoritmus tedy doběhne v~čase $\Theta(S^2A)$. \sectionstar{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ě. +Když jsme zkoumali jazyk $L_{01} = \{ \0^n\1^n \}$ nad abecedou $\{\0,\1\}$, 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 paměť potřebnou k~rozpoznání jazyka +zavést exaktně. \subsection{Syntaktická kongruence} @@ -1023,7 +1033,7 @@ takový, že právě jeden z~řetězců $\alpha\sigma$ a~$\beta\sigma$ leží v~ } \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.} +zde nerozlišujeme levé kongruence od pravých. V~oddílu \secref{algsouv} 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$. @@ -1031,17 +1041,21 @@ 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. -} +\examples{\tightlist{o} +\:Pro jazyk $L_{01} = \{\0^n\1^m\}$ nad abecedou $\{\0,\1\}$ jsou každá dvě slova +$\0^n$ a~$\0^m$ (kde $n\ne m$) navzájem rozlišitelná suffixem~$\1^n$, +takže syntaktická kongruence má nekonečně mnoho tříd. +\:Pro jazyk $\{ \0^n \mid n \bmod 3 = 0 \}$ nad abecedou $\{\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. +\:Pro tentýž jazyk nad abecedou $\{\0,\1\}$ se syntaktická kongruence změní: +přibude třída pro slova obsahující~$\1$, která nelze žádným suffixem rozšířit +na slovo z~jazyka. +\endlist} 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.) +je regulární. Dokážeme totiž vytvořit automat, jehož stavy odpovídají těmto třídám. +(Č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} @@ -1088,12 +1102,12 @@ takže $\alpha\sigma\in F$ právě tehdy, když $\beta\sigma\in F$. K~oddělení \qed \cor{ -Automatová kongruence~$\simeq_A$ je tedy zjemněním syntantické kongruence~$\sim_L$. +Automatová kongruence~$\simeq_A$ je tedy zjemněním syntaktické 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. +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$ @@ -1103,10 +1117,11 @@ 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. +Naopak existuje-li nějaký automat~$A$ přijímající jazyk~$L$, odstraníme z~něj +nedosažitelné stavy a pak uvážíme automatovou kongruenci~$\simeq_A$. +Její třídy odpovídají stavům automatu, takže jich je konečný počet. +A~jelikož automatová kongruence je zjemněním syntaktické, musí mít syntaktická +také konečně mnoho tříd. \qed \subsection{Izomorfismus automatů} @@ -1130,8 +1145,8 @@ 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)$. +\:$s\in F \Longleftrightarrow f(s)\in F'$, +\:$\delta(s,x) = t \Longleftrightarrow \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'$. @@ -1157,12 +1172,16 @@ Uvažme slovo $\alpha\in\Sigma^*$ délky~$n$ a výpočet automatu~$A$ nad tímto $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])$. +Indukcí ověříme, že tato \uv{čárkovaná} posloupnost je výpočtem automatu~$A'$ nad tímtéž slovem~$\alpha$. +Nejprve počáteční stav: $s'_0 = f(s_0) = f(q_0) = q'_0$. +Jako indukční krok chceme ukázat, že platí $s'_{i+1} = f(s_{i+1})$. Do pravé strany dosadíme +podle definice výpočtu $s_{i+1} = \delta(s_i, \alpha[i])$, čímž získáme +$s'_{i+1} = f(\delta(s_i, \alpha[i]))$. +Použitím definice izomorfismu získáme $s'_{i+1} = \delta'(f(s_i), \alpha[i])$. +Podle indukčního předpokladu je $f(s_i) = s'_i$, takže $s'_{i+1} = \delta'(s'_i, \alpha[i])$. +A~to odpovídá definici výpočtu automatu~$A'$. -Nakonec víme, že $s_n\in F$ právě tehdy, když $s'_n = f(s_n) \in F'$, takže automaty +Nakonec z~definice izomorfismu 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 @@ -1170,11 +1189,12 @@ znamená to, že automaty přijímají tentýž jazyk. \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$. +jsou izomorfní s~kanonickým automatem~$A_L$. Také zjistíme, že to jsou +přesně ty automaty pro jazyk~$L$, které mají minimální počet stavů. \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$ +Jeho 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$. } @@ -1183,14 +1203,16 @@ Nechť $T_s$ a~$T_t$ jsou třídy kongruence~$\simeq_A$ příslušné ke stavům 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$ +Stavy $s$ a~$t$ jsou ekvivalentní právě tehdy, když pro každé slovo~$\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$. +jako $\delta^*(q_0,\alpha\sigma)\in F \Leftrightarrow \delta^*(q_0,\beta\sigma)\in F$, +čili $\alpha\sigma\in L \Leftrightarrow \beta\sigma\in L$. +Tedy že slova $\alpha$ a~$\beta$ nejdou vzhledem k~$L$ oddělit žádným +suffixem, což je $\alpha\sim_L\beta$. \qed \cor{ -Automat bez nedosažitelnych stavů je redukovaný právě tehdy, když automatová kongruence je rovna +Automat bez nedosažitelných stavů je redukovaný právě tehdy, když automatová kongruence je rovna syntaktické kongruenci jazyka. Kanonický automat je proto vždy redukovaný. } @@ -1209,8 +1231,9 @@ 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 +rovny třídám syntaktické kongruence~$\sim_L$, což jsou stavy kanonického automatu. +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 @@ -1239,7 +1262,7 @@ 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. +právě jeden minimální automat. } \exercises @@ -1254,11 +1277,10 @@ objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~n \endexercises -\sectionstar{Algebraické souvislosti} +\sectionstar[algsouv]{Algebraické souvislosti} -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 -text je místy poněkud hutnější. +Kongruence, izomorfismy a faktorizace patří mezi základní pojmy obecné algebry. +Pojďme souvislosti mezi algebrou a automaty prozkoumat hlouběji. \subsection{Monoidy a kongruence} @@ -1266,12 +1288,12 @@ text je místy poněkud hutnější. \df{Monoid} je algebraická struktura $(X,\cdot,1)$, kde $X$ je množina prvků, $\cdot$ nějaká asociativní binární operace a~$1$ její jednotkový prvek (platí $1\cdot x = x\cdot 1 = x$ pro všechna $x\in X$). -Pokud $\cdot$ navíc komutuje, mluvíme o~komutativním monoidu. +Pokud $\cdot$ navíc komutuje, mluvíme o~\em{komutativním monoidu.} } \examples{\tightlist{o} \:Celá čísla s~násobením a jednotkovým prvkem~1 tvoří komutativní monoid. -\:Funkce z~$\{1,\ldots,n\}$ do $\{1,\ldots,n\}$ spolu se skládáním funkcí a identitou +\:Množina všech funkcí z~$\{1,\ldots,n\}$ do $\{1,\ldots,n\}$ spolu se skládáním funkcí a identitou tvoří monoid, který pro $n>1$ není komutativní. \endlist } @@ -1286,7 +1308,7 @@ a jako jednotkový prvek slouží prázdný řetězec~$\varepsilon$. Tomuto mono Kongruencí se obecně myslí ekvivalence na množině prvků, která je kompatibilní s~operacemi. To znamená, že nahradíme-li operandy ekvivalentními prvky, bude výsledek operace ekvivalentní s~původním výsledkem. Pro nekomutativní struktury -uvažujeme i~jednostranné kongruence. +uvažujeme i~jednostranné kongruence. Konkrétně pro monoidy: \defn{ Nechť $M=(X,\cdot,1)$ je monoid. O~ekvivalenci~$\sim$ na~$X$ řekneme, že je to: @@ -1315,22 +1337,25 @@ a $\beta\sigma$ musí také vést do téhož stavu. } \example{ -I~na ekvivalenci stavů v~automatu se můžeme dívat jako na kongruenci, +I~na ekvivalenci stavů~$\approx$ v~automatu se můžeme dívat jako na kongruenci, ovšem na jiné algebraické struktuře. Pro každý znak abecedy~$x$ definujeme funkci $f_x: Q\rightarrow Q$, která bude říkat, jak se přechází mezi stavy po přečtení~$x$. Tedy $f_x(s) = \delta(s,x)$. Po kongruenci pak budeme chtít, -aby byla kompatibilní se všemi~$f_x$, čili aby bylo $f_x(s)\sim f_x(s')$, -kdykoliv $s\sim s'$. A~také aby byla kompatibilní s~vlastností \uv{být -koncový stav}, tedy z~$s\sim s'$ plynulo $s\in F \Leftrightarrow s'\in F$. +aby byla kompatibilní se všemi~$f_x$, čili aby bylo $f_x(s)\approx f_x(s')$, +kdykoliv $s\approx s'$. A~také aby byla kompatibilní s~vlastností \uv{být +koncový stav}, tedy z~$s\approx s'$ plynulo $s\in F \Leftrightarrow s'\in F$. } Kdykoliv máme nějakou kongruenci, můžeme podle ní strukturu faktorizovat. -Získame tak strukturu, jejíž prvky jsou ekvivalenční třídy kongruence +Získáme tak strukturu, jejíž prvky jsou ekvivalenční třídy kongruence a operace zdědíme z~reprezentantů tříd -- z~vlastností kongruence pak -plyne, že nezáleží na volbě reprezentantů. +plyne, že nezáleží na volbě reprezentantů. Tím jsme \uv{slepili ekvivalentní +prvky do jednoho}, jako například v~redukci automatu. \subsection{Polookruh jazyků} +Také jazyky zapadají do zajímavých algebraických struktur. + \defn{ \df{Polookruh} je algebraická struktura $(X,+,\cdot,0,1)$, kde $+$ a~$\cdot$ jsou binární operace, $(X,\cdot,1)$ tvoří monoid, $(X,+,0)$ tvoří komutativní monoid @@ -1339,7 +1364,7 @@ $$ x\cdot (y+z) = x\cdot y + x\cdot z, \quad (x+y)\cdot z = x\cdot z + y\cdot z. $$ -Pokud navíc $\cdot$ komutuje, mluvíme o~komutativním polookruhu. +Pokud navíc $\cdot$ komutuje, mluvíme o~\em{komutativním polookruhu.} } \note{ @@ -1350,6 +1375,7 @@ Pokud navíc $\cdot$ komutuje, mluvíme o~komutativním polookruhu. \examples{\tightlist{o} \:Celá čísla $(\Z,+,\cdot,0,1)$ s~běžnými operacemi tvoří komutativní okruh. +\:Přirozená čísla $(\N,+,\cdot,0,1)$ s~běžnými operacemi tvoří komutativní polookruh. \:Matice $\R^{n\times n}$ spolu s~maticovým sčítáním a násobením, nulovou maticí a jednotkovou maticí tvoří okruh, který pro $n>1$ nekomutuje. \:Booleova algebra $(\{0,1\},\lor,\land,0,1)$ tvoří komutativní polookruh. @@ -1473,8 +1499,12 @@ a řešení soustavy z~nich umíme vyjádřit pomocí operací regulárních vý \exercises \ex{Uvažme, co by se stalo, kdybychom syntaktickou kongruenci definovali přes -prefixy místo suffixů. Bude nadále platit Myhillova-Nerodova věta? Bude mít -syntaktická kongruence nějaký vztah k~automatům?} +prefixy místo suffixů. Tomu se říká \em{pravá syntaktická ekvivalence} a je to +levá kongruence na monoidu~$\Sigma^*$. Bude nadále platit Myhillova-Nerodova věta? +Bude mít tato syntaktická kongruence nějaký vztah k~automatům?} + +\exx{Jak vypadá oboustranná syntaktická kongruence? Platí pro ni Myhillova-Ne\-rodo\-va věta? +Co dá faktorizace~$\Sigma^*$ touto kongruencí?} \ex{Charakterizujte všechna řešení rovnice $X=AX\cup B$ v~případě, že $\varepsilon\in A$. } diff --git a/TODO b/TODO index 60a655c8b680bca810aa714a04ea6bffc090d291..e36eb8d5b82b4a0f1054a737345d83f39fe8e0b6 100644 --- a/TODO +++ b/TODO @@ -2,6 +2,9 @@ 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ů +- cvičení na syntaktické kongruence Bezkontextové: