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

Regular: Monoidy a okruhy

parent 82c1b6d9
Branches
No related tags found
No related merge requests found
......@@ -788,16 +788,70 @@ 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 okruhy}
\defn{
\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$).\foot{Je to tedy něco jako grupa,
ale k~$+$ nemusí existovat inverze.}
Pokud $\cdot$ navíc komutuje, mluvíme o~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
tvoří monoid, který pro $n>1$ není komutativní.
\endlist
}
\defn{
Nad libovolnou abecedou~$\Sigma$ můžeme definovat monoid $(\Sigma^*, \cdot, \varepsilon)$.
Jeho prvky řetězce, binární operace je zřetězení (rozmyslete si asociativitu)
a jako jednotkový prvek slouží prázdný řetězec~$\varepsilon$. Tomuto monoidu se říká
\df{volný monoid} nad abecedou~$\Sigma$ nebo také \df{monoid řetězců}.
}
\defn{
\df{Okruh} je algebraická struktura $(X,+,\cdot,0,1)$, kde $+$ a~$\cdot$ jsou
binární operace, $(X,\cdot,1)$ tvoří monoid, $(X,+,0)$ tvoří komutativní monoid
a navíc jsou $+$ a~$\cdot$ svázány distributivitou z~obou stran:
$$
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 okruhu.\foot{Okruh je tedy něco
jako těleso, jen v~něm nemusí jít dělit.}
}
\examples{\tightlist{o}
\:Celá čísla $(\Z,+,\cdot,0,1)$ s~běžnými operacemi tvoří komutativní okruh.
\: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$ komutuje.
\endlist}
\defn{
Uvažme množinu $2^{\Sigma^*}$ všech jazyků nad abecedou~$\Sigma$.
Když k~ní přidáme operaci $\cup$ sjednocení jazyků s~jednotkovým prvkem~$\emptyset$
a operaci $\cdot$ zřetězení jazyků s~jednotkovým prvkem~$\{\varepsilon\}$,
vznikne okruh. Říkáme mu \df{okruh jazyků} nad~$\Sigma$.
}
\note{
Snadno ověříme, že $\cup$ komutuje, $\cdot$ nekomutuje a tyto dvě operace
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}
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 místo
násobení zřetězujeme a místo sčítání sjednocujeme. Aby analogie lépe vynikla,
budeme psát $+$ místo~$\cup$.
jazyk a $A$ a~$B$ známé jazyky. To je analogie lineárních rovnic, jen v~okruhu jazyků
místo tělesa reálných čísel. Aby analogie lépe vynikla, budeme na chvíli psát $+$ místo~$\cup$.
\lemma{Pro každé dva jazyky $A$ a~$B$ existuje jazyk~$X$ takový, že $X=AX+B$.
Pokud jazyk~$A$ neobsahuje prázdné slovo, je~$X$ jednoznačně určen.
Jsou-li navíc $A$ a~$B$ regulární jazyky, pak $X$~je také regulární.
Navíc $X$ lze z~$A$ a~$B$ získat operacemi regulárních výrazů.
}
\proof
......@@ -817,9 +871,6 @@ $A$ neobsahuje prázdné slovo, naše~$\alpha'$ je neprázdné, takže $\xi$ mus
než~$\alpha$. Ovšem $\alpha$ bylo nejkratší špatné slovo, tedy $\xi$ je dobré. Proto
musí $\xi$ ležet nejen v~$X_1$, ale i v~$X_2$. Takže $\alpha'\xi \in AX_2 \subseteq X_2$,
což je ve sporu s~tím, že $\alpha$ bylo špatné.
A~nakonec regularita: jelikož regulární jazyky jsou uzavřené na iteraci
i zřetězení, pro $A$ a~$B$ regulární je řešení $X=A^*B$ také regulární.
\qed
Dále uvažme soustavu lineárních rovnic tvaru
......@@ -833,8 +884,8 @@ Tuto soustavu můžeme řešit postupem podobným Gaussově eliminaci.
\lemma{
Pokud žádný z~jazyků $A_{ij}$ neobsahuje prázdné slovo, má soustava rovnic
$(*)$ právě jedno řešení $X_1$, \dots, $X_n$. Jsou-li navíc všechny $A_{ij}$ a~$B_i$ regulární,
pak $X_1$ až~$X_n$ jsou také regulární.
$(*)$ právě jedno řešení $X_1$, \dots, $X_n$. Toto řešení lze z~jazyků
$A_{ij}$ a~$B_i$ vyjádřit operacemi regulárních výrazů.
}
\proof
......@@ -864,11 +915,13 @@ To je soustava $n-1$ rovnic o~$n-1$ neznámých, jejíž koeficienty $A'_{ij}$
jsou zase jazyky neobsahující prázdné slovo. Podle indukčního předpokladu
má jednoznačné řešení, k~němuž umíme jednoznačně doplnit~$X_1$ a získat tak
řešení původní soustavy.
Zbývá si uvědomit, že všechny operace, které jsme při výpočtu řešení použili,
zachovávají regularitu.
\qed
\cor{
Pokud jsou všechny koeficienty soustavy regulární jazyky, řešení $X_1$, \dots, $X_n$
je také tvořeno regulárními jazyky.
}
\cor{
Řešení soustav rovnic nám dává alternativní důkaz Kleeneho věty (její netriviální implikace).
Mějme deterministický automat s~počátečním stavem~$q_0$ a dalšími stavy $q_1$, \dots, $q_n$.
......@@ -887,8 +940,9 @@ a $B_i=\{\varepsilon\}$, pokud $q_i$ je přijímací stav, a~jinak $B_i=\emptyse
Vytvořili jsme soustavu $n+1$ rovnic o~$n+1$ neznámých, jejíž koeficienty
$A_{ij}$ neobsahují prázdné slovo. Podle předchozího lemmatu má tedy jednoznačné
řešení. Z~něj si vybereme jazyk~$X_0$ a rozmyslíme si, že jsme ho vytvořili
pomocí operací, které máme k~dispozici v~regulárních výrazech.
řešení. Z~něj si vybereme jazyk~$X_0$ a zapíšeme ho jako regulární výraz.
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ů.
}
\exercises
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment