Języki formalne i automaty Ćwiczenia 7

Podobne dokumenty
Języki formalne i automaty Ćwiczenia 9

Języki formalne i automaty Ćwiczenia 8

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Języki formalne i automaty Ćwiczenia 1

Języki formalne i automaty Ćwiczenia 4

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Języki formalne i automaty Ćwiczenia 2

1 Automaty niedeterministyczne

Języki formalne i automaty Ćwiczenia 6

Matematyczne Podstawy Informatyki

Języki formalne i automaty Ćwiczenia 3

Jaki język zrozumie automat?

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Imię, nazwisko, nr indeksu

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

Maszyna Turinga języki

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

JAO - Języki, Automaty i Obliczenia - Wykład 2. JAO - Języki, Automaty i Obliczenia - Wykład 2

10110 =

Języki, automaty i obliczenia

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

AUTOMATY SKOŃCZONE. Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę:

Klasyczne i kwantowe podejście do teorii automatów i języków formalnych p.1/33

Języki formalne i automaty Ćwiczenia 5

Hierarchia Chomsky ego Maszyna Turinga

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Minimalizacja automatów niedeterministycznych na słowach skończonych i nieskończonych

(j, k) jeśli k j w przeciwnym przypadku.

Obliczenia inspirowane Naturą

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech

Obliczenia inspirowane Naturą

Wyrażenia regularne.

Matematyczne Podstawy Informatyki

Dopełnienie to można wyrazić w następujący sposób:

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Teoretyczne podstawy informatyki

Efektywność Procedur Obliczeniowych. wykład 5

Automaty Büchi ego i równoważne modele obliczeń

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Hierarchia Chomsky ego

Automat Moore a. Teoria układów logicznych

Symbol, alfabet, łańcuch

Wykład5,str.1. Maszyny ze stosem ... 1,0 λ r. λ,z λ

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Paradygmaty i języki programowania. Analiza leksykalna Skaner, RE, DAS, NAS, ε- NAS

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Języki, automaty i obliczenia

Teoria układów logicznych

Matematyczna wieża Babel. 3. Gramatyki o językach bezkontekstowych materiały do ćwiczeń

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Teoretyczne podstawy informatyki

TEORETYCZNE PODSTAWY INFORMATYKI

KONWERTER WYRAŻENIA REGULARNE AUTOMAT GRAMATYKA. Teoria kompilacji i kompilatory. Tomasz Raus. Jacek Boruch

Definicja 2. Twierdzenie 1. Definicja 3

Języki, automaty i obliczenia

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Maszyna Turinga (Algorytmy Część III)

Matematyczne Podstawy Informatyki

Efektywna analiza składniowa GBK

- Dla danego zbioru S zbiór wszystkich jego podzbiorów oznaczany symbolem 2 S.

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Elementy modelowania matematycznego

AUTOMATYKA INFORMATYKA

Turing i jego maszyny

Gramatyki regularne i automaty skoczone

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Elementy Teorii Obliczeń

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

Języki, automaty i obliczenia

Rozwiązania części z około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

R O Z D Z I A Ł V I I

TEORETYCZNE PODSTAWY INFORMATYKI

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Matematyczny świat języków. Wprowadzenie i języki regularne materiały do ćwiczeń

Jȩzyki, automaty, zlożoność obliczeniowa

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Algorytmiczna teoria grafów

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Języki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka

Teoretyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Teoretyczne podstawy informatyki

Języki, automaty i obliczenia

Część wspólna (przekrój) A B składa się z wszystkich elementów, które należą jednocześnie do zbioru A i do zbioru B:

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytmy sztucznej inteligencji

Temat: Algorytm kompresji plików metodą Huffmana

1. Maszyna Turinga, gramatyki formalne i ONP

Zadanie analizy leksykalnej

GRAMATYKI BEZKONTEKSTOWE

Struktura danych. Sposób uporządkowania informacji w komputerze.

Krystalochemia białek 2016/2017

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Transkrypt:

Języki formalne i automaty Ćwiczenia 7 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Automaty... 2 Cechy automatów... 4 Łączenie automatów... 4 Konwersja automatu do wyrażenia regularnego... 5 Konwersja wyrażenia regularnego do automatu... 6 Bibliografia... 7 Zadania... 9 Zadania na 3.0... 9 Zadania na 4.0... 9 Zadania na 5.0... 9

Wstęp teoretyczny Automaty Automaty to jeden ze sposobów reprezentacji języka formalnego. Automat składa się z: zbioru stanów Q, alfabetu Σ, δ funkcja tranzycji : q 0 stan startowy, q 0 ϵq δ:q Σ Q F zbiór stanów zawarty w Q, zwanych stanami akceptującymi W przypadku, gdy Q jest skończony, automat nazywa się automatem skończonym. Zbiór wszystkich rozpoznawanych języków przez automat skończony jest dokładnie zbiorem języków generowanych przez gramatyki regularne. Deterministyczny automat skończony (DFA) to taki automat skończony, że dla każdej pary (stan, symbol wejściowy) jest co najwyżej jedna tranzycja. Deterministyczny, zupełny automat skończony (DFA) to taki automat skończony, że dla każdej pary (stan, symbol wejściowy) jest dokładnie jedna tranzycja. Niedeterministyczny automat skończony (NFA) to taki automat skończony, że dla pewnej pary (stan, symbol wejściowy) jest więcej niż jedna tranzycja. Niedeterministyczny automat skończony z ε-tranzycjami (NFA-ε) to niedeterministyczny automat skończony albo automat skończony zawierający co najmniej jedną ε-tranzycję, czyli taką przez którą przechodzimy nie pobierając symbolu z wejścia. Można pokazać, że DFA i NFA są równoważne, to znaczy dla każdego automatu DFA, można skontruować automat NFA i odwrotnie. A więc zarówno automaty NFA jak i DFA rozpoznają języki regularne. Można również wykazać, że NFA-ε jest równoważny DFA i NFA. Sposób sprawdzania czy dane słowo należy do języka generowanego przez automat:

W podanym automacie DFA przykładowo mamy do sprawdzenia słowo aab. Zaczynamy od stanu q0. Bierzemy z bufora wejściowego pierwszy symbol, czyli a, przechodzimy do stanu q1. Później bierzemy kolejny symbol, również a. Przechodzimy ze stanu q1 do stanu q0. Następnie bierzemy symbol b, i pozostajemy w stanie q0. Wyczerpaliśmy wszystkie symbole z wejścia, i jesteśmy ostatecznie w stanie q0. Stan q0 jest stanem akceptującym, a więc słowo należy do tego języka. Można zauważyć, że podany automat akceptuje wszystkie słowa o parzystej liczbie symboli a. Jeśli skończymy sprawdzanie na stanie, który nie jest akceptujący to słowo nie należy do języka. Jeśli na pewnym etapie nie będzie istniała tranzycja dla kolejnego symbolu z wejścia to słowo również nie należy do języka. Podczas sprawdzania słowa można przechodzić przez stan akceptujący, słowo jest akceptowane jedynie, gdy automat jest w stanie akceptującym po przeczytaniu całego słowa. Przykład niedeterministycznego automatu skończonego z ε-tranzycjami: Powyższy automat akceptuje wszystkie słowa, które zawierają parzystą liczbę symboli a lub parzystą liczbę symboli b. Ze stanu q0 możemy przejść zarówno do stanu q1 jak i q3. Przykład konstrukcji automatu z podanego języka formalnego w postaci zbiorowej. L={a m b n :m 0,n>0,n jest nieparzyste }

Cechy automatów Często automaty wykorzystuje się do modelowania różnych procesów, a w szczególności wykorzystuje się następujące koncepcje: 1. Podział procesu na stany, w których może się on znajdować. 2. Zdefiniowanie informacji, która powoduje odpalenie tranzycji i wyznaczenie nowego stanu. Nowy stan jest wyznaczany na podstawie aktualnego stanu i otrzymanej informacji. 3. Proces znajduje się na początku w zdefiniowanym stanie początkowym. Łączenie automatów Jeśli mamy dane dwa automaty i chcemy stworzyć język, który jest unią zbioru słów generowanych przez obydwa automaty, możemy to zrobić tworząc nowy stan, który będzie stanem startowym i prowadząc ε-tranzycje do poprzednich stanów startowych poszczególnych automatów. Przykładowo mamy dane dwa automaty: oraz Po ich połączeniu otrzymamy automat:

Konwersja automatu do wyrażenia regularnego Mamy dany automat: W pierwszym kroku należy sprawdzić czy automat posiada jeden stan końcowy, jeśli posiada ich więcej to należy utworzyć nowy stan końcowy i poprowadzić do niego ε-tranzycje ze stanów końcowych. Ponadto stosujemy zapis łączący tranzycje ze sobą, np. jeśli mamy tranzycje a i b od danego stanu do innego tego samego dla obu tranzycji to obydwie tranzycje zastępujemy jedną o nazwie a+b. Zapis a+b jest równoważny zapisowi a b. W rozważanym przykładzie będzie jedno takie zastąpienie: Następnie należy usunąć wszystkie stany, które nie są stanem początkowym i stanami końcowymi. Podczas usuwania tych stanów należy zmodyfikować zbiór tranzycji nie dochodzących do usuwanych stanów, tak aby realizowały wszystkie ścieżki przechodzące przez usuwany stan. Nowe tranzycje mogą zawierać zamiast pojedynczych symboli słowa wraz ze znakami specjalnymi + oraz *. W tym przykładzie usuwamy stan q2. Po tej operacji otrzymujemy:

Na podstawie tego automatu odczytujemy ostatecznie wyrażenie regularne. Zaczynamy od stanu q0, stosując tranzycję do stanu q0 otrzymujemy wyrażenie regularne a*. Następnie stosujemy tranzycję do stanu q1 i otrzymujemy: a*b. Następnie stosujemy tranzycję do stanu q0: a*b(a+b+(a+b)a). Dotychczasowe postępowanie możemy powtórzyć wiele razy i otrzymujemy (a*b(a+b+(a+b)a))*. Następnie stosujemy tranzycję ze stanu q0 do stanu q0 i otrzymujemy: (a*b(a+b+(a+b)a))*a*. Na końcu przechodzimy do stanu q1. Ostatecznie wyrażenie regularne jest postaci: (a*b(a+b+ (a+b)a))*a*b. Konwersja wyrażenia regularnego do automatu Przykładowo mamy dane wyrażenie regularne: a*b(a+b). Najpierw tworzony jest automat, gdzie jest jedna tranzycja o nazwie będącej tym wyrażeniem: Następnie rozbijamy tę tranzycję biorąc pod uwagę wszystkie konkatenacje. Powstaną 3 nowe tranzycje odpowiadające a*, b oraz a+b. Tworzymy stan początkowy i końcowy i łańcuch pomiędzy nowymi tranzycjami:

Następnie rozbijamy wyrażenie a* oraz wyrażenie a+b: Bibliografia 1. [Online] http://en.wikipedia.org/wiki/automata_theory. 2. [Online] http://www.jflap.org/tutorial/fa/createfa/fa.html. 3. [Online] http://en.wikipedia.org/wiki/automata-based_programming.

Zadania Zadania na 3.0 Zadanie 10.3 ze strony http://kompilatory.agh.edu.pl/pages/ta-zadania/%20zadania10-automatyskonczone.htm. Zadanie 1.1 ze strony http://kompilatory.agh.edu.pl/pages/tk-zadania/%20zadania01-wyrazeniaregularne-automaty-skonczone.htm. Zadania na 4.0 Zamodelować za pomocą diagramu stanów UML przesyłkę towaru pocztą. Zadania na 5.0 Napisać w Javie program, który implementuje za pomocą automatu proces przesyłki towaru.