Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Ähnliche Dokumente
Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Theoretische Informatik I

Übungsaufgaben zu Formalen Sprachen und Automaten

Alphabet, formale Sprache

Theoretische Informatik I

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri

Kapitel IV Formale Sprachen und Grammatiken

Umformung NTM DTM. Charakterisierung rek. aufz. Spr. Chomsky-3-Grammatiken (T5.3) Chomsky-0-Grammatik Rek. Aufz.

Theoretische Informatik I

7. Syntax: Grammatiken, EBNF

Theoretische Grundlagen des Software Engineering

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

Anwendung von Kontextfreien Grammatiken

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

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

Grundlagen der Theoretischen Informatik

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

Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen

Theoretische Grundlagen der Informatik

Automaten und formale Sprachen Klausurvorbereitung

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Programmiersprachen und Übersetzer

Mehrdeutige Grammatiken

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

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

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.

Ein Fragment von Pascal

Ogden s Lemma: Der Beweis (1/5)

Mehrdeutige Grammatiken

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

DisMod-Repetitorium Tag 4

Informatik III - WS07/08

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Das Halteproblem für Turingmaschinen

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

Abschnitt 5. Grammatiken

Kapitel 1 Automaten: Die Grundlagen und Methoden... 23

Theoretische Grundlagen der Informatik

Zentralübung zur Vorlesung Theoretische Informatik

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

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Formale Grundlagen der Informatik

Theoretische Grundlagen der Informatik

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken

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

(Prüfungs-)Aufgaben zu formale Sprachen

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

Einführung in die Computerlinguistik

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

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

Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie

I.5. Kontextfreie Sprachen

F2 Zusammenfassung Letzte Tips zur Klausur

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

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit. Zugangsnummer: 9201

Syntax von Programmiersprachen

Akzeptierende Turing-Maschine

Grundlagen der Theoretischen Informatik

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

Pumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo

Kapitel 2. Methoden zur Beschreibung von Syntax

5.2 Endliche Automaten

Syntax von Programmiersprachen

Theoretische Informatik

Einführung in Automatentheorie, Formale Sprachen und Berechenbarkeit

Automatentheorie und formale Sprachen

Grundlagen Theoretischer Informatik 2 WiSe 2009/10 in Trier. Henning Fernau Universität Trier

Klammersprache Definiere

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Einführung in die Informatik. Programming Languages

9.4 Grundlagen des Compilerbaus

Einführung in die Theoretische Informatik

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Rekursiv aufzählbare Sprachen

Theoretische Grundlagen der Informatik

Formale Sprachen und Automaten

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018

5. Die syntaktische Analyse

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Einführung in die Informatik IV

2.11 Kontextfreie Grammatiken und Parsebäume

Lexikalische Programmanalyse der Scanner

Kontextfreie Sprachen werden von PDAs akzeptiert

Grundlagen der theoretischen Informatik

Kapitel 2: Methoden zur Beschreibung von Syntax

Formale Methoden 1. Gerhard Jäger 23. Januar Uni Bielefeld, WS 2007/2008 1/18

Informatik 3 Theoretische Informatik WS 2015/16

Schnitt- und Äquivalenzproblem

Algorithmen und Datenstrukturen

Kontextfreie Grammatiken

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

Formale Sprachen und Automaten: Tutorium Nr. 8

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

Transkript:

Algorithmen und Datenstrukturen I - - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 22 Exkurs: Formale Sprachen Im Kapitel Maschinenmodelle haben wir endliche Automaten eingeführt. Wir haben darüber gesprochen, dass diese bestimmte Wortmengen akzeptieren. Später haben wir dann auch gesehen, wie man verschiedene Automaten kombinieren kann um komplexere Wortmengen verarbeiten zu können. 2 / 22

Wir haben definiert, dass eine formale Sprache über A eine beliebige Teilmenge L A ist und damit die akzeptierte Wortmenge Akz(A) für jeden endlichen Automaten auch eine formale Sprache ist. 3 / 22 Neben dem Maschinenmodell des Automaten haben wir auch eine algebraische Notation, die regulären Ausdrücke, kennen gelernt. Mit diesen kann man die akzeptierte Wortmenge deklarativ und viel prägnanter als mit Automaten festlegen. Die über reguläre Ausdrücke oder endliche Automaten definierten formalen Sprachen nennt man reguläre Sprachen. 4 / 22

Weiterhin haben wir festgehalten, dass endliche Automaten nur die kleinste Klasse einer Hierarchie von Modellen bilden, mit denen man formale Sprachen beschreiben kann. Heute wollen wir uns kurz mit der nächsten Stufe, den kontextfreien Sprachen, beschäftigen. 5 / 22 Kontextfreie Sprachen Kontextfreie Sprachen Kontextfreie Sprachen spielen eine entscheidende Rolle bei der Entwicklung von Programmiersprachen: mit ihnen lassen sich die Programmiersprachen prägnant deklarativ in Form einer Grammatik beschreiben. Diese Grammatiken können dann automatisch in ein Maschinenmodell übersetzt werden, welches die entsprechende Sprache, hier Programmiersprache, akzeptiert. Der Prozess dieser Strukturerkennung von Programmen wird auch Parsen genannt. 6 / 22

Kontextfreie Sprachen Neben Programmen werden auch Datenstrukturen über Grammatiken beschrieben. Besonders bekannt sind dabei auf XML basierende Datenstrukturen, die unter anderem über eine Grammatik, der Dokumenttypdefinition (DTD), beschrieben werden können. 7 / 22 Kontextfreie Sprachen Intermezzo 8 / 22

Beispiel Beispiel: Palindrome Ein Palindrom ist vorwärts wie rückwärts gelesen identisch. Beispiele für Palindrome sind otto, anna oder reliefpfeiler. Formal ausgedrückt: ein Wort w ist genau dann ein Palindrom, wenn gilt w = w R. 9 / 22 Beispiel Versuchen wir uns an einer Sprache L, die alle möglichen Palindrome aus Nullen und Einsen umfasst. Man kann leicht, über das Pumping Lemma, zeigen, dass eine Sprache die alle Palindrome aus Nullen und Einsen enthält, keine reguläre Sprache sein kann. Das überlassen wir aber der Theoretischen Informatik. Wie können wir diese Sprache L stattdessen aufschreiben? 10 / 22

Beispiel Beschreibungsansatz Idee: wir verwenden eine rekursive Definition Induktionsbeginn: ɛ, 0 und 1 sind Palindrome. Induktionsschritt: Ist w ein Palindrom, dann sind es auch 0w0 und 1w1. Ein Wort ist nur dann ein Palindrom, wenn es sich aus Induktionsbeginn und Induktionsschritt ergibt. 11 / 22 Beispiel Wie könnte man diese Definition mit noch einfacheren Mechanismen beschreiben? P ɛ P 0 P 1 P 0P0 P 1P1 12 / 22

Definition Definition kontextfreier Grammatiken Die Beschreibung einer Grammatik umfasst 1 ein Alphabet T, dessen Elemente man auch als terminale Symbole bezeichnet, 2 eine Menge von Variablen V, dessen Elemente man auch als nichtterminale Symbole bezeichnet, 3 eine endliche Menge von Regeln P, auch Produktionen genannt und 4 ein Start-Symbol S aus der Menge der nichtterminalen Symbole. Eine kontextfreie Grammatik kann also durch diese vier Komponenten beschrieben werden: G = (V, T, P, S) 13 / 22 Definition Die kontextfreie Grammatik für unsere Sprache der Palindrome über 0 und 1 ist damit G = ({P}, {0, 1}, A, P) mit A der Menge der Produktionen, die wir zuvor definiert haben. Die Regeln einer kontextfreien Grammatik bestehen aus einer Variablen, dem Kopf der Regel, die definiert wird, dem Produktionssymbol und einer Zeichenreihe aus terminalen und nicht-terminalen Symbolen, dem Rumpf. 14 / 22

Notation Notation Die Notation der Produktionen lässt sich vereinfacht schreiben, in dem man als Trennsymbol zwischen alternativen Rümpfen einführt. Dann wird aus P ɛ P 0 P 1 P 0P0 P 1P1 die deutlich kürzere Produktion: P ɛ 0 1 0P0 1P1. 15 / 22 Eine kontextfreie Grammatik für einfache Ausdrücke In Programmiersprachen kommen sehr häufig Ausdrücke vor, mit denen Berechnungsvorschriften festgelegt werden. Beispiele für solche Ausdrücke sind etwa 42 b2 1+4 a1 * a2 + b1 * b2 a1 * (a2 + b1) * b2 5 * a1 + 7 * b2 Wie könnte eine Grammatik für solche Ausdrücke aussehen? 16 / 22

Ableitung Ableitung Um zu zeigen, dass eine bestimmte Zeichenreihe in der über die Grammatik definierten Sprache liegt, muss man diese aus den Produktionsregeln herleiten können. Dabei gibt es zwei Vorgehensweisen: Bei der rekursiven Inferenz geht man vom Rumpf zum Kopf über, betrachtet also erst die Teile und setzt sie dann zusammen. Bei der Ableitung fängt man beim Startsymbol an und expandiert dieses so lange, bis man eine Zeichenreihe erhält, die nur aus terminalen Symbolen besteht. 17 / 22 Ableitung Ableitung Für die Ableitung müssen wir noch ein neues Relationssymbol einführen. Sei αaβ eine Zeichenreihe aus terminalen und nicht-terminalen Symbolen und A ein nicht-terminales Symbol. Weiterhin sei A γ eine Produktion. Dann sagen wir αaβ αγβ. Wir können auch noch so erweitern, dass sie keine bis beliebig viele solcher Ableitungsschritte repräsentiert. Das notieren wir mit. Um zu zeigen, dass eine Zeichenreihe w zu einer Sprache gehört, müssen wir dann also S w zeigen, mit dem Startsymbol S. 18 / 22

Parse-Bäume Parse-Bäume Eine Ableitung lässt sich auch als Baum darstellen. Dies ist die bevorzugte Form der Repräsentation von Ableitungen in Compilern und wird dort Parse-Baum genannt. Bei einem Parse-Baum werden nicht-terminale Symbole durch Verzweigungen oder Blätter und terminale-symbole durch Blätter repräsentiert. 19 / 22 Mehrdeutigkeiten Eine Grammatik, die eine Sprache, d.h. die zur Sprache gehörigen Zeichenreihen, formal korrekt spezifiziert, kann jedoch mehrdeutig in den erzeugten Strukturen sein. Dies lässt sich leicht am Beispiel E + E E zeigen. Eine Grammatik wird als eindeutig bezeichnet, wenn es für jedes Wort w der Sprache genau einen Parse-Baum gibt, ansonsten ist sie mehrdeutig. 20 / 22

Mehrdeutigkeiten Es gibt kein allgemeines Verfahren, um die Mehrdeutigkeit aus einer kontextfreien Grammatik zu entfernen. Es gibt sogar kein allgemeines Verfahren, um festzustellen, ob eine kontextfreie Grammatik mehrdeutig ist. Es gibt jedoch Techniken, mit denen konkrete Fälle von Mehrdeutigkeiten aufgelöst werden können: Auswertungsreihenfolge festlegen Richtung von Gruppierungen festlegen (z.b. von links nach rechts) 21 / 22 Wir haben kontextfreie Grammatiken und kontextfreie Sprachen kennen gelernt. Dazu gehören Definition, Notation, Ableitungen und Parse-Bäume. Wir haben über das Problem der Mehrdeutigkeit gesprochen und Techniken zur Auflösung von Mehrdeutigkeiten kennen gelernt. Kontextfreie Sprachen können durch Keller-Automaten definiert werden. Diese werden in der Theoretischen Informatik behandelt. Dieser Exkurs basiert auf Hopcroft, Motwani und Ullman: Einführung in die Automatentheorie, Formale Sprachen und Berechenbarkeit. 3. Auflage. Pearson Studium. 2011. 22 / 22