From e4d919a80859cfaab052753f35aa1871ae70e5af Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Tue, 14 May 2024 19:56:19 +0200 Subject: [PATCH] Regular: Monoidy a okruhy --- 01-regular/regular.tex | 82 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/01-regular/regular.tex b/01-regular/regular.tex index 60eee0c..60025f9 100644 --- a/01-regular/regular.tex +++ b/01-regular/regular.tex @@ -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 -- GitLab