Języki, automaty i obliczenia/Wykład 1: Słowa, katenacja - elementy teorii półgrup, półgrupy i monoidy wolne: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
{theor}{TWIERDZENIE}[section] | |||
{rem}{UWAGA}[section] | |||
{corol}{WNIOSEK}[section] | |||
{fact}{FAKT}[section] | |||
{ex}{PRZYK{}AD}[section] | |||
{defin}{DEFINICJA}[section] | |||
{lem}{LEMAT}[section] | |||
{prf}{DOWÓD} | |||
{Elementy teorii pó{}grup,<br>pó{}grupy i monoidy wolne} | |||
; Wprowadzenie | |||
: Teoria języków formalnych, automatów i gramatyk to klasyczna dzisiaj teoria, która | |||
zajmuje istotne miejsce w informatyce. Proponuje ona matematyczne modele obliczeń, które wykorzystywane | |||
są w praktyce, na przykład w przetwarzaniu tekstu, projektowaniu kompilatorów, w językach programowania | |||
czy też sztucznej inteligencji. Daje też znakomite podstawy dla teorii obliczalności czy teorii złożoności. | |||
Wykład rozpoczniemy od omówienia półgrup - struktur algebraicznych o niezbyt skomplikowanej budowie, bo | |||
posiadających jedno tylko działanie. Półgrupy bowiem tworzą ramy dla prezentacji i badań języków formalnych | |||
oraz systemów, które takie języki definiują. Wykład zawiera podstawowe pojęcia oraz elementarne własności | |||
z zakresu teorii półgrup. | |||
; Słowa kluczowe | |||
: półgrupa, monoid, kongruencja, zbiór generatorów, wolny monoid, wolna półgrupa, | |||
baza, alfabet, słowo, litera | |||
==DEFINICJE OZNACZENIA I PODSTAWOWE WŁASNOŚCI== | |||
<br> | |||
Przyjmijmy, że <math>\mathbb{N}=\left\{ 1,2,\ldots \right\} </math> oznacza zbiór liczb naturalnych, | |||
a <math>\mathbb{N}_{0} </math> | |||
zbiór liczb naturalnych wraz z <math>0</math>. | |||
Przypomnimy teraz podstawowe wiadomości z wykładu Algebra Liniowa dotyczące struktur | |||
algebraicznych, a dokładniej struktur najprostszych, półgrup i monoidów, posiadających | |||
jedno tylko działanie. | |||
Zbiór <math>S </math>, w którym określone jest działanie łączne, to znaczy spełniające warunek | |||
<center><math>\forall x,y,z \in S \;\;\; x\cdot (y\cdot z)=(x\cdot y)\cdot z</math></center> | |||
nazywamy '''półgrupą'''. | |||
{{cwiczenie|[Uzupelnij]|| | |||
Zbiór liczb naturalnych z dodawaniem <math>(\mathbb{N},+) </math> tworzy półgrupę. | |||
}} | |||
Półgrupę <math>M </math>, w której istnieje element neutralny działania, to znaczy element | |||
<math>1_{M}\in M </math> | |||
spełniający warunek | |||
<center><math> \forall x\in M \;\;\;1_M \cdot x=x\cdot 1_M=x</math></center> | |||
nazywamy '''monoidem'''. | |||
{{cwiczenie|[Uzupelnij]|| | |||
# Zbiór liczb naturalnych z mnożeniem <math>(\mathbb{N},\cdot ,1) </math> jest monoidem. | |||
# Zbiór liczb naturalnych z zerem <math>(\mathbb{N}_{0},+,0) </math> jest monoidem ze względu na dodawanie. | |||
# Monoidem jest <math>(A^A,\circ,id_A)</math> - zbiór odwzorowań dowolnego zbioru <math>A</math> w siebie ze składaniem jako dzialaniem | |||
i identycznością jako elementem neutralnym. | |||
Dwa pierwsze monoidy są przemienne, czyli działanie jest przemienne, a trzeci jest nieprzemienny. | |||
}} | |||
Każdy monoid jest półgrupą.<br> | |||
Dla uproszczenia notacji będziemy opuszczać kropkę "<math>\cdot</math>" oznaczającą działanie oraz | |||
używać nazwy "jedynka" na element neutralny. Jeśli nie będzie zaznaczone inaczej, to | |||
<math>(\mathbf{S},\cdot ) </math> będzie oznaczać półgrupę, a <math>(\mathbf{M},\cdot ,\, 1_{\mathbf{M}}) </math> monoid. Ze względu na | |||
łączność działania zarówno w półgrupie, jak i w monoidzie iloczyn <math> | |||
x_1...x_n,</math> a także <math>x^n=x...x</math> (n razy) jest określony jednoznacznie | |||
bez potrzeby wprowadzania nawiasów. Dla | |||
dowolnych liczb naturalnych <math>m,n\in \mathbb{N} </math> zachodzą wzory | |||
<center><math>\begin{array} {c} | |||
x^{m+n}=x^{m}x^{n}=x^{n}x^{m}\\ | |||
(x^{m})^{n}=x^{mn} | |||
\end{array} .</math></center> | |||
Dla dowolnego <math>x \in M</math> przyjmujemy z definicji <center><math>x^0 = 1_{M}.</math></center> | |||
Strukturę monoidu <math> M</math> przenosimy na zbiór potęgowy <math>\mathcal{P}(M) </math> | |||
wszystkich podzbiorów monoidu <math>M </math>, określając dla dowolnych <math>A,B \in\mathcal{P}(M) </math> działanie | |||
<center><math> | |||
A\cdot B=\left\{ x\in {\bf M}\: :\: \exists a\in A,\: \exists b\in B\: ,\: x=ab\right\} | |||
</math></center> | |||
<math>(\mathcal{P}(M),\cdot, \{1_{M}\}) </math> jest monoidem. <br> | |||
Podobnie przenosimy strukturę półgrupy z <math>S </math> na <math>\mathcal{P}(S) </math>.<br> | |||
Dla dowolnego podzbioru monoidu | |||
(półgrupy) i dla dowolnej liczby <math>n \in \mathbb{N} </math> zapis <math>A^n</math> oznacza n-krotny iloczyn | |||
zbioru <math>A</math> przez siebie rozumiany w powyższym sensie. <br> | |||
W szczególności <math>A^{1}=A. </math> | |||
W przypadku monoidu przyjmujemy z definicji <center><math>A^0 = \{ 1_{ M} \}.</math></center> | |||
'''Homomorfizmem''' '''półgrup''' <math>(S,\cdot)\;,\;\;(S',*)</math> nazywamy | |||
odwzorowanie | |||
<math>h~:S~\longmapsto~S'</math> takie, że <center><math> \forall x,y \in S \;\;\; h(x\cdot y)=h(x)*h(y).</math></center> | |||
'''Homomorfizmem monoidów''' <math>(M,\cdot,1_{M}),\;(M',*,1_{M'})</math> nazywamy | |||
odwzorowanie <math>h:M \longmapsto M'</math> | |||
takie, że <center><math> \forall x,y \in {M} \;\;\;h(x\cdot y)=h(x)*h(y) \;\;\; i \;\;\; h(1_{M})= 1_{M'}.</math></center> | |||
{{cwiczenie|[Uzupelnij]|| | |||
Odwzorowanie <math>h:{\mathbb{Z}}_{mod\, 3}\longrightarrow {\mathbb{Z}}_{mod\,6} </math> | |||
takie, że | |||
<center><math>\begin{array} {c} | |||
\begin{array} {l} | |||
1\longrightarrow 4\\ | |||
0\longrightarrow 0\\ | |||
2\longrightarrow 2 | |||
\end{array} | |||
\end{array} </math></center> | |||
jest homomorfizmem półgrupy <math>(\mathbb{Z}_{mod\,3},\cdot ) </math> w półgrupę | |||
<math>(\mathbb{Z}_{mod\,6},\cdot ) </math>, ale nie jest homomorfizmem monoidu <math>(\mathbb{Z}_{mod\,3},\cdot,1 ) </math> w monoid | |||
<math>(\mathbb{Z}_{mod\,6},\cdot,1 ) </math>, bo wartością <math>1</math> z monoidu <math>(\mathbb{Z}_{mod\,3},\cdot, 1 ) </math> | |||
nie jest jedynka monoidu <math>(\mathbb{Z}_{mod\,6},\cdot,1 ) </math>. | |||
}} | |||
------- dla dociekliwych - start ------ | |||
Niech <math>(S,\cdot),\;\;(M,\cdot,1_{M})</math> będą odpowiednio dowolną półgrupą, monoidem. | |||
* <math>(T,\cdot)</math> nazywamy '''podpółgrupą '''<math>S</math> wtedy i tylko wtedy, gdy <math>T\subset S</math> i <math>T^2 \subset T.</math> | |||
* <math>(N,\cdot,1_{M})</math> nazywamy '''podmonoidem''' <math>M</math> wtedy i tylko wtedy, gdy <math>N</math> jest podpółgrupą <math>M</math> i <math>1_{M} \in N.</math> | |||
{{cwiczenie|[Uzupelnij]|| | |||
<math>(\mathbb{Z}_{mod\,6},\cdot ) </math> jest monoidem. Podzbiór <math>\{2,4\} </math>, | |||
jako zamknięty na działanie <math>\cdot _{mod\, 6} </math>, tworzy podpółgrupę | |||
<math>\mathbb{Z}_{mod\, 6} </math>. <math>(\{2,4\},\cdot _{mod\, 6}) </math> jest monoidem z | |||
<math>4 </math> jako elementem neutralnym, ale nie podmonoidem <math>\mathbb{Z}_{mod\, 6} </math>. | |||
}} | |||
Niech <math>X</math> będzie dowolnym podzbiorem monoidu <math>M</math>. Zbiór | |||
<center><math>X^*= \{1\}\cup X\cup X^2\cup ...\cup X^n \cup \ldots = \bigcup_{i=0}^\infty X^i</math></center> | |||
jest podmonoidem monoidu <math>M</math>. | |||
Jest to najmniejszy, w sensie inkluzji podmonoid monoidu <math>M</math> zawierający zbiór <math>X</math>. | |||
Gdy spełniona jest równość <math>X^*={M}</math>, to mówimy, że <math>X</math> jest '''zbiorem generatorów''' monoidu <math>M</math>. | |||
Zachodzą następujące własności | |||
# Zbiór generatorów nie jest wyznaczony jednoznacznie. | |||
# Dla dowolnego monoidu istnieje zbiór generatorów, jest nim w szczególności zbiór <math>{M}</math>. | |||
Podobnie dla dowolnego podzbioru <math>X </math> półgrupy <math>{S}</math> zbiór | |||
<center><math>X^+=X\cup X^2\cup...\cup X^n \cup \ldots = \bigcup_{i=1}^\infty X^i</math></center> jest podpółgrupą <math>{S}</math> i to najmniejszą w sensie | |||
inkluzji zawierającą zbiór <math>X.</math> <br> Powyższe uwagi dotyczące zbioru generatorów monoidów przenoszą się odpowiednio dla półgrup. | |||
{{cwiczenie|[Uzupelnij]|| | |||
W monoidzie <math>(\mathbb{N}_{0},+,0) </math> podmonoid generowany przez zbiór generatorów | |||
<math>X=\{2\} </math> składa się z liczb parzystych i nieujemnych. | |||
}} | |||
----- dla dociekliwych - end ----- | |||
Niech <math>S </math> będzie półgrupą. Relację równoważności <math>\rho \subset {S}^2 </math> nazywamy: | |||
# '''prawą kongruencją''' w półgrupie <math>{S}</math>, | |||
jeśli <center><math> \forall x,y,z \in {S} \;\;\; x\;\rho\; y \Rightarrow xz\;\rho\; yz,</math></center> | |||
# '''lewą kongruencją''' w półgrupie <math>{S}</math>, jeśli <center><math> \forall x,y,z \in {S} \;\;\; x\;\rho\; y \Rightarrow zx\;\rho\; zy,</math></center> | |||
# '''kongruencją''', jeśli jest prawą i lewą | |||
kongruencją, tzn. <center><math> \forall x,y,z \in {S} \;\;\; x\;\rho\; y \Rightarrow zx\;\rho\; zy \;\; i \;\; xz\;\rho\; yz.</math></center> | |||
Zastępując w powyższej definicji półgrupę <math>S </math> na monoid <math>M </math> otrzymamy dualnie pojęcia prawej kongruencji, | |||
lewej kongruencji i kongruencji zdefiniowane w monoidzie. <br> | |||
Mając kongruencję <math>\rho</math> określoną w półgrupie <math>{S}</math> (monoidzie | |||
<math>M) </math> możemy utworzyć półgrupę ilorazową <math>{S}/\rho</math> (monoid ilorazowy <math>{M}/\rho</math>), której elementami | |||
są klasy równoważności (abstrakcji) relacji <math>\rho </math>.<br> | |||
Dla dowolnego homomorfizmu półgrup <math>h:{S}\longmapsto {S}'</math> określamy relację | |||
<center><math>Ker_h = \{ (x,y)\in {S}\times {S}\;:\;\; h(x)=h(y) \}.</math></center> Relacja <math>Ker_h</math> jest | |||
kongruencją w półgrupie <math>{S}.</math> <br> | |||
Dla homomorfizmu monoidów <math>h:{M}\longmapsto {M}'</math> relacja <math>Ker_h</math> jest kongruencją | |||
w monoidzie <math>M </math>. | |||
Podstawowe twierdzenie o epimorfizmie dla struktur algebraicznych przyjmuje dla | |||
półgrup i odpowiednio dla monoidów następującą postać. | |||
Niech <math>h:{S}\longmapsto {S}'</math> będzie dowolnym epimorfizmem półgrupy <math>{S}</math> na półgrupę <math>{S}'.</math> Półgrupa <math>{S}'</math> jest | |||
izomorficzna z półgrupą ilorazową <math>{S}/_{Ker_h}</math>. | |||
rys-01 | |||
Niech <math>h:{M}\longmapsto {M}'</math> będzie dowolnym epimorfizmem monoidu <math>{M}</math> na | |||
monoid <math>{M}'.</math> Monoid <math>{M}'</math> jest izomorficzny z monoidem ilorazowym <math>{M}/_{Ker_h}</math>. | |||
rys-02 | |||
==PÓŁGRUPY WOLNE I MONOIDY WOLNE== | |||
Niech <math>A</math> oznacza dowolny zbiór. | |||
'''Wolnym monoidem''' <math>A^*</math> '''o bazie''' <math>A</math> nazywamy | |||
zbiór wszystkich skończonych ciągów: <center><math>A^*=\{ (a_1,...,a_n)\;\;:\;\;n \geq 0\;\;,\;\;a_i \in A \}</math></center> wraz z | |||
działaniem <center><math> (a_1,...,a_n)\cdot (b_1,...,b_m) = (a_1,...,a_n,b_1,...,b_m). </math></center> | |||
Ciąg pusty (n<nowiki>=</nowiki>0) oznaczamy symbolem "<math>1</math>" i z definicji jest on elementem neutralnym określonego powyżej | |||
działania, nazywanego '''katenacją''' lub '''konkatenacją'''. | |||
Przyjmujemy następującą konwencję zapisu: <center><math>(a)\equiv a,\;\;\;(a_1,...,a_n)\equiv a_1...a_n.</math></center> W oparciu o nią możemy | |||
stwierdzić inkluzję <math>A\subset A^*</math>. | |||
----- dla dociekliwych - start ----- | |||
Ta inkluzja uzasadnia użycie | |||
wprowadzonego wcześniej ([[##lab1|Uzupelnic lab1|]]) oznaczenia <math>A^*</math>.<br> | |||
<math>A^*</math> jest najmniejszym podmonoidem | |||
monoidu <math>A^*</math> zawierającym <math>A.</math> | |||
----- dla dociekliwych - end ----- | |||
''' Wolną półgrupą''' <math>A^+</math> '''nad alfabetem''' | |||
<math>A</math> nazywamy | |||
zbiór wszystkich skończonych ciągów: | |||
<center><math>A^+=\{ (a_1,...,a_n)\;\;:\;\;n > 0\;\;,\;\;a_i \in A \}</math></center> wraz z | |||
działaniem katenacji. | |||
Używa się także określeń - wolny monoid o bazie <math>A </math> | |||
i wolna półgrupa o bazie <math>A </math>. | |||
* elementy alfabetu <math>A</math> nazywamy '''literami'''. | |||
* Elementy wolnego monoidu (półgrupy) nazywamy '''słowami''' i | |||
oznaczać bedziemy w wykładzie najczęściej literami <math>u,v,w </math>. | |||
* Dowolny podzbiór wolnego monoidu (półgrupy) | |||
nazywamy '''językiem'''. | |||
Długością słowa <math>w \in A^*</math> nazywamy | |||
liczbę <math>|w|</math> będącą długością ciągu określającego to słowo. Słowo | |||
puste <math>1</math>, czyli odpowiadające ciągowi pustemu ma długość równą <math>0</math>. | |||
{{cwiczenie|[Uzupelnij]|| | |||
# Wolna półgrupa <math>\{0,1\}^+</math> składa się z ciągów binarnych. | |||
# Wolny monoid <math>\{0,1\}^*</math> składa się z ciągów binarnych i ciągu pustego. | |||
}} | |||
Niech <math>A </math> i <math>B </math> będą alfabetami. '''Podstawieniem''' | |||
nazywamy homomorfizm | |||
<center><math>s:A^{*}\longrightarrow \mathcal{P}(B^{*}).</math></center> | |||
Odwzorowanie <math>s </math> jako | |||
homomorfizm monoidu <math>A^{*} </math> w monoid <math>\mathcal{P}(B^{*}) </math> spełnia | |||
dla dowolnych <math>v,w\in A^{*} </math> równość <center><math> s(vw)=s(v)s(w) \;\; \text{oraz}\;\; s(1)=\{1\} </math></center>. | |||
----- dla dociekliwych - start ----- | |||
Niech <math>A</math> oznacza dowolny zbiór, a <math>({M},\cdot,1_{M})</math> dowolny monoid. | |||
# Każde odwzorowanie <center><math>f:A\longmapsto {M}</math></center> daje się | |||
jednoznacznie rozszerzyć do homomorfizmu <center><math>h:A^*\longmapsto {M}.</math></center> | |||
# Homomorfizm <math>h</math> jest epimorfizmem wtedy i tylko wtedy, | |||
gdy <math>f(A)</math> jest zbiorem generatorów <math>{M}.</math> | |||
# Przyjmujemy | |||
<center><math>\forall\; a_1...a_n \in A^+\;\;\;\;h(a_1...a_n)=f(a_1)...f(a_n) \;\;\;\text{oraz}\; \;\;h(1)=1_{M}.</math></center> Tak określone <math>h</math> jest jedynym rozszerzeniem przekształcenia <math>f</math>. | |||
# <math>f(A)^*=M \Leftrightarrow \forall s \in {M}\;\; s=f(a_1)...f(a_n)=h(a_1...a_n)</math> dla pewnego | |||
<math>a_1...a_n \in A^*\Leftrightarrowh</math> jest suriekcją | |||
<math>\diamondsuit</math> | |||
Przyjmując w powyższym twierdzeniu jako <math>A</math> dowolny zbiór generatorów monoidu <math>{M}</math> oraz jako funkcję <math>f</math> włożenie <math>id_{A}:A\longrightarrow \mathbf{M} </math> równe identyczności na <math>A </math> dochodzimy do następującego wniosku. | |||
Każdy monoid <math>{M}</math> jest homomorficznym obrazem wolnego monoidu <math>A^*</math> utworzonego nad dowolnym zbiorem generatorów <math>{M}.</math> | |||
Udowodnione powyżej twierdzenie oraz sformułowany wniosek prawdziwy jest również dla półgrup.<br> | |||
Powyższe rezultaty określają rolę wolnych monoidów (półgrup) w klasie wszystkich monoidów (półgrup). | |||
Monoid <math>{M}</math> jest wolny wtedy i tylko wtedy, gdy każdy element | |||
<math>m \in {S}={M}\setminus \{1\}</math> ma jednoznaczny rozkład na elementy zbioru <math>A={S}\setminus {S}^2.</math> | |||
Załóżmy, że monoid <math>{M}</math> jest wolny, to znaczy <math>{M}=B^*</math> dla pewnego zbioru (bazy) <math>B.</math> <br> | |||
* Udowodnimy, że <math>A</math> jest zbiorem generatorów monoidu <math>M</math>. W tym celu | |||
wykażemy, że zachodzi inkluzja <center><math>{S}\subset ({S}\setminus {S}^2)^+.</math></center> Dowód przeprowadzimy nie wprost. | |||
Załóżmy więc, że <center><math>{S}\setminus ({S}\setminus {S}^2)^+ \neq \emptyset</math></center> i niech <math>m</math> oznacza element z tego zbioru o | |||
najmniejszej długości w <math>B^*.</math> <br> | |||
Wnioskujemy stąd kolejno: | |||
m ({S} {S}^2)^+<br> | |||
m {S}^2<br> | |||
m<nowiki>=</nowiki>s_1s_2 {dla pewnych} s_1,s_2 {S}, | |||
przy czym długość <math>s_1,s_2</math> jest silnie mniejsza niż długość <math>m.</math> Zatem | |||
<center><math>s_1,s_2 \in ({S}\setminus {S}^2)^+ | |||
</math></center> | |||
a to oznacza, że | |||
<center><math>m=s_1s_2 \in ({S}\setminus {S}^2)^+. | |||
</math></center> | |||
Otrzymana sprzeczność kończy dowód faktu, że <math>A={S}\setminus {S}^2</math> jest zbiorem generatorów monoidu <math>{M}.</math> | |||
* Pokażemy teraz, że <math>A \subset B.</math> <br> | |||
Niech <math>m=b_1...b_k \in {S}\setminus {S}^2</math> dla | |||
pewnych <math>b_i \in B</math>, <math>i=1,...,k.</math> <br> | |||
Jeśli <math>k>1</math>, to <math>m\in {S}^2</math>, co jest sprzeczne z wyborem <math>m.</math> Zatem <math>k=1</math>, co implikuje <math>A\subset B.</math> | |||
Z definicji wolnego monoidu | |||
wynika jednoznaczność rozkładu na elementy z bazy <math>B</math>, a to pociąga za sobą | |||
jednoznaczność rozkładu na elementy z podzbioru <math>A={S}\setminus {S}^2.</math><br> | |||
Niech teraz <math>{M}</math> oznacza monoid z jednoznacznością rozkładu na elementy zbioru <math>A~=~S~\setminus~S^2</math>. Rozszerzamy | |||
identyczność <math>id_A:A\longmapsto {M}</math> do homomorfizmu <math>h:A^*\longmapsto {M}.</math> Z założenia wynika, że każdy | |||
element <math>m \in {S}</math> można przedstawić jako iloczyn <center><math>m=a_1...a_n \;\;\; gdzie \;\;\;a_i \in A \;\;\; | |||
dla \;\;\; i=1,...,n.</math></center> Zatem <center><math>h(a_1...a_n)=h(a_1)...h(a_n)=a_1...a_n.</math></center> Homomorfizm <math>h</math> jest | |||
izomorfizmem, więc monoid <math>{M}</math> jako izomorficzny z <math>A^*</math> jest wolny. | |||
<math>\diamondsuit</math> | |||
Powyższe twierdzenie posiada swój odpowiednik dla wolnych półgrup. | |||
Półgrupa <math>{S}</math> jest wolna wtedy i tylko wtedy, gdy każdy element <math>x \in {S}</math> ma jednoznaczny | |||
rozkład na elementy zbioru <math>{S}\setminus {S}^2.</math> | |||
Baza wolnego monoidu (półgrupy) jest minimalym zbiorem generatorów. | |||
{{cwiczenie|[Uzupelnij]|| | |||
# Półgrupa <math>(\mathbb{N},+ ) </math> jest wolna. Każdy jej element można jednoznacznie zapisać | |||
jako sumę jedynek - <math>\mathbb{N}\setminus (\mathbb{N}+\mathbb{N})=\left\{ 1\right\} </math>. | |||
# Dla <math>\mathbb{N}_2=\{n \in \mathbb{N}:n\geq 2\}</math> półgrupa <math>(\mathbb{N}_2,+ ) </math> nie jest to półgrupą wolną.<br> | |||
Nie ma jednoznaczności rozkładu na elementy z <math>\mathbb{N}_2\setminus (\mathbb{N}_2+\mathbb{N}_2)=\{2,3\}</math>.<br> Na przykład <math>6=2+2+2=3+3</math>. | |||
}} | |||
----- dla dociekliwych - end ----- |
Wersja z 16:44, 5 sie 2006
{theor}{TWIERDZENIE}[section] {rem}{UWAGA}[section] {corol}{WNIOSEK}[section] {fact}{FAKT}[section] {ex}{PRZYK{}AD}[section] {defin}{DEFINICJA}[section] {lem}{LEMAT}[section]
{prf}{DOWÓD}
{Elementy teorii pó{}grup,
pó{}grupy i monoidy wolne}
- Wprowadzenie
- Teoria języków formalnych, automatów i gramatyk to klasyczna dzisiaj teoria, która
zajmuje istotne miejsce w informatyce. Proponuje ona matematyczne modele obliczeń, które wykorzystywane są w praktyce, na przykład w przetwarzaniu tekstu, projektowaniu kompilatorów, w językach programowania czy też sztucznej inteligencji. Daje też znakomite podstawy dla teorii obliczalności czy teorii złożoności.
Wykład rozpoczniemy od omówienia półgrup - struktur algebraicznych o niezbyt skomplikowanej budowie, bo posiadających jedno tylko działanie. Półgrupy bowiem tworzą ramy dla prezentacji i badań języków formalnych oraz systemów, które takie języki definiują. Wykład zawiera podstawowe pojęcia oraz elementarne własności z zakresu teorii półgrup.
- Słowa kluczowe
- półgrupa, monoid, kongruencja, zbiór generatorów, wolny monoid, wolna półgrupa,
baza, alfabet, słowo, litera
DEFINICJE OZNACZENIA I PODSTAWOWE WŁASNOŚCI
Przyjmijmy, że oznacza zbiór liczb naturalnych,
a
zbiór liczb naturalnych wraz z .
Przypomnimy teraz podstawowe wiadomości z wykładu Algebra Liniowa dotyczące struktur
algebraicznych, a dokładniej struktur najprostszych, półgrup i monoidów, posiadających
jedno tylko działanie.
Zbiór , w którym określone jest działanie łączne, to znaczy spełniające warunek
nazywamy półgrupą.
Ćwiczenie [Uzupelnij]
Zbiór liczb naturalnych z dodawaniem tworzy półgrupę.
Półgrupę , w której istnieje element neutralny działania, to znaczy element spełniający warunek
nazywamy monoidem.
Ćwiczenie [Uzupelnij]
- Zbiór liczb naturalnych z mnożeniem jest monoidem.
- Zbiór liczb naturalnych z zerem jest monoidem ze względu na dodawanie.
- Monoidem jest - zbiór odwzorowań dowolnego zbioru w siebie ze składaniem jako dzialaniem
i identycznością jako elementem neutralnym.
Dwa pierwsze monoidy są przemienne, czyli działanie jest przemienne, a trzeci jest nieprzemienny.
Każdy monoid jest półgrupą.
Dla uproszczenia notacji będziemy opuszczać kropkę "" oznaczającą działanie oraz
używać nazwy "jedynka" na element neutralny. Jeśli nie będzie zaznaczone inaczej, to
będzie oznaczać półgrupę, a monoid. Ze względu na
łączność działania zarówno w półgrupie, jak i w monoidzie iloczyn a także (n razy) jest określony jednoznacznie
bez potrzeby wprowadzania nawiasów. Dla
dowolnych liczb naturalnych zachodzą wzory
Dla dowolnego
przyjmujemy z definicji
Strukturę monoidu przenosimy na zbiór potęgowy wszystkich podzbiorów monoidu , określając dla dowolnych działanie
jest monoidem.
Podobnie przenosimy strukturę półgrupy z na .
Dla dowolnego podzbioru monoidu
(półgrupy) i dla dowolnej liczby zapis oznacza n-krotny iloczyn
zbioru przez siebie rozumiany w powyższym sensie.
W szczególności
W przypadku monoidu przyjmujemy z definicji
Homomorfizmem półgrup nazywamy odwzorowanie
takie, że
Homomorfizmem monoidów nazywamy odwzorowanie
takie, że
Ćwiczenie [Uzupelnij]
Odwzorowanie takie, że
jest homomorfizmem półgrupy w półgrupę , ale nie jest homomorfizmem monoidu w monoid , bo wartością z monoidu nie jest jedynka monoidu .
dla dociekliwych - start ------
Niech będą odpowiednio dowolną półgrupą, monoidem.
- nazywamy podpółgrupą wtedy i tylko wtedy, gdy i
- nazywamy podmonoidem wtedy i tylko wtedy, gdy jest podpółgrupą i
Ćwiczenie [Uzupelnij]
jest monoidem. Podzbiór , jako zamknięty na działanie , tworzy podpółgrupę . jest monoidem z jako elementem neutralnym, ale nie podmonoidem .
Niech będzie dowolnym podzbiorem monoidu . Zbiór
jest podmonoidem monoidu . Jest to najmniejszy, w sensie inkluzji podmonoid monoidu zawierający zbiór . Gdy spełniona jest równość , to mówimy, że jest zbiorem generatorów monoidu . Zachodzą następujące własności
- Zbiór generatorów nie jest wyznaczony jednoznacznie.
- Dla dowolnego monoidu istnieje zbiór generatorów, jest nim w szczególności zbiór .
Podobnie dla dowolnego podzbioru półgrupy zbiór
jest podpółgrupą
i to najmniejszą w sensie
inkluzji zawierającą zbiór
Powyższe uwagi dotyczące zbioru generatorów monoidów przenoszą się odpowiednio dla półgrup.
Ćwiczenie [Uzupelnij]
W monoidzie podmonoid generowany przez zbiór generatorów składa się z liczb parzystych i nieujemnych.
dla dociekliwych - end -----
Niech będzie półgrupą. Relację równoważności nazywamy:
- prawą kongruencją w półgrupie ,
jeśli
- lewą kongruencją w półgrupie , jeśli
- kongruencją, jeśli jest prawą i lewą
kongruencją, tzn.
Zastępując w powyższej definicji półgrupę na monoid otrzymamy dualnie pojęcia prawej kongruencji,
lewej kongruencji i kongruencji zdefiniowane w monoidzie.
Mając kongruencję określoną w półgrupie (monoidzie
możemy utworzyć półgrupę ilorazową (monoid ilorazowy ), której elementami
są klasy równoważności (abstrakcji) relacji .
Dla dowolnego homomorfizmu półgrup określamy relację
Relacja
jest
kongruencją w półgrupie
Dla homomorfizmu monoidów relacja jest kongruencją
w monoidzie .
Podstawowe twierdzenie o epimorfizmie dla struktur algebraicznych przyjmuje dla półgrup i odpowiednio dla monoidów następującą postać.
Niech będzie dowolnym epimorfizmem półgrupy na półgrupę Półgrupa jest izomorficzna z półgrupą ilorazową .
rys-01
Niech będzie dowolnym epimorfizmem monoidu na monoid Monoid jest izomorficzny z monoidem ilorazowym .
rys-02
PÓŁGRUPY WOLNE I MONOIDY WOLNE
Niech oznacza dowolny zbiór.
Wolnym monoidem o bazie nazywamy
zbiór wszystkich skończonych ciągów:
wraz z działaniem
Ciąg pusty (n=0) oznaczamy symbolem "" i z definicji jest on elementem neutralnym określonego powyżej działania, nazywanego katenacją lub konkatenacją.
Przyjmujemy następującą konwencję zapisu:
W oparciu o nią możemy
stwierdzić inkluzję .
dla dociekliwych - start -----
Ta inkluzja uzasadnia użycie
wprowadzonego wcześniej (Uzupelnic lab1|) oznaczenia .
jest najmniejszym podmonoidem
monoidu zawierającym
dla dociekliwych - end -----
Wolną półgrupą nad alfabetem nazywamy zbiór wszystkich skończonych ciągów:
wraz z
działaniem katenacji.
Używa się także określeń - wolny monoid o bazie i wolna półgrupa o bazie .
- elementy alfabetu nazywamy literami.
- Elementy wolnego monoidu (półgrupy) nazywamy słowami i
oznaczać bedziemy w wykładzie najczęściej literami .
- Dowolny podzbiór wolnego monoidu (półgrupy)
nazywamy językiem.
Długością słowa nazywamy liczbę będącą długością ciągu określającego to słowo. Słowo puste , czyli odpowiadające ciągowi pustemu ma długość równą .
Ćwiczenie [Uzupelnij]
- Wolna półgrupa składa się z ciągów binarnych.
- Wolny monoid składa się z ciągów binarnych i ciągu pustego.
Niech i będą alfabetami. Podstawieniem nazywamy homomorfizm
Odwzorowanie jako homomorfizm monoidu w monoid spełnia
dla dowolnych
równość
.
dla dociekliwych - start -----
Niech oznacza dowolny zbiór, a dowolny monoid.
- Każde odwzorowanie
daje się
jednoznacznie rozszerzyć do homomorfizmu
- Homomorfizm jest epimorfizmem wtedy i tylko wtedy,
gdy jest zbiorem generatorów
- Przyjmujemy
Tak określone
jest jedynym rozszerzeniem przekształcenia
.
- dla pewnego
Parser nie mógł rozpoznać (nieznana funkcja „\Leftrightarrowh”): {\displaystyle a_1...a_n \in A^*\Leftrightarrowh} jest suriekcją
Przyjmując w powyższym twierdzeniu jako dowolny zbiór generatorów monoidu oraz jako funkcję włożenie równe identyczności na dochodzimy do następującego wniosku.
Każdy monoid jest homomorficznym obrazem wolnego monoidu utworzonego nad dowolnym zbiorem generatorów
Udowodnione powyżej twierdzenie oraz sformułowany wniosek prawdziwy jest również dla półgrup.
Powyższe rezultaty określają rolę wolnych monoidów (półgrup) w klasie wszystkich monoidów (półgrup).
Monoid jest wolny wtedy i tylko wtedy, gdy każdy element ma jednoznaczny rozkład na elementy zbioru
Załóżmy, że monoid jest wolny, to znaczy dla pewnego zbioru (bazy)
- Udowodnimy, że jest zbiorem generatorów monoidu . W tym celu
wykażemy, że zachodzi inkluzja
Dowód przeprowadzimy nie wprost. Załóżmy więc, że
i niech
oznacza element z tego zbioru o
najmniejszej długości w
Wnioskujemy stąd kolejno:
m ({S} {S}^2)^+
m {S}^2
m=s_1s_2 {dla pewnych} s_1,s_2 {S},
przy czym długość jest silnie mniejsza niż długość Zatem
a to oznacza, że
Otrzymana sprzeczność kończy dowód faktu, że jest zbiorem generatorów monoidu
- Pokażemy teraz, że
Niech dla
pewnych ,
Jeśli , to , co jest sprzeczne z wyborem Zatem , co implikuje
Z definicji wolnego monoidu
wynika jednoznaczność rozkładu na elementy z bazy , a to pociąga za sobą
jednoznaczność rozkładu na elementy z podzbioru
Niech teraz oznacza monoid z jednoznacznością rozkładu na elementy zbioru . Rozszerzamy identyczność do homomorfizmu Z założenia wynika, że każdy
element
można przedstawić jako iloczyn
Zatem
Homomorfizm
jest
izomorfizmem, więc monoid jako izomorficzny z jest wolny.
Powyższe twierdzenie posiada swój odpowiednik dla wolnych półgrup.
Półgrupa jest wolna wtedy i tylko wtedy, gdy każdy element ma jednoznaczny rozkład na elementy zbioru
Baza wolnego monoidu (półgrupy) jest minimalym zbiorem generatorów.
Ćwiczenie [Uzupelnij]
- Półgrupa jest wolna. Każdy jej element można jednoznacznie zapisać
jako sumę jedynek - .
- Dla półgrupa nie jest to półgrupą wolną.
Nie ma jednoznaczności rozkładu na elementy z .
Na przykład .
dla dociekliwych - end -----