Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
automaty
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
automaty
Commits
e4d919a8
Commit
e4d919a8
authored
1 year ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Regular: Monoidy a okruhy
parent
82c1b6d9
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
01-regular/regular.tex
+68
-14
68 additions, 14 deletions
01-regular/regular.tex
with
68 additions
and
14 deletions
01-regular/regular.tex
+
68
−
14
View file @
e4d919a8
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment