JAO - Wprowadzenie do Gramatyk bezkontekstowych

Podobne dokumenty
JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Języki formalne i automaty Ćwiczenia 1

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

3.4. Przekształcenia gramatyk bezkontekstowych

Matematyczne Podstawy Informatyki

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Języki formalne i automaty Ćwiczenia 2

0.1 Lewostronna rekurencja

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Języki formalne i automaty Ćwiczenia 3

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 BEZKONTEKSTOWE

Języki, automaty i obliczenia

Efektywna analiza składniowa GBK

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

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

Matematyczne Podstawy Informatyki

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

Gramatyki rekursywne

Hierarchia Chomsky ego Maszyna Turinga

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Hierarchia Chomsky ego

Języki, automaty i obliczenia

Gramatyka operatorowa

JĘZYKIFORMALNE IMETODYKOMPILACJI

Imię, nazwisko, nr indeksu

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

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

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

LOGIKA I TEORIA ZBIORÓW

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

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)

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

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

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

11 Probabilistic Context Free Grammars

Języki formalne i automaty Ćwiczenia 4

Języki, automaty i obliczenia

Języki formalne i automaty Ćwiczenia 9

JIP. Analiza składni, gramatyki

Obliczenia inspirowane Naturą

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

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

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

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

Języki formalne i automaty Ćwiczenia 8

10110 =

Obliczenia inspirowane Naturą

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

Symbol, alfabet, łańcuch

Metodologie programowania

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

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}

LOGIKA Klasyczny Rachunek Zdań

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

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

Języki i gramatyki formalne

JĘZYKI FORMALNE I METODY KOMPILACJI

JAO - Języki, Automaty i Obliczenia - Wykład 2. JAO - Języki, Automaty i Obliczenia - Wykład 2

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

Poprawność semantyczna

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

Wykład 5. Jan Pustelnik

Struktury formalne, czyli elementy Teorii Modeli

Wykład 1 Wybrane problemy algorytmiki

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

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

Obliczenia inspirowane Naturą

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

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:

Wyrażenia regularne.

Jaki język zrozumie automat?

Wykład z równań różnicowych

Analiza semantyczna. Gramatyka atrybutywna

Teoretyczne podstawy informatyki

Bisymulacja. Niezawodność systemów współbieżnych i obiektowych. Grzegorz Maj Grzegorz Maj Bisymulacja

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

Języki, automaty i obliczenia

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

Paradygmaty dowodzenia

Efektywność Procedur Obliczeniowych. wykład 5

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

Metody Kompilacji Wykład 3

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Gramatyki regularne i automaty skoczone

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

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

Zadania do Rozdziału X

Maszyna Turinga języki

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

Lista zagadnień omawianych na wykładzie w dn r. :

10. Translacja sterowana składnią i YACC

Analiza metodą zstępującą. Bartosz Bogacki.

Funkcja wykładnicza kilka dopowiedzeń

Logika Stosowana. Wykład 2 - Logika modalna Część 3. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2017/2018

Pochodna funkcji: definicja, podstawowe własności wykład 5

Podstawy Informatyki Gramatyki formalne

Języki formalne i automaty Ćwiczenia 6

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Transkrypt:

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa (ang. cfg) jest formalnie czwórką G = (N, T, P, S), gdzie N - zbiór zmiennych syntaktycznych, inaczej zwanych symbolami nieterminalnymi (w skrócie nieterminalami) T - zbiór stałych, inaczej zwanych symbolami terminalnymi (w skrócie terminalami) P - zbiór reguł postaci X α, S N, inaczej zwanych produkcjami, jest to program generujący słowa języka S N - symbol początkowy gramatyki Język L(G) generowany przez G to zbiór słow nad alfabetem T które można otrzymać starując z S i stosując produkcje (reguły) gramatyki.

Przykład gramatyki bezkontekstowej dla języka: L(G) = { w {a, b} + : # a (w) = # b (w)} Zbiorem nieterminali jest N = {A, B}, T = {a, b}. Zbiór produkcji to : S ab, S ba, A a, A as A baa, B b, B bs, B abb Gramatyki bezkontekstowe opisują własności tekstów w sposób rekurencyjny, dowody poprawności często indukcyjne ze względu na długość generowanego słowa.

Aby udowodnić poprawność ostatniej gramatyki dowodzimy indukcyjnie własności języków generowanych przez poszczególnie nieterminale: S generuje słowa w takie, że # a (w) = # b (w), A takie, że # a (w) = # b (w) + 1 B takie, że # a (w) + 1 = # b (w).

Dalsze przykłady gramatyk bezkontekstowych Niech D k będzie tzw. język Dycka k-tego rzędu, składa sie on z napisów będących poprawnymi wyrażeniami nawiasowymi k typów nawiasów. D k jest zbiorem napisów które można zredukować do słowa pustego zamieniając sąsiednie pary nawiasów, otwierający i zamykający tego samego typu, na słowo puste. W szczególności D 1 jest generowany przez gramatykę S SS (S) ( ) ɛ Natomiast D 2 jest generowany przez: S SS (S) [S] ( ) [ ] ɛ

Dalsze przykłady gramatyk bezkontekstowych Jęzki nawiasowe mają charakter cebulkowy, niech onion(x, Y, Z) = i X i YZ i Jeśli Y jest słowem pustym to piszemy onion(x, Z). Jeśli X, Y, Z są określone przez gramatyki bezkontekstowe to łatwo wygenerować gramatykę na cebulkę. Rozważmy język L = { uv : uv R D 1 } Niech D 1 będzie językiem D 1 w którym zamieniliśmy nawiasy otwierające z zamykającymi. Niech X = D 1 ( D 1, Z = D 1 ( D 1 Wtedy L = onion(x, Z)

Dalsze przykłady gramatyk bezkontekstowych Niech L będzie zbiorem słów długości nad {a, b}, które nie są postaci xx. Niech X = {a, b}. Wtedy L = onion(x, a, X ) onion(x, b, X ) onion(x, b, X ) onion(x, a, X ) Teraz już łatwo jest skonstruować gramatykę dla języka L. S C1 C2 C2 C1; C1 X C1 X ; a C2 X C2 X ; b; X a b Nie wiadomo czy język słów pierwotnych, tzn. takich które nie są postaci x k dla jakiegokolwiek naturalnego k > 1, jest bezkontekstowy.

Dalsze przykłady gramatyk bezkontekstowych Nieskończone słowo Fibonacciego F można zdefiniowąc jako nieskończony ciąg nad alfabetem {a, b} spełniający warunki: 1 bb nie występuje, 2 pierwszym symbolem jest a; 3 dla każdego n zachodzi: n pozycji po n-tym wystąpieniu a występuje symbol b. Niech L będzie zbiorem słów które nie są prefiksami (są nie-prefiskami) ciągu F. Gramatykę dla L można skonstruować jako kompozycję trzech gramatyk, negujących kolejne warunki (w sensie alternatywy). Negacja ostatniego warunku sprawdza sie do pewnej cebulki gdzie X = b ab, Z = {a, b}

Nie-prefiksy słów Thue-Morse a Postępujemy podobnie jak dla zbioru nie-prefiksów słowa Fibonacciego. Słowo Thue-Morse a T spełnia warunki: 1 T zaczyna się od 0; 2 T 2i = T i ; 3 T 2i+1 jest negacją T i. Konstruujemy trzy gramatyki, z których każda niezależnie sprawdza negację jednego z trzech warunków. Konstrukcja dla ostatnich dwóch warunków jest cebulkowa. Nie wiadomo czy język nie-podsłów słowa T jest bezkontekstowy. Udowodnimy potem, że język podsłów nie jest bezkontekstowy.

Gramatyki liniowe i jednostronnie liniowe Gramatyka bezkontekstowa jest liniowa jesli po prawej stronie produkcji występuje co najwyżej jeden symbol nieterminalny. Gramatyki jednostronnie liniowe to takie w których symbol nieterminalny wystepuje zawsze jako ostatni w produkcjach gramatyki. W szczególności gramatyka jest prawostronnie liniowa gdy produkcje sa postaci A wb lub A ɛ gdzie w T Gramatyki lewostronnie liniowe definiujemy analogicznie. Twierdzenie Język jest regularny wtedy i tylko wtedy gdy jest generowany przez pewną gramatykę jednostronnie liniową.

Nieterminal A jest zbędny gdy nie występuje w żadnym wyprowadzeniu jakiegokolwiek słowa terminalnego z początkowego nieterminala gramatyki. W szczególności L(G) = wtw. gdy wszystkie nieterminale są zbędne. Twierdzenie Można sprawdzić w czasie wielomianowym, które nieterminale są zbędne. Przy okazji daje to wielomianowy algorytm na niepustść L(G) (czy symbol początkowy jest zbędny). Twierdzenie Jeśli słowo puste nie jest generowane przez gramatykę to można przekształcić tę gramatykę do gramatyki równoważnej nie używającej słowa pustego ale rozmiar gramatyki może wzrosnąć wykładniczo.