Professional Documents
Culture Documents
JAO 2024 Wykład CZ 2
JAO 2024 Wykład CZ 2
Urszula Bentkowska
Gramatyka jako model obliczeń. Hierarchia Chomsky'ego
DEFINICJA. System przepisujący (ang. Rewriting system) jest to para , gdzie jest
dowolnym skończonym zbiorem (alfabetem), - skończoną relacją (zbiorem praw).
Uwaga. Domknięcie przechodnie relacji dwuargumentowej jest to najmniejsza (w sensie inkluzji) relacja
przechodnia, która zawiera daną relację. Dla każdej relacji istnieje jej domknięcie przechodnie.
i generowania .
DEFINICJA. Językiem generowanym przez gramatykę nazywamy zbiór
Dany język może być generowany przez wiele gramatyk, czasem o bardzo różnej strukturze
i własnościach.
generuje język
generuje język
Gramatyki i są równoważne.
(3) Gramatyka , w której
,
generuje język
generuje język
Gramatyki i są równoważne.
Klasyfikacja Chomsky'ego
Wprowadzimy teraz cztery typy gramatyk określonych przez Noama Chomsky'ego.
Typ (0): każda gramatyka, czyli system spełniający warunki podane w definicji gramatyki.
Typ (1): kontekstowa, czyli gramatyka, w której każde prawo (produkcja) ze zbioru ma postać
gdzie lub
gdzie .
Typ (3): regularna, czyli gramatyka, w której każde prawo ze zbioru ma postać
gdzie .
Przykład. Gramatyki z poprzedniego przykładu są odpowiednio:
➢ Inkluzje pierwsza i trzecia wynikają bezpośrednio z definicji odpowiednich klas języków, a więc z
definicji gramatyk regularnej i bezkontekstowej oraz kontekstowej i typu (0).
➢ Automaty działają w ten sposób, iż pod wpływem zewnętrznego sygnału zmieniają swój stan.
W efekcie tej zmiany rozpoznają bądź nie ciągi takich sygnałów reprezentowane przez słowa.
➢ Zatem działanie automatu polega na testowaniu kolejno słów z i określaniu, które z nich są
rozpoznawane (spełniają określone kryteria), a które nie są rozpoznawane.
➢ Ogół słów rozpoznanych przez automat tworzy język rozpoznawany przez ten automat. Dla każdej
z określonych powyżej rodzin języków, w sensie Chomsky'ego określa się odpowiadającą jej rodzinę
automatów.
➢ Język jest typu (i) dla , gdy jest rozpoznawany przez jakiś automat z odpowiedniej
rodziny.
➢ Definicje automatów i ich własności wprowadzane będą sukcesywnie przy prezentowaniu
poszczególnych rodzin języków.
Automat skończenie stanowy
Określimy język rozpoznawany przez automat i podamy warunki równoważne na to, by język był
rozpoznawany.
• Automat to drugi, obok gramatyki, model obliczeń będący przedmiotem badań teorii języków
i automatów.
• Automat, to model realizujący warunek efektywności analitycznej, czyli taki na podstawie którego
możliwe jest sformułowanie algorytmu rozstrzygającego w skończonej liczbie kroków, czy dowolne
słowo należy, czy też nie należy do języka rozpoznawanego przez ten automat.
• Inaczej można powiedzieć, że taki automat daje algorytm efektywnie rozstrzygający, czy dowolne
obliczenie sformułowane nad alfabetem automatu jest poprawne.
• Wprowadzony zostanie na początek automat, zwany automatem skończenie stanowym, który jest
jednym z najprostszych modeli obliczeń.
✓ Jest to model z bardzo istotnie ograniczoną pamięcią.
✓ Działanie takiego automatu sprowadza się do zmiany stanu pod wpływem określonego
zewnętrznego sygnału czy impulsu.
✓ Pomimo tych ograniczeń urządzenia techniczne oparte o modele takich automatów spotkać
możemy dość często, np. automatyczne drzwi, automaty sprzedające napoje, winda, czy też
urządzenia sterujące taśmą produkcyjną.
Przykład. Rozważmy drzwi automatycznie otwierane są sterowane automatem, którego działanie opisać
można, przyjmując następujące oznaczenia:
• Fakt, że osoba chce wejść do pomieszczenia zamykanego przez takie drzwi, identyfikowany przez
odpowiedni czujnik, opiszemy symbolem .
• Zamiar wyjścia symbolem .
• Symbol będzie związany z równoczesnym zamiarem wejścia jakiejś osoby i wyjścia innej.
• Symbol oznaczał będzie brak osób, które chcą wejść lub wyjść.
• Automaty reagują więc na określone sygnały zewnętrzne reprezentowane przez litery alfabetu ,
zmieniając swój stan.
• Jeśli ustalimy stan początkowy automatu oraz dopuszczalne stany końcowe, to automat będzie testował
dowolne słowo z , startując ze stanu początkowego.
• Jeśli rezultatem finalnym działania automatu (obliczenia) będzie stan końcowy, to słowo będzie
rozpoznawane przez automat, a obliczenie określone takim słowem poprawne.
• Automaty można graficznie reprezentować jako etykietowane grafy skierowane.
• W takim grafie każdy wierzchołek odpowiada stanowi automatu, a każda strzałka pomiędzy
wierzchołkami i , etykietowana symbolem , oznacza przejście automatu ze stanu do stanu
pod wpływem litery .
- jest dowolnym skończonym zbiorem zwanym zbiorem stanów (automat nazywamy skończonym lub
skończenie stanowym),
Automat będąc w stanie po przeczytaniu litery zmienia stan na zgodnie z funkcją przejścia
.
przyjmując:
https://wazniak.mimuw.edu.pl/index.php?title=J%C4%99zyki,_automaty_i_obliczenia/Wyk%C5%82a
d_3:_Automat_sko%C5%84czenie_stanowy
istnieje stan oraz słowo takie, że dla każdego stanu tego automatu .
Istnieje więc pewne uniwersalne słowo , pod wpływem którego wszystkie stany przechodzą w jeden,
ustalony stan automatu . Mówimy, że następuje wtedy synchronizacja wszystkich stanów automatu.
Poniżej zaprezentowany jest przykład zaczerpnięty z pracy Ananicheva i Volkova (D. S. Ananichev, M. V.
Volkov, Synchronizing Monotonic Automata, Lecture Notes in Computer Science, 2710(2003), 111-121),
ukazujący ideę użycia automatów synchronizujących w tej dziedzinie.
Przykład. Załóżmy, że pewna fabryka produkuje detale w kształcie kwadratu z "wypustką" na jednym boku
Załóżmy ponadto dla uproszczenia, że detale mogą przyjmować jedną z czterech orientacji:
Należy zatem skonstruować takie urządzenie (orienter), które będzie ustawiało wszystkie detale w żądanej
orientacji.
Istnieje wiele metod rozwiązania tego problemu, ale z praktycznego punktu widzenia potrzebne jest
rozwiązanie najprostsze i najtańsze.
• Jednym z takich sposobów jest umieszczanie detali na pasie transmisyjnym z zamontowaną wzdłuż
niego pewną ilością przeszkód dwojakiego rodzaju: niskich (low) oraz wysokich (HIGH).
• Wysoka przeszkoda ma tę własność, że każdy detal, który ją napotka, zostanie obrócony o 90 stopni w
prawo (zakładamy, że elementy jadą od lewej do prawej strony).
• Przeszkoda niska obróci o 90 stopni w prawo tylko te detale, które są ułożone "wypustką" w dół.
• Na poniższym rysunku przedstawione zostały przejścia pomiędzy orientacjami detali w zależności od
napotkania odpowiedniej przeszkody.
Niezależnie od tego, w jakiej orientacji początkowej znajduje się detal, po przejściu przez powyższą
sekwencję przeszkód zawsze będzie ułożony "wypustką" w lewo.
https://wazniak.mimuw.edu.pl/index.php?title=J%C4%99zyki,_automaty_i_obliczenia/Wyk%C5%82a
d_3:_Automat_sko%C5%84czenie_stanowy
Rozszerzymy teraz wprowadzone pojęcie automatu w ten sposób, by uzyskać możliwość efektywnego
rozstrzygania, czy dowolne słowo utworzone nad alfabetem reprezentuje poprawne obliczenie, czyli
spełnia kryteria określone przez rozszerzony automat.
Rozszerzony w powyższy sposób automat, poprzez dodanie stanu początkowgo i zbioru stanów końcowych,
w dalszym ciągu nazywamy automatem i oznaczamy jako piątkę lub czwórkę
, jeśli wiadomo, nad jakim alfabetem rozważamy działanie automatu.
Z punktu widzenia grafu automatu można powiedzieć, że nie występują w nim wierzchołki (stany)
nieosiągalne z .
Poniżej przedstawiamy algorytm usuwający z automatu stany nieosiągalne ze stanu początkowego.
1 Wejście: - automat.
2 Wyjście: - automat równoważny automatowi bez
stanów nieosiągalnych.
3 for each do
4 zaznaczone ;
5 end for
6 zaznaczone ;
7 OZNACZ ;
8 zaznaczone ;
9 ;
10 flag false jeśli nie dodamy stanu to na końcu pętli nadal flag=false
11 ;
12 for each do
13 for each do
14 if NULL then
15 ; była nieokreślona
16 flag true;
17 end if
18 end for
19 end for
20 if flag=true then
21 ;
22 end if
23 return ;
Algorytm Procedure Oznacz
1 procedure OZNACZ
2 for each
3 flag false
4 for each do
5 if then
6 flag true
7 end if
8 end for
9 if flag=true and zaznaczone then
10 zaznaczone ;
11 OZNACZ ;
12 end if
13 end for
14 end procedurę
Powyższy algorytm, dla ustalonego alfabetu , posiada złożoność , czyli liniową względem
liczby stanów.
Przykład. Jeśli w przykładzie, gdzie było alfabetem, a automatem takim, że
przyjmiemy stan jako stan początkowy, jako zbiór stanów końcowych, to automat
rozpoznaje język
• Jeśli w automacie występuje stan początkowy, oznaczać go będziemy strzałką wchodzącą do tego
stanu.
• Jeśli w automacie występują stany końcowe, oznaczać je będziemy podwójną obwódką.
Każdy automat wyznacza w wolnym monoidzie prawą kongruencję,
nazywaną prawą kongruencją automatową, określoną w następujący sposób:
Dla automatu skończonego (o skończonym zbiorze stanów), a takie rozważamy, relacja ma skończony
indeks, czyli skończoną liczbę klas równoważności.
, ,
Na odwrót, każda prawa kongruencja wyznacza automat, zwany ilorazowym, w następujący
sposób:
jest automatem skończonym wtedy i tylko wtedy, gdy relacja ma skończony indeks.
w .
(1) Monoid przejść automatu jest podmonoidem monoidu i zbiór jest zbiorem
1 Wejście: - automat
2 Wyjście: - monoid przejść dla
3 ; jest listą
4 ;
5 for each do
6 insert ; gdzie dla każdego
7 end for
8 while ; do
9 first ;
10 ;
11 for each do
12 for each do
13 ;
14 end for
15 if
16 insert ;
17 end if
18 end for
19 end while
20 return ;
Procedura insert wkłada na koniec listy element . Funkcja first wyjmuje pierwszy element
znajdujący się na liście i zwraca go.
Algorytm działa w następujący sposób: najpierw na listę wkładane są elementy monoidu przejść
dla każdej litery . Te funkcje można obliczyć bezpośrednio z tabelki reprezentującej funkcję
przejścia automatu . Następnie z listy po kolei ściągane są poszczególne funkcje . Każda z nich
dodawana jest do zbioru , a następnie algorytm sprawdza dla każdej litery , czy funkcja
istnieje już na liście lub w zbiorze . Jeśli nie, to funkcja ta dodawana jest do listy. Procedura
powyższa trwa do czasu, gdy lista zostanie pusta. Wtedy wszystkie elementy monoidu przejść znajdą się
w zbiorze .
Analiza działania algorytmu dla automatu z ostatniego przykładu
Funkcja również nie jest równa żadnej z funkcji należących do zbioru , zatem wstawiamy
ją na koniec listy. Na liście mamy zatem teraz następujące elementy: , oraz .
Zdejmujemy z listy funkcję , dodajemy ją do i obliczamy oraz .
Pierwsza z tych funkcji jest nowa, tzn. nie jest tożsama z żadną funkcją ze zbioru więc dodajemy ją
na koniec listy. Druga z nich równa jest funkcji , więc nie dodajemy jej do listy.
W tym momencie zbiór zawiera następujące elementy: , , , natomiast lista zawiera
elementy , , .
Lista jest w tym momencie pusta i działanie algorytmu zakończyło się. Ostatecznie mamy
Twierdzenie.
(3) Język jest sumą wybranych klas równoważności pewnej kongruencji na o skończonym
indeksie, czyli