Języki Ustalmy pewien skończony zbiór symboli Σ zwany alfabetem. Zbiór Σ zawiera wszystkie skończone ciagi symboli z Σ. Podzbiór L Σ nazywamy językiem a x L nazywamy słowem. Specjalne słowo puste oznaczamy symbolem ǫ. Przykład: Σ = {, } Σ - zbiór wszystkich skończonych ciagów binarnych. L = {,,,...,,,,... } L 2 = {,,, } L 3 = {x {, } : x zawiera jednakowa liczbę i } Języki moga być skończone lub nieskończone. Adam Kasperski Teoria obliczeń 2/22
Operacje na językach Dopełnieniem języka L nazywamy język L = Σ \ L. Sumę dwóch języków L i M definiujemy jako język L M Konkatenację dwóch języków L i M oznaczamy jako L.M i definiujemy jako język zawierajacy xy dla każdego x L i y M. Symbolem x i oznaczamy i-krotna konkatenację x. Domknięciem Kleena języka L nazywamy język L, który tworzymy biorac dowolna liczbę słów z L (z możliwymi powtórzeniami) i łacz ac je w jedno słowo. Formalnie L = i= Li, gdzie L = {ǫ} i L i = L i.l Adam Kasperski Teoria obliczeń 2/22
Problemy decyzyjne jako języki Problem decyzyjny Π traktujemy jako obliczanie funkcji f Π : {, } {, }. Z funkcja ta możemy skojarzyć następujacy język: L Π = {x {, } : f Π (x) = } Język ten zawiera więc wszystkie skończone ciagi bitów, które reprezentuja obiekty dla których odpowiedź brzmi TAK. Problem decyzyjny polega więc na rozstrzygnięciu czy x L Π. Przykład: L P = {x {, } : x jest kodowaniem - liczby pierwszej} Adam Kasperski Teoria obliczeń 2/22
Automat skończony składa się prawostronnie nieskończonej taśmy oraz głowicy, która potrafi tylko odczytywać symbole zapisane na taśmie, przesuwać się w prawo i zmieniać swój stan wewnętrzny. q i Adam Kasperski Teoria obliczeń 2/22
Deterministyczny automat skończony (DAS) jest uporzadko- wana piatk a A = (Q, Σ, δ, q, F), gdzie: Q jest skończonym zbiorem stanów. 2 Σ jest zbiorem symboli wejściowych. 3 δ : Q Σ Q jest funkcja przejścia. 4 q Q jest stanem poczatkowym. 5 F Q jest podzbiorem stanów akceptujacych. Przykład: Q = {q, q, q 2 }, Σ = {, }, δ(q, ) = q, δ(q, ) = q, δ(q, ) = q, δ(q, ) = q 2, δ(q 2, ) = q 2, δ(q 2, ) = q 2, F = {q 2 }. Adam Kasperski Teoria obliczeń 2/22
Funkcję przejścia DAS wygodnie jest przedstawić w postaci tabelarycznej. Przykład: q q q q q q 2 * q 2 q 2 q 2 Adam Kasperski Teoria obliczeń 2/22
Dla każdego DAS można podać diagram przejść określony następujaco: Tworzymy wierzchołek dla każdego stanu Q. 2 Dla każdego δ(q, a) = p, q Q, a Σ, tworzymy łuk (q, p) etykietowany symbolem a. Przykład: q q q2 Adam Kasperski Teoria obliczeń 2/22
Niech x = a a 2 a 3...a n, a i Σ, będzie słowem wejściowym. Obliczenia wykonywane przez DAS na x polegaja na wyznaczeniu ciagu stanów p, p 2,...,p n, gdzie p = q, p i = δ(p i, a i ), i =,...,n. Mówimy, że DAS akceptuje x jeżeli ostatni stan p n F. Alternatywnie, jeżeli istnieje ścieżka od q do stanu akceptujacego etykietowana słowem x. q q q2 Obliczenia: q, q, q, q, q, q, q 2, q 2. Ciag wejściowy jest akceptowany. Jakie słowa akceptuje ten automat? Adam Kasperski Teoria obliczeń 2/22
Ćwiczenie Języki Zaprojektuj DAS, który sprawdza czy zadane słowo nad alfabetem {, } zawiera parzysta liczbę. Adam Kasperski Teoria obliczeń 2/22
Niedeterministyczny automat skończony Niedeterministyczny automat skończony (NAS) różni się od DAS tym, że δ(q, a) dla q Q może prowadzić do żadnego lub dowolnej liczby stanów, tj δ : Q Σ 2 Q. W diagramie przejść oznacza to, że z wierzchołka q może wychodzić więcej niż jeden łuk o etykiecie a. q q q2 q {q, q } q q q 2 * q 2 Adam Kasperski Teoria obliczeń 2/22
W NAS obliczenia dla zadanych danych wejściowych rozgałęziaja się. Automat akceptuje x jeżeli przynajmniej jeden ciag obliczeń prowadzi do stanu akceptujacego. Alternatywnie jeżeli w diagramie przejść istnieje droga od stanu q do stanu akceptujacego o etykiecie x. q q q2 q q q q q q q q q q2 q2 Adam Kasperski Teoria obliczeń 2/22
ǫ-nas jest to NAS o funkcji przejścia δ : Σ {ǫ} 2 Q. Automat akceptuje słowo x jeżeli istnieje droga od q do stanu akceptujacego etykietowana symbolami z x, przy czym symbole ǫ nie wpływaja na etykietowanie. 2 ε ε q q q2 Automat akceptuje słowa,, 2 i nie akceptuje słów 2, 22 itp. Jakie słowa akceptuje ten automat? Adam Kasperski Teoria obliczeń 2/22
Przejścia ǫ pozwalaja znacznie uprościć projektowanie automatów. Jakie słowa akceptuje ten automat? ε q q2 q ε q3 q5 q4 Adam Kasperski Teoria obliczeń 2/22
. Jakie słowa akceptuje ten automat?... 9... 9 + - ε....9 q q q2 q3 q4 ε... 9 q5 Adam Kasperski Teoria obliczeń 2/22
Językiem L(A) akceptowanym przez automat skończony A nad alfabetem Σ nazywamy następujacy zbiór: L(A) = {x Σ : A akceptuje x} Automat skończony jest prostym modelem obliczeń, w którym nie występuje pamięć wewnętrzna (do zapisu pośrednich wyników obliczeń). Potrzebna jest tylko pamięć typu read-only do odczytu danych wejściowych. Za pomoca automatów skończonych można rozwiazywać pewne szczególne problemy decyzyjne. Na przykład: czy zadany ciag bitów zawiera podciag postaci? Adam Kasperski Teoria obliczeń 2/22
Równoważność automatów skończonych Twierdzenie Zbióry języków akceptowanych przez DAS, NAS i ǫ-nas sa takie same. Należy pokazać, że dla NAS istnieje równoważny DAS i dla ǫ-nas istnieje równoważny NAS. Twierdzenie będzie wówczas udowodnione ponieważ DAS jest szczególnym przypadkiem ǫ-nas. Adam Kasperski Teoria obliczeń 2/22
Konstrukcja DAS dla NAS () Dla NAS: (2) Wykonujemy konstrukcję: q {q, q } q q q 2 * q 2 {q } {q, q } {q } {q } {q 2 } * {q 2 } {q, q } {q, q } {q, q 2 } * {q, q 2 } {q, q } {q } * {q, q 2 } {q 2 } * {q, q, q 2 } {q, q } {q, q 2 } Adam Kasperski Teoria obliczeń 2/22
Konstrukcja DAS dla NAS (3) Usuwamy stany, które nie moga być osiagnięte z q i otrzymujemy równoważny DAS. {q } {q, q } {q } {q, q } {q, q } {q, q 2 } * {q, q 2 } {q, q } {q } q q q q2 q, q2 2, Adam Kasperski Teoria obliczeń 2/22
Konstrukcja NAS dla ǫ-nas Dla ǫ-nas: 2 ǫ q {q, q } q q q q 2 * q 2 q 2 Niech e(q) będzie zbiorem stanów osiagalnych z q po łukach ǫ. Konstrukcja dla δ(q, ): mamy e(q ) = {q, q, q 2 }. Obliczamy δ(q, ) δ(q, ) δ(q 2, ) = {q, q }. Następnie bierzemy δ (q, ) := e(q ) e(q ) = {q, q, q 2 }. Stan q jest akceptujacy jeżeli q 2 e(q). Pozostałe funkcje przejścia obliczamy podobnie. Otrzymujemy NAS: 2 * q {q, q, q 2 } {q, q 2 } q 2 * q {q, q 2 } q 2 * q 2 q 2 Adam Kasperski Teoria obliczeń 2/22
Konstrukcja NAS dla ǫ-nas 2 ε ε q q q2 q q 2 2 2 q2 ε q q2 q q2 q ε q3 q4 q5 q q3 q4 q5 Adam Kasperski Teoria obliczeń 2/22
Efektywność obliczeniowa DAS i NAS Twierdzenie Zdefiniujmy język: L n = {x {, } : n-tym symbolem od końca w x jest }. Język L n jest akceptowany przez NAS posiadajacy n stanów i każdy DAS akceptujacy L n musi mieć co najmniej 2 n stanów. NAS rozpoznajacy L n: q q q2 qn Dowód drugiej części twierdzenia (ćwiczenia). Adam Kasperski Teoria obliczeń 2/22
Język L nazywamy językiem regularnym jeżeli istnieje automat skończony (DAS, NAS, ǫ-nas), który akceptuje L. Twierdzenie Ustalmy alfabet Σ. Języki, {ǫ} i {a} dla a Σ sa regularne. 2 Jeżeli R i S sa regularne, to R S, R.S, R i S sa regularne. Wniosek Każdy język skończony jest regularny (dlaczego?). Adam Kasperski Teoria obliczeń 2/22
Idea dowodu: Adam Kasperski Teoria obliczeń 2/22
opisujemy za pomoca wyrażeń regularnych:, ǫ, a sa wyrażeniami regularnymi reprezentujacymi języki, {ǫ} i {a}. jeżeli r i s sa wyrażeniami regularnymi reprezentujacymi języki R i S, to (r + s), (rs), (r ) sa wyrażeniami regularnymi reprezentujacymi odpowiednio R S, R.S i R. Przyjmujemy, że ma większy priorytet niż konkatenacja i suma a konkatenacja ma większy priorytet niż suma. Na przykład ((( )) + ) = +. Jakie języki opisuja wyrażenia regularne:, ( + ), ( + ), ( 2 ), ( + ) ( + ) Adam Kasperski Teoria obliczeń 2/22
Ćwiczenie Języki Skonstruuj automat skończony rozpoznajacy język zadany wyrażeniem regularnym ( + ) Adam Kasperski Teoria obliczeń 2/22
Twierdzenie Każdy język regularny można opisać za pomoca wyrażenia regularnego. Wystarczy pokazać, że każdy język akceptowany przez DAS można opisać w postaci wyrażenia regularnego. Adam Kasperski Teoria obliczeń 2/22
[Krok ] Dla danego automatu najpierw dodajemy jeden stan wejściowy i jeden stan końcowy używajac przejść ǫ. Następnie zastępujemy etykiety łuków odpowiednimi wyrażeniami regularnymi: b b q a a q3 ε q a a ε q4 b a b a ε b b Adam Kasperski Teoria obliczeń 2/22
[Krok 2] Następnie wykonujemy kontrakcję stanów kolejno q, q, q 2. aa+b q3 a q ε b bb ba+a ab ε q4 q2 q3 a(aa+b)* q4 a(aa+b)*ab+b (ba+a)(aa+b)*+ε q2 (ba+a)(aa+b)*ab+bb q3 q4 (a(aa+b)*ab+b)((ba+a)(aa+b)*ab+bb)*((ba+a)(aa+b)*+ε)+a(aa+b)* Adam Kasperski Teoria obliczeń 2/22
Moc obliczeniowa automatów skończonych Lemat o pompowaniu Niech L będzie nieskończonym językiem regularnym. Wówczas istnieje stała n, taka że każde w L, w n, może być przedstawione jako w = xyz, gdzie: y >, xy n, xy i z L dla każdego i. Lemat podaje kryterium, kóre musi spełniać każdy język regularny. jeżeli jakiś język nie spełnia tego kryterium to nie może być regulrany. Zatem Adam Kasperski Teoria obliczeń 2/22
Przykład języka nieregularnego Twiedzenie Język L = { n n : n } nie jest regularny. Dowód: Przypuśćmy, że L jest regularny. Niech n będzie stała z lematu o pompowaniu. Rozważmy w = n n L. Z lematu wynika,że w = xyz, gdzie y > i xy n. Wynika z tego, że y = k dla pewnej stałej k >. Zatem z lematu o pompowaniu wynika, że xy 2 z = n+k n L. Otrzymujemy sprzeczność ponieważ n + k n i n+k n / L. Adam Kasperski Teoria obliczeń 2/22
Przykład języka nieregularnego Twiedzenie Języki: L = { n n : n } L = {x {, } : x zawiera jednakowa liczbę i } L = {x {} : x jest liczba pierwsza} L = { n : n jest potęga 2} nie sa regularne Dowód (ćwiczenia). Adam Kasperski Teoria obliczeń 2/22