Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Podobne dokumenty
2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Gramatyki rekursywne

Języki formalne i automaty Ćwiczenia 1

Hierarchia Chomsky ego Maszyna Turinga

Hierarchia Chomsky ego

Matematyczne Podstawy Informatyki

Symbol, alfabet, łańcuch

JAO - Wprowadzenie do Gramatyk bezkontekstowych

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

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

Języki, automaty i obliczenia

3.4. Przekształcenia gramatyk bezkontekstowych

Gramatyka operatorowa

Języki formalne i automaty Ćwiczenia 3

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

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

GRAMATYKI BEZKONTEKSTOWE

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

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

Języki formalne i automaty Ćwiczenia 9

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

Zadanie analizy leksykalnej

Efektywna analiza składniowa GBK

Matematyczne Podstawy Informatyki

Maszyna Turinga języki

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

Języki formalne i automaty Ćwiczenia 2

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Języki formalne i automaty Ćwiczenia 4

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

Języki, automaty i obliczenia

JĘZYKI FORMALNE I METODY KOMPILACJI

Jaki język zrozumie automat?

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

Języki i gramatyki formalne

JĘZYKIFORMALNE IMETODYKOMPILACJI

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

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

JIP. Analiza składni, gramatyki

Języki formalne i automaty Ćwiczenia 7

Języki formalne i automaty Ćwiczenia 6

Obliczenia inspirowane Naturą

Obliczenia inspirowane Naturą

0.1 Lewostronna rekurencja

Imię, nazwisko, nr indeksu

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

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}

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

Języki formalne i automaty Ćwiczenia 8

Analizator syntaktyczny

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

Gramatyki atrybutywne

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

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

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

JĘZYKI FORMALNE I METODY KOMPILACJI

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

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

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

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

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

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

Języki, automaty i obliczenia

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

11 Probabilistic Context Free Grammars

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

Gramatyki regularne i automaty skoczone

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)

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

10. Translacja sterowana składnią i YACC

1. Maszyna Turinga, gramatyki formalne i ONP

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

Granica i ciągłość funkcji. 1 Granica funkcji rzeczywistej jednej zmiennej rzeczywsitej

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

Obliczenia inspirowane Naturą

1 X-gramatyki, Hierarchia Chomsky ego

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

JĘZYKI FORMALNE I METODY KOMPILACJI

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

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

Podstawy Informatyki Gramatyki formalne

LOGIKA I TEORIA ZBIORÓW

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

R O Z D Z I A Ł V I I

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

Programowanie deklaratywne

Złożoność obliczeniowa

Numeryczne metody optymalizacji Optymalizacja w kierunku. informacje dodatkowe

Rekurencyjna przeliczalność

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

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

1 Automaty niedeterministyczne

Metodologie programowania

5. JĘZYKI BEZKONTEKSTOWE (KLASA "2") GRAMATYKI BEZKONTEKSTOWE AUTOMATY ZE STOSEM DETERMINISTYCZNE JĘZYKI BEZKONTEKSTOWE I

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Języki formalne i automaty Ćwiczenia 5

10110 =

Transkrypt:

Gramatyki, wyprowadzenia, hierarchia Chomsky ego Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G = <V,, P, S> V skończony zbiór symboli nieterminalnych (zmiennych językowych), Σ zbiór (alfabet) symboli terminalnych, P skończony zbiór produkcji, z których kaŝda ma postać α β S V wyróŝniony symbol początkowy (nieterminal) przy czym: P (V Σ) + (V Σ)* P = {α β α (V Σ) +, β (V Σ)* } Czasami produkcje definiuje się inaczej: P (V Σ)*V(V Σ)* (V Σ)* P = {α β α (V Σ)*V(V Σ)*, β (V Σ)* }

Wyprowadzalność (1) Słowo ψ jest wyprowadzalne bezpośrednio ze słowa ω w gramatyce G, co zapisujemy ω G ψ jeŝeli: ω = γαδ ψ = γβδ (α β) P α, β, γ, δ, ψ, ω (V )* Wyprowadzalność (2) Słowo ψ jest wyprowadzalne ze słowa ω w gramatyce G, co zapisujemy ω G+ ψ jeŝeli istnieją φ 0, φ 1,...,φ n φ 0 = ω φ n = ψ φ i-1 G φ i (V )* takie, Ŝe: dla i = 1, 2,..., n Sekwencję φ 0, φ 1,...,φ n nazywamy wyprowadzeniem o długości n. Definiujemy ponadto: ( ω G * ψ ) ( ω G+ ψ ) ( ω = ψ ) Relacje G+ oraz G * są odpowiednio przechodnim oraz przechodnim i zwrotnym domknięciem relacji bezpośredniej wyprowadzalności G. JeŜeli wiadomo, o jaką gramatykę chodzi, pomijamy dolny indeks G w oznaczeniu tych relacji pisząc po prostu: +, * oraz.

Język generowany przez gramatykę, forma zdaniowa Język generowany przez gramatykę Gramatyka jest jednym ze sposobów definiowania języka formalnego. Mając daną gramatykę G oznaczamy przez L(G) zbiór wszystkich słów, które mogą być w tej gramatyce wyprowadzone z symbolu początkowego S. Zbiór ten nazywamy językiem generowanym przez daną gramatykę. L(G) = { x * S G * x } Forma zdaniowa Łańcuch x (V )* nazywamy formą zdaniową gramatyki G, jeśli moŝna go wyprowadzić z symbolu początkowego S. x (V )* jest formą zdaniową S G * x Uwaga: terminu słowo uŝywamy w rozumieniu łańcucha zbudowane wyłącznie z symboli terminalnych x * jest słowem S G * x Hierarchia Chomsky ego Hierarchia Chomsky ego, gramatyki bez ograniczeń Noam Chomsky zdefiniował cztery klasy gramatyk oraz cztery klasy języków formalnych. Klasy te numerowane są od 0 do 3. Klasa 0 Gramatykę G = <V,, P, S>, w której produkcje mają postać α β, gdzie α i β są dowolnymi łańcuchami symboli tej gramatyki, przy czym α ε nazywamy semi-gramatykami Thuego, gramatykami bez ograniczeń, gramatykami struktur frazowych, gramatykami kombinatorycznymi lub gramatykami klasy 0. Definicja gramatyk klasy 0, jak widać, nie nakłada Ŝadnych ograniczeń na postać produkcji gramatyki w stosunku do ogólnej definicji gramatyki. Języki generowane przez gramatyki tego typu noszą nazwę języków rekurencyjnie przeliczalnych. Przez G KOMB oznaczymy klasę gramatyk kombinatorycznych, a przez L RP klasę języków rekurencyjnie przeliczalnych.

Problem Termin problem w uproszczeniu oznacza pytanie związane z jakimś wystąpieniem pewnych obiektów z pewnych klas (u nas tymi obiektami są np. dowolne gramatyki pewnego typu oraz dowolne słowa nad alfabetem definiowanym przez te gramatyki, zaś wystąpieniem obiektu będzie konkretne słowo i konkretna gramatyka), na które to pytania moŝna udzielić odpowiedzi: TAK lub NIE. Termin nierozstrzygalny w uproszczeniu znaczy tyle: nie istnieje jednoznaczny deterministyczny algorytm, który dla kaŝdego wystąpienia danego problemu w skończonej liczbie kroków dałby odpowiedź TAK, jeŝeli poprawna odpowiedź na pytanie związane z wystąpieniem rozwaŝanego problemu brzmi TAK, oraz NIE, gdy poprawna odpowiedź brzmi NIE. Termin rozstrzygalny w uproszczeniu znaczy tyle: istnieje jednoznaczny deterministyczny algorytm, który dla kaŝdego wystąpienia danego problemu w skończonej liczbie kroków dałby odpowiedź TAK, jeŝeli poprawna odpowiedź na pytanie związane z wystąpieniem rozwaŝanego problemu brzmi TAK, oraz NIE, gdy poprawna odpowiedź brzmi NIE. Problem przynaleŝności słowa do języka generowanego przez daną gramatykę Fundamentalny problem, który będzie później naszym głównym przedmiotem zainteresowania, mianowicie: czy słowo x naleŝy do języka generowanego przez daną gramatykę, jest nierozstrzygalny dla języków generowanych przez gramatyki kombinatoryczne. Problem: czy x L(G) jest nierozstrzygalny dla G G KOMB.

Języki i gramatyki kontekstowe (1) Klasa 1 Gramatykę G = <V,, P, S>, w której produkcje mają postać α β, gdzie α i β są takimi łańcuchami symboli tej gramatyki, Ŝe łańcuch β jest przynajmniej tak długi jak łańcuch α ( α β ) oraz dodatkowo dopuszczona jest produkcja S ε, jeśli język zawiera słowo puste, nazywamy gramatykami kontekstowymi, gramatykami monotonicznym, gramatykami nieskracającymi lub gramatykami klasy 1. Termin kontekstowy pochodzi od tego, Ŝe dla kaŝdej gramatyki monotonicznej moŝna znaleźć równowaŝną jej (tzn. generującą ten sam język) gramatykę, której produkcje (z wyjątkiem ewentualnej produkcji S ε) mają postać α 1 Aα 2 α 1 βα 2 gdzie A jest nieterminalem (A V), zaś α 1, α 2, β są dowolnymi łańcuchami symboli gramatyki, przy czym β ε. Produkcje o tej postaci pozwalają na zastąpienie nieterminala A łańcuchem β tylko w lewostronnym kontekście α 1 i prawostronnym kontekście α 2. Języki i gramatyki kontekstowe (2) Języki generowane przez gramatyki tego typu noszą nazwę języków kontekstowych. Przez G K oznaczymy klasę gramatyk kontekstowych, a przez L K klasę języków kontekstowych. Problem: czy x L(G) jest rozstrzygalny dla G G K. Ponadto: G K G KOMB L K L RP

Przykład Język {a m b m c m d m m > 0} jest generowany przez przykładowe gramatyki: klasy 0 i klasy 1 S abcdd cd Dc bd Db ad aaa Ab ba bac bbca cac cca cad ccddd D ε S abf cd Dc bd Db ad aaa Ab ba bac bbca cac cca cad cfd F cdd F cd Języki i gramatyki bezkontekstowe Klasa 2 - klasa gramatyk bezkontekstowych jest chyba najwaŝniejszą (z naszego punktu widzenia) klasą gramatyk, gdyŝ za pomocą gramatyk tej klasy opisuje się składnię większości języków programowania. Gramatykę G = <V,, P, S>, w której produkcje mają postać A β, gdzie A jest nieterminalem (A V), zaś łańcuch β jest dowolnym łańcuchem symboli tej gramatyki nazywamy gramatykami bezkontekstowymi lub gramatykami klasy 2. Termin bezkontekstowy pochodzi od tego, Ŝe produkcje takiej gramatyki pozwalają na bezwarunkowe (bez uwzględniania kontekstu) zastąpienie nieterminala A łańcuchem β. Języki generowane przez gramatyki tego typu noszą nazwę języków bezkontekstowych. Przez G BK oznaczymy klasę gramatyk kontekstowych, a przez L BK klasę języków kontekstowych. Problem: czy x L(G) jest rozstrzygalny dla G G BK. Ponadto: G BK G K G KOMB L BK L K L RP

Języki i gramatyki regularne (1) Klasa 3 Gramatykę G = <V,, P, S>, w której kaŝda produkcja ma postać A xb lub A x gdzie A i B są nieterminalami (A,B V), zaś łańcuch x jest dowolnym łańcuchem symboli terminalnych tej gramatyki (x *) nazywamy gramatyką prawostronnie liniową. Gramatykę G = <V,, P, S>, w której kaŝda produkcja ma postać A Bx lub A x gdzie A i B są nieterminalami (A,B V), zaś łańcuch x jest dowolnym łańcuchem symboli terminalnych tej gramatyki (x *) nazywamy gramatyką lewostronnie liniową. Gramatyki prawostronnie liniowe i lewostronnie liniowe nazywamy gramatykami liniowymi, gramatykami regularnymi lub gramatykami klasy 3. Języki generowane przez gramatyki tego typu noszą nazwę języków regularnych. Przez G RG oznaczymy klasę gramatyk regularnych, a przez L RG klasę języków regularnych. Języki i gramatyki regularne (2) Problem: czy x L(G) jest rozstrzygalny dla G G RG. Ponadto: G RG G BK G K G KOMB L RG L BK L K L RP Klasa gramatyk regularnych jest takŝe bardzo waŝną (z naszego punktu widzenia) klasą gramatyk, gdyŝ za pomocą gramatyk tej klasy opisuje się składnię większości podstawowych elementów leksykalnych (słownikowych) języków programowania (takich jak identyfikatory, stałe numeryczne, stałe tekstowe, komentarze, operatory, itd.

Przykład (1) Przykład: RozwaŜymy gramatykę G = <V,, P, S>, w której: V = {S, A, B, C, D, E, F, G} = {a, b, c} P = { S = S S AbC ad AE abc abc A a B b bc bc D bc ae abfcg F ε bcg bc } Ta gramatyka jest gramatyką kombinatoryczną (klasy 0 w lewych stronach produkcji występują dowolne łańcuchy symboli, są dwie produkcje skracające) i równocześnie nie jest gramatyką Ŝadnej węŝszej klasy. Język przez nią generowany jest oczywiście językiem rekurencyjnie przeliczalnym. Przykład (2) Zbadajmy, jakie słowa są generowane przez tę gramatykę. S AbC abc abc S ad abc S AE ae abfcg abcg abc S abc abc S abc Widać, Ŝe jedynym słowem generowanym przez tę gramatykę jest abc. Dla języka L = { abc } moŝna zbudować znacznie prostszą gramatykę G 1 = <V 1,, P 1, S>, w której: V 1 = {S} = {a, b, c} P 1 = { S abc } S = S Gramatyka G 1 naleŝy do klasy 3 gramatyk regularnych. PoniewaŜ L = L(G) = L(G 1 ) więc język L naleŝy do klasy języków regularnych, mimo Ŝe moŝe być wygenerowany przez gramatykę znacznie szerszej klasy (gramatykę bez ograniczeń). Uwaga: zawsze interesować nas będzie najwęŝsza klasa, do której naleŝy badany język.