Języki formalne i automaty Ćwiczenia 1

Podobne dokumenty
Języki formalne i automaty Ćwiczenia 2

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Języki formalne i automaty Ćwiczenia 3

Języki formalne i automaty Ćwiczenia 4

Języki formalne i automaty Ćwiczenia 8

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Języki formalne i automaty Ćwiczenia 7

Języki formalne i automaty Ćwiczenia 9

GRAMATYKI BEZKONTEKSTOWE

Matematyczne Podstawy Informatyki

Hierarchia Chomsky ego

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

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

Gramatyki rekursywne

3.4. Przekształcenia gramatyk bezkontekstowych

Wprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy

Języki formalne i automaty Ćwiczenia 6

Hierarchia Chomsky ego Maszyna Turinga

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

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

Jaki język zrozumie automat?

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

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

Języki, automaty i obliczenia

Matematyczne Podstawy Informatyki

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Języki, automaty i obliczenia

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

Symbol, alfabet, łańcuch

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}

Definiowanie języka przez wyrażenie regularne(wr)

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Języki i gramatyki formalne

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

0.1 Lewostronna rekurencja

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)

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

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

Matematyczna wieża Babel. 3. Gramatyki o językach bezkontekstowych materiały do ćwiczeń

JĘZYKI FORMALNE I METODY KOMPILACJI

Obliczenia inspirowane Naturą

Efektywna analiza składniowa GBK

Gramatyka operatorowa

1 Automaty niedeterministyczne

Definicja 2. Twierdzenie 1. Definicja 3

Języki programowania zasady ich tworzenia

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

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Imię, nazwisko, nr indeksu

Część wspólna (przekrój) A B składa się z wszystkich elementów, które należą jednocześnie do zbioru A i do zbioru B:

TEORIA ZŁOŻONOŚCI PROBLEMY I ALGORYTMY OGRANICZENIE DOLNE I GÓRNE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Języki formalne i automaty Ćwiczenia 5

Efektywność Procedur Obliczeniowych. wykład 5

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

JIP. Analiza składni, gramatyki

Gramatyki regularne i automaty skoczone

Maszyna Turinga języki

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

JĘZYKIFORMALNE IMETODYKOMPILACJI

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

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

Wyrażenia regularne.

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

Gramatyki (1-2) Definiowanie języków programowania. Piotr Chrząstowski-Wachjtel

Języki, automaty i obliczenia

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

11 Probabilistic Context Free Grammars

1. Maszyna Turinga, gramatyki formalne i ONP

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

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

R O Z D Z I A Ł I. Podstawowe pojęcia i ogólne twierdzenia lingwistyki matematycznej. 1. WyraŜenia, języki, gramatyki

Metodologie programowania

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin

Teoretyczne podstawy informatyki

Analizator syntaktyczny

Zadanie analizy leksykalnej

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

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

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Obliczenia inspirowane Naturą

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

- Dla danego zbioru S zbiór wszystkich jego podzbiorów oznaczany symbolem 2 S.

LOGIKA I TEORIA ZBIORÓW

Jȩzyki, automaty, zlożoność obliczeniowa

Języki formalne i gramatyki

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

Logika Matematyczna (1)

JĘZYKI FORMALNE I METODY KOMPILACJI

Wykład 5. Jan Pustelnik

Teoretyczne Podstawy Informatyki

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

O MACIERZACH I UKŁADACH RÓWNAŃ

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

Wykład5,str.1. Maszyny ze stosem ... 1,0 λ r. λ,z λ

Dystrybucje, wiadomości wstępne (I)

Transkrypt:

Języki formalne i automaty Ćwiczenia Autor: Marcin Orchel Spis treści Spis treści... Wstęp teoretyczny... 2 Wprowadzenie do teorii języków formalnych... 2 Gramatyki... 5 Rodzaje gramatyk... 7 Zadania... 9 Zadanie na 3.0... 9 Zadanie na 4.0... 9 Zadanie na 5.0... 9 Przykładowe rozwiązania... 9

Wstęp teoretyczny Wprowadzenie do teorii języków formalnych Alfabet skończony zbiór symboli, np. A = {a, b, c} Słowo lista symboli z alfabetu, oznaczana jako s s s 2 n, gdzie i s to kolejne symbole w słowie s i A dla i {,, n} np. aabbcca, n jest długością słowa Język formalny zbiór słów, np. {aab, aabbccc, accb} Dwa języki formalne są identyczne, kiedy zawierają te same słowa. Syntaktyka i semantyka języka. Syntaktyka języka: mechaniczne przekształcanie napisów. Semantyka języka: branie pod uwagę znaczenia poszczególnych napisów. Teoria języków formalnych zajmuje się głównie syntaktyką języka. Specyfikacja języka formalnego składa się ze specyfikacji alfabetu oraz słów należących do tego języka. Specyfikacja w języku naturalnym: Alfabet {0,,2,3,4,5,6,7,8,9,+,=} Język, opisujący syntaktykę równania z działaniem dodawania, przykładowe słowa języka: +2 = 3, +4=345, +3+4+5=24, =3. Przykładowe słowa nie należące do języka: +2==3, ++=3, +2=3=2, +=3. a) Każde słowo języka zawiera dokładnie jeden znak = b) Sąsiadem znaku + jest symbol ze zbioru {0,,2,3,4,5,6,7,8,9} Język ten zawiera nieskończenie wiele słów. Przykład 2: Alfabet - {a, b} Do języka należą wszystkie słowa, które mają tą samą liczbę symboli a i b. Przykład słów należących do języka: ab, aabb, abab. Przykład 3: Alfabet - {a, b} Do języka należą wszystkie słowa składające się z symboli a i b, w tym słowo puste (ε). Zbiór tych słów oznaczamy jako {a,b}*.

Podczas konkatenacji słowa pustego ze słowem s zachodzi: sε = s. Przykład 4: Alfabet - {a, b} Do języka należą wszystkie słowa składające się z symboli a i b, bez słowa pustego. Zbiór tych słów oznaczamy jako {a,b} +. Przykład 5: Alfabet - {a, b} Do języka należą słowa ze zbioru {a n n >= 0} dla n naturalnego. a n oznacza słowo składające się z symbolu a powtórzonego n razy, a 0 oznacza słowo puste. Formalizmy specyfikacji języków.. Język formalny może być wyspecyfikowany za pomocą gramatyki. 2. Język formalny wyspecyfikowany za pomocą wyrażenia regularnego. 3. Język formalny jako zbiór słów akceptowanych przez automat. 4. Język to zbiór słów, dla których pewna procedura decyzyjna zwróci odpowiedź TAK. Główne pytania odnośnie tych formalizmów. Czy dany formalizm może opisywać wszystkie języki, które opisuje inny formalizm? Czy może opisywać jeszcze inne języki? 2. Jak trudna jest decyzja, czy dane słowo należy do danego języka? 3. Jak trudne jest stwierdzenie czy dwa języki opisane przez ten sam lub różne formalizmy to te same języki? Operacje, które można wykonywać na językach. Dane dwa języki nad tym samym alfabetem. Możliwe operacje: unia języków, przecięcie języków, negacja języka, złożenie języków - zbiór wszystkich słów, których pierwsza część pochodzi z pierwszego języka, a druga z drugiego języka, odwracanie języka - każde słowo jest odwracane Zamknięcie klasy języków na operacje. Klasa języków jest zamknięta na pewną operację, jeśli język, który jest wynikiem tej operacji należy również do tej klasy języków. Przykład:

Alfabet {a,b} Przykładowa klasa języków: wszystkie języki, które zawierają tyle samo symboli a, co b. Przykładowe języki: {aa, aabb}, {bb, abab, abba},. Taka klasa zamknięta jest na operacje unii, przecięcia i złożenia języków, oraz na odwracanie języka. Nie jest zamknięta na negacje języka. Operacja homomorfizmu. Dane są dwa alfabety A oraz A 2. Homomorfizm na zbiorze A * to funkcja taka, że dla każdego u, v należącego do A *. Przykład * h : A A * 2 ( uv) h( u ) h( v) h = () Mamy dwa alfabety: {a, b}, oraz {c, d}. Operację h na słowie definiujemy jako zastąpienie każdego symbolu a symbolem c, oraz każdego symbolu b symbolem d w tym słowie. Sprawdźmy czy jest spełniony warunek. Przykładowo: u = ab, v = aabb h(abaabb) =h(ab)h(aabb) cdccdd=cdccdd Przykład 2 Mamy dwa identyczne alfabety: {a, b}, {a, b} Przykład operacji, która nie jest homomorfizmem: definiujemy operację h na słowie jako odwrócenie tego słowa. u = ab, v = aabb h(abaabb) =h(ab)h(aabb) bbaaba=babbaa Jak widać dla powyższego przykładu warunek homomorfizmu nie jest spełniony.

Gramatyki Gramatyka lista składająca się z: skończonego zbioru symboli nieterminalnych, oznaczanych jako N skończonego zbioru symboli terminalnych, który nie ma elementów wspólnych z N, oznaczany jako T skończonego zbioru P produkcji. Każda produkcja to napis: + ( T N ) ( T N ) * Symbol S N nazywany symbolem startowym Gramatyka służy do definiowania języka formalnego. Przykład gramatyki: T = {a,b}. Produkcje gramatyki:. S asb 2. S ba Sposób wyprowadzania słów języka zdefiniowanego za pomocą gramatyki:. Wejściowym napisem jest S. 2. Wybieramy dowolną produkcję. 3. Dokonujemy podstawienia w aktualnym napisie zgodnie z wybraną produkcją. 4. Jeśli powstały napis nie zawiera symboli nieterminalnych, to kończymy działanie. 5. Jeśli powstały napis zawiera symbole nieterminalne, to idziemy do kroku 2. Przykład wyprowadzenia słów: a) S ba 2 b) S asb aasbb aababb 2 Zbiór wszystkich słów wyprowadzalnych przez tą gramatykę może być zapisany w następującej postaci: gdzie n jest liczbą naturalną. n n { a bab n 0},

Przykład 2 T = {a,b} Produkcje gramatyki:. S asb 2. S ε Przykład wyprowadzenia słów: a) S ε b) S asb aasbb aaabbb 2 Zbiór wszystkich słów wyprowadzalnych przez tą gramatykę może być zapisany w następującej postaci: gdzie n jest liczbą naturalną. Przykład 3 N={S, B}, T={a,b,c}. S absc 2. S abc 3. Ba ab 4. Bb bb Przykładowe wyprowadzenia słów: a) S abc b) S absc ababcc aabbcc aabbcc 2 3 4 n n { a b n 0}, Powyższa gramatyka definiuje język: Przykład 4: Język słów postaci: n n n { a b c } L = n n m { a b m, n } Gramatyka dla tego języka: N={S, A, B}, T={a,b}

. S aa 2. A aa 3. A bb 4. B bb 5. B ε Rodzaje gramatyk Hierarchia Chomskiego. Gramatyki typu 0. Gramatyki nieograniczone. Dopuszczalne produkcje postaci: α β gdzie α i β to dowolne łańcuchy symboli terminalnych i nieterminalnych z warunkiem, aby Gramatyki typu. Gramatyki kontekstowe. Dopuszczalne produkcje postaci: α ε. α Aβ α γ β gdzie A jest nieterminalem, α, β, γ są dowolnymi łańcuchami symboli terminalnych i nieterminalnych z warunkiem, że γ ε. Dopuszczona jest ponadto produkcja S ε, jeśli S nie występuje po prawej stronie żadnej z produkcji. Gramatyki typu 2. Gramatyki bezkontekstowe. Dopuszczalne produkcje postaci: A γ gdzie A jest nieterminalem, a γ jest dowolnym łańcuchem terminali i nieterminali. Gramatyki typu 3. Gramatyki regularne. Gramatyka regularna to gramatyka prawostronnie liniowa lub lewostronnie liniowa. Gramatyka prawostronnie liniowa dopuszcza produkcje postaci:. A a 2. A ab Gramatyka lewostronnie liniowa dopuszcza produkcje postaci:. A a 2. A Ba gdzie a jest dowolnym łańcuchem terminali. Dwie gramatyki są równe, gdy maja te same zbiory symboli nieterminalnych, terminalnych i produkcji.

Twierdzenie: G G 0 G3 G 2 Zauważmy, że gramatyka typu 2 nie zawiera się we wszystkich przypadkach w gramatyce typu. Dla przykładu gramatyka typu 2:. S Aa 2. A ε nie zawiera się w zbiorze gramatyk typu, ponieważ druga produkcja nie spełnia warunku gramatyki kontekstowej.

Zadania Do zadań znajdują się odpowiedzi na stronie http://kompilatory.agh.edu.pl/, proszę jednak o nie korzystanie z odpowiedzi przed rozwiązaniem zadania, jedynie dla sprawdzenia poprawności wyniku. Zadanie na 3.0 Należy rozwiązać: zadania.2,.4 ze strony http://kompilatory.agh.edu.pl/pages/ta-zadania/%20zadania0- gramatyki.htm, w każdym zadaniu podać ponadto najwęższy typ gramatyki zadanie 2.2 ze strony http://kompilatory.agh.edu.pl/pages/ta-zadania/%20zadania02- jezyki.htm, w każdym zadaniu podać ponadto najwęższy typ gramatyki Zadanie na 4.0 Napisać gramatykę, która akceptuje słowa będące popularnymi polskimi nazwiskami. Zadanie na 5.0 Napisać program w Javie, który wczytuje produkcje, rozpoznaje typ gramatyki, oraz generuje wybraną ilość słów języka. Napisać omówienie programu. Przykładowe rozwiązania Rozwiązanie zadania. ze strony http://kompilatory.agh.edu.pl/pages/ta-zadania/%20zadania0- gramatyki.htm: Temat zadania: Podać język generowany przez gramatykę: S as bs aa A aa ba ab B ab bb ε. Bierzemy pod uwagę produkcje S as oraz S bs. Produkcje razem stosowane prowadzą do łańcucha: * { a, b} S 2. Następnie stosujemy produkcję S aa i otrzymujemy: * { a, b} aa 3. Zastosowanie produkcji A aa oraz A ba prowadzi do: 4. Zastosowanie produkcji A ab prowadzi do: * * { a, b} a{ a, b} A * * { a, b} a{ a, b} ab

5. Zastosowanie produkcji B ab oraz B bb prowadzi do: * * * { a, b} a{ a, b} a{ a, b} B 6. I ostatecznie zastosowanie produkcji B ε prowadzi do: { a, b} * a{ a, b} * a{ a, b} * Słownie powyższy wynik, może być opisany jako dowolny ciąg symboli a i b, w którym na pewno wystąpią dwa symbole a. Pozostało stwierdzić jaki to jest typ gramatyki: Sprawdzamy czy jest to typ. Przykładowo produkcja S as spełnia wymagania gramatyki typu, dla α = ε, β = ε, γ = as, ale produkcja B ε nie spełnia wymogów typu. Jest to natomiast gramatyka typu 2. Jest to również gramatyka typu 3, ponieważ jest gramatyką prawostronnie liniową. Rozwiązanie zadania 2. ze strony http://kompilatory.agh.edu.pl/pages/ta-zadania/%20zadania02- jezyki.htm: Podać gramatykę generującą poniższy język: {ab, bbc, ccca, aaaab, bbbbbc, cccccca, aaaaaaab, } Jeśli zinterpretujemy ten zbiór jako zawierający wszystkie słowa z alfabetu {a,b,c} to gramatyka będzie następująca: S as bs cs ε Jednakże w zadaniu chodzi o znalezienie pewnej prawidłowości w tym zbiorze, którą autor zadania miał na myśli. W tym wypadku można zauważyć następujące prawidłowości: Każde słowo składa się z dwóch podsłów, każde z nich składa się z jednego rodzaju symbolu, i są one różne w obrębie słowa, drugie podsłowo ma zawsze długość, występują 3 sekwencje symboli w słowie: a i b, b i c, c i a. W sekwencji symboli a i b zauważmy, że liczba symboli a wynosi + 3n. W sekwencji b i c liczba symboli b wynosi: 2 + 3n. W sekwencji c i a liczba symboli wynosi: 3 + 3n. Drugim krokiem po znalezieniu prawidłowości w zbiorze jest zapisanie tego w formie gramatyki. Mamy 3 rodzaje sekwencji, w każdej sekwencji na końcu występuje literka a lub b lub c, każda sekwencja ma różne początki, a więc możemy zapisać: S Ab Bc Ca Następnie definiujemy początki sekwencji zgodnie ze znalezionymi wzorami. Zapisanie sekwencji symbolu a, który występuje + 3n razy jest następujące: A a aaaa,

analogicznie zapisujemy pozostałe sekwencje: B bb bbbb, C ccc cccc. Ostatecznie gramatyka ma postać: S Ab Bc Ca A a aaaa B bb bbbb C ccc cccc Należy jeszcze określić typ tej gramatyki: Jest to gramatyka typu, jest to również gramatyka typu 2. Nie jest to jednak gramatyka typu 3 ponieważ występują w niej produkcje lewostronnie liniowe i prawostronnie liniowe.