Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen -

Ähnliche Dokumente
Übungsaufgaben zu Formalen Sprachen und Automaten

Alphabet, formale Sprache

Theoretische Grundlagen des Software Engineering

Programmiersprachen und Übersetzer

Theoretische Grundlagen der Informatik

2.11 Kontextfreie Grammatiken und Parsebäume

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

6 Modellierung von Strukturen 6.1 Kontextfreie Grammatiken

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

Formale Sprachen und Automaten

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

Theoretische Informatik

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

I.5. Kontextfreie Sprachen

Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Einführung in die Theoretische Informatik

(Prüfungs-)Aufgaben zu formale Sprachen

Theoretische Informatik I

Rekursiv aufzählbare Sprachen

Formale Sprachen, reguläre und kontextfreie Grammatiken

Kontextfreie Grammatiken

Reguläre Ausdrücke. Karin Haenelt

7. Formale Sprachen und Grammatiken

Sprachen/Grammatiken eine Wiederholung

Einführung in die Theoretische Informatik

8. Turingmaschinen und kontextsensitive Sprachen

Grundlagen der Theoretischen Informatik

Berechenbarkeit und Komplexität

Formale Sprachen. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

Einführung in die Theoretische Informatik

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

Grammatiken und ANTLR

Einführung in die Computerlinguistik

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

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Grundlagen der Theoretischen Informatik

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

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

Grundbegriffe der Informatik

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Grundlagen der Theoretischen Informatik

Notation um Grammatik G hervorzuheben: Eine kontextfreie Grammatik erzeugt eine kontextfreie Sprache. Informatik I -1- WS 2005/2006

4. 4. Algorithmen und Datenstrukturen in deskriptiven Programmiersprachen

Formale Methoden 1. Gerhard Jäger 12. Dezember Uni Bielefeld, WS 2007/2008 1/22

Ausgewählte unentscheidbare Sprachen

Beschreibungskomplexität von Grammatiken Definitionen

Diplomarbeit. Entwurf eines TI-Coaching Systems. von. Christof Kuhn

Endliche Sprachen. Folgerung: Alle endlichen Sprachen sind regulär. Beweis: Sei L={w 1,,w n } Σ*. Dann ist w 1 +L+w n ein regulärer Ausdruck für

Theoretische Informatik I

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Dank. 1 Ableitungsbäume. 2 Umformung von Grammatiken. 3 Normalformen. 4 Pumping-Lemma für kontextfreie Sprachen. 5 Pushdown-Automaten (PDAs)

Theoretische Informatik I (Grundzüge der Informatik I)

Teil V. Weiterführende Themen, Teil 1: Kontextsensitive Sprachen und die Chomsky-Hierarchie

Theoretische Grundlagen der Informatik

Einführung in die Computerlinguistik

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

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

Was ist ein Compiler?

Motivation natürliche Sprachen

Mathematische Grundlagen der Computerlinguistik formale Sprachen

Kapitel 2. Methoden zur Beschreibung von Syntax

FORMALE SYSTEME. Sprachen beschreiben. Wiederholung. Wie kann man Sprachen beschreiben? 2. Vorlesung: Grammatiken und die Chomsky-Hierarchie

Grundbegriffe. Grammatiken

Grundbegriffe der Informatik

Theoretische Informatik Mitschrift

4. Induktives Definieren - Themenübersicht

Theorie der Informatik

Grundbegriffe der Informatik

Programmieren I. Formale Sprachen. Institut für Angewandte Informatik

6 Kontextfreie Grammatiken

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Formale Sprachen und Grammatiken

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

ist ein regulärer Ausdruck.

Einführung in die Informatik Grammars & Parsers

Tutoraufgabe 1 (ɛ-produktionen):

Compiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.

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

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

Automaten und Formale Sprachen

Werkzeuge zur Programmentwicklung

Übung zur Vorlesung Theoretische Information. Pumping Lemma

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

ARBEITSBLATT ZU FORMALEN SPRACHEN

Vorlesung Theoretische Informatik

1 Syntax von Programmiersprachen

Einführung in die Theoretische Informatik

Sprachen und Programmiersprachen

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

6 F O R M A L E S P R A C H E N. 6.1 formale sprachen

Theoretische Informatik. Alphabete, Worte, Sprachen

Zur Mächtigkeit von Netzwerken evolutionärer Prozessoren mit zwei Knotenarten

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Induktive Beweise und rekursive Definitionen

Theoretische Informatik

Mathematische Grundlagen der Informatik 2

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Transkript:

Algorithmen und Datenstrukturen I - Exkurs Formale Sprachen - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013 1 / 1

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 / 1

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 / 1

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 / 1

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 / 1

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 / 1

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 / 1

Kontextfreie Sprachen Intermezzo 8 / 1

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 / 1

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 / 1

Beispiel Beschreibungsansatz Idee: wir verwenden eine rekursive Definition 11 / 1

Beispiel Beschreibungsansatz Idee: wir verwenden eine rekursive Definition Induktionsbeginn: ɛ, 0 und 1 sind Palindrome. 12 / 1

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. 13 / 1

Beispiel Wie könnte man diese Definition mit noch einfacheren Mechanismen beschreiben? 14 / 1

Beispiel Wie könnte man diese Definition mit noch einfacheren Mechanismen beschreiben? P ɛ P 0 P 1 P 0P0 P 1P1 15 / 1

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. 16 / 1

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) 17 / 1

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. 18 / 1

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. 19 / 1

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? 20 / 1

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. 21 / 1

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.. 22 / 1

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. 23 / 1

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. 24 / 1

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) 25 / 1

Zusammenfassung 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. 26 / 1