Kontextfreie Grammatiken

Ähnliche Dokumente
Formalismen für REG. Formale Grundlagen der Informatik 1 Kapitel 7 Kontextfreie Sprachen. Das Pumping Lemma. Abschlusseigenschaften

Formale Grundlagen der Informatik 1 Kapitel 7 Eigenschaften kontextfreier Sprachen

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Informales Beispiel. Formale Grundlagen der Informatik 1 Kapitel 6 Eigenschaften kontextfreier Sprachen. Grammatiken. Anmerkungen

Die mathematische Seite

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat

Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER

Abschnitt 5. Grammatiken

Einführung in die Computerlinguistik

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Theoretische Informatik Mitschrift

Beweisidee: 1 Verwende den Keller zur Simulation der Grammatik. Leite ein Wort. 2 Problem: der Keller darf nicht beliebig verwendet werden, man kann

Formale Sprachen. Grammatiken. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marion OSWALD. Grammatiken: Ableitung

Automatentheorie und formale Sprachen

Formale Grundlagen der Wirtschaftsinformatik

Kapitel IV Formale Sprachen und Grammatiken

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

Chomsky-Grammatiken 16. Chomsky-Grammatiken

Übersicht. 3 3 Kontextfreie Sprachen

Die oben aufgelisteten Sprachfamilien werden von oben nach unten echt mächtiger, d.h. die Familie der regulären Sprachen ist eine echte Teilfamilie

Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)

8. Turingmaschinen und kontextsensitive Sprachen

Informatik III. Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Formale Sprachen. Script, Kapitel 4. Grammatiken

Grundlagen der Theoretischen Informatik

Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie

TU Berlin Nachklausur TheGI 2 Automaten und Komplexität (Niedermeier/Hartung/Nichterlein, Sommersemester 2012)

Grundlagen der Theoretischen Informatik

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Worterkennung in Texten speziell im Compilerbau 20. April Frank Heitmann 2/64

Theoretische Informatik

I.5. Kontextfreie Sprachen

Grundlagen der Theoretischen Informatik

Automaten und formale Sprachen Klausurvorbereitung

Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier

Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen

Mehrdeutige Grammatiken

Grundlagen der Theoretischen Informatik

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

a b b a Alphabet und Wörter - Zusammengefasst Formale Grundlagen der Informatik 1 Kapitel 2 Endliche Automaten und reguläre Sprachen

F2 Zusammenfassung Letzte Tips zur Klausur

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Theoretische Grundlagen der Informatik. Vorlesung am 17. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik

2. Übungsblatt 6.0 VU Theoretische Informatik und Logik

Grundlagen der Theoretischen Informatik

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Grundlagen der Theoretischen Informatik

Worterkennung in Texten speziell im Compilerbau 14. April Frank Heitmann 2/65

Formale Methoden 1. Gerhard Jäger 28. November Uni Bielefeld, WS 2007/2008 1/15

Informatik 3 Theoretische Informatik WS 2015/16

Grundlagen der Theoretischen Informatik

q 0 q gdw. nicht (q A) (q A) q i+1 q gdw. q i q oder ( a Σ) δ(q, a) i δ(q, a) L = {a n b n : n N} für a, b Σ, a b

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme

Automaten und formale Sprachen Notizen zu den Folien

Lösungen zu Übungsblatt 6

2.2 Nichtdeterministische endliche Automaten

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

4.2.4 Reguläre Grammatiken

Theorie der Informatik

Alphabet, formale Sprache

Wie man eine Sprache versteht

Informatik III - WS07/08

DisMod-Repetitorium Tag 4

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Automaten und Formale Sprachen SoSe 2013 in Trier

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Theorie der Informatik

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19

(Prüfungs-)Aufgaben zu formale Sprachen

Deterministischer Kellerautomat (DPDA)

Einführung in die Computerlinguistik Formale Grammatiken rechtslineare und kontextfreie Grammatiken Kellerautomaten

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

1 Eine Menge M Σ heißt (rekursiv) aufzählbar genau. 2 Die Familie aller aufzählbaren Mengen wird mit RE

Fragen 1. Muss eine DTM ein Wort zu Ende gelesen haben, um es zu akzeptieren? a) Ja! b) Nein!

Adventure-Problem. Vorlesung Automaten und Formale Sprachen Sommersemester Adventure-Problem

Theoretische Grundlagen der Informatik

10 Kellerautomaten. Kellerautomaten

Fragen 1. Wie viele Startzustände kann ein endlicher Automat haben? 2. Wie viele Endzustände kann ein endlicher Automat haben?

Theoretische Informatik I

kontextfreie Sprachen: Normalformen

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

Akzeptierende Turing-Maschine

Grundbegriffe. Grammatiken

Abschluss gegen Substitution. Wiederholung. Beispiel. Abschluss gegen Substitution

Vorlesung Theoretische Informatik (Info III)

Grundlagen der Informatik II

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen

1 Automatentheorie und Formale Sprachen

Formale Sprachen und Grammatiken

Einführung in die theoretische Informatik Sommersemester 2017 Übungsblatt Lösungsskizze 7

1. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik

Transkript:

Kontextfreie Grammatiken Bisher haben wir verschiedene Automatenmodelle kennengelernt. Diesen Automaten können Wörter vorgelegt werden, die von den Automaten gelesen und dann akzeptiert oder abgelehnt werden. In der kommenden Woche wollen wir uns mit Grammatiken beschäftigen. Diese akzeptieren keine Wörter, sondern generieren sie. Bei einer Grammatik beginnen wir mit einem Startsymbol (üblicherweise S) und benutzen dann Regeln, um sogenannte Satzformen und letztendlich Wörter abzuleiten. Eine Regel hat z.b. die Form S as mit der Bedeutung, dass wir das S in einer Satzform nehmen und durch as ersetzen können. Ein Beispiel: Angenommen wir haben die Regeln S as und S a. Das Startsymbol sei S. Wir benutzen nun zuerst die Regel S as. Dies führt zu S as (man beachte, dass wir den Pfeil für Regeln benutzen, den Pfeil für Ableitungen). Wir haben nun die Satzform as erreicht. Hier können wir wieder auf das S die Regel S as anwenden. Dies führt dann (insgesamt) zu S as aas. Wenn wir wollen, könnten wir nun wieder die Regel S as benutzen. Wir entscheiden uns aber diesmal für die andere Regel S a und gelangen so zu dem Wort aaa. Das Wort aaa ist nun in der von der Grammatik generierten Sprache. Kommt in einer Zeichenkette noch ein Nonterminal vor, so sprechen wir meist von einer Satzform und erst, wenn nur noch Terminalzeichen auftreten, von einem Wort. Ziel ist es immer, zu Wörtern zu gelangen, die nur noch aus Terminalzeichen bestehen. Diese sind dann in der von der Grammatik generierten Sprache. Detaillierter besteht eine Grammatik G aus einer Menge von Nonterminalen V N (dies sind i.a. die Großbuchstaben), einer Menge aus Terminalen (i.a. die Kleinbuchstaben; die Terminalmenge entspricht zudem der Menge der Eingabesymbole bei einem Automaten), dem Startsymbol (ein besonders ausgezeichnetes Nonterminal) und einer Menge von Regeln oder Produktionen. Die Regeln sind ein Tupel (u, v) (dargestellt als u v), wobei in u mindestens ein Nonterminal auftreten muss. In einer Ableitung beginnt man nun mit dem Startsymbol und wendet dann jeweils eine der Regeln an. Eine Regel kann dabei dann angewendet werden, wenn die linke Seite der Regel (das u oben) in dem bisher abgeleiteten Wort auftritt. Ist dies der Fall, wird das u durch das v (die rechte Seite der Regel) ersetzt. An obigem, einführenden Beispiel konnte man auch bereits sehen, dass im Falls mehrerer anwendbarer Regeln eine beliebige gewählt werden darf. Verschiedene Grammatiktypen (vergleichbar mit verschiedenen Automatenmodellen) zeichnen sich dadurch aus, dass die Produktionen (die Regeln) eingeschränkt werden. Wir wollen uns nachfolgend auf kontextfreie Grammatiken 1

konzentrieren. Bei diesen wird verlangt, dass die linke Seite einer Produktion stets aus genau einem Nonterminal besteht (dieses Nonterminal kann dann unabhängig von dem Kontext, in dem es steht, ersetzt werden; daher der Name). Wir wollen dies an zwei typischen Beispielen erläutern. Als Abkürzung für die Produktionen führen wir noch folgende Notation ein: Haben wir mehrere Produktionen mit gleicher linker Seite, so fassen wir die rechten Seiten zusammen und trennen sie mit einem. Haben wir bspw. die drei Regeln S as, S SbS und S λ, so haben diese alle die gleiche linke Seite S. Wir fassen diese drei Regeln daher zu S as SbS λ zusammen. Nun zu den zwei Beispielen. 1. Sei G 1 eine Grammatik mit dem Terminalalphabet V T = {a, b}, dem einzelnen Nonterminal V N = {S}, wobei S auch das Startsymbol sei, und den Produktionen P = {S asb λ}. Eine Ableitung beginnt nun mit S. Wir können nun wiederholt die Produktion S asb anwenden. Dies führt zu S asb aasbb aaasbbb... a i Sb i. Hier wurde die Produktion i mal angewandt. Da hier nun noch das Nonterminal auftritt, ist die Satzform a i Sb i noch nicht in der von G 1 generierten Sprache. Mit der Produktion S λ kann das S aber entfernt (oder gelöscht) werden. Wir erhalten so a i b i. Allgemein lässt sich die von G 1 generierte Sprache, notiert als L(G 1 ), mit {a n b n n N} gleichsetzen. Wie bei Automaten ist aber L(G 1 ) = {a n b n n N} noch zu zeigen, wobei üblicherweise wieder zwei Mengeninklusionen zu zeigen sind! 2. Sei G 2 eine Grammatik mit dem Terminalalphabet V T = {a, b}, den Nonterminalen V N = {S, A, B}, wobei S das Startsymbol sei, und den Produktionen P = {S AB, A aa λ, B bb λ}. Da S das Startsymbol ist, wird jede Ableitung mit S AB beginnen. Dann kann aus A durch wiederholte Anwendung der Produktion A aa eine Satzform a i A generiert werden. Ebenso aus B durch die Produktion B bb eine Satzform b j B. Beide können dann durch A λ bzw. B λ zu dem Wort a i bzw. b j abgeleitet werden. Da man die letztgenannten Produktionen auch sofort benutzen kann, ist aus A jedes Wort aus a ableitbar und aus B jedes Wort aus b. Insgesamt ist so in der Grammatik G 2 jedes Wort aus a b ableitbar. Bei dem ersten Beispiel haben wir ein typisches nach innen Wandern eines Nonterminals, wobei der linke und rechte Rand wächst. Man kann auf diese Weise ein gleichmässiges Wachstum auf der linken und rechten Seite erreichen bzw. diese miteinander in Beziehung setzen. Das zweite Beispiel zeigt ein typisches lineares Wachsen. Eine Zeichenkette aus a (oder b ) wird hier Stück für Stück aufgebaut. Beide Techniken können auch gut kombiniert werden, um z.b. eine Grammatik für {a n b n c m n, m N} zu erstellen. Es sei aber noch einmal darauf hingewiesen, dass stets ein Beweis von L(G) = M nötig ist, wenn man eine Grammatik G für eine gegebene Wortmenge M konstruiert. 2

In der Vorlesung werden wir Grammatiken formal einführen und uns dann hauptsächlich auf kontextfreie Grammatiken konzentrieren. Wir werden zeigen, dass diese genau die gleiche Sprachfamilie akzeptieren wie die Kellerautomaten. D.h. zu jeder von einem Kellerautomaten akzeptierten Sprache kann eine kontextfreie Grammatik konstruiert werden, die diese Sprache generiert. Und andersherum: Zu jeder Sprache, die von einer kontextfreien Grammatik generiert werden kann, kann auch ein Kellerautomat konstruiert werden, der diese Sprache akzeptiert. Außerdem werden wir eine noch stärkerer Einschränkung von Grammatiken einführen, sogenannte reguläre Grammatiken. Diese generieren dann genau die regulären Sprachen, d.h. jene Sprachen, die von einem DFA akzeptiert werden können. Es ist dabei spannend zu sehen, wie diese recht unterschiedlichen Formalismen (Grammatiken, die Wörter generieren, und Automaten, die Wörter akzeptieren) ineinander umgewandelt werden können. Man kann dann je nach Problemstellung situativ den passenderen Formalismus wählen. Ein weiteres wichtiges Thema in der Vorlesung wird das Wortproblem sein. Das Wortproblem meint folgende Fragestellung: Kann zu einem gegebenen Wort w und einer gegebenen Grammatik G berechnet werden, ob w von G generiert werden kann? Im Kontext von Automaten ist dieses Problem oft recht einfach zu entscheiden, da man dem Automaten das Wort einfach vorlegen, die Übergänge entlang gehen und dann prüfen kann, ob man letztendlich in einen Endzustand gelangt ist. Bei Grammatiken ist dies aber nicht so einfach. Man müsste ja unter Umständen alle bei der aktuellen Satzform anwendbaren Produktionen ausprobieren und bei den dabei entstehenden Satzformen so weiter fortfahren. Davon abgesehen, dass man dabei in Kreise geraten kann (z.b. wenn man die Produktion A B anwendet und dann die Produktion B A), wäre dies auch recht ineffizient. Wir werden ein schnelles Verfahren kennenlernen, um das Wortproblem zu lösen. Dazu benötigen wir allerdings quasi als Vorstufe ein Verfahren, um eine kontextfreie Grammatik in eine sogenannte Normalform zu überführen. Bei dieser Normalform treten nur zwei Arten von Regeln auf: Entweder hat eine Regel die Form A BC, wobei A, B und C Nonterminale sind oder die Form A a, wobei a ein Terminal ist. Zuletzt werden wir ein weiteres Pumping Lemma kennenlernen. Bisher kannten wir das Pumping Lemma für reguläre Sprachen. Dieses können wir benutzen, um zu zeigen, dass eine Sprache nicht regulär ist. Wir werden nun noch das Pumping Lemma für kontextfreie Sprachen kennenlernen. Dieses kann dann benutzt werden, um zu zeigen, dass eine Sprache nicht kontextfrei ist. (Selbsttest auf der nächsten Seite.) 3

Selbsttest (Lösung auf Seite 6) 1. Wie funktioniert eine Ableitung in einer Grammatik? 2. Wie sieht eine Regel in einer kontextfreien Grammatik aus? 3. Wenn man zwei Regeln mit gleicher linker Seite hat, wie wird ausgewählt welche Regel benutzt wird? 4. Kann man zwei Regeln mit gleicher rechten Seite haben? 5. Kann es mehrere Möglichkeiten geben, um das gleiche Wort abzuleiten? 6. Wozu kann das Pumping Lemma benutzt werden? 4

Die mathematische Seite Wir definieren kontextfreie Grammatiken, Ableitungen und die von einer Grammatik generierte Sprache. Definition 1. Eine Grammatik ist ein Quadrupel G = (V N, V T, P, S) mit 1. Dem endlichen Alphabet von Nonterminalen V N. 2. Dem endlichen Alphabet von Terminalen V T mit V T V N =. Das Gesamtalphabet wird mit V := V T V N bezeichnet. 3. Der endlichen Menge von Produktionen (oder Regeln) P (V \V T ) V. 4. Dem Startsymbol S V N. Eine Grammatik ist eine kontextfreie Grammatik (CFG), wenn die endliche Menge der Produktionen eingeschränkt ist auf P V N V. Eine kontextfreie Produktion (A, λ) wird als λ-produktion bezeichnet. Besitzt eine CFG keine λ-produktionen, so heißt sie λ-frei. Eine Regel (u, v) P wird üblicherweise als u v notiert. Man beachte, dass bei den Regeln einer Grammatik auf der linken Seite stets ein Nonterminal vorkommen muss. Bei einer kontextfreien Grammatik darf auf der linken Seite sogar immer nur genau ein Nonterminal (und nichts weiteres mehr) stehen. Definition 2. Die einschrittige Ableitung eines Wortes v aus einem Wort u mittels einer Produktion einer Grammatik G wird notiert als u = G v. Dabei ist die Relation = G V V für alle u, v V definert durch: u = G v gdw. u 1, u 2 V (w l, w r ) P : u = u 1 w l u 2 und v = u 1 w r u 2 Ist der Kontext klar, wird das tief gestellte G weggelassen. Ferner bedienen wir = G für mehrschrittige Ableitun- uns wieder der reflexiven, transitiven Hülle gen. In einer kontextfreien Grammatik wird die Ableitung genauso definiert wie oben. Allerdings ist bei der gewählten Produktion (w l, w r ) dann w l stets nur genau ein Nonterminal. Definition 3. Sei G = (V N, V T, P, S) eine Grammatik. Die von G generierte oder erzeugte Sprache ist L(G) := {w V T S = G w} Definition 4. Die Familie der kontextfreien Sprachen ist eine Familie von Sprachen. Für jede dieser Sprachen gibt es eine kontextfreie Grammatik, die sie generiert. Abgekürzt wird diese Sprachfamilie mit CF. 5

Lösungen zum Selbsttest auf Seite 4 1. F: Wie funktioniert eine Ableitung in einer Grammatik? A: Beginnend mit dem Startsymbol werden wiederholt Regeln angewendet, um letztendlich zu einer Satzform zu kommen, die nur aus Nonterminalen besteht (also zu einem Wort). Eine Regel u v kann dabei angewendet werden, wenn in dem bisher abgeleiteten Wort w das u als Teilwort auftritt. Das u wird dann aus w herausgelöscht und durch v ersetzt. Galt also w = w 1 u w 2, so hat man nach Anwendung der Regel das Wort w 1 v w 2. 2. F: Wie sieht eine Regel in einer kontextfreien Grammatik aus? A: Die linke Seite einer solchen Regel besteht aus genau einem Nonterminal. Bspw. sind A abx, A axba und A λ Regeln. Die rechte Seite unterliegt insb. keinerlei Einschränkungen. Auf der rechten Seiten darf das leere Wort oder eine beliebige Mischung aus Nonterminalen und Terminalen stehen. Auf der linken Seite darf aber immer nur genau ein Nonterminal stehen. 3. F: Wenn man zwei Regeln mit gleicher linken Seite hat, wie wird ausgewählt welche Regel benutzt wird? A: Hier hätte man die freie Wahl. Beides ist erlaubt. Führt dies letztendlich zu unterschiedlichen generierten Wörtern, so sind beide in der generierten Sprache der Grammatik. Hat man bspw. als Regeln S a und S b, so kann man eine der beide Regeln auswählen und somit sowohl a als auch b generieren. 4. F: Kann man zwei Regeln mit gleicher rechten Seite haben? A: Ja! Dies braucht man bisweilen auch. Z.B. kann es nötig sein A a als auch B a zu haben. Hat man noch weitere Produktionen für A und B, so sind dies vielleicht die Abbruchproduktionen, um das Nonterminal weg zu kriegen und zu einem Terminalwort zu kommen. 5. F: Kann es mehrere Möglichkeiten geben, um das gleiche Wort abzuleiten? A: Ja, auch das ist möglich. Dies tritt sogar recht häufig auf. Hat man z.b. bei einer kontextfreien Grammatik eine Produktion S AB, so kann man im Anschluss ja mit dem A oder dem B fortfahren. 6. F: Wozu kann das Pumping Lemma benutzt werden? A: Zur Wiederholung: Das Pumping Lemma für reguläre Sprachen kann benutzt werden, um für eine Sprache zu zeigen, dass diese nicht regulär ist. Es gibt aber auch nicht reguläre Sprachen, die die Bedingungen im Pumping Lemma erfüllen! Das Pumping Lemma für kontextfreie Sprachen kann nun benutzt werden, um für eine Sprache zu zeigen, dass diese nicht kontextfrei ist. Es gibt aber auch hier Sprachen, die die Bedingungen dieses Pumping Lemmas erfüllen und dennoch nicht kontextfrei sind. 6