TEORETYCZNE PODSTAWY INFORMATYKI

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

Teoretyczne podstawy informatyki

Wyrażenia regularne.

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 7

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

1 Automaty niedeterministyczne

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)

Teoretyczne podstawy informatyki

Hierarchia Chomsky ego Maszyna Turinga

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

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

Imię, nazwisko, nr indeksu

Języki formalne i automaty Ćwiczenia 9

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

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

Obliczenia inspirowane Naturą

Teoretyczne podstawy informatyki

Języki, automaty i obliczenia

Jaki język zrozumie automat?

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyczne Podstawy Informatyki

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

Języki formalne i automaty Ćwiczenia 1

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

Teoria układów logicznych

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

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

10110 =

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

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

LOGIKA I TEORIA ZBIORÓW

Hierarchia Chomsky ego

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

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

Elementy Teorii Obliczeń

Automat Moore a. Teoria układów logicznych

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

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

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

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

Języki, automaty i obliczenia

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

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

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

Maszyna Turinga, ang. Turing Machine (TM)

Matematyczne Podstawy Informatyki

1 Działania na zbiorach

Języki formalne i automaty Ćwiczenia 6

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

Efektywność Procedur Obliczeniowych. wykład 5

Symbol, alfabet, łańcuch

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

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

Obliczenia inspirowane Naturą

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Języki formalne i automaty Ćwiczenia 8

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

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

Definicja 2. Twierdzenie 1. Definicja 3

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Macierze. Rozdział Działania na macierzach

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Zbiory, relacje i funkcje

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Wstęp do Techniki Cyfrowej... Algebra Boole a

Elementy logiki matematycznej

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

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

Języki formalne i automaty Ćwiczenia 2

Teoria automatów i języków formalnych. Określenie relacji

MODELOWANIE RZECZYWISTOŚCI

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

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

Lista zadań - Relacje

Teoretyczne podstawy informatyki

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

5. Rozwiązywanie układów równań liniowych

Metoda Tablic Semantycznych

Arytmetyka liczb binarnych

Podstawowe struktury algebraiczne

WYRAŻENIA ALGEBRAICZNE

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Maszyna Turinga (Algorytmy Część III)

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

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

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

Definicje. Algorytm to:

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

PROBLEMY NIEROZSTRZYGALNE

Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Logika i teoria mnogości Wykład 14

Języki, automaty i obliczenia

FUNKCJE. (odwzorowania) Funkcje 1

INSTYTUT CYBERNETYKI TECHNICZNEJ POLITECHNIKI WROCŁAWSKIEJ ZAKŁAD SZTUCZNEJ INTELIGENCJI I AUTOMATÓW

Złożoność obliczeniowa zadania, zestaw 2

Transkrypt:

TEORETYCZNE PODSTAWY INFORMATYKI Podstawowe pojęcia teorii automatów i języków Zbiór grupa obiektów, nazywanych elementami zbioru, traktowana jako całość {0,5,7,21,57,12,18} Ciąg lista obiektów nazywanych elementami ciągu traktowana jako ułożone w pewnej kolejności (porządku); w przeciwieństwie do zbioru w ciągu kolejność elementów ma znaczenie (1,3,5,7,9,11,13,15) Alfabet skończony, niepusty zbiór symboli; oznaczamy symbolem Przykładowe alfabety: ={0} ={0,1} ={a,b,c,,z} ={I,V,X,L,C,M} alfabet unarny alfabet binarny zbiór wszystkich małych liter zbiór symboli tworzących liczby rzymskie Słowo (łańcuch tekstowy) skończony ciąg symboli wybranych z pewnego alfabetu Przykładowe słowa: w=01000110 przykładowe słowo nad alfabetem binarnym w=informatyka przykładowe słowo nad alfabetem łacińskim długość słowa ilość symboli tworzących słowo; oznaczamy jako w ; 011010 =6 puste slowo łańcuch o zerowej długości słowa (ciąg zero symboli); oznaczamy jako ; =0 Potęga alfabetu zbiór wszystkich słów (łańcuchów) o określonej długości nad pewnym alfabetem ; oznaczamy jako k k definiujemy jako zbiór wszystkich słów o długości k, których wszystkie symbole należą do. Zbiór ten składa się z 2 k elementów. Jeżeli ={0,1} to 0 ={ }, 1 ={0,1}, 2 ={00,01,10,11}, 3 ={000,001,010,011,100,101,110,111} Zbiór wszystkich słów nad alfabetem o dowolnej długości oznaczamy jako *, czyli * = 0 1 2 3 Jeżeli ={0,1} to * ={,0,1,00,01,10,11,000,001,010,011, } Jeżeli ze zbioru słów chcemy wykluczyć puste słowo, to stosujemy oznaczenie + + = 1 2 3 * = + { } Złożenie (konkatenacja) słów jeśli w 1 =s 1 s 2 s 3 s n, a w 2 =t 1 t 2 t 3 t m to konkatenacją tych słów jest słowo w 1 w 2 = s 1 s 2 s 3 s n t 1 t 2 t 3 t m o długości n+m Transpozycja słowa jeśli w=s 1 s 2 s 3 s n, to transpozycją tego słowa jest słowo w T =s n s n-1 s n-2 s 1 n ε gdy n 0 Potęga słowa n-ta potęgą słowa to n-krotne złożenie słowa czyli: w n 1 w w gdy n 0-1 -

Język zbiór słów wybranych z pewnego zbioru * utworzonego na bazie alfabetu ; oznaczamy symbolem L; L może być nieskończony L * L jest językiem nad alfabetem Przykładowe języki: zbiór pusty zbiór wszystkich słów nad alfabetem {0,1} składających się z takiej samej ilości zer i jedynek zbiór wszystkich słów nad alfabetem łacińskim o długości 5 symboli mających taki sam pierwszy i ostatni symbol zbiór wszystkich słów kluczowych języka C zbiór nazw wszystkich jezior w województwie warmińsko-mazurskim zbiór wszystkich słów w języku polskim Języki możemy podzielić na naturalne i formalne Sposoby definiowania języków L={w; w składa się z jednakowej liczby zer i jedynek} L={w; w jest jednym ze słów kluczowych języka C} L={0 n 1 n ; n 1} L={0 n 1 m ; m n 0} L={abb,aabbb,aaabbbb, } L={010,00100,0001000, } Gramatyka skończona liczba reguł definiujących język; oznaczamy symbolem G Graf para (V, E), w której V jest skończonym zbiorem wierzchołków, a E jest relacją binarną nad zbiorem V definiującą krawędzie jako pary wierzchołków Przykładowy graf: G=(V,E); V={1,2,3,4,5,6}; E={(1,2),(1,4),(2,3),(2,4),(3,4),(3,5),(4,5),(5,6)} Drzewo graf acykliczny i spójny. Jeżeli wyróżnimy jeden wierzchołek i nazwiemy go korzeniem, to takie drzewo jest drzewem ukorzenionym Dziedziny rozważane w zakresie podstaw informatyki: Teoria automatów Zajmuje się badaniem własności modeli automatów abstrakcyjnych urządzeń klasyfikujących i obliczeniowych. Ich działanie polega na przechodzeniu między różnymi stanami i rozpoznawaniu w ten sposób wzorców lub wykonywaniu obliczeń. Teoria języków (lingwistyka) Dotyczy ujęcia problemów w postaci języków grupujących słowa. Klasyfikuje języki na pewne kategorie (klasy) i bada własności poszczególnych klas oraz modele obliczeniowe, które potrafią rozpoznawać języki należące do tych klas. - 2 -

Teoria złożoności W informatyce mamy do czynienia z problemami, które dają się łatwo rozwiązać, oraz z takimi, których rozwiązanie jest bardzo trudne i czasochłonne. Teoria złożoności zajmuje się klasyfikowaniem tych problemów na podstawie ich trudności (złożoności ) obliczeniowej. Problemy możemy przeformułowywać, aby szukać łatwiejszych rozwiązań. Możemy także poszukiwać rozwiązań przybliżonych. Teoria obliczalności Istnieją także problemy, które nie są ani łatwe, ani trudne, lecz których w sposób algorytmiczny nie da się w ogóle rozwiązać. Takimi problemami zajmuje się teoria obliczalności. Teorie złożoności i obliczalności są ze sobą powiązane i dzielą problemy na łatwe (podatne obliczeniowo) i trudne (niepodatne) oraz rozstrzygalne (rozwiązywalne algorytmicznie) i nierozstrzygalne (nierozwiązywalne). Lata 30 XX wieku Rys historyczny teorii informatyki Zanim pojawiły się komputery w dzisiejszej ich konstrukcji Alan Turing, angielski matematyk, logik, pionier informatyki badał możliwości obliczeniowe i algorytmiczne abstrakcyjnej maszyny, która pod względem obliczeniowym miała wszystkie właściwości dzisiejszych komputerów. Przeprowadzano teoretyczne rozważania nad tym co może zrobić maszyna obliczeniowa, a co wykracza poza jej możliwości obliczeniowe. Co ciekawe, wszystkie otrzymane wnioski dotyczyły zarówno abstrakcyjnej maszyny o bardzo prostej konstrukcji (Maszyna Turinga) jak i dowolnej maszyny obliczeniowej, w tym znanych nam dzisiaj konstrukcji komputerów. Rozstrzygalność problemów, problem stopu Lata 40 i 50 XX wieku Zajmowano się badaniem możliwości prostych maszyn obliczeniowych nazywanych automatami skończonymi Druga połowa lat 50 Lingwista Noam Chomsky opracował teorię gramatyk formalnych, porządkującą modele obliczeniowe względem ich możliwości obliczeniowych Hierarchia Chomsky ego dla języków formalnych Koniec lat 60 W 1969 roku Stephen Cook i Leonid Levin rozszerzyli badania Turinga nad tym co można, a co nie można obliczyć w rozsądnym horyzoncie czasowym. Oddzielono problemy, które można efektywnie rozwiązać za pomocą komputera od tych problemów, które także można rozwiązać, ale czas potrzebny na ich rozwiązanie nawet na najszybszych komputerach jest nie do przyjęcia. Problemy NP-zupełne - 3 -

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne Automat skończony (AS), ang. Finite Automaton (FA) Automat skończony (automat czytający, maszyna Rabina-Scotta) jest matematycznym modelem systemu o skończonej liczbie stanów. System ten może znajdować w danej chwili w jednym ze stanów. Aktualny stan automatu skończonego wynika z jego poprzednich stanów, w jakich się znajdował. AS rozpoznaje wzorce opisywane językami regularnymi. Przykładem automatu skończonego może być algorytm wykonywany przez mechanizm windy, panel operatorski bankomatu, czy stany, jakie przyjmuje zegarek elektroniczny. Jako automat skończony, chociaż bardzo złożony, można potraktować jednostkę centralną komputera. Sposób działania automatu skończonego AS składa się ze skończonego zbioru stanów i skończonego zbioru przejść ze stanu do stanu Działanie AS opisuje funkcja przejścia, którą można reprezentować w postaci tabeli przejść lub w sposób graficzny za pomocą diagramu przejść (grafu skierowanego) Przejścia są etykietowane symbolami z alfabetu wejściowego Automat skończony pobiera kolejne symbole z ciągu wejściowego (wzorca) Wierzchołki grafu nazywane stanami są etykietowane kolejnymi numerami AS rozpoczyna działanie od stanu początkowego i odczytania pierwszego symbolu z ciągu wejściowego Po przeczytaniu kolejnego symbolu automat przechodzi do innego stanu lub pozostaje w tym samym stanie Gdy AS chcemy traktować jako model matematyczny służący do rozpoznawania wzorców tekstowych do powyższych własności dochodzi jeszcze jedna AS posiada dwa rodzaje stanów: nieakceptujące i akceptujące. Przejście automatu po przeczytaniu całego wzorca do jednego ze stanów akceptujących oznacza jego zaakceptowanie (rozpoznanie) Czytanie kolejnych symboli wzorca przez automat skończony; ={0,1} - 4 -

stan a symbol b q 0 q 1 q 3 q 1 q 1 q 2 q 2 q 1 q 2 q 3 q 4 q 3 q 4 q 4 q 3 stan symbol 0 1 q 0 q 2 q 1 q 1 q 3 q 0 q 2 q 0 q 3 q 3 q 1 q 2 Grafy i równoważne im tabele przejść dla dwóch przykładowych automatów skończonych Przykłady: Rozważamy alfabet binarny. Automat akceptujący język wszystkich słów, w których pierwszy i trzeci symbol jest 1. Automat akceptujący język wszystkich słów, w których drugi symbol jest taki sam jak trzeci. Automat akceptujący język wszystkich słów, w których ostatni symbol jest 0. Automat akceptujący język wszystkich słów, w których występują co najmniej dwa symbole 1. - 5 -

Formalna definicja automatu skończonego Automat skończony jest uporządkowaną piątką (Q,,,q 0,F) gdzie: Q jest skończonym zbiorem stanów jest skończonym alfabetem wejściowym q 0 jest stanem początkowym (q 0 Q) F jest zbiorem stanów akceptujących (F Q) jest funkcją przejścia odwzorowującą Qx w Q Automat odczytuje kolejne symbole należące do alfabetu znajdujące się na taśmie. Czytanie symboli zaczyna od stanu q 0. Po odczytaniu danego symbolu automat przechodzi ze stanu q i do stanu q j (i j lub i=j) i odczytuje kolejny symbol. Językiem AS jest zbiór wszystkich akceptowanych przez niego słów. Języki akceptowane przez AS nazywamy językami regularnymi. Funkcja przejścia opisuje wszystkie przejścia automatu i ma postać (q,a) = p q,p Q, a Rozszerzona funkcja przejścia ˆ opisuje możliwe przejścia z jednego stanu do innego poprzez wiele przejść na skutek przeczytania ciągu znaków (słowa) ˆ (q,w) = p q,p Q, w= * Definicja języka deterministycznego automatu skończonego języka regularnego (JR) Jeżeli mamy AS: A = (Q,,,q 0,F) to język tego automatu oznaczamy przez L(A) i definiujemy następująco: L(A) = {w; ˆ (q 0,w) F} czyli L(A) jest zbiorem łańcuchów tekstowych w= * przeprowadzających stan początkowy q 0 w jeden ze stanów akceptujących. Przykład: Dla automatu: A=({q 0,q 1,q 2,q 3 },{0,1},,q 0,{q 2,q 3 }) udowodnić, że definiuje on język L(A)={w; przedostatni symbol w jest 1 } dla w =0 q 0 F dla w =1 ˆ (q 0,0) = q 0 F, ˆ (q 0,1) = q 1 F dla w =2 ˆ (q 0,00) = q 0 F, ˆ (q 0,01) = q 1 F ˆ (q 0,10) = q 2 F, ˆ (q 0,11) = q 3 F dla w 3 ˆ (q 0, 00) = ˆ (q 1, 00) = ˆ (q 2, 00) = ˆ (q 3, 00) = q 0 F, - 6 -

ˆ (q 0, 01) = ˆ (q 1, 01) = ˆ (q 2, 01) = ˆ (q 3, 01) = q 1 F, ˆ (q 0, 10) = ˆ (q 1, 10) = ˆ (q 2, 10) = ˆ (q 3, 10) = q 2 F ˆ (q 0, 11) = ˆ (q 1, 11) = ˆ (q 2, 11) = ˆ (q 3, 11) = q 3 F Automaty deterministyczne i niedeterministyczne Rozważa się dwa rodzaje automatów skończonych: deterministyczne (DAS), ang. Deterministic Finite Automaton (DFA) niedeterministyczne (NAS), ang. Non-deterministic Finite Automaton (NFA) Automat deterministyczny to taki automat skończony, w którym dla każdego stanu q istnieje co najwyżej jedno przejście opisane symbolem a. W danej chwili automat może znajdować się tylko w jednym stanie. Funkcja przejścia DAS ma postać (q i,a) = p j, q i,p j Q, a, p j pojedynczy stan Automat niedeterministyczny to taki automat skończony, dla którego istnieje co najmniej jeden stan q i, który posiada co najmniej dwa przejścia opisane tym samym symbolem a. Automat w danej chwili może znajdować się równocześnie w kilku stanach. Funkcja przejścia NAS ma postać (q i,a) = P j, q i Q, P j Q, a P j zbiór stanów NAS akceptuje słowo w, gdy przy czytaniu tego słowa możliwe są takie kolejne wybory, które doprowadzą nas od stanu początkowego do stanu akceptującego. NAS nie akceptuje słowa, gdy żadna z możliwych ścieżek nie doprowadzi nas do stanu akceptującego. Działanie NAS można interpretować jako tworzenie kopii automatu skończonego dla każdego z możliwych wariantów, lub zdolność zgadywania które przejście należy wybrać aby dojść do akceptacji. Decyzje deterministyczne i niedeterministyczne Przykładowy automat deterministyczny DAS=(Q,,, q 0, F)=({q 0,q 1,q 2,q 3,q 4 }, {0,1},, q 0, {q 0 }) (q 0,0) = q 0, (q 0,1) = q 1 (q 1,0) = q 2, (q 1,1) = q 3 (q 2,0) = q 4, (q 2,1) = q 0 (q 3,0) = q 1, (q 3,1) = q 2 (q 4,0) = q 3, (q 4,1) = q 4-7 -

Automat akceptuje ciągi symboli: 101, 1111, 11100001,... Aby stwierdzić, czy dany ciąg symboli jest akceptowany przez DAS wystarczy sprawdzić jedną ścieżkę. Przykładowy automat niedeterministyczny NAS=(Q,,, q 0, F)=({q 0,q 1,q 2,q 3,q 4 }, {0,1},, q 0, {q 2,q 4 } (q 0,0) = {q 0, q 1 }, (q 0,1) = {q 0, q 3 } (q 1,0) = {q 2 }, (q 1,1) = (q 2,0) = {q 2 }, (q 2,1) = {q 2 } (q 3,0) =, (q 3,1) ={q 4 } (q 4,0) = {q 4 }, (q 4,1) = {q 4 } Powyższy automat skończony akceptuje ciągi symboli: 000, 101011, 110011,... W przypadku NAS istnieje wiele ścieżek dla danego słowa. Stany w jakich znajduje się powyższy NAS podczas czytania ciągu symboli 010011 Definicja języka niedeterministycznego automatu skończonego języka regularnego Jeżeli mamy NAS: A = (Q,,,q 0,F) to język tego automatu oznaczamy przez L(A) i definiujemy następująco: L(A) = {w; ˆ (q 0,w) F } czyli L(A) jest zbiorem łańcuchów tekstowych w * takich, że ˆ (q 0,w) zawiera co najmniej jeden stan akceptujący. Przykład: NAS czy DAS? DAS rozpoznający większość słów kończących się sekwencją abc NAS rozpoznający wszystkie słowa kończące się sekwencją abc - 8 -

DAS rozpoznający wszystkie słowa kończące się sekwencją abc Automaty skończone dzieli się także na: zupełne dla każdego stanu q i (i=1 n) istnieją przejścia, których suma etykiet tworzy cały alfabet. niezupełne istnieje co najmniej jeden stan q i, w którym suma etykiet nie tworzy całego alfabetu. Równoważność automatów deterministycznych i niedeterministycznych Każdy język, który można opisać za pomocą pewnego NAS, można także opisać za pomocą pewnego DAS. DAS i NAS rozpoznają taką samą klasę języków JR. Jeżeli NAS składa się z n stanów, to równoważny mu (rozpoznający ten sam język) DAS może w najlepszym przypadku składać się ze zbliżonej liczby stanów, ale w najgorszym 2 n stanów. Przekształcanie NAS w DAS usuwanie niedeterminizmu Każdy automat niedeterministyczny można zastąpić automatem deterministycznym (równoważność automatów deterministycznych i niedeterministycznych). W niektórych przypadkach łatwiej jest projektować DAS, w innych NAS. Dwa automaty są równoważne, jeżeli akceptują ten sam język (zbiór słów). Sposób konwersji NAS na DAS - usuwanie z automatu niedeterminizmu konstrukcja podzbiorów Jeżeli dla danego NAS = (Q N,, N,q 0,F N ) chcemy utworzyć równoważny mu DAS=(Q D,, D,q 0,F D ) taki, że L(DAS)=L(NAS) przeprowadzamy następującą konstrukcję podzbiorów. Q N jest skończonym zbiorem stanów NAS Q D jest pewnym skończonym zbiorem potęgowym Q N F N jest zbiorem stanów akceptujących NAS (F N Q N ) F D jest zbiorem podzbiorów potęgowych S utworzonych ze zbioru Q N takich, że w S znajduje się co najmniej jeden stan akceptujący NAS, czyli jeżeli q i F N i q i S i to S i F D - 9 -

Dla każdego zbioru S Q N i dla każdego symbolu a konstruujemy D (S,a) = q a q S czyli rozważamy wszystkie stany q S, obserwujemy do jakich stanów przechodzi NAS z rozważanych stanów q na symbol a i tworzymy sumę teoriomnogościową wszystkich tych stanów. Przykładowe przekształcenia NAS na DAS Konwersja NAS na DAS przykład 1 N, Q N = {q 0,q 1,q 2,q 3,q 4 } Q D = {S 0,S 1,S 2,S 3,S 4,S 5,S 6,S 7,S 8 } S 1 : D (S 1,0) = q, N q, 0 q 1 ( 0) ={ N (q 0,0), N (q 1,0)}= = {q 0,q 1 } {q 2 }={q 0,q 1,q 2 }= S 2 S 0 1 q 0 {q 0,q 1 } {q 0,q 3 } {q 0,q 1 } {q 0,q 1,q 2 } {q 0,q 3 } {q 0,q 3 } {q 0,q 1 } {q 0,q 3,q 4 } {q 0,q 1,q 2 } {q 0,q 1,q 2 } {q 0,q 3,q 2 } {q 0,q 3,q 4 } {q 0,q 1,q 4 } {q 0,q 3,q 4 } {q 0,q 3,q 2 } {q 0,q 1,q 2 } {q 0,q 3,q 4,q 2 } {q 0,q 1,q 4 } {q 0,q 1,q 2,q 4 } {q 0,q 3,q 4 } {q 0,q 3,q 4,q 2 } {q 0,q 1,q 2,q 4 } {q 0,q 3,q 4,q 2 } {q 0,q 1,q 2,q 4 } {q 0,q 1,q 2,q 4 } {q 0,q 3,q 4,q 2 } Konwersja NAS na DAS przykład 2-10 -

Automaty skończone z -przejściami ( -NAS) W automatach z -przejściami (z pustymi przejściami) przejścia etykietuje się tak, jak w automatach DAS i NAS, czyli symbolami należącymi do zastosowanego alfabetu, ale dodatkowo dopuszczalne jest używanie symbolu oznaczającego symbol pusty. Przejście do kolejnego stanu/stanów oznaczone symbolem jest realizowane bez odczytania kolejnego symbolu. Klas języków akceptowanych przez -NAS jest taka sama, jak klasa języków akceptowanych przez NAS i DAS. Automaty -NAS są ściśle powiązane z wyrażeniami regularnymi. Funkcja przejścia -NAS ma postać: (q i,a) = P j, q i Q, P j Q, a { } Przykładowe automaty z -przejściami Jeżeli aktualnym stanem automatu z -przejściami jest stan q i, to jednocześnie stanem aktualnym jest dowolny stan, do którego prowadzi ścieżka zaetykietowana symbolami. -domknięcie stanu q i to zbiór stanów do których można dojść z q i po ścieżce etykietowanej tylko symbolami. -domk(q) = ˆ (q, * ) Przykładowo dla powyższego automatu: -domk(q 2 ) = {q 2,q 1,q 3,q 4,q 6,q 7,q 9 } - 11 -

Eliminacja -przejść Podobnie jak niedeterminizm, -przejścia można wyeliminować. Usuwając -przejścia otrzymujemy na ogół automat niedeterministyczny. Algorytm eliminacji -przejść zamiana -NAS na NAS Q EN jest zbiorem stanów -NAS Q N jest zbiorem stanów NAS, będącym podzbiorem Q EN zawierającym stany istotne i stan początkowy Stan istotny to taki stan, dla którego istnieje co najmniej jedno przejście dochodzące do tego stanu o etykiecie różnej od. 1. W NAS zostawiamy tylko stany istotne i stan początkowy 2. W NAS pomiędzy dwoma stanami ze zbioru Q N (także pomiędzy jednym i tym samym stanem) istnieje przejście, jeżeli w -NAS istnieje ścieżka przechodząca przez wiele przejść, łącząca te dwa stany, składająca się z n -przejść (n 0) i ostatniego przejścia o etykiecie a (n 0 oznacza, że w najprostszym przypadku przejście może być tylko jedno na symbol a) czyli jeżeli ˆ EN (q i,w) = q j, w =... a = * a, a, i j lub i=j to ˆ N (q i,a) = q j 3. F EN jest zbiorem stanów akceptujących -NAS F N jest zbiorem stanów akceptujących NAS W NAS do zbioru F N należą te stany istotne Q N, których -domknięcia zawierają przynajmniej jeden stan akceptujący Q EN czyli q i F N jeżeli -domk(q i ) F EN Przykładowe eliminacje -przejść Zamiana -NAS na NAS - przykład 1 n 0 Stany istotne: q 2, q 4, q 7 Stany akceptujące: q 2, q 4, q 7-12 -

Zamiana -NAS na NAS - przykład 2 Stany istotne: q 2, q 5, q 8 Stany akceptujące: q 0, q 2, q 5, q 8-13 -

Automaty skończone z wyjściem Ograniczeniem omawianego do tej pory automatu skończonego jest to, iż jego wyjście jest ograniczone do sygnału decyzyjnego dwustanowego: akceptuję lub nie akceptuję. Można także rozważać automaty o wyjściu przyjmującym wartości w postaci symboli dobieranych ze zbioru nazywanego alfabetem wyjściowym: Automat Moore a wyjście jest związane jest ze stanem automatu Automat Mealy ego wyjście jest związane z przejściem automatu Automat Moore a Automat Moore a jest uporządkowaną szóstką (Q,,,,, q 0 ) gdzie: Q jest skończonym zbiorem stanów q 0 jest skończonym alfabetem wejściowym jest stanem początkowym (q 0 Q) jest skończonym alfabetem wyjściowym jest funkcją przejścia odwzorowującą Qx w Q jest odwzorowaniem Q w zadającym wyjście związane z każdym ze stanów automatu DAS można traktować jako specjalny przypadek automatu Moore a, dla którego alfabetem wyjściowym jest ={0,1}; 1-akceptacja, 0-brak akceptacji Przykład Poniższy automat Moore a dla alfabetu wejściowego {0,1} i dla ciągu wejściowego traktowanego jako liczba binarna zwraca jeden z symboli należących do alfabetu wyjściowego ={0,1,2,3,4}. Zwracana wartość jest resztą z dzielenia tej liczby w postaci dziesiętnej przez 5. M r = (Q,,,,, q 0 )=({q 0,q 1,q 2,q 3,q 4 }, {0,1}, {0,1,2,3,4},,, q 0 ) (q 0 ) = 0 (q 1 ) = 1 (q 2 ) = 2 (q 3 ) = 3 (q 4 ) = 4 Automat Moore a wyznaczający resztę z dzielenia przez 5 Przykładowo dla ciągu wejściowego 10111011 2 =187 10 stanem końcowym jest q 2 = 2 = 187 mod 5-14 -

Automat Mealy ego Automat skończony Mealy ego jest uporządkowaną szóstką (Q,,,,, q 0 ) Przykład gdzie: Q jest skończonym zbiorem stanów jest skończonym alfabetem wejściowym q 0 jest stanem początkowym (q 0 Q) jest skończonym alfabetem wyjściowym jest funkcją przejścia odwzorowującą Qx w Q jest odwzorowaniem Qx w zadającym wyjście związane z każdym przejściem automatu Poniższy automat Mealy ego dla alfabetu wejściowego {0,1} i dla danego ciągu wejściowego zlicza ile symboli końcowych jest takich samych. Jeżeli ostatni symbol jest inny niż przedostatni zwraca symbol J, jeżeli dwa ostatnie symbole są takie same, a trzeci od końca różny od nich zwraca symbol D, jeżeli trzy lub więcej symboli końcowych jest takich samych zwraca symbol T. M l = (Q,,,,, q 0 )=({q 0,q 1,q 2,q 3,q 4 }, {0,1}, {J,D,T},,, q 0 ) (q 0,0) = J, (q 1,0) = D, (q 2,0) = T, (q 3,0) = J, (q 4,0) = J, (q 0,1) = J (q 1,1) = J (q 2,1) = J (q 3,1) = D (q 4,1) = T Automat Mealy ego zliczający ilość takich samych symboli końcowych (1,2, 3) Przykładowo dla ciągu wejściowego 100110111000111 odpowiedzią automatu jest T (ostatnie zrealizowane przejście). Każdy automat Moore a można zamienić na równoważny mu automat Mealy ego i odwrotnie także. - 15 -

Wyrażenia regularne (WR), ang. Regular Expressions (RE) Języki akceptowane przez automaty skończone można opisywać za pomocą prostych wyrażeń zwanych wyrażeniami regularnymi. Wyrażenia regularne stanowią algebraiczny sposób definiowania wzorców regularnych. Wartością wyrażenia regularnego jest język regularny. L(W) oznacza język zdefiniowany przez wyrażenie regularne W. Wyrażenia regularne konstruuje się w oparciu o następujące operatory: suma w 1 w 2 wystąpienie słowa w 1 lub słowa w 2 złożenie w 1 w 2 wystąpienie słowa w 2 po słowie w 1 * domknięcie Kleene go * w w definiujemy jako nieskończony zbiór i 0 zawierający wszystkie słowa powstałe w wyniku złożenia (konkatenacji) dowolnej ilości słów w (możliwy jest także ich brak) Inaczej domknięcie Kleene go można określić następująco: w * = w ww www wwww... + domknięcie dodatnie 1 i w w definiujemy jako nieskończony zbiór i zawierający wszystkie słowa powstałe w wyniku złożenia dowolnej ilości słów w, ale ich ilością minimalną jest jedno wystąpienie Inaczej domknięcie dodatnie można określić następująco: w + = w ww www wwww... w + = ww * Kolejność realizacji operatorów można ustalać stosując nawiasy. Najwyższy priorytet mają operatory domknięcia, niższy złożenie, a najniższy suma. Wyrażenia regularne są tworzone ze skończonej liczby wystąpień powyższych czterech operatorów. Przykłady: W 1 = a ab, W 2 = c bc to L(W 1 W 2 ) = {ac,abc,abbc}, L(W 1 W 2 ) = {a,ab,c,bc} W = ab to L(W * ) = {,ab,abab,ababab,...} W = a bc * d to L(W) = {a,bd,bcd,bccd,bcccd,bccccd,...} W = (a b)c + d to L(W) = {acd,bcd,accd,bccd,acccd,bcccd,...} W = 0(1 2)1 to L(W + ) = {011,021,011011,011021,021011,021021,...} (a 1 a 2 a 3... a n ) * ciąg znaków o dowolnej długości składający się z symboli a 1,a 2,a 3,..., a n 0 * 1 * 2 * ciąg, w którym występuje dowolna liczba symboli 0, po których występuje dowolna liczba symboli 1, po których z kolei występuje dowolna liczba symboli 2 (0 1) * 1(0 1)(0 1) ciąg 0 i 1 taki, że na trzeciej pozycji od końca ciągu występuje 1 (0 1) * 111(0 1) * dowolny ciąg 0 i 1, w którym występują trzy jedynki po kolei (ab ac) + ciąg symboli o parzystej długości, w którym na przemian występuje znak a i drugi znak, którym jest b lub c i - 16 -

Prawa algebraiczne dla wyrażeń regularnych Dwa wyrażenia regularne ze zmiennymi są równoważne, jeżeli bez względu na to jakie języki podstawimy za te zmienne, to oba będą definiowały ten sam język wynikowy. Prawa przemienności i łączności w 1 w 2 = w 2 w 1 prawo przemienności sumy teoriomnogościowej (w 1 w 2 ) w 3 = w 1 (w 2 w 3 ) prawo łączności sumy teoriomnogościowej (w 1 w 2 ) w 3 = w 1 (w 2 w 3 ) prawo łączności złożenia Elementy neutralne i anihilator w = w = w w = w = w w = w = Prawa rozdzielności zbiór pusty jest elementem neutralnym dla sumy symbol pusty jest elementem neutralnym dla złożenia zbiór pusty jest anihilatorem dla złożenia w 1 (w 2 w 3 ) = w 1 w 2 w 1 w 3 prawo lewostronnej rozdzielności złożenia względem sumy (w 1 w 2 ) w 3 = w 1 w 3 w 2 w 3 prawo prawostronnej rozdzielności złożenia względem sumy Prawa dotyczące domknięć (w * ) * = w * domknięcie wyrażenia, które jest już domknięte nie zmienia języka * = domknięcie zbioru pustego to łańcuch pusty * = domknięcie łańcucha pustego jest łańcuchem pustym w + = w w * = w * w zapis domknięcia dodatniego za pomocą domknięcia w * = w + zapis domknięcia za pomocą domknięcia dodatniego - 17 -

Różne sposoby definicji języków regularnych JR można definiować na dwa różne sposoby za pomocą opisu w postaci stanów i diagramu przejść oraz w postaci wyrażeń algebraicznych. Twierdzenie: Jeżeli L=L(A) dla pewnego DAS A, to istnieje takie WR W, że L=L(W) Cztery notacje języków regularnych Przekształcanie wyrażeń regularnych na niedeterministyczne automaty skończone z -przejściami (WR -NAS) Konstrukcje -NAS dla czterech operatorów konstruujących WR Suma dwóch wyrażeń regularnych W 1 W 2 Złożenie dwóch wyrażeń regularnych W 1 W 2 Domknięcie Kleene go W * Domknięcie dodatnie W + Przykład WR: 0 (0 1) (0 1) * -NAS: - 18 -

Przekształcanie deterministycznych automatów skończonych na wyrażenia regularne - metoda eliminacji stanów (DAS WR) Metoda ta polega na eliminacji kolejnych stanów automatu, poza stanem początkowym i jednym ze stanów akceptujących. Etykiety przejść, które są symbolami z rozważanego alfabetu w trakcie eliminacji są zastępowane przez coraz bardziej złożone wyrażenia regularne. W przedostatnim kroku metody eliminacji stanów otrzymujemy automat zredukowany do dwóch stanów stanu początkowego S i stanu akceptującego T. W ostatnim kroku automat ten zastępujemy równoważnym mu wyrażeniem regularnym. W celu wyjaśnienia sposobu eliminacji pojedynczego stanu wprowadzono następujące oznaczenia: U eliminowany stan S i poprzedniki eliminowanego stanu U (i=1...n) T j następniki eliminowanego stanu U (j=1...m) s i etykieta przejścia ze stanu S i do U t j etykieta przejścia ze stanu U do stanu T j u przejście ze stanu U do U r ij bezpośrednie przejście z poprzednika S i do następnika T j Algorytm eliminacji stanów: Jeżeli istnieją stany nieakceptujące nie posiadające następników, to je usuwamy Eliminujemy kolejne stany automatu pozostawiając na końcu tylko stan początkowy i akceptujący Eliminację danego stanu U wykonujemy tak, aby zbiór etykiet przejść pomiędzy dowolnymi dwoma stanami nie uległ zmianie po usunięciu U Przed eliminacją stanu U Etykiety przejść od stanu S i do stanu U, od stanu U do niego samego, oraz dalej od stanu U do stanu T j opisuje wyrażenie regularne s i u * t j Etykiety przejść od stanów S i bezpośrednio do stanów T j opisują wyrażenia regularne r ij Po wyeliminowaniu stanu U oraz wszystkich przejść wiodących do i od niego etykiety przejść od S i do stanów T j opisują wyrażenia regularne r ij = r ij s i u * t j Po wyeliminowaniu wszystkich stanów poza stanem początkowym i akceptującym otrzymujemy generyczny automat dwustanowy o etykietach przejść w postaci WR - 19 -

Wyrażenie regularne opisujące wszystkie akceptujące ścieżki generycznego automatu dwustanowego ma postać: W = s * u (t vs * u) * Definiuje ono ten sam JR, który zdefiniowany był przez niezredukowany DAS Jeżeli stan początkowy jest także stanem akceptującym, to eliminujemy wszystkie stany poza stanem początkowym. Wyrażenie regularne znajdujące się na przejściu ze stanu początkowego do niego samego należy domknąć poprzez domknięcie Kleenego. Otrzymane WR realizuje ten sam język co DAS. Gdy automat posiada więcej niż jeden stan akceptujący, to algorytm eliminacji stanów wykonujemy dla każdego stanu akceptującego osobno, a wyrażenie regularne będące rozwiązaniem otrzymujemy zapisując sumę teoriomnogościową wszystkich otrzymanych wyrażeń regularnych. Przykład: Generyczny automat dwustanowy a) eliminujemy q 1 U = q 1 u = S = {q 0 } s ={1} T = {q 0, q 2 } t = {0, 1} r 00 = 0 r 02 = r 00 = r 00 s 0 u * t 0 = 0 10 r 02 = r 02 s 0 u * t 2 = 11 b) eliminujemy q 2 U = q 2 u = 1 S = {q 0, q 3 } s ={11, 1} T = {q 3 } t = {0} r 03 = r 33 = r 03 = r 03 s 0 u * t 3 = 111 * 0 r 33 = r 33 s 3 u * t 3 = 11 * 0 c) automat dwustanowy s = 0 10 u = 111 * 0 v = 0 t = 11 * 0 d) wyznaczamy WR W = s * u (t vs * u) * = (0 10) * 111 * 0 (11 * 0 0(0 10) * 111 * 0) * - 20 -

Własności zamkniętości języków regularnych Zamkniętość JR na pewne operacje oznacza, że jeżeli jeden lub kilka języków jest językami regularnymi, to języki powiązane z nimi za pomocą pewnych operacji są także regularne. Rozważamy następujące operacje na językach: suma, iloczyn, różnica, dopełnienie, odwrócenie JR są zamknięte ze względu na sumę teoriomnogościową Jeżeli L 1 i L 2 są językami regularnymi, to również L 1 L 2 jest językiem regularnym zawierającym wszystkie słowa należące do L 1 lub L 2 L 1 L 2 = {w * (w L 1 w L 2 )} Reprezentacja języka za pomocą WR Jeżeli L 1 =L(W 1 ) i L 2 =L(W 2 ) to L 1 L 2 =L(W 1 W 2 ) Reprezentacja języka za pomocą AS Niech L 1 i L 2 są odpowiednio językami automatów: A 1 =(Q 1,, 1,q 01, F 1 ) i A 2 =(Q 2,, 2,q 02, F 2 ) Dla L 1 L 2 konstruujemy automat A symulujący działanie zarówno A 1 jaki i A 2. Stany A to zbiory będące parami stanów automatów A 1 i A 2 : A=(Q 1 Q 2,,,(q 01,q 02 ),F 1 F 2 ) gdzie ((q i,q j ),a)=( 1 (q i,a), 2 (q j,a)), a, q i Q 1, q j Q 2 Automat A akceptuje słowo w wtedy, gdy słowo to akceptuje automat A 1 lub automat A 2 czyli: ˆ ((q 01,q 02 ),w) = ( ˆ 1 (q 01,w), ˆ 2 (q 02,w)) co najmniej jeden ze stanów jest akceptujący Przykład L 1 ={w; w zawiera 11 } L 2 ={w; w zawiera 00 } L 3 ={w; w zawiera 11 lub 00 } JR są zamknięte ze względu na iloczyn teoriomnogościowy Jeżeli L 1 i L 2 są językami regularnymi, to również L 1 L 2 jest językiem regularnym zawierającym wszystkie słowa należące zarówno do języka L 1 jak i języka L 2. L 1 L 2 = {w * w L 1 w L 2 )} Reprezentacja języka za pomocą WR - nie ma bezpośredniej metody - 21 -

Reprezentacja języka za pomocą AS konstrukcja tak jak dla sumy teoriomnogościowej, inaczej tylko ustalane są stany akceptujące: Automat A akceptuje słowo w wtedy, gdy zarówno automat A 1 jak i automat A 2 akceptują to słowo czyli: ˆ ((q 01,q 02 ),w) = ( ˆ 1 (q 01,w), ˆ 2 (q 02,w)) jest parą stanów akceptujących JR są zamknięte ze względu na różnicę teoriomnogościową Jeżeli L 1 i L 2 są językami regularnymi, to również L 1 \L 2 jest językiem regularnym zawierającym wszystkie słowa należące do języka L 1, ale nie należące do języka L 2. L 1 \L 2 = {w * w L 1 w L 2 )} Reprezentacja języka za pomocą WR - nie ma bezpośredniej metody Reprezentacja języka za pomocą AS konstrukcja tak jak dla sumy teoriomnogościowej, inaczej tylko ustalane są stany akceptujące: Automat A akceptuje słowo w wtedy, gdy automat A 1 akceptuje, a automat A 2 nie akceptuje czyli: ˆ ((q 01,q 02 ),w) = ( ˆ 1 (q 01,w), ˆ 2 (q 02,w)) jest parą stanów odpowiednio: akceptującego i nieakceptującego. JR są zamknięte ze względu na dopełnienie Dopełnienie języka regularnego jest językiem regularnym, tzn. jeżeli L jest JR nad alfabetem, to L = * \L jest także JR. Reprezentacja języka za pomocą WR - nie ma bezpośredniej metody Reprezentacja języka za pomocą AS Jeżeli L =L(A 1 ) dla pewnego DAS A 1 =(Q,,,q 0,F), to L =L(A 2 ), gdzie DAS A 2 =(Q,,,q 0,Q\F), tzn. automat A 2 otrzymujemy poprzez zamianę stanów nieakceptujących automatu A 1 na stany akceptujące i odwrotnie akceptujące na nieakceptujące Przykład L={w; w kończy się 11 } L ={w; w nie kończy się 11 } JR są zamknięte ze względu na odwrócenie Odwrócenie łańcucha w=a 1 a 2 a 3 a n to łańcuch w R =a n a n-1 a n-2 a 1, a w przypadku języków L={0010,01,111}, L R ={0100,10,111} Odwrócenie języka regularnego jest językiem regularnym, tzn. jeżeli L jest JR, to L R jest także JR. Reprezentacja języka za pomocą WR Zasady odwracania dla operatorów WR: Jeżeli W=W 1 W 2 to W R =W 1 R W 2 R Jeżeli W=W 1 W 2 to W R =W R R 2 W 1 Jeżeli * W=W 1 to W R =(W R 1 ) * - 22 -

Przykład W = (0 10) * 110 W=W 1 W 2, W R = W 2 R W 1 R ; W 1 =W 3 *, W 1 R =(W 3 R ) * ; W 3 =W 4 W 5, W 3 R =W 4 R W 5 R W R = 011(0 01) * Reprezentacja języka za pomocą AS Jeżeli dany jest język L=L(A) to język L R konstruujemy następująco: 1) Zmieniamy kierunki wszystkich przejść w automacie A 2) Stan początkowy staje się jedynym stanem akceptującym 3) Tworzymy nowy stan początkowy z przejściem na do wszystkich stanów akceptujących automatu A W ten sposób otrzymujemy automat -NAS, który potem możemy zamienić na NAS i DAS Przykład L={w; w kończy się 11 } -NAS NAS DAS L R ={w; w zaczyna się 11 } - 23 -

Równoważność i minimalizacja automatów skończonych Def: Dwa automaty są równoważne jeżeli definiują ten sam język. Def: Dwa stany w AS q i i q j są równoważne (można je zastąpić pojedynczym stanem) jeżeli dla wszystkich łańcuchów wejściowych w, ˆ (q i,w) F ˆ (q j,w) F Nie wymaga się aby ˆ (q i,w) i ˆ (q j,w) były tym samym stanem, lecz aby oba były akceptujące lub nieakceptujące. Jeżeli dwa stany nie są równoważne, to są rozróżnialne. Algorytm wyszukiwania stanów równoważnych i rozróżnialnych 1. Tworzymy tabelę rozróżnialności stanów zawierającą jedną pozycję dla każdej pary stanów. q 1 q 2 q n q 0 q 1 q n-1 Wprowadzamy następujące oznaczenia: znak x umieszczony w komórce tabeli oznacza dwa stany rozróżnialne, znak o dwa stany równoważne. 2. Jako oczywiste stany rozróżnialne oznaczamy x te pary stanów, gdzie jeden ze stanów jest akceptujący, a drugi nieakceptujący (q 1 F q 2 F) (q 1 F q 2 F) 3. Dla wszystkich pozostałych par stanów (nie oznaczonych x ) dobierając kolejno coraz dłuższe słowa w przechodzimy do kolejnych par stanów. 4. Rozważanie przejść do kolejnych par stanów kończymy, gdy: a. Osiągniemy parę stanów rozróżnialnych ( x ) wtedy wszystkie odwiedzone pary stanów oznaczamy jako rozróżnialne ( x ) w + takie, że ( ˆ (q i,w) F ˆ (q j,w) F) ( ˆ (q i,w) F ˆ (q j,w) F) b. Dla wszystkich rozważonych łańcuchów w każda przeanalizowana para przejść powoduje osiągnięcie pary stanów akceptujących bądź pary stanów nieakceptujących bądź tego samego stanu wtedy taką parę stanów oznaczamy jako równoważną ( o ). w + ( ˆ (q i,w) F ˆ (q j,w) F) ( ˆ (q i,w) F ˆ (q j,w) F) ( ˆ (q i,w)= ˆ (q j,w)) 5. Algorytm kończy działanie po przeanalizowaniu wszystkich par stanów. Pozycje w tabeli oznaczone x to stany rozróżnialne, pozycje oznaczone o to stany równoważne. Stany równoważne łączymy w jeden stan. Twierdzenie: Równoważność stanów jest przechodnia, tzn. jeżeli stany q 1 i q 2 są równoważne (q 1 q 2 ) oraz q 2 q 3 to stany q 1 i q 3 są także równoważne (q 1 q 3 ). - 24 -

Korzystając z algorytmu wyszukiwania stanów równoważnych oraz twierdzenia o równoważności stanów można zminimalizować liczbę stanów DAS, tzn. można znaleźć DAS równoważny podanemu automatowi skończonemu, który ma nie więcej stanów niż jakikolwiek inny DAS akceptujący ten sam JR. Minimalizacja AS polega na: 1. Usunięciu stanów nieosiągalnych ze stanu początkowego 2. Wyszukaniu stanów równoważnych 3. Połączeniu stanów równoważnych Przykład: Stan q 7 jest stanem nieosiągalnym ze stanu początkowego, dlatego można go usunąć z automatu. Tabelę stanów równoważnych i rozróżnialnych q 1 x q 2 x x q 3 o x x q 4 x x x x q 5 x x x x x q 6 x o x x x x q 0 q 1 q 2 q 3 q 4 q 5 Pary stanów równoważnych ( o w tabeli) to: q 0 q 3 q 1 q 6-25 -

AS o minimalnej liczbie stanów Dowodzenie regularności bądź jej braku dla języków regularnych Lemat o pompowaniu Lemat o pompowaniu jest narzędziem służącym do przeprowadzania dowodów, że dany język jest, bądź nie jest regularny, czyli czy można go zdefiniować za pomocą AS lub WR. Lemat o pompowaniu dla JR, ang. pumping lemma Niech L będzie językiem regularnym. Istnieje wtedy stała n (zależna od L) taka, że dowolny łańcuch w L o długości w n można rozbić na trzy łańcuchy w = xyz takie, że: a) y b) xy n c) dla dowolnego k 0 łańcuch xy k z także należy do L - 26 -