Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Języki i automaty część 3. Języki regularne i automaty Udowodniliśmy, że język L(A) zdefiniowany przez dowolny DAS A jest językiem regularnym. Czy twierdzenie.

Podobne prezentacje


Prezentacja na temat: "Języki i automaty część 3. Języki regularne i automaty Udowodniliśmy, że język L(A) zdefiniowany przez dowolny DAS A jest językiem regularnym. Czy twierdzenie."— Zapis prezentacji:

1 Języki i automaty część 3

2 Języki regularne i automaty Udowodniliśmy, że język L(A) zdefiniowany przez dowolny DAS A jest językiem regularnym. Czy twierdzenie odwrotne jest prawdziwe? Istnieje zatem taki wzorzec p, że L(A)=L(p) Czy dla dowolnego języka regularnego L(p) nad pewnym alfabetem istnieje DAS akceptujący dokładnie te słowa, które pasują do wzorca p? TAK

3 Twierdzenie 3.1 Dla każdego wyrażenia regularnego p nad pewnym alfabetem istnieje DAS akceptujący dokładnie te słowa, które pasują do p. Dowód wzorzec DAS Zacznijmy o prostych wzorców: x x ¬x¬x x po uproszczeniu:

4 A 1 jest automatem dla p 1. A 2 jest automatem dla p 2. Szukamy automatu dla p 1 p 2. Rozważmy następującą konstrukcję: Konkatenacja A1A1 A2A2 + = Przykład Rozpatrzmy wzorzec: a b + a b ¬a¬a ¬b¬b ¬a¬a a a ¬b¬b b b A2A2 A1A1 A2A2 A2A2 ? Każdy akceptujący stan A 1 jest stanem początkowym (kopii) A 2 Automat ten akceptuje jednak słowa nie pasujące do wzorca a*b* np. aba.

5 Między stanami wprowadzamy przejścia, które nie wymagają żadnego symbolu wejściowego. Przejścia takie pozwolą nam łączone automaty utrzymać w pewnej odległości. Do alfabetu dodajemy literę oznaczającą takie przejścia. Otrzymujemy w ten sposób automaty skończone z - przejściami. Konkatenacja A1A1 A2A2 A 1 jest automatem dla p 1. A 2 jest automatem dla p 2. Szukamy automatu dla p 1 p 2. Musimy zatem w inny sposób skonstruować automat dla wzorca p 1 p 2. A1A1 A2A2 p1p2p1p2

6 Alternatywa A1A1 A2A2 A 1 jest automatem dla p 1. A 2 jest automatem dla p 2. Szukamy automatu dla p 1 | p 2. A1A1 A2A2 p 1 | p 2

7 A jest automatem dla p. Szukamy automatu dla p. Gwiazdka Kleenego A UWAGA: automat nie jest deterministyczny!!! A p

8 Przykład Rozpatrzmy ponownie wzorzec: a b a a wzorzec automat a a a a Po uproszczeniu otrzymujemy:

9 Mamy zatem: a a b b a a b b Ostatecznie otrzymujemy:

10 Dla każdego wyrażenia regularnego p nad pewnym alfabetem istnieje NAS akceptujący dokładnie te słowa, które pasują do p. W ten sposób otrzymaliśmy twierdzenie (oznaczmy je 3.2): Czy z NAS można w jakiś sposób otrzymać DAS? (1) Na początek spróbujmy usunąć z NAS - przejścia Niech (Q, q 0, F, ) będzie NAS z - przejściami. Nową funkcję definiujemy w następujący sposób: q q q … x qq x

11 Do zbioru F należą wszystkie stany z F oraz te stany, z których można przejść do stanów z F przez dowolną liczbę - przejść. Dodatkowo usuwamy z automatu stany, które są nieosiągalne ze stanu początkowego. Przykład a b a b a a a b a

12 Przekształciliśmy zatem automat z - przejściami na automat bez - przejść. UWAGI (I) Nawet jeśli początkowo mamy DAS w wyniku powyższej procedury możemy otrzymać NAS. (II) Nowy automat akceptuje słowo x 1 x 2 …x n wtedy i tylko wtedy gdy istnieje słowo … x 1 … x 2 … x n … akceptowane przez stary (początkowy) automat.

13 (2) Pokażemy teraz jak z NAS bez - przejść można uzyskać DAS. Niech (Q, q 0, F, ) będzie NAS bez - przejść. Chcemy zbudować DAS akceptujący dokładnie te same słowa. nowy zbiór stanów Q jest zbiorem potęgowym zbioru Q czyli Q=P(Q). nowym stanem początkowym jest zbiór {q 0 }. zbiór należący do Q jest stanem akceptującym jeżeli zawiera przynajmniej jeden stan należący do F. nowa funkcja przejścia: (S, x) = S:= { q Q: q S ( q, x) = q }

14 Dodatkowo usuwamy z automatu stany, które są nieosiągalne ze stanu początkowego. Zatem do zbioru S= (S, x) należą te stany do których można przejść ze stanów należących do S przez drogi z etykietą x. Przykład 1 0 a b Q={0, 1} b Q={{0}, {1}, {0,1}, } a b b a a b a b NASDAS

15 Przykład b 2 0 a a b b 1 Q={0, 1, 2} Q={{0}, {1}, {2}, {0,1}, {1,2}, {0,2}, {1,2,3}, } NAS DAS

16 Przykład (cd) Po uproszczeniu otrzymujemy (pomijamy stany nieosiągalne):

17 Aby zakończyć dowód twierdzenia musimy pokazać, że zbudowany przez nas DAS akceptuje dokładnie te same słowa co początkowy NAS. Jeżeli słowo jest akceptowane przez początkowy NAS oznacza to, że istnieje przejście ze stanu początkowego q 0 z etykietami będącymi kolejnymi literami słowa do jednego ze stanów akceptujących ze zbioru F. Oznacza to, że istnieje przejście ze stanu początkowego {q 0 } z etykietami będącymi kolejnymi literami słowa do stanu, który zawiera stan akceptujący początkowego NAS. Stan taki jest stanem akceptującym w zbudowanym DAS. Z drugiej strony jeżeli zbudowany DAS akceptuje pewne słowo to oczywiście musi je akceptować początkowy NAS. W ten sposób otrzymujemy Twierdzenie 3.1

18 Podsumowując nasze rozważania możemy sformułować twierdzenie: Twierdzenie 3.3 Język jest regularny wtw gdy jest rozpoznany przez DAS oraz wtw gdy jest rozpoznany przez NAS. Przykład Rozważmy alfabet ={0, 1} i język L={ 0 n 1 n : n N} Czy L jest językiem regularnym?

19 Twierdzenie 3.4 Niech L będzie nieskończonym językiem regularnym. Istnieje wówczas liczba n>0 taka, że każde słowo z L o długości | | n można rozbić na 3 części, i takie, że: = | | n Lemat o pompowaniu dla języków regularnych dla dowolnego k 0 słowo k należy do L W znalezieniu odpowiedzi na to pytanie pomoże nam:

20 Przykład (cd) Rozważmy ponownie język L={ 0 n 1 n : n N} Załóżmy, że L jest językiem regularnym. nad alfabetem ={0, 1}. Niech n będzie liczbą o której mówi Lemat o pompowaniu. Rozważmy słowo 0 n 1 n. Słowo to spełnia założenie lematu (|0 n 1 n | n), a zatem możemy je podzielić na części, i. Ponieważ | | n zatem składa się z samych 0 (a przynajmniej z jednego 0).

21 Przykład (cd) Czyli: ……1 n n Zatem wyrażenie ma następującą postać: ……1

22 Języki bezkontekstowe Gramatyka bezkontekstowa G składa się z czterech elementów: alfabet złożony z tzw. symboli terminalnych. zbiór N złożony z tzw. symboli nieterminalnych (zmienne) takich, że N =. wyróżniony element S N nazywany symbolem początkowym. skończony zbiór produkcji lub reguł tzn. łańcuchów postaci R gdzie R N i ( N )* jest dowolnym łańcuchem symboli terminalnych i nieterminalnych. R czytamy: R może być zastąpione przez

23 Definicja Łańcuch ( N)* jest generowany przez gramatykę G jeżeli istnieje ciąg S 0 1 n …. taki, że każdy krok jest uzyskany przez zastosowanie jednej z reguł gramatyki G do nieterminalnego symbolu występującego w. i i+1 i Językiem generowanym przez gramatykę G jest zbiór wszystkich łańcuchów nad, które są generowane przez G. Język generowany przez gramatykę bezkontekstową nazywamy językiem bezkontekstowym.

24 Przykład ={1, 2, 3, 4, (, ), +, -, x, / } N={S, B} Określmy następujące reguły: B 1 B 2 B 3 B 4 S B S (S) S S+S S S-S S S S S S/S Skrótowo: B 1 | 2 | 3 | 4 S B | (S) | S+S | S-S | S S | S/S Gramatyka ta generuje nam wyrażenia arytmetyczne w których występują liczby 1, 2, 3, 4.

25 S S S (S) B (S) B (S+S) 2 (B+S) 2 (3+S) 2 (3+B) 2 (3+1) Przykład (cd) S S S S S S B B ( )

26 Czy języki bezkontekstowe stanowią szerszą klasę niż języki regularne? Lemat 3.1 Każdy język regularny jest generowany przez gramatykę bezkontekstową. Dowód Niech L będzie językiem regularnym. Istnieje wówczas DAS (Q, q 0, F, ) rozpoznający język L. Zdefiniujemy gramatykę G taką, że słowa rozpoznane przez ten DAS tworzą język wygenerowany przez G. jest alfabetem N:=Q S:=q 0

27 Dla gramatyki G reguły określamy w następujący sposób: Dla każdego przejścia w DAS qq x dodajemy następującą regułę do gramatyki: q xq Dla każdego stanu akceptującego q F do gramatyki dodajemy regułę q Łańcuchy generowane są przez gramatykę G w następujący sposób: Zaczynamy od symbolu początkowego q 0. Symbol ten możemy zastąpić przez xq jeżeli w DAS jest przejście qq x

28 xq możemy zastąpić przez xyq jeżeli w DAS jest przejście qq y ………itd xy…zq możemy zastąpić xy…z przez jeżeli q jest stanem akceptującym. Gramatyka G generuje dokładnie te łańcuchy, które akceptowane są przez automat DAS (Q, q 0, F, ). Twierdzenie 3.5 Język jest regularny wtw gdy jest generowany przez gramatykę, której zbiór reguł jest następujący: R xR, R x, R gdzie R, R N, x.

29 Przykład Rozważmy ponownie język L={ 0 n 1 n : n N} nad alfabetem ={0, 1}. Wiemy już, że język ten nie jest językiem regularnym. Czy L jest językiem bezkontekstowym? Czy istnieje gramatyka, która generuje nam język L? Zdefiniujmy następującą gramatykę: symbole terminalne ={0,1} symbole nieterminalne N={S}. zbiór reguł: S 0S1, S n S 0S1 00S11 … 0 0S n Okazuje się, że tak. Gramatyka ta rzeczywiście generuje nam język L:


Pobierz ppt "Języki i automaty część 3. Języki regularne i automaty Udowodniliśmy, że język L(A) zdefiniowany przez dowolny DAS A jest językiem regularnym. Czy twierdzenie."

Podobne prezentacje


Reklamy Google