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
3cac856b
Commit
3cac856b
authored
1 year ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Algebra dopsána a oddělena do samostatného oddílu
parent
68b3bb90
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
+77
-21
77 additions, 21 deletions
01-regular/regular.tex
with
77 additions
and
21 deletions
01-regular/regular.tex
+
77
−
21
View file @
3cac856b
...
...
@@ -1008,21 +1008,15 @@ Algoritmus tedy doběhne v~čase $\Theta(S^2A)$.
\endexercises
\sectionstar
{
Algebraické souvislosti
}
{
\bf
Pozor! Tato kapitola je ve vývoji.
}
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
{
Kanonické automaty
}
\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ě.
\subsection
{
Syntaktická kongruence
}
\defn
{
Nechť
$
L
$
je nějaký jazyk nad abecedou~
$
\Sigma
$
. Řetězce
$
\alpha
,
\beta
\in
\Sigma
^
*
$
jsou rozlišitelné vzhledem k~
$
L
$
, pokud existuje nějaký suffix
$
\sigma\in\Sigma
^
*
$
takový, že právě jeden z~řetězců
$
\alpha\sigma
$
a~
$
\beta\sigma
$
leží v~
$
L
$
.
...
...
@@ -1248,7 +1242,25 @@ Tudíž je izomorfní s~kanonickým automatem~$A_L$. Jazyk má tedy (až na izom
právě jedne minimální automat.
}
\subsectionstar
{
Monoidy a polookruhy
}
\exercises
\ex
{
Homomorfismus se od izomorfismu liší tím, že nevyžadujeme, aby zobrazení bylo bijektivní.
Můžeme si tedy představit, že je to izomorfismus jednoho objektu s~nějakou podmnožinou druhého
objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~něj také plyne,
že automaty rozpoznávají stejný jazyk.
}
\ex
{
Formulujte definici izomorfismu pro nedeterministické automaty.
}
\endexercises
\sectionstar
{
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
důkazy jsou zde poněkud hutnější.
\subsection
{
Monoidy a kongruence
}
\defn
{
\df
{
Monoid
}
je algebraická struktura
$
(
X,
\cdot
,
1
)
$
, kde
$
X
$
je množina prvků,
...
...
@@ -1266,11 +1278,59 @@ Pokud $\cdot$ navíc komutuje, mluvíme o~komutativním monoidu.
\defn
{
Nad libovolnou abecedou~
$
\Sigma
$
můžeme definovat monoid
$
(
\Sigma
^
*
,
\cdot
,
\varepsilon
)
$
.
Jeho prvky řetězce, binární operac
e j
e zřetězení (rozmyslete si asociativitu)
Jeho prvky
jsou
řetězce,
jako
binární operac
i zvolím
e 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ů
}
.
}
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.
\defn
{
Nechť
$
M
=(
X,
\cdot
,
1
)
$
je monoid. O~ekvivalenci~
$
\sim
$
na~
$
X
$
řekneme, že je to:
\list
{
o
}
\:\df
{
kongruence
}
na~
$
M
$
, pokud z~
$
x
\sim
x'
$
a
$
y
\sim
y'
$
plyne
$
x
\cdot
y
\sim
x'
\cdot
y'
$
,
\:\df
{
levá kongruence
}
na~
$
M
$
, pokud z~
$
y
\sim
y'
$
plyne
$
x
\cdot
y
\sim
x
\cdot
y'
$
,
\:\df
{
pravá kongruence
}
na~
$
M
$
, pokud z~
$
x
\sim
x'
$
plyne
$
x
\cdot
y
\sim
x'
\cdot
y
$
.
\endlist
}
\obs
{
$
\sim
$
je kongruence, pokud je to současně levá i pravá kongruence.
}
\example
{
Syntaktická kongruence~
$
\sim
_
L
$
pro jazyk~
$
L
$
má vlastnosti pravé kongruence:
pokud řetězce
$
\alpha
$
a~
$
\beta
$
nejdou rozlišit vzhledem k~
$
L
$
žádným suffixem,
pak ani
$
\alpha\sigma
$
a~
$
\beta\sigma
$
nejdou rozlišit žádným suffixem.
Překvapivě se jí ale říká
\em
{
levá syntaktická ekvivalence.
}
}
\example
{
Automatová kongruence~
$
\simeq
_
A
$
má také vlastnosti pravé kongruence:
pokud řetězce
$
\alpha
$
a~
$
\beta
$
vedou do téhož stavu, pak
$
\alpha\sigma
$
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,
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
$
.
}
Kdykoliv máme nějakou kongruenci, můžeme podle ní strukturu faktorizovat.
Získame 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ů.
\subsection
{
Polookruh jazyků
}
\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
...
...
@@ -1308,10 +1368,10 @@ jsou svázány distributivitou $(A\cup B)\cdot C = A\cdot C \cup B\cdot C$
a analogicky z~opačné strany.
}
\subsection
star
{
Lineární rovnice pro jazyky
}
\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 v~okruhu jazyků
jazyk a
$
A
$
a~
$
B
$
známé jazyky. To je analogie lineárních rovnic, jen v~
polo
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
$
.
...
...
@@ -1412,15 +1472,11 @@ a řešení soustavy z~nich umíme vyjádřit pomocí operací regulárních vý
\exercises
\ex
{
Homomorfismus se od izomorfismu liší tím, že nevyžadujeme, aby zobrazení bylo bijektivní.
Můžeme si tedy představit, že je to izomorfismus jednoho objektu s~nějakou podmnožinou druhého
objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~něj také plyne,
že automaty rozpoznávají stejný jazyk.
}
\ex
{
Formulujte definici izomorfismu pro nedeterministické automaty.
}
\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?
}
\ex
x
{
Charakterizujte všechna řešení rovnice
$
X
=
AX
\cup
B
$
v~případě, že
$
\varepsilon\in
A
$
.
\ex
{
Charakterizujte všechna řešení rovnice
$
X
=
AX
\cup
B
$
v~případě, že
$
\varepsilon\in
A
$
.
}
\endexercises
...
...
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