Języki i automaty część 3.

Slides:



Advertisements
Podobne prezentacje
Lingwistyka Matematyczna
Advertisements

Wprowadzenie w problematykę związaną z twierdzeniem Gödla
Obserwowalność System ciągły System dyskretny
DOMINOWANIE W GRAFACH Magdalena Lemańska.
Równanie różniczkowe zupełne i równania do niego sprowadzalne
Grafy o średnicy 2 i dowolnej liczbie dominowania
Grażyna Mirkowska PJWSTK 15 listopad 2000
mgr inż. Ryszard Chybicki Zespół Szkół Ponadgimnazjalnych
Rachunek prawdopodobieństwa 2
Metody Analizy Programów Wykład 02
Wykład 06 Metody Analizy Programów System Hoare
WYKŁAD 6. Kolorowanie krawędzi
VI Rachunek predykatów
Badania operacyjne. Wykład 2
Wykład no 11.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Analiza Składniowa Wstępująca
Liczby Pierwsze - algorytmy
ZLICZANIE cz. II.
Zliczanie III.
WYKŁAD 7. Spójność i rozpięte drzewa
GRAFY PLANARNE To grafy, które można narysować na płaszczyźnie tak, by krawędzie nie przecinały się (poza swoimi końcami). Na przykład K_4, ale nie K_5.
Materiały pomocnicze do wykładu
Materiały pomocnicze do wykładu
Macierz incydencji Macierzą incydencji grafu skierowanego D = (V, A), gdzie V = {1, ..., n} oraz A = {a1, ..., am}, nazywamy macierz I(D) = [aij]i=1,...,n,
Zapis informacji Dr Anna Kwiatkowska.
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Zależności funkcyjne.
Kod Graya.
Nierówności (mniej lub bardziej) geometryczne
Hipoteza cegiełek, k-ramienny bandyta, minimalny problem zwodniczy
ANALIZA LEKSYKALNA. Zadaniem analizatora leksykalnego jest przetwarzanie danych pochodzących ze strumienia wejściowego a także rozpoznawanie ciągów znaków.
FIGURY GEOMETRYCZNE Materiały do nauki.
Trójkąty prostokątne Renata Puczyńska.
Dodatkowe własności funkcji B-sklejanych zawężenie f do K Rozważmy funkcjeIch zawężenia do dowolnego przedziałutworzą układ wielomianów. Dla i=k ten układ.
Modele ze strukturą wieku
Obserwatory zredukowane
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
I. Informacje podstawowe
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Pitagoras z Samos.
Paradoksy logiczne i inne 4 marca 2010.
TWORZYMY PARABOLĘ Z PŁASZCZYZNY STOŻKOWEJ TWORZYMY PARABOLĘ
Elementy Rachunku Prawdopodobieństwa i Statystyki
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Języki i automaty część 5.
Technika optymalizacji
XML – eXtensible Markup Language
Podstawy analizy matematycznej I
Rachunki Gentzena Joanna Witoch.
Gramatyki i translatory
ZAPIS BLOKOWY ALGORYTMÓW
Gramatyki Lindenmayera
Metody numeryczne szukanie pierwiastka metodą bisekcji
Zbiory Co to jest zbiór? Nie martw się, jeśli nie potrafisz odpowiedzieć. Nie ma odpowiedzi na to pytanie.
Zagadnienia AI wykład 2.
Zagadnienia AI wykład 5.
ANALIZA SKŁADNIOWA.
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
WYKŁAD 5 OPTYKA FALOWA OSCYLACJE I FALE
Autor: Michał Salewski
Systemy wspomagające dowodzenie twierdzeń
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Wstęp do programowania Wykład 9
Wstęp do programowania Wykład 10 Programowanie w logice.
Gramatyki Lindenmayera Powstanie Deterministyczny L-system.
Analiza portfeli dwu- oraz trzy-akcyjnych. Portfel dwóch akcji bez możliwości krótkiej sprzedaży W - wartość portfela   W = a P 1 + b P 2   P 1 -
© Prof. Antoni Kozioł, Wydział Chemiczny Politechniki Wrocławskiej MATEMATYCZNE MODELOWANIE PROCESÓW BIOTECHNOLOGICZNYCH Temat – 5 Modelowanie różniczkowe.
FUNKCJE RÓŻNOWARTOŚCIOWE
Zapis prezentacji:

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. Istnieje zatem taki wzorzec p, że L(A)=L(p) Czy twierdzenie odwrotne jest prawdziwe? 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

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 Zacznijmy o prostych wzorców: wzorzec DAS   x ¬x  x po uproszczeniu:

? + =  a a  b b a b  + ≠ Konkatenacja A1 jest automatem dla p1. A2 jest automatem dla p2. Szukamy automatu dla p1p2. Rozważmy następującą konstrukcję: A2 A1 ? Każdy akceptujący stan A1 jest stanem początkowym (kopii) A2 A1 + A2 = Przykład Rozpatrzmy wzorzec: ab ¬a  a a ¬b  b b a b ¬a ¬b  + ≠ Automat ten akceptuje jednak słowa nie pasujące do wzorca a*b* np. aba.

 Musimy zatem w inny sposób skonstruować automat dla wzorca p1p2. 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 A1 jest automatem dla p1. A2 jest automatem dla p2. Szukamy automatu dla p1p2. A1 A2  p1p2 A1 A2

Alternatywa A1 jest automatem dla p1. A2 jest automatem dla p2. Szukamy automatu dla p1| p2. A1  A2 p1| p2 A1 A2

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

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

Mamy zatem:  a a  b b Ostatecznie otrzymujemy:  a a  b b

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

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.  a b Przykład a b a b

x1x2…xn …x1…x2…xn… 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 x1x2…xn wtedy i tylko wtedy gdy istnieje słowo …x1…x2…xn… akceptowane przez stary (początkowy) automat.

’(S, x) = S’:= { q’Q:  q S (q, x) = q’ } (2) Pokażemy teraz jak z NAS bez  - przejść można uzyskać DAS. Niech (Q, q0, 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 {q0}. 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’ }

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. Dodatkowo usuwamy z automatu stany, które są nieosiągalne ze stanu początkowego. Przykład NAS DAS 1 a b Q={0, 1} Q’={{0}, {1}, {0,1}, } 1 01  a b

DAS NAS Przykład Q’={{0}, {1}, {2}, {0,1}, {1,2}, {0,2}, {1,2,3}, } 12 012 1  02 01 2 b 2 a 1 Q={0, 1, 2}

Po uproszczeniu otrzymujemy (pomijamy stany nieosiągalne): Przykład (cd) Po uproszczeniu otrzymujemy (pomijamy stany nieosiągalne): 12 012 1  02 01 2 12 012 

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 q0 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 {q0} 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

Podsumowując nasze rozważania możemy sformułować twierdzenie: 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={ 0n1n: nN} Czy L jest językiem regularnym?

Lemat o pompowaniu dla języków regularnych W znalezieniu odpowiedzi na to pytanie pomoże nam: Lemat o pompowaniu dla języków regularnych 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 dla dowolnego k0 słowo k należy do L

Przykład (cd) L={ 0n1n: nN} Rozważmy ponownie język nad alfabetem ={0, 1}. Załóżmy, że L jest językiem regularnym. Niech n będzie liczbą o której mówi Lemat o pompowaniu. Rozważmy słowo 0n1n. Słowo to spełnia założenie lematu (|0n1n| 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).

Przykład (cd) n 00............001……1   0 <n n Czyli: 00............001……1   n Zatem wyrażenie ma następującą postać: 00............001……1  <n n 0 Oznacza to, że 0 nie należy do L. A zatem język L nie może być regularny! Musimy rozważyć szerszą klasę języków!!!

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 

Definicja S 0 1 n   …. i i+1  Ł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  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.

S  B | (S) | S+S | S-S | SS | S/S 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.

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

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, q0, 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:=q0

Dla gramatyki G reguły określamy w następujący sposób: Dla każdego przejścia w DAS q q’ 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 q0. Symbol ten możemy zastąpić przez xq’ jeżeli w DAS jest przejście q q’ x

xq’ możemy zastąpić przez xyq’’ jeżeli w DAS jest przejście ………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, q0, 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.

Przykład L={ 0n1n: nN} Rozważmy ponownie język 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? Okazuje się, że tak. Zdefiniujmy następującą gramatykę: symbole terminalne ={0,1} symbole nieterminalne N={S}. zbiór reguł: S0S1, S Gramatyka ta rzeczywiście generuje nam język L: n S  0S1  00S11  …  0    0S1    1  0    01    1