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
2de82188
Commit
2de82188
authored
1 year ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Kanonické automaty a Myhill-Nerode
parent
d95ba595
No related branches found
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
+238
-95
238 additions, 95 deletions
01-regular/regular.tex
with
238 additions
and
95 deletions
01-regular/regular.tex
+
238
−
95
View file @
2de82188
...
@@ -107,7 +107,7 @@ Tedy existuje-li konečný automat~$A$ takový, že $L = L(A)$.
...
@@ -107,7 +107,7 @@ Tedy existuje-li konečný automat~$A$ takový, že $L = L(A)$.
přijímací stavy mají tučný zelený okraj.
}
přijímací stavy mají tučný zelený okraj.
}
\examplen
{
počítání jedniček
}{
\examplen
{
počítání jedniček
}{
Uvažme jazyk
$
L
_
3
=
\{
\alpha\in\{\0
,
\1\}
\mid
|
\alpha
|
_{
\1
}
\bmod
3
=
0
\}
$
,
Uvažme jazyk
$
L
_
3
=
\{
\alpha\in\{\0
,
\1\}
^
*
\mid
|
\alpha
|
_{
\1
}
\bmod
3
=
0
\}
$
,
tedy jazyk slov, jejichž počet jedniček je dělitelný třemi. Tento jazyk je regulární.
tedy jazyk slov, jejichž počet jedniček je dělitelný třemi. Tento jazyk je regulární.
O~tom se snadno přesvědčíme sestrojením automatu: bude mít stavy
$
\{
0
,
1
,
2
\}
$
odpovídající
O~tom se snadno přesvědčíme sestrojením automatu: bude mít stavy
$
\{
0
,
1
,
2
\}
$
odpovídající
možným zbytkům po dělení počtu zatím přečtených jedniček třemi. Stav~0 bude jak počáteční,
možným zbytkům po dělení počtu zatím přečtených jedniček třemi. Stav~0 bude jak počáteční,
...
@@ -905,7 +905,7 @@ Nyní ukážeme, jak ekvivalentní stavy sloučit:
...
@@ -905,7 +905,7 @@ 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
)
$
DFA,
$
\approx
$
ekvivalence jeho stavů
a pro každý stav
$
s
\in
Q
$
je
$
[
s
]
$
jeho ekvivalenční třída.
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:
Pak definujeme
\df
{
faktorový automat
}
$
A
/
\mathord
{
\approx
}
=
(
Q',
\Sigma
,
\delta
',q'
_
0
,F'
)
$
, kde:
\
tight
list
{
o
}
\list
{
o
}
\:
$
Q'
=
\{
[
s
]
\mid
s
\in
Q
\}
$
,
\:
$
Q'
=
\{
[
s
]
\mid
s
\in
Q
\}
$
,
\:
$
\delta
'
([
s
]
,x
)
=
[
t
]
$
, kdykoliv
$
\delta
(
s,x
)=
t
$
,
\:
$
\delta
'
([
s
]
,x
)
=
[
t
]
$
, kdykoliv
$
\delta
(
s,x
)=
t
$
,
\:
$
q'
_
0
=
[
q
_
0
]
$
,
\:
$
q'
_
0
=
[
q
_
0
]
$
,
...
@@ -1016,7 +1016,239 @@ V~tomto oddílu prozkoumáme některé souvislosti mezi teorií automatů
...
@@ -1016,7 +1016,239 @@ 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
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ší.
důkazy jsou zde poněkud hutnější.
\subsection
{
Monoidy a polookruhy
}
\subsection
{
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ě.
\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
$
.
}
\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.
}
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
$
.
}
\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.
}
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.)
\defn
{
\df
{
Kanonický automat
}
pro jazyk~
$
L
\subset\Sigma
^
*
$
je
$
A
_
L
=
(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
, kde:
\list
{
o
}
\:
$
Q
=
\{
[
\alpha
]
\mid
\alpha\in\Sigma
^
*
\}
$
je množina ekvivalenčních tříd syntaktické ekvivalence~
$
\sim
_
L
$
,
\:
$
\delta
([
\alpha
]
,x
)
=
[
\alpha
x
]
$
,
\:
$
q
_
0
=
[
\varepsilon
]
$
,
\:
$
F
=
\{
[
\alpha
]
\mid
\alpha\in
L
\}
$
.
\endlist
}
\obs
{
Opět nezáleží na volbě reprezentantů tříd. Kdykoliv
$
[
\alpha
]=[
\alpha
'
]
$
, tak slova
$
\alpha
$
a~
$
\alpha
'
$
nejsou rozlišitelná žádným suffixem, a~proto ani
$
\alpha
x
$
a
$
\alpha
' x
$
nemohou být rozlišitelná, takže
$
[
\alpha
x
]
=
[
\alpha
' x
]
$
. Také z~
$
[
\alpha
]=[
\alpha
'
]
$
plyne, že
$
\alpha
$
i~
$
\alpha
'
$
jsou buď obě v~
$
L
$
, nebo obě mimo~
$
L
$
-- jinak by slova
byla rozlišitelná prázdným suffixem.
}
\lemma
{
Kanonický automat~
$
A
_
L
$
přijímá jazyk~
$
L
$
.
}
\proof
Indukcí podle délky řetězce~
$
\alpha
$
dokážeme, že
$
\delta
(
q
_
0
,
\alpha
)
=
[
\alpha
]
$
.
Stav
$
[
\alpha
]
$
je přijímací právě tehdy, když
$
\alpha\in
L
$
.
\qed
Podobně se můžeme dívat na všechny automaty -- stavům vždy můžeme přiřadit nějaké
ekvivalenční třídy slov.
\defn
{
\df
{
Automatová kongruence
}
pro automatu
$
A
=(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
je binární relace
$
\simeq
_
A
$
na množině slov
$
\Sigma
^
*
$
taková, že
$
\alpha\simeq
_
A
\beta
$
právě tehdy, když
po zpracování slov
$
\alpha
$
a~
$
\beta
$
automat skončí ve stejném stavu (tedy
$
\delta
^
*(
q
_
0
,
\alpha
)
=
\delta
^
*(
q
_
0
,
\beta
)
$
).
}
\lemma
{
Nechť
$
L
$
je jazyk automatu~
$
A
$
a
$
\alpha\simeq
_
A
\beta
$
. Potom slova
$
\alpha
$
a
$
\beta
$
nejsou rozlišitelná žádným suffixem, takže platí
$
\alpha\sim
_
L
\beta
$
.
}
\proof
Pokusme se
$
\alpha
$
od~
$
\beta
$
oddělit nějakým suffixem~
$
\sigma
$
.
Automat po zpracování
$
\alpha
$
a~
$
\beta
$
skončí v~tomtéž stavu~
$
s
$
.
Potom
$
\delta
^
*(
q
_
0
,
\alpha\sigma
)
=
\delta
^
*(
q
_
0
,
\beta\sigma
)
=
\delta
^
*(
s,
\sigma
)
$
,
takže
$
\alpha\sigma\in
F
$
právě tehdy, když
$
\beta\sigma\in
F
$
. K~oddělení tedy nedošlo.
\qed
\cor
{
Automatová kongruence~
$
\simeq
_
A
$
je tedy zjemněním syntantické 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.
\theoremn
{
Myhillova-Nerodova
}{
Jazyk~
$
L
$
je regulární právě tehdy, když jeho syntaktická kongruence~
$
\sim
_
L
$
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.
\qed
\subsection
{
Izomorfismus automatů
}
Mnoha různými odvětvími matematiky se jako červená nit vine pojem
\em
{
izomorfismu.
}
Odhlédneme-li od detailů, vždy se tím myslí bijekce mezi nějakými dvěma množinami,
která zachovává nějaké vlastnosti.
\example
{
Izomorfismus neorientovaných grafů
$
G
=(
V,E
)
$
a
$
G'
=(
V',E'
)
$
je bijekce
$
f: V
\rightarrow
V'
$
, která zachovává vlastnost
\uv
{
být spojen hranou
}
.
Tedy
$
\{
u,v
\}\in
E
$
právě tehdy, když
$
\{
f
(
u
)
,f
(
v
)
\}
\in
E'
$
.
Existuje-li taková bijekce, řekneme, že grafy
$
G
$
a~
$
G'
$
jsou izomorfní,
a představujeme si, že se liší jenom pojmenováním vrcholů. Snadno nahlédneme, že vlastnost
\uv
{
být izomorfní
}
je ekvivalence na grafech.
}
Podobně můžeme definovat izomorfismus konečných automatů.
\defn
{
\df
{
Izomorfismus automatů
}
$
A
=
(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
a
$
A'
=
(
Q',
\Sigma
,
\delta
',q'
_
0
,F'
)
$
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
)
$
.
\endlist
Pokud taková bijekce existuje, řekneme, že automaty
$
A
$
a~
$
A'
$
jsou izomorfní, což značíme
$
A
\cong
A'
$
.
}
\obs
{
Relace~
$
\cong
$
je ekvivalence na automatech.
}
\note
{
Izomorfismus tedy zachovává vlastnosti
\uv
{
být počáteční stav
}
,
\uv
{
být koncový stav
}
a přechody mezi stavy. Izomorfní automaty se proto liší jen pojmenováním stavů. S~touto
představou je následující tvrzení jen cvičením z~dosazování do definic:
}
\lemma
{
Izomorfní automaty rozpoznávají tentýž jazyk.
}
\proof
Nechť mezi automaty
$
A
=(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
a
$
A'
=(
Q',
\Sigma
,
\delta
',q'
_
0
,F'
)
$
vede izomorfismus~
$
f
$
.
Uvažme slovo
$
\alpha\in\Sigma
^
*
$
délky~
$
n
$
a výpočet automatu~
$
A
$
nad tímto slovem. To je nějaká posloupnost stavů
$
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
])
$
.
Nakonec 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
\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
$
.
\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
$
leží v~těže třídě syntaktické kongruence~
$
\sim
_
L
$
.
}
\proof
Nechť
$
T
_
s
$
a~
$
T
_
t
$
jsou třídy kongruence~
$
\simeq
_
A
$
příslušné ke stavům~
$
s
$
,
$
t
$
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
$
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
$
.
\qed
\cor
{
Automat bez nedosažitelnych stavů je redukovaný právě tehdy, když automatová kongruence je rovna
syntaktické kongruenci jazyka. Kanonický automat je proto vždy redukovaný.
}
Rovnost tříd obou kongruencí nám dá postup, jak sestrojit izomorfismus
s~kanonickým automatem. Z~toho plyne následující věta, která se někdy považuje
za druhou část tvrzení Myhillovy-Nerodovy věty.
\theorem
{
Nechť~
$
A
$
je redukovaný automat přijímající jazyk~
$
L
$
.
Potom~
$
A
$
je izomorfní s~kanonickým automatem pro jazyk~
$
L
$
.
}
\proof
Nechť
$
A
=(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
je daný redukovaný automat
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
automatů. To už je jednoduché cvičení na dosazování do definic.
Nejprve ověříme kompatibilitu s~přechodovou funkcí. Chceme, aby platilo
$
f
(
\delta
(
s,x
))
=
\delta
'
(
f
(
s
)
,x
)
$
.
Jelikož automat~
$
A
$
má všechny stavy dosažitelné, existuje nějaké slova~
$
\alpha
$
,
po jehož zpracování automat skončí ve stavu~
$
s
$
. Platí tedy
$
\alpha\in
f
(
s
)
$
,
což je totéž jako
$
f
(
s
)
=
[
\alpha
]
$
.
Po zpracování slova
$
\alpha
x
$
automat skončí ve stavu
$
s'
=
\delta
(
s,x
)
$
,
jehož třída je
$
f
(
s'
)
=
[
\alpha
x
]
$
.
To odpovídá přechodu kanonického automatu: podle jeho definice je
$
\delta
'
([
\alpha
]
,x
)
=
[
\alpha
x
]
$
.
Pak ověříme, že
$
f
(
q
_
0
)
=
q'
_
0
$
. Třída
$
f
(
q
_
0
)
$
obsahuje slova, po kterých automat
skončí v~počátečním stavu, takže
$
f
(
q
_
0
)
=
[
\varepsilon
]
$
. To je ovšem~
$
q'
_
0
$
z~definice
kanonického automatu.
Nakonec potřebujeme zkontrolovat kompatibilitu s~přijímacími stavy:
Stav~
$
s
$
s~třídou
$
f
(
s
)
=
[
\alpha
]
$
je přijímací právě tehdy, když
$
\alpha\in
L
$
,
což je právě když
$
f
(
s
)
\in
F'
$
.
\qed
\defn
{
Automat
$
A
$
je
\df
{
minimální,
}
pokud má mezi všemi automaty přijímajícími jazyk~
$
L
$
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.
}
\subsectionstar
{
Monoidy a polookruhy
}
\defn
{
\defn
{
\df
{
Monoid
}
je algebraická struktura
$
(
X,
\cdot
,
1
)
$
, kde
$
X
$
je množina prvků,
\df
{
Monoid
}
je algebraická struktura
$
(
X,
\cdot
,
1
)
$
, kde
$
X
$
je množina prvků,
...
@@ -1076,7 +1308,7 @@ jsou svázány distributivitou $(A\cup B)\cdot C = A\cdot C \cup B\cdot C$
...
@@ -1076,7 +1308,7 @@ jsou svázány distributivitou $(A\cup B)\cdot C = A\cdot C \cup B\cdot C$
a analogicky z~opačné strany.
a analogicky z~opačné strany.
}
}
\subsection
{
Lineární rovnice pro jazyky
}
\subsection
star
{
Lineární rovnice pro jazyky
}
Pojďme prozkoumat, jak se chovají rovnice typu
$
X
=
AX
\cup
B
$
, kde
$
X
$
je neznámý
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~okruhu jazyků
...
@@ -1178,99 +1410,8 @@ To vyjde, neboť koeficienty soustavy jsou konečné, a~tedy regulární jazyky
...
@@ -1178,99 +1410,8 @@ 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ů.
a řešení soustavy z~nich umíme vyjádřit pomocí operací regulárních výrazů.
}
}
\subsection
{
Izomorfismus automatů
}
Mnoha různými odvětvími matematiky se jako červená nit vine pojem
\em
{
izomorfismu.
}
Odhlédneme-li od detailů, vždy se tím myslí bijekce mezi nějakými dvěma množinami,
která zachovává nějaké vlastnosti.
\example
{
Izomorfismus neorientovaných grafů
$
G
=(
V,E
)
$
a
$
G'
=(
V',E'
)
$
je bijekce
$
f: V
\rightarrow
V'
$
, která zachovává vlastnost
\uv
{
být spojen hranou
}
.
Tedy
$
\{
u,v
\}\in
E
$
právě tehdy, když
$
\{
f
(
u
)
,f
(
v
)
\}
\in
E'
$
.
Existuje-li taková bijekce, řekneme, že grafy
$
G
$
a~
$
G'
$
jsou izomorfní,
a představujeme si, že se liší jenom pojmenováním vrcholů. Snadno nahlédneme, že vlastnost
\uv
{
být izomorfní
}
je ekvivalence na grafech.
}
Podobně můžeme definovat izomorfismus konečných automatů.
\defn
{
\df
{
Izomorfismus automatů
}
$
A
=
(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
a
$
A'
=
(
Q',
\Sigma
,
\delta
',q'
_
0
,F'
)
$
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
)
$
.
\endlist
Pokud taková bijekce existuje, řekneme, že automaty
$
A
$
a~
$
A'
$
jsou izomorfní, což značíme
$
A
\cong
A'
$
.
}
\obs
{
Relace~
$
\cong
$
je ekvivalence na automatech.
}
\note
{
Izomorfismus tedy zachovává vlastnosti
\uv
{
být počáteční stav
}
,
\uv
{
být koncový stav
}
a přechody mezi stavy. Izomorfní automaty se tedy liší jen pojmenováním stavů. S~touto
představou je následující tvrzení jen cvičením z~dosazování do definic:
}
\lemma
{
Izomorfní automaty rozpoznávají tentýž jazyk.
}
\proof
Nechť mezi automaty
$
A
=(
Q,
\Sigma
,
\delta
,q
_
0
,F
)
$
a
$
A'
=(
Q',
\Sigma
,
\delta
',q'
_
0
,F'
)
$
vede izomorfismus~
$
f
$
.
Uvažme slovo
$
\alpha\in\Sigma
^
*
$
délky~
$
n
$
a výpočet automatu~
$
A
$
nad tímto slovem. To je nějaká posloupnost stavů
$
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
])
$
.
Nakonec 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
\subsection
{
Redukce automatu
}
TODO:
\list
{
o
}
\:
Odstranění nedosažitelných stavů (možná později?)
\:
Připomenutí ekvivalencí a jejich tříd, zjemnění ekvivalence
\:
Ekvivalence stavů
\:
Algoritmus na konstrukci ekvivalence (indukce podle délky oddělujícího slova)
\:
Cvičení: využití algoritmu pro test, zda dva automaty přijímají tentýž jazyk
\:
Faktorizace stavů
$
\Rightarrow
$
redukovaný automat, jeho ekvivalence stavů je triviální
\:
Plán: dva redukované automaty pro tentýž jazyk jsou izomorfní
\endlist
\subsection
{
Kongruence slov a Myhillova-Nerodova věta
}
TODO:
\list
{
o
}
\:
Co je to kongruence na monoidu
\:
Automatová kongruence (potřebujeme všechny stavy dosažitelné)
\:
Syntaktická kongruence (asi jen jednostranná)
\:
Automatová kongruence je zjemněním syntaktické
\:
Myhillova-Nerodova věta: jazyk je regulární
$
\Leftrightarrow
$
levá/pravá syntaktická
kongruence má konečně mnoho tříd.
\:
Nějaké příklady jazyků a jejich kongruencí
\:
Dva stavy jsou ekvivalentní, pokud jejich kongruenční třídy patří do téže třídy syntaktické kongruence.
\:
Pokud dva automaty mají tutéž automatovou kongruenci, jsou izomorfní.
\:
Důsledek: Redukované automaty pro tentýž jazyk jsou izomorfní.
\endlist
\exercises
\exercises
\ex
{
Charakterizujte všechna řešení rovnice
$
X
=
AX
\cup
B
$
v~případě, že
$
\varepsilon\in
A
$
.
\ex
{
Homomorfismus se od izomorfismu liší tím, že nevyžadujeme, aby zobrazení bylo bijektivní.
\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
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,
objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~něj také plyne,
...
@@ -1278,6 +1419,8 @@ objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~n
...
@@ -1278,6 +1419,8 @@ objektu. Rozmyslete si, co znamená homomorfismus automatů, a~ukažte, že z~n
}
}
\ex
{
Formulujte definici izomorfismu pro nedeterministické automaty.
}
\ex
{
Formulujte definici izomorfismu pro nedeterministické automaty.
}
\exx
{
Charakterizujte všechna řešení rovnice
$
X
=
AX
\cup
B
$
v~případě, že
$
\varepsilon\in
A
$
.
}
}
\endexercises
\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