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

Podobne dokumenty
ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

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}

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

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

Wyrażenia regularne.

1 Automaty niedeterministyczne

Języki formalne i automaty Ćwiczenia 7

Teoretyczne podstawy informatyki

Języki formalne i automaty Ćwiczenia 9

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki

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

Obliczenia inspirowane Naturą

Jaki język zrozumie automat?

Wprowadzenie do maszyny Turinga

Języki formalne i automaty Ćwiczenia 1

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

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

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

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

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, δ)

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

Wstęp do Techniki Cyfrowej... Teoria automatów

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

Zajęcia nr. 3 notatki

Maszyna Turinga (Algorytmy Część III)

Teoretyczne podstawy informatyki

Imię, nazwisko, nr indeksu

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

Języki formalne i automaty Ćwiczenia 4

Matematyczne Podstawy Informatyki

1. Liczby naturalne, podzielność, silnie, reszty z dzielenia

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

Symbol, alfabet, łańcuch

Języki formalne i automaty Ćwiczenia 2

Lista zadań - Relacje

Maszyna Turinga języki

TEORETYCZNE PODSTAWY INFORMATYKI

Języki, automaty i obliczenia

Języki formalne i automaty Ćwiczenia 6

Algorytmy sztucznej inteligencji

Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:

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

1 Działania na zbiorach

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

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)

ZAGADNIENIE TRANSPORTOWE

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Arytmetyka liczb binarnych

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

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

Hierarchia Chomsky ego Maszyna Turinga

Zbiory, relacje i funkcje

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do informatyki- wykład 2

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Zasada indukcji matematycznej

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

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Efektywność Procedur Obliczeniowych. wykład 5

Relacje. opracował Maciej Grzesiak. 17 października 2011

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Algebra Boole a i jej zastosowania

0 + 0 = 0, = 1, = 1, = 0.

Teoretyczne podstawy informatyki

Pętle. Dodał Administrator niedziela, 14 marzec :27

Obliczenia inspirowane Naturą

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Rozwiązaniem jest zbiór (, ] (5, )

Grupy. Permutacje 1. (G2) istnieje element jednostkowy (lub neutralny), tzn. taki element e G, że dla dowolnego a G zachodzi.

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

Cechy podzielności liczb. Autor: Szymon Stolarczyk

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Przykładowe zadania z teorii liczb

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

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

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

Hierarchia Chomsky ego

Spacery losowe generowanie realizacji procesu losowego

Metoda eliminacji Gaussa

LOGIKA I TEORIA ZBIORÓW

Języki, automaty i obliczenia

Układy równań i nierówności liniowych

Definicja 2. Twierdzenie 1. Definicja 3

7. CIĄGI. WYKŁAD 5. Przykłady :

Podstawy Kompilatorów

Matematyczne Podstawy Informatyki

Zadanie 2: Arytmetyka symboli

POLITECHNIKA OPOLSKA

Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów

Wykład nr 3 Techniki Mikroprocesorowe. dr inż. Artur Cichowski

domykanie relacji, relacja równoważności, rozkłady zbiorów

Sortowanie zewnętrzne

POLITECHNIKA OPOLSKA

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

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

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Transkrypt:

AUTOMATY SKOŃCZONE DETERMINISTYCZNY AUTOMAT SKOŃCZONY - DAS Automat skończony jest modelem matematycznym systemu o dyskretnych wejściach i wyjściach. System taki w danej chwili może znajdować się w jednym ze skończonej liczby stanów, który to stan jest ściśle uzależniony od stanu poprzedniego. Jeden ze stanów pełni rolę stanu początkowego, od którego dany automat rozpoczyna działanie, z drugiej strony niektóre stany pełnią rolę stanów końcowych kończąc pracę automatu. Praca automatu oparta jest na analizie symboli wejściowych ze skończonego alfabetu. Każdy odczytany symbol wymusza przejście do innego stanu (w niektórych przypadkach przejście prowadzi do tego samego stanu). Po przeanalizowaniu wszystkich symboli automat skończony może przyjąć jeden z dwu stanów: akceptacji lub nieakceptacji. Bardzo często automat skończony, który w dalszych rozważaniach będziemy oznaczać jako AS jest przedstawiany za pomocą grafów skierowanych, w których wierzchołki obrazują stany automatu. Jeżeli istnieje przejście z jednego stanu do następnego to takie przejście przedstawione jest za pomocą łuku. Dla wyodrębnienia stanu początkowego, wierzchołek rozpoczynający pracę automatu wzbogacony jest o strzałkę z napisem START. W celu zaakcentowania stanu końcowego wprowadza się dwa odrębne wierzchołki grafu opatrzone etykietą A (s.akceptacji) N (s.nieakceptacji), bądź stan końcowy oznacza się podwójnym kółkiem. Poniższy rysunek przedstawia fragment grafu dla automatu skończonego: Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę: < Q,, ð, q o, F> gdzie: Q - jest skończonym zbiorem stanów, - jest skończonym alfabetem symboli wejściowych, q 0 należące do Q jest stanem początkowym od którego automat rozpoczyna działanie, F Q - jest zbiorem stanów końcowych (stan akceptacji lub nieakceptacji), 1

ð - jest funkcją odwzorowującą Q x w Q czyli ð określa każdemu stanowi q i każdemu symbolowi na wejściu nowy stan automatu. Automat skończony możemy sobie wyobrazić jako głowicę sterująco-czytającą, która analizuje symbole zapisane na taśmie w sposób pokazany na rysunku: W danej chwili automat odczytuje symbol wejściowy i przechodzi do kolejnego stanu. Jeżeli stan ten jest stanem akceptacji to znaczy, że dotychczasowy ciąg symboli na taśmie jest zaakceptowany przez AS. Jeżeli głowica przesunęła się na koniec taśmy, a ostatni stan jest stanem zaakceptowanym przez AS to AS zaakceptował cały łańcuch. Formalnie przyjmuje się, że łańcuch jest akceptowany przez automat M, jeżeli ð (q o,x)= p dla jakiegoś p należącego do F. Język akceptowany przez dany automat M oznaczany L(M), to zbiór {x (q o,x) należy do F}. Język nazywamy zbiorem regularnym, jeżeli jest on językiem akceptowanym przez pewien automat skończony. Zbiory regularne zostaną szczegółowo omówione pod koniec tego rozdziału. PRZYKŁADY: Przykłady działania deterministycznego automatu skończonego W celu zobrazowania konstrukcji automatu skończonego przeanalizujmy dwa przykłady dotyczące akceptacji liczb podzielnych przez wybraną liczbę. Przykład 1: Automat skończony akceptujący liczby podzielne przez 2. Dla tego automatu zbiór symboli wejściowych będzie złożony z cyfr od 0..9 czyli = {0,1,2,3,4,5,6,7,8,9}. Wiadomo też, że liczba jest parzysta gdy ostatnia jej cyfra jest podzielna bez reszty przez 2.» Konstrukcję automatu rozpoczynamy od wykreślenia wierzchołka stanu q 0, który jest stanem wejściowym: 2

» Jeżeli pojawi się na wejściu cyfra podzielna przez 2 to zaznaczmy to na grafie jako przejście do stanu q 1, jeżeli pojawi się na wejściu cyfra niepodzielna przez 2 to zaznaczmy to jako przejście do stanu q 2 :» jeżeli AS jest w stanie q 1 i kolejna cyfra na wejściu jest podzielna przez dwa to automat pozostaje nadal w tym samym stanie co zaznaczamy na grafie łukiem wychodzącym z stanu q 1 opatrzonego etykietą {0,2,4,6,8}, jeżeli pozostając w stanie q 2 AS odczyta wszystkie symbole (co umownie oznaczamy pojawieniem się symbolu ø lub # ) wówczas AS przechodzi do stanu akceptacji A:» jeżeli AS jest w stanie q 1 i kolejna cyfra na wejściu jest nieparzysta to AS pozostaje nadal w tym samym stanie co zaznaczamy na grafie łukiem wychodzącym i wchodzącym do stanu q 2 opatrzonego etykietą {1,3,5,7,9}, jeżeli pozostając w stanie q 2 AS odczyta wszystkie symbole to wówczas AS przechodzi do stanu nieakceptacji N: 3

» Oczywiście istnieje możliwość pojawienia się na wejściu przemiennie liczb parzystych i nieparzystych a tym samym przejścia z stanu q 1 do stanu q 2 (ostateczna konstrukcja automatu): Pojawienie się na wejściu liczby np.123 dla rozpatrywanego automatu sprawi, że automat przejdzie przez następujący porządek stanów: q 0, q 2, q 1, q 2, N - czyli liczba 123 nie zostanie zaakceptowana przez automat ( co jest zgodne z prawda gdyż 123 nie jest liczbą parzystą); natomiast pojawienie się liczby 36 wymusi przejście przez stany: q 0, q 2, q 1, A-czyli liczba zostanie zaakceptowana prze automat (co jest zgodne z prawdą gdyż 36 - jest liczbą parzystą). Przykład 2: Automat skończony akceptujący liczby podzielne przez 3. Dla tego automatu zbiór symboli wejściowych będzie złożony z cyfr od 0..9 czyli = {0,1,2,3,4,5,6,7,8,9}. Wiadomo też, że liczba jest podzielna bez reszty przez 3 gdy suma cyfr danej liczby jest podzielna przez 3. Musimy więc rozpatrzyć następujące przypadki tego zadania: po pierwsze jeżeli liczba złożona jest z cyfr 0,3,6,9 to jest ona na pewno podzielna 4

przez 3. Dla cyfr 1,4,7 i 2,5,8 rozpatruje się dodatkowe warunki : pojawienie się cyfr 1,4,7 musi wystąpić trzykrotnie bądź musi wystąpić cyfra 2,5,8 by liczba była podzielna przez 3. Tak samo pojawienie się cyfr 2,5,8 musi wystąpić trzykrotnie bądź po pojawieniu się jednej z nich musi wystąpić cyfra 1,4,7. Diagram przejść takiego automatu przedstawia poniższy rysunek. Pojawienie się na wejściu liczby 126 spowoduje przejście automatu przez stany: q 0, q 1, q 2, A czyli cyfra jest podzielna przez trzy, natomiast 125 wymusi drogę: q 0, q 1, q 2, N czyli liczba nie jest podzielna przez 3. W praktyce badanie czy dana liczba jest podzielna przez n sprowadza się do operacji modulo (badanie reszty z dzielenia liczby przez n). W tym celu przed wykreśleniem grafu automatu skończonego tworzymy tabelę stanów, obrazującą przejścia między stanami w zależności od rozpatrywanej cyfry. Tabelę taką tworzymy w następujący sposób:» liczba kolumn jest równa n, czyli liczbie przez którą dana liczba wejściowa ma być podzielna,» natomiast liczba wierszy jest równa liczbie cyfr (0-9) uzupełniona o 1 dla symbolu pustego ø. Przeanalizujmy tabelę, która dotyczy automatu skończonego badającego czy liczba jest podzielna przez 3. 5

q 1 q 2 q 3 f T N N 0 q1 q2 q3 1 q2 q3 q1 2 q3 q1 q2 3 q1 q2 q3 4 q2 q3 q1 5 q3 q1 q2 6 q1 q2 q3 7 q2 q3 q1 8 q3 q1 q2 9 q1 q2 q3 Chcąc stworzyć automat skończony badający podzielność liczb przez 4, do tabeli 4 dodajemy jedną kolumnę z stanem q4, zaś samo liczenie w pionie zwiększamy do 4, czyli pierwsza kolumna będzie miała następujący porządek stanów: q1, q2, q3, q4, q1, q2, q3, q4, q1, q2. Na tej podstawie możemy stworzyć automat badający podzielność przez dowolną liczbę. Dla tego typu automatów pojawienie się na wejściu jakiegokolwiek symbolu powoduje ruch automatu ściśle określoną drogą bez możliwości wyboru. Jak się okaże w kolejnych podrozdziałach wybór drogi automatu wcale nie musi być z góry określony tzn. że dany symbol wejściowy może wymusić przejście do różnych stanów. Dlatego automaty skończone gdzie istnieje tylko jedna droga przejścia ze stanu do stanu dla danego symbolu wejściowego określa się jako deterministyczne automaty skończone (DAS). NIEDETERMINISTYCZNY AUTOMAT SKOŃCZONY - NAS Jak już zostało wspomniane w końcówce poprzedniego podrozdziału - DAS - dany symbol wejściowy może wymusić przejście do różnych stanów, stąd wprowadźmy modyfikację modelu automatu skończonego, polegającą na istnieniu kilku przejść ze stanu przy tym samym symbolu wejściowym. Taka modyfikacja pozwala zdefiniować model niedeterministycznego automatu skończonego (NAS), który formalnie jest definiowany jako uporządkowana piątka: <Q,, ð, q o, F> gdzie: Q - jest skończonym zbiorem stanów, - jest skończonym alfabetem symboli wejściowych, q 0 należące do Q jest stanem początkowym od którego automat rozpoczyna działanie, 6

F Q - jest zbiorem stanów końcowych (stan akceptacji lub nieakceptacji), ð - jest odwzorowaniem Q x w 2 Q. (2 Q - jest zbiorem potęgowym Q, czyli zbiorem wszystkich podzbiorów Q), czyli ð (q,a) jest zbiorem wszystkich stanów p, dla których istnieje przejście ze stanu q do p po etykiecie związanej z symbolem wejściowym a. Poniższy rysunek przedstawia konstrukcję NAS akceptującego ciągi zerojedynkowe w których przynajmniej raz wystąpiło podwojenie zer lub jedynek: Z rysunku widać, że ze stanu q 0 wychodzą dwie krawędzie (drogi) o etykiecie 0, czyli z chwilą pojawienia się zera na wejściu istnieje możliwość przejścia ze stanu q 0 do stanu q 1 lub q 3. Taka właśnie możliwość wyboru stanów przy tym samym symbolu wejściowym wyróżnia NAS od DAS. Ten typ automatów będzie akceptował ciąg symboli a 1,a 2...a n, dla którego istnieje ciąg przejść prowadzący od stanu początkowego do stanu końcowego. Dla przykładu ciąg 101001 zostanie zaakceptowany przez powyższy NAS bo istnieje towarzyszący mu ciąg przejść: q 0, q 0, q 0, q 3, q 4, q 4 ; natomiast dla ciągu 10101 nie istnieje żadne przejście ze stanu początkowego do końcowego, gdyż automat w wyniku pojawienia się symboli 10101 pozostanie w stanie q 0 czyli wyrażenie nie zostanie zaakceptowane. Poniższy rysunek przedstawia jeszcze jeden niedeterministyczny automat skończony, który akceptuje ciągi wyrazowe, w których wystąpiła przynajmniej raz sekwencja symboli a b c. 7

Deterministyczny automat skończony DAS z poprzedniego podrozdziału jest szczególnym przypadkiem NAS, w którym dla każdego stanu istnieje dokładnie jedno przejście ze stanu do stanu czyli każdy DAS jest NAS. AUTOMAT SKOŃCZONY Z ε - RUCHAMI Modyfikacją niedeterministycznego automatu skończonego jest automat skończony z ε - ruchami. Model automatu w tym przypadku dopuszcza przejście ze stanu do stanu przy pustym wejściu ε. Formalnie niedeterministyczny automat skończony z ε -ruchami jest definiowany jako uporządkowana piątka: < Q,, ð, q o, F> gdzie: PRZYKŁAD: Q,, q o, F- takie same znaczenie jak w przypadku DAS i NAS ð- odwzorowuje Q x ( {ε }) w 2 Q. Czyli ð jest zbiorem wszystkich stanów p takich, że istnieje przejście o etykiecie a ze stanu q do p, natomiast a jest słowem pustym ε lub symbolem ze zbioru. Dla przykładu rozpatrzmy diagram przejść AS z ε - ruchami z przedstawionego rysunku, który akceptuje ciąg symboli zawierających dowolna liczbę zer, po których następuje dowolna liczba jedynek, a następnie dowolna liczba dwójek. Oczywiście zgodnie z definicją dowolna liczba poszczególnych symboli może wynosić 0 czyli nastąpi przejście przy pustym wejściu ε : 8

Dla powyższego diagramu słowo 002 zostanie zaakceptowane gdyż istnieje droga od stanu początkowego do stanu końcowego: q 0, q 0, q 0, ε, ε, q 2, o łukach etykietowanych 0,0, ε, ε, 2. Konstrukcja NAS ε - ruchami jest bardziej zrozumiała po zapoznaniu się z wyrażeniami regularnymi, które zostały omówione w następnym rozdziale. WYRAŻENIA REGULARNE Języki akceptowane przez automaty skończone można łatwo opisać prostymi wyrażeniami zwanymi wyrażeniami regularnymi. Celem przedstawienia zapisu języków akceptowanych wprowadźmy pojęcia: złożenia i domknięcia na zbiorach łańcuchów. Niech będzie skończonym zbiorem symboli i niech L, L 1, L 2 będą zbiorami łańcuchów z *. Złożeniem L 1 i L 2, oznaczanym jako L 1 L 2, nazywamy {xy x należy do L 1 i y należy do L 2 } - oznacza to, że łańcuchy należące do L 1 L 2 tworzone są poprzez wypisanie łańcucha z L 1, a następnie łańcucha z L 2, we wszystkich możliwych kombinacjach np. niech L 1 ={0,1} i L 2 ={01,101} wtedy złożenie L 1 L 2 = {001,0101, 101,1101}. Niech L 0 ={ε } i L i =LL i-1 dla i 3 0. Domknięciem Kleene ego (domknięciem) L, oznaczanym symbolem L *, nazywamy zbiór: a domknięciem dodatnim L, oznaczanym symbolem L +, nazywamy zbiór: Tak więc L * jest zbiorem wszystkich słów otrzymanych w wyniku złożenia dowolnej liczby słów z L, zaś L + wyklucza przypadek zera słów, których złożenie określa się - ε ; np.:» domknięciem Kleene ego {1,0} * ={ε, 1, 0, 11,10,01,00...}, zaś 9

» domknięciem dodatnim {1,0} + = {1, 0, 11,10,01,00...}. Wyrażenia regularne i zbiory przez nie reprezentowane definiujemy w następujący sposób:» Ø jest wyrażeniem regularnym reprezentującym zbiór pusty.» ε jest wyrażeniem regularnym reprezentującym zbiór { ε }.» Dla każdego a z, a jest wyrażeniem regularnym reprezentującym zbiór {a}.» Jeżeli r i s są wyrażeniami regularnymi reprezentującymi odpowiednio języki R i S, to (r+s), (rs) i (r * ) są wyrażeniami regularnymi reprezentującymi odpowiednio zbiory R S, RS i R *. PRZYKŁAD:» 00 jest wyrażeniem regularnym, reprezentującym {00}» (0+1) opisuje zbiór wszystkich łańcuchów złożonych z zer i jedynek» (0+1) * 00(0+1) * opisuje zbiór wszystkich zer i jedynek w których przynajmniej raz wystąpiło podwojenie zer» (1+10) * reprezentuje zbiór wszystkich zer i jedynek rozpoczynających się od 1 i nie zawierajęcych podwojonych symboli 0.» (0+1) * 011 opisuje wszystkie łańcuchy zer i jedynek kończące się sekwencją 011» 0 + 1 + 2 + jest wyrażeniem reprezentującym dowolna liczbę zer po których następuje dowolna liczba jedynek, a następnie dowolna liczba dwójek (domknięcie dodatnie - czyli łańcuchy końcowe muszą zawierać przynajmniej po jednym reprezentancie powyższych symboli). Udowodniono, że wyrażenia regularne reprezentują języki akceptowane przez automaty skończone co oznacza, że dla dowolnego wyrażenia regularnego istnieje odpowiadający mu NAS z ε -ruchami, co więcej wprowadzono gotowe konstruktory dla diagramów przejść pozwalające dla dowolnego wyrażenia regularnego stworzyć mechanicznie konstrukcję automatu skończonego. Wyróżniono trzy podstawowe postacie wyrażeń regularnych: suma teoriomnogościowa r = r 1 + r 2 złożenie r = r 1 r 2 domknięcie r = r 1 * 10

konstruktor dla sumy teoriomnogościowej r = r 1 + r 2 Każda droga na powyższym diagramie automatu M musi rozpoczynać się od przejścia do stanu q 1 lub do stanu q 2 przy pustym wejściu ε. Jeżeli droga prowadzi do q 1, to następnie może dowolnie przebiegać w automacie M 1, aż do osiągnięcia stanu f 1, potem następuje przejście do stanu f o, przy pustym wyjściu ε. Podobnie, jeżeli droga rozpoczęła się przejściem ze stanu q 0 do q 2 to następnie może przebiegać dowolną trasą w automacie M 2, aż do osiągnięcia stanu f 2, a następnie przejście do stanu f 0. konstruktor dla złożenia r = r 1 r 2 Każda droga z q 1 do f 2 w automacie M składa się z drogi etykietowanej jakimś łańcuchem x prowadzącej z q 1 do f 1, po której następuje przejście ze stanu f 1 do stanu q 2 przy pustym wejściu ε a następnie następuje droga z q 2 do f 2 etykietowana jakimś łańcuchem y. konstruktor dla domknięcia r = r 1 * 11

Dowolna droga prowadząca z q 0 do f 2 składa się albo z drogi z q 0 do f 0 o etykiecie ε, albo też z drogi od q 0 do q 1 przy ε, po których następuje pewna liczba (w szczególnym przypadku 0) dróg z q 1 do f 1, potem znowu do q 1 przy ε, następnie znów droga z q 1 do f 1, aż w końcu droga z f 2 do f 0 przy ε. Powyższe konstruktory są bardzo pomocne przy kreśleniu diagramów przejść NAS dla wyrażeń regularnych. Konstrukcję takiego automatu rozpoczynamy wtedy od rozłożenia wyrażenia regularnego na elementarne składowe dla których tworzymy automaty, te z kolei na podstawie konstruktorów łączymy w logiczną całość. Przeanalizujmy przykład automatu akceptującego wyrażenie regularne postaci: 01 * +1. To wyrażenie jest postaci r = r 1 + r 2 gdzie: r 1 =01 * ; r 2 = 1. Dla wyrażenia r 2 postać automatu jest następująca: wyrażenie r 1 możemy zapisać jako r 1 = r 3 + r 4 gdzie r 3 = 0; r 4 =1 *. Automat dla r 3 ma prostą konstrukcję, która przedstawia się następująco: z kolei wyrażenie r 4 możemy zapisać jako r 4 = r * 5 gdzie r 5 to 1, a NAS dla r 5 to: Wykorzystują przedstawione konstruktory zaczniemy kreślenie automatu dla wyrażenia r 4 = 1* ( konstruktor domknięcia) następnie dla r 1 =r 3 r 4 (r= 01 * ) wykorzystujemy konstruktor złożenia dokładając do rys. A następującą konstrukcję: 12

Teraz tworzymy konstrukcję dla wyrażenia r= r 1 + r 2 (r=01 * +1) wykorzystując konstruktor sumy teoriomnogościowej. ZASTOSOWANIA AUTOMATÓW SKOŃCZONYCH Istnieje cała gama problemów z zakresu projektowania oprogramowania, które dają się uprościć poprzez automatyczną konwersję symboliki wyrażeń regularnych na efektywną implementację komputerową odpowiedniego automatu skończonego. Teorię automatów skończonych wykorzystano do: Analizatorów leksykalnych Tokeny (czyli bazowe kategorie syntaktyczne) języka programowania dają się niemal bez wyjątku przedstawić w postaci wyrażeń regularnych. I tak na przykład, identyfikatory ALGOLu, będące ciągami liter i cyfr rozpoczynającymi się od litery (małej czy dużej), bez ograniczenia co do długości ciągu, można wyrazić w postaci ( litera ) ( litera + cyfra ) * gdzie litera oznacza A + B +... + Z + a + b +.. z, a cyfra 0 + 1 +.. + 9 Identyfikatory w Fortlanie, których długość jest ograniczona do sześciu znaków i które nie mogą zawierać innych liter niż duże oraz znak $ mogą być przedstawione jako 13

( litera ) ( e + litera + cyfra ) 5 Niektóre generatory analizatorów leksykalnych przyjmują jako wejście ciąg wyrażeń regularnych opisujących tokeny i wytwarzają pojedynczy automat skończony, rozpoznający dowolny token. Zazwyczaj przekształcają one wyrażenia regularne na NAS z ε -przejściami, a następnie konstruują podzbiory zbioru stanów, aby otrzymać DAS w sposób bezpośredni, zamiast wyeliminować najpierw e -przejścia. Edytorów tekstu Techniki Pewne edytory tekstu oraz podobne do nich programy pozwalają na zastępowanie dowolnego łańcucha pasującego do danego wyrażenia regularnego pewnym innym łańcuchem. Wykorzystywane do projektowania układów przełączających na przykład działanie termostatu jest oparte na analizie temperatur i wybieraniu jednego z dwóch stanów : włączenie układu grzewczego i wyłączenie. 14