Skip to content
Snippets Groups Projects
Commit 61bb1bd2 authored by Martin Mareš's avatar Martin Mareš
Browse files

Korektury "algebraických" oddílů

parent 05ceb642
No related branches found
No related tags found
No related merge requests found
......@@ -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$.
}
......
......
......@@ -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é:
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment