Theoretische Informatik: Automaten und formale Sprachen

Ähnliche Dokumente
Was bisher geschah Alphabet, Wort, Sprache

Was bisher geschah Alphabet, Wort, Sprache

Theoretische Informatik Automaten und formale Sprachen

Was bisher geschah: Formale Sprachen

Theoretische Informatik

Was bisher geschah. Modellierung von Aussagen durch Logiken. Modellierung von Daten durch Mengen

Was bisher geschah. Darstellung von Sprachen Ausführen von Berechnungen

Theoretische Informatik

Für jede Sprache L X sind die folgenden Aussagen äquivalent:

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

Theoretische Informatik

Was bisher geschah: Formale Sprachen

Grundlagen der theoretischen Informatik

Automaten und formale Sprachen Klausurvorbereitung

Theoretische Informatik Mitschrift

2.1 Allgemeines. Was ist eine Sprache? Beispiele:

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

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

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

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

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

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

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

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

Alphabet, formale Sprache

Kapitel IV Formale Sprachen und Grammatiken

1 Automatentheorie und Formale Sprachen

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

Automaten und Formale Sprachen

Ist eine algorithmische Problemstellung lösbar und wenn ja, mit welchen Mitteln? was ist eine algorithmische Problemstellung?

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

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

Berechenbarkeit und Komplexität

Maike Buchin 18. Februar 2016 Stef Sijben. Probeklausur. Theoretische Informatik. Bearbeitungszeit: 3 Stunden

Satz (Abschluß unter der Stern-Operation)

(Prüfungs-)Aufgaben zu formale Sprachen

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

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

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 -

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Theoretische Informatik I (Grundzüge der Informatik I)

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

Theorie der Informatik

Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

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

Übungsaufgaben zu Formalen Sprachen und Automaten

Klammersprache Definiere

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

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

Aufgabe Bonus.1. Aufgabe Bonus.2. Aufgabe Bonus.3. Aufgabe Bonus.4. HTWK Leipzig, Fakultät IMN Prof. Dr. Sibylle Schwarz

Automaten und Formale Sprachen ε-automaten und Minimierung

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Automatentheorie und formale Sprachen

Theoretische Grundlagen der Informatik

Grundlagen der Theoretischen Informatik

Deterministischer Kellerautomat (DPDA)

Theoretische Grundlagen der Informatik

Herzlich willkommen!!!

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

Definition 98 Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für alle q Q gilt:

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Theoretische Informatik für Medieninformatiker

Reguläre Ausdrücke. Michael Jäger. 4. April 2017

Einführung in die Theoretische Informatik. Inhalte der Lehrveranstaltung. Definition (Boolesche Algebra) Einführung in die Logik

Rekursiv aufzählbare Sprachen

Formale Sprachen. Script, Kapitel 4. Grammatiken

Theorie der Informatik

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung!

THIA - Übungsblatt 2.

Theoretische Informatik

Nachklausur zur Vorlesung

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

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

Formale Sprachen und endliche Automaten

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Einführung in die Theoretische Informatik

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 2. Mai HA-Lösung. TA-Lösung

2. Teilklausur zur Vorlesung Grundlagen der Theoretischen Informatik

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

7 Endliche Automaten. 7.1 Deterministische endliche Automaten

Theoretische Grundlagen der Informatik

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

Theoretische Grundlagen der Informatik

Einführung in die Informatik. Programming Languages

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Grundlagen der Theoretischen Informatik

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

Einführung in die Theoretische Informatik

Einführung in die Informatik. Programming Languages

Kurz-Skript zur Theoretischen Informatik I

Einführung in die Theoretische Informatik

3 Syntax von Programmiersprachen

Kontextfreie Sprachen

Theoretische Grundlagen der Informatik

Transkript:

Theoretische Informatik: Automaten und formale Sprachen Prof. Dr. Sibylle Schwarz HTWK Leipzig, Fakultät IMN Gustav-Freytag-Str. 42a, 04277 Leipzig Zimmer Z 411 (Zuse-Bau) http://www.imn.htwk-leipzig.de/~schwarz sibylle.schwarz@htwk-leipzig.de Wintersemester 2016/17 1

Einordnung der Theoretischen Informatik Informatik Lehre von der Darstellung und Verarbeitung von Information durch Algorithmen Teilgebiete der Informatik: theoretisch technisch Sprachen zur Formulierung von Information und Algorithmen, Möglichkeiten und Grenzen der maschinellen Berechenbarkeit, Grundlagen für technische und praktische (und angewandte) Informatik maschinelle Darstellung von Information Mittel zur Ausführung von Algorithmen (Rechnerarchitektur, Hardware-Entwurf, Netzwerk,... ) praktisch Entwurf und Implementierung von Algorithmen (Betriebssysteme, Compilerbau, SE,... ) angewandt Anwendung von Algorithmen (Text- und Bildverarbeitung, Datenbanken, KI, Medizin-, Bio-, Wirtschafts-, Medieninformatik,... ) 2

Anwendungen der theoretischen Informatik Formale Sprachen Repräsentation von Informationen und Aufgaben in maschinenlesbarer Form (Mensch-Maschine-Kommunikation) Ausdrucksstärke und Flexibilität von Programmiersprachen Übersetzung von Programmiersprachen (z.b. in ausführbaren Code) Maschinenmodelle (Automaten) Möglichkeiten und Grenzen verschiedener Modelle zur (maschinellen) Ausführung von Algorithmen Berechenbarkeitstheorie (hier Ausblick, mehr dazu im Mastermodul) Welche Probleme sind überhaupt algorithmisch (mit Hilfe verschiedener Maschinenmodelle) lösbar? Auch negative Antworten sind sehr hilfreich (sparen Aufwand für ungeeignete Lösungsansätze) Komplexitätstheorie (hier Ausblick, mehr dazu im Mastermodul) Welche Probleme sind mit beschränkten Ressourcen (z.b. Zeit, Speicherplatz) lösbar? Für welche Probleme können schnelle Algorithmen existieren? 3

Prinzipien der theoretischen Informatik ältester Zweig der Informatik (lange vor dem ersten Computer) Mathematische Prinzipien: Abstraktion ermöglicht verallgemeinerte Aussagen und breit einsetzbare Verfahren, Ergebnisse und Verfahren oft nicht sofort praktisch anwendbar, müssen auf spezielle Situationen angepasst werden. Beweisbarkeit erfordert präzise Modellierung des Problems Nachweis der Korrektheit von Hard- und Software (Tests können dies nicht!) Wissen aus der theoretischen Informatik veraltet über viele Jahre kaum Grundlage für Verständnis von (schnelllebigem) Spezialwissen, z.b. konkrete Programmiersprachen, Domain-spezifische Sprachen, Transformationen verschiedener Darstellungen 4

Aus der Modulbeschreibung 3010 Theoretische Informatik: Automaten und formale Sprachen Arbeitsaufwand: Präsenzzeit 60 h (= 2 h V + 2 h Ü je Woche) Vor- und Nachbereitungszeit 90 h ( 6 h je Woche) Voraussetzungen: anwendungsbereite Kenntnisse auf den Gebieten Modellierung, Logik, Algorithmen und Datenstrukturen, Aufwandsabschätzungen Lernziele: Die Studierenden sind in der Lage, wichtige Klassen formaler Sprachen als Grundlage von Programmierund Beschreibungssprachen einzuordnen und kennen die wesentlichen Eigenschaften der Sprachklassen. Sie kennen die entsprechenden abstrakten Maschinenmodelle und Algorithmen und können sie zur Darstellung und Lösung praktischer Aufgabenstellungen einsetzen. Die Studierenden wissen, dass nicht jedes formal darstellbare Problem algorithmisch lösbar ist. 5

Inhalt der Lehrveranstaltung Formale Sprachen Wiederholung: Alphabet, Wort, Sprache, Operationen darauf reguläre Ausdrücke Wiederholung: Wortersetzung Grammatiken, Chomsky-Hierarchie Maschinenmodelle Endliche Automaten Kellerautomaten Turing-Maschinen Berechenbarkeit (Ausblick auf Master-Modul) berechenbare Funktionen Berechnungsmodelle These von Church algorithmische Entscheidbarkeit / Unentscheidbarkeit Komplexität (Ausblick auf Master-Modul) Komplexitätsmaße Komplexitätsklassen P, NP, PSPACE jeweils mit vielen Beispielen 6

Literatur Uwe Schöning: Theoretische Informatik - kurzgefasst (Spektrum 2001) John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie (Addison-Wesley 1990) Dirk W. Hoffmann: Theoretische Informatik (Hanser 2009) Rolf Socher: Theoretische Grundlagen der Informatik (Hanser 2008) Ulrich Hedtstück: Einführung in die Theoretische Informatik (Oldenbourg 2007) Gottfried Vossen, Kurt-Ulrich Witt: Grundkurs Theoretische Informatik (Vieweg 2006) Alexander Asteroth, Christel Baier: Theoretische Informatik. Eine Einführung in Berechenbarkeit, Komplexität und formale Sprachen (Pearson 2002) Renate Winter: Theoretische Informatik (Oldenbourg 2002) 7

Lehrveranstaltungen Folien, Übungsserien, aktuelle Informationen unter www.imn.htwk-leipzig.de/~schwarz/lehre/ws16/ti Vorlesung (2 h / Woche) Selbststudium (Hausaufgaben): (6 h / Woche) schriftliche Übungsserien (ca. zu jeder Vorlesung) Besprechung in der folgenden Übung Autotool jeweils nach der Vorlesung (ca. eine Woche Bearbeitungszeit) Übung (2 Gruppen) (2 h / Woche) alle Folien, Aufgaben, Lösungen mitbringen! Besprechung der Übungsserien (Vorrechnen), Fragen zum aktuellen Vorlesungsinhalt 8

Prüfung Prüfungsvorleistungen: 50% aller Punkte für Autotool-Pflichtaufgaben und 3 Vorrechen-Punkte (Übungen) Prüfung: Klausur 90 min Aufgabentypen ähnlich Übungsaufgaben (Hilfsmittel: beidseiting handbeschriebenes A4-Blatt) 9

Formale Sprachen Syntax natürlicher Sprachen: Rechtschreibung: korrekte Wörter Grammatik: Aufbau korrekter Sätze Definition von Programmiersprachen: Syntax Form der Sprachelemente Semantik Bedeutung der Sprachelemente und -strukturen Pragmatik Regeln zur zweckmäßigen Anwendung Syntax von Programmiersprachen: Schlüsselwörter, Bezeichner, Darstellung von Zahlen,... Programmstrukturen: Form der Ausdrücke, Anweisungen, Deklarationen,... 10

Formale Sprachen: Beispiele Programmiersprachen (Java): while (b!= 0) { if (a > b) a = a - b; else b = b - a; } Regeln für korrekte Syntax (EBNF): Statement ::=... IfStmt WhileStmt... ; WhileStmt ::= "while" "(" Expr ")" Statement; IfStmt ::= "if" "(" Expr ")" Statement ( "else" Statement )?; Expr ::=... Domain-spezifische Sprachen, z.b. Autotool-Lösungen zu AL-Modell listtofm[(x,true),(y,false),(z,false)] Regeln für korrekte Syntax (EBNF): belegung ::= "listtofm" "[" var-wert-paare "]" var-wert-ps ::= "" var-wert-paar var-wert-paar "," var-wert-ps var-wert-paar ::= "(" var-name, wert ")" wert ::= "True" "False" var-name ::=... Graphische Sprachen, z.b. 11

Maschinenmodell: endlicher Automat Beschreibung des dynamischen Verhaltens von Systemen Modellierung von Abläufen (Zustandsübergangssysteme) Beispiele: Bedienoperationen an Geräten oder Software Schaltfolgen von Ampelanlagen Steuerung von Produktionsanlagen Ablauf von (Geschäfts-)Prozessen 12

Beispiel: (Pool-)Einlass mit Karte Automat definiert durch Zustände: gesperrt, frei Startzustand: gesperrt Aktionen (Eingabesymbole): Karte (anlegen), Durchgehen, Timeout Zustandsübergänge(gesperrt, Karte) frei (frei, Karte) frei (frei, Durchgehen) gesperrt (frei, Timeout) gesperrt definiert mögliche (erlaubte) Folgen von Aktionen Diese Folgen lassen sich durch reguläre Ausdrücke darstellen: ( Karte Karte ( Durchgehen + Timeout )) 13

Anwendung bei der Übersetzung von Programmen Übersetzung von Quell- in Zielsprache (z.b. C, Java in Maschinen- oder Byte-Code) meist in zwei Phasen über eine (gemeinsame) Abstraktion: Quellcode Zwischendarstellung (oft Baumstruktur) Code in Zielsprache Analyse-Phase (Front-End) Synthese-Phase (Back-End) 14

Analyse-Phase Quellcode Scanner Folge von Token Parser Syntaxbaum lexikalische Analyse (Scanner) lineare Analyse des Quelltextes, Aufteilung in Einheiten (Token) z.b. Schlüsselwörter, Bezeichner, Zahlen reguläre Sprachen, endliche Automaten Syntaxnalyse (Parser) hierarchische Struktur des Quelltextes z.b. Ausdrücke, Verzweigungen, Schleifen kontextfreie Sprachen, Kellerautomaten semantische Analyse Annotationen im Syntaxbaum, z.b. Typprüfungen 15

Einsatz ähnlicher Transformations- und Analyse-Methoden Compiler für Programmiersprachen (z. B. Java Bytecode) Interpreter für Programmiersprachen (z. B. Java-Bytecode) Übersetzung von Daten zwischen verschiedenen Formaten z. B. LilyPond (http://www.lilypond.org) übersetzt \repeat volta 3 { c e g e } \alternative { { c 2 g } { g 1 } } u. A. in volta-cropped.pdf 16

Berechenbarkeit / Entscheidbarkeit Halteproblem: Kann ein (Test-)programm U existieren, welches für jedes beliebige (Dienst-)Programm P (Eingabe als Quelltext) entscheidet, ob P nach endlich vielen Schritten anhält? Nein Folgerungen: Alle Versuche, ein solches Programm zu schreiben, müssen fehlschlagen. Suche nach Verfahren, die für eine möglichst große Teilmenge aller (Dienst-)Programme P entscheiden, ob P nach endlich vielen Schritten anhält, ist sinnvoller. Entwickler von P (Dienstleister) muss nachweisen, dass sein Programm P nach endlich vielen Schritten anhält 17

Komplexität Beispiel Primzahltest Problem: Ist eine gegebene Zahl n eine Primzahl? Instanz des Problems: Ist 12347 eine Primzahl? lösbar durch den Algorithmus: 1. Für alle i {2,..., n}: Test: Ist n durch i teilbar? ja: Ende mit Ausgabe n ist nicht prim. nein: weiter (mit Test für i + 1) 2. Ausgabe: n ist prim. Test ist für große Zahlen aufwendig. Geht es besser? Was bedeutet aufwendig und besser? Wie aufwendig ist eine Berechnung? Wie aufwendig ist die Lösung eines Problemes? 18

Wiederholung: Alphabet, Wort, Sprache Für jede Menge A heißt A n = A A }{{} n = {w 1 w n i : w i A} Menge aller Wörter der Länge n über A (n-tupel, Vektoren, Folgen, Listen, Zeichenketten) A = {n N} An Menge aller Wörter über A (endliche Folgen, Listen, Zeichenketten) A 0 = {ε} Alphabet (endliche) Menge A von Symbolen mit leerem Wort ε Wort endliche Folge von Symbolen w = w 1 w n mit i {1,..., n} : w i A Länge eines Wortes w = Anzahl der Symbole in w Anzahl der Vorkommen eines Symboles in einem Wort w a = Anzahl der a in w (für a A) Sprache Menge von Wörtern L A 19

Beispiele Alphabet A = {0, 1} Wörter A = {0, 1} : Menge aller Binärwörter Sprachen A, z.b. {w {0, 1} w 1 0} Menge aller Binärzahlen ohne führende Nullen {w {0, 1} w 1 0 w w 1 = w w = 0} Menge aller Binärdarstellungen durch 4 teilbarer Zahlen ohne führende Nullen Alphabet A = {a, b} Wörter A = {a, b} : Menge aller Wörter, die höchstens die Buchstaben a und b enthalten Sprachen A, z.b. {a, b} {a} = {ε, a, aa, aaa,...} {w {a, b} w 1 = a w w = a} = {a, aa, aaa, aba, aaaa, abaa, aaba, abba,...} 20

Beispiele für Sprachen Menge aller englischen Wörter L 1 {a,..., z} Menge aller deutschen Wörter L 2 {a,..., z, ß,ä,ö,ü} Menge aller möglichen DNA L 3 {A, T, G, C} Menge aller natürlichen Zahlen in Dezimaldarstellung L 4 {0,..., 9} (evtl. mit führenden Nullen) Menge aller natürlichen Zahlen in Binärdarstellung (Bitfolgen beliebiger Länge) L 5 {0, 1} Menge aller aussagenlogischen Formeln in AL({p, q, r}) L 6 {p, q, r, t, f,,,,,, (, )}, Menge aller arithmetischen Ausdrücke über Z (ohne Variablen) L 7 {0,..., 9, +,,, /, (, )}, Menge aller deutschen Sätze L 8 (L 2 {.,,,!,?, (, ), }) Wie lassen sich unendliche Sprachen endlich darstellen? (Voraussetzung für maschinelle Verarbeitung) verschiedene Darstellungen später in dieser LV 21

Darstellung von Wörtern extensional durch Angabe der Symbole in ihrer Reihenfolge Beispiele: u = 321, v = abababababa, w = w 1 w 4 mit w 1 = w 2 = w 3 = a, w 4 = b intensional durch Angabe einer Eigenschaft, die für jeden Index i das i-te Symbol eindeutig bestimmt. Beispiele: u {0,..., 4} 3 mit i {1,..., 3} : u i = 4 i, { v {a, b} 11 a falls i 2N + 1 mit i {1,..., 11} : v i = b sonst w {a, b} 4 mit w 4 = b i {1,..., 3} : w i = a 22

Darstellung von Sprachen extensional durch Angabe der Elemente (nur Beschreibung endlicher Sprachen möglich) Beispiele: {ε, a, aa, aaa}, {b, ba, baa, baaa}, {a, b, aa, bb, aaa, bbb} intensional durch Angabe einer Eigenschaft, die genau alle Wörter der Sprache haben. (auch Beschreibung unendlicher Sprachen möglich) Beispiele: {w {a} w 3}, {w {a, b} w 1 = b i 2 : w i = a}, {w {a, b} i 2 : w i = w 1 } später in dieser LV noch mehr Formalismen zur endlichen Beschreibung von eingeschränkten Sprachklassen (reguläre Ausdrücke, Grammatiken, Automaten,... ) 23

Operationen auf Wörtern Operationen auf Wörtern u, v A : Verkettung : A A A, wobei Spiegelung u A v A i {1,..., u + v } : { ui falls i u (u v) i = sonst v i u Beispiel: anne marie = annemarie assoziativ, nicht kommutativ, ε ist neutral Damit ist (A,, ε) ein Monoid. R : A A, wobei Fakt u A i {1,..., u } : u R i Beispiel: marie R = eiram, anna R = anna u A heißt Palindrom gdw. u R = u Für jedes Wort u A gilt ( u R) R = u. = u u +1 i Für je zwei beliebige Wörter u, v A gilt (u v) R = v R u R. 24

Anwendung: Java-Standardbibliothek Rotieren einer Liste in java.util.collections: x 0,..., x mid 1, x mid,..., x size durch v u = (u }{{}}{{} R v R ) R u v private static void rotate2(list<?> list, int distance) { int size = list.size(); if (size == 0) return; int mid = -distance % size; if (mid < 0) mid += size; if (mid == 0) return; reverse(list.sublist(0, mid)); reverse(list.sublist(mid, size)); reverse(list); } 25

Relationen auf Wörtern Präfix (Anfangswort): u A v A : ((u v) ( w A (u w = v))) z.b. tom tomate (mit w = ate) Postfix (Suffix): u A v A : (u Postfix von v ( w A (w u = v))) z.b. enten ist Postfix von studenten (mit w = stud) Infix (Faktor, zusammenhängendes Teilwort): u A v A : (u Infix von v ( w A w A : (w u w = v))) z.b. oma ist Infix von tomate (mit w = t und w = te) 26

Mehr Relationen auf Wörtern Ordnungen bei gegebener Reihenfolge < auf dem Alphabet A: lexikographisch Ordnung auf A : u, v A : u lex v gdw. 1. u v oder 2. w A a, b A : a < b wa u wb v quasi-lexikographische Ordnung auf A : u, v A : u qlex v gdw. 1. u v oder 2. u = v u lex v Beispiele: für A = {a, b} mit a < b ab aba, ab lex aba, ab qlex aba abab abba, aber abab lex abba und abab qlex abba, aaa lex ab, aber aaa qlex ab ab lex aaba, aber ab qlex aaba 27

Sprachen als Mengen Sprachen L A sind Mengen von Wörtern Eigenschaften: leer, endlich, abzählbar, überabzählbar Mengenrelationen auf Sprachen: L L gdw. w A : w L w L gilt L = L gdw. w A : w L w L gilt Mengenoperationen auf Sprachen: L L = {w w L w L } L L = {w w L w L } L \ L = {w w L w L } L L = (L \ L ) (L \ L) Komplement einer Sprache L A : L = A \ L Beispiel: L = A n L = A n n 3N n {3i+1 i N} n {3i+2 i N} A n 28

Weitere Operationen auf Sprachen Verkettung von Sprachen: L 1 L 2 = {u v u L 1 v L 2 } Beispiel: L 1 = {111, 1, 10} L 2 = {00, 0} L 1 L 2 = {111, 1, 10} {00, 0} = {1110, 11100, 10, 100, 1000} Spiegelung L R = {w R w L} Beispiel: L = {a, ab, aba, abab} L R = {a, ba, aba, baba} 29

Iterierte Verkettung für Sprachen L A L 0 = {ε} n N : L n+1 = L n L = L } {{ L } n+1 mal L = L n L + = L n n N für Wörter u A : Beispiele: u n = u } {{ u } n mal n N\{0} A, u = {u} = {u n n N} A u + = u \ {ε} = {u} + = {u n n N \ {0}} A (101) 3 = 101101101 und 101 3 = 10111 a = {a i i N} = {ε, a, aa, aaa,...} (ab) = {(ab) i i N} = {ε, ab, abab, ababab,...} 30

Reguläre Ausdrücke Syntax Die Menge RegExp(A) aller regulären Ausdrücke über einem Alphabet A ist (induktiv) definiert durch: IA RegExp(A), ε RegExp(A) und für jedes Symbol a A gilt a RegExp(A) IS für alle E RegExp(A) und F RegExp(A) gilt (E + F ), EF, (E) RegExp(A). Beispiele: ε + a, ε +, (a + ), ε + ((ab) a) dieselbe Definition kürzer: RegExp(A) = Term(Σ F, ) für die Signatur Σ F = {(, 0), (ε, 0), (, 1), (+, 2), (, 2)} {(a, 0) a A} (Baumdarstellung) 31

Beispiele (ohne überflüssige Klammern) Für A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} gilt 0+(1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9) RegExp(A) Für A = {0, 1} gilt (1 + ε) + (10) RegExp(A) (0 + 11) + ((0 + (1) )0) RegExp(A) Oft werden A E + = EE E n = E E }{{} E n = n mal E } {{ E } n mal für n N als Kurzbezeichnungen verwendet. 32

Reguläre Ausdrücke Semantik Jeder reguläre Ausdruck E RegExp(A) repräsentiert eine Sprache L(E) A. L( ) = L(ε) = {ε} a A : L(a) = {a} E, F RegExp(A) : L(E + F ) = L(E) L(F ) E, F RegExp(A) : L(EF ) = L(E) L(F ) E, F RegExp(A) : L(E ) = (L(E)) Eine Sprache L A heißt genau dann regulär, wenn ein regulärer Ausdruck E RegExp(A) mit L = L(E) existiert. Beispiel: Die Menge L aller Dezimaldarstellungen natürlicher Zahlen ist regulär wegen L = L (0 + (1 + 2 + + 9)(0 + 1 + + 9) ) 33

Beispiele Für A = {a, b} gilt L(ab ) = {a, ab, abb, abbb, abbbb,...} = {ab i i N} L((ab) ) = {ε, ab, abab, ababab,...} = {(ab) i i N} L((a + b) ) = {a, b} L(a b ) = {u v u a v b } L((a b ) ) = {a, b} L((a + b) aba) = {u aba u A } Reguläre Ausdrücke ermöglichen eine endliche Darstellung unendlicher Sprachen. 34

Äquivalenz regulärer Ausdrücke Zwei reguläre Ausdrücke E, F RegExp(A) heißen genau dann äquivalent, wenn L(E) = L(F ) gilt. Beispiele: (a + b), (a + b ) und a (ba ) sind äquivalent ab und (ab) sind nicht äquivalent (11 + 0 + 110 + 011) und (11 + 0) sind... Fakt Die Äquivalenz regulärer Ausdrücke ist eine Äquivalenzrelation. 35

Was bisher geschah Alphabet, Wort, Sprache Wörter w A Operationen: Spiegelung R, Verkettung Palindrome Relationen: Präfix, Infix, Postfix, lexikographische, quasi-lexikographische Ordnung Sprachen L A (L 2 (A ) ) Relationen: Mengenrelationen, = Operationen: Mengenoperationen,,, \ Verkettung, iterierte Verkettung, Spiegelung R Reguläre Ausdrücke endliche Darstellung auch unendlicher Sprachen Syntax: RegExp(A) = Term(Σ F, ) (Baumstruktur) für Σ F = {(, 0), (ε, 0), (, 1), (, 2), (+, 2)} {(a, 0) a A} Semantik des regulären Ausdrucks E RegExp(A): Sprache L(E) A 36

Interessante Fragen für Sprachen Ist ein gegebenes Wort w in der Sprache L enthalten? (heißt oft Wortproblem) Enthält die Sprache L nur endlich viele Wörter? Gilt L 1 L 2 für zwei gegebene Sprachen L 1 und L 2? Gilt L 1 = L 2 für zwei gegebene Sprachen L 1 und L 2? Fragen zur Regularität: Lässt sich die Sprache L durch einen regulären Ausdruck definieren? (Gilt E RegExp(A) : L = L(E)?) Woran erkennt man, ob sich eine Sprache durch einen regulären Ausdruck definieren lässt? Gilt L(E) = für einen gegebenen regulären Ausdruck E? Gilt L(E) = A für einen gegebenen regulären Ausdruck E? Ist ein gegebenes Wort w in der durch den regulären Ausdruck E definierten Sprache L(E) enthalten? Alle Antworten sind für endliche Sprachen einfach, aber für unendliche Sprachen meist schwierig. 37

Wortersetzungssysteme Alphabet A Wortersetzungsregel (l, r) A A (geschrieben l r) Wortersetzungssystem endliche Menge von Wortersetzungsregeln Beispiele: Regel ba ab, Wortersetzungssystem S = {a ab, ba c, abc ε} 38

Anwendung von Wortersetzungsregeln Eine Regel l r ist auf ein Wort w A anwendbar, falls l ein Infix von w ist. Beispiel: Regel ma ε ist auf tomate anwendbar, u = to, v = te, auf am, motte und meta nicht anwendbar. Eine Anwendung der Regel l r auf ein Wort w = u l v ergibt das Wort u r v. (Ersetzung des Teilwortes l durch r) Beispiel: ab a angewendet auf baababa = u l v mit u = ba und v = aba ergibt baaaba mit u = baab und v = a ergibt baabaa 39

Ableitungsschritt Ableitungsschritt (u, (l r), p, v) im Wortersetzungssystem S mit Ausgangswort u, auf u anwendbare Regel l r aus S, Position p {1,..., u } im Wort u, an der das Teilwort l beginnt v ist das nach Anwendung der Regel l r an Position p auf u entstandene Wort. Beispiel: S = {ab ba, a b}, u = aba mögliche Ableitungsschritte in S (aba, (ab ba), 1, baa) (aba, (a b), 3, abb) (aba, (a b), 1, bba) 40

Ein-Schritt-Ableitungsrelation Jedes Wortersetzungssystem S A A definiert eine Relation S A A, wobei genau dann u S v gilt, wenn ein Ableitungsschritt (u, (l r), p, v) mit (l r) S existiert. Beispiel: Für S = {ab ba, a b} gilt aba S baa wegen (aba, (ab ba), 1, baa) aba S bba wegen (aba, (a b), 1, bba) aba S abb wegen (aba, (a b), 3, abb) aba S bbb 41

Ableitungen Eine Folge von Ableitungsschritten (u, (l 1 r 1 ), p 1, u 2 ), (u 2, (l 2 r 2 ), p 2, u 3 ),, (u n 1, (l n 1 r n 1, p n 1, v) im Wortersetzungssystem S heißt Ableitung von u nach v in S. Beispiel: S = {ab ba, a b}, u = aba Folge von Ableitungsschritten (aba, (ab ba), 1, baa), (baa, (a b), 3, bab), (bab, (a b), 2, bbb) aba ab ba baa a b bab a b bbb Länge der Ableitung = Anzahl der Ableitungsschritte In jedem System S existiert für jedes u A die leere Ableitung (der Länge 0) von u nach u. 42

Beispiele S 1 = { } mit u = und v = Was wird hier berechnet? Anderes Wortersetzungssystem mit derselben Wirkung? S 2 = {11 1, 00 1, 01 0, 10 0} und u = 1101001 Wirkung verschiedener Ableitungreihenfolgen? S 3 = {c aca, c bcb, c a, c b, c ε} und u = c Menge aller in S 3 aus c ableitbaren Wörter, die kein c enthalten? 43

Wiederholung: Hüllen binärer Relationen R I M heißt reflexive Hülle von R M 2 (mit Identität I M = {(x, x) x M}) R R 1 heißt symmetrische Hülle von R M 2 (mit inverser Relation R 1 = {(y, x) (x, y) R}) Wiederholung: Verkettung der Relationen R M 2 und S M 2 R S = {(x, z) M 2 y M : (x, y) R (y, z) S} Iterierte Verkettung von R M 2 mit sich selbst: R 0 = I M R n+1 = R n R R + = R n M 2 n N\{0} R = R n M 2 n N transitive Hülle reflexiv-transitive Hülle 44

Ersetzungsrelation Jedes Wortersetzungssystem S (A A ) definiert die Ersetzungsrelation S (A A ), wobei genau dann u S v gilt, wenn eine Ableitung von u nach v existiert. Beispiel: S = {a aa}, für jedes n 1 gilt ba S b a a }{{} n wegen ba S baa S baaa S S b a a }{{} n b S b, aber für kein Wort w b gilt b S w ( S ist die reflexive transitive Hülle von S) 45

Modellierungsbeispiel: lineares Solitaire Startkonfiguration : n Spielsteine auf n benachbarten Spielfeldern. Spielzug : Springe mit einem Stein über einen benachbarten Stein auf das nächste freie Feld und entferne den übersprungenen Stein. Spielende, wenn kein Zug mehr möglich ist. Modellierung als Wortersetzungssystem: Konfiguration: w {, } ( - Stein, - leer, - Rand) Startkonfiguration: n zulässige Spielzüge:,,,... Fragen: Welche Konfigurationen / Endkonfigurationen sind von der Startkonfiguration erreichbar? Wieviele Züge sind mindestens / höchstens notwendig, um eine Endkonfiguration zu erreichen? Jedes Paar (Wortersetzungssystem, Anfangskonfiguration) definiert die Menge (Sprache) aller erreichbaren Konfigurationen. 46

Sprachen aus Wortersetzungssystemen Jedes Paar (Wortersetzungssystem S, Anfangswort w) über einem Alphabet A definiert die Sprache L(S, w) = {v A w S v} (alle Wörter v, die von w durch eine Ableitung in S erreicht werden) B: S = {c aca, c bcb, c ε}, w = c L(S, w) = {w c w R } (Menge aller Palindrome über {a, b, c}, die höchstens an der mittleren Position ein c enthalten) Jedes Paar (Wortersetzungssystem S, Menge M von Wörtern) über einem Alphabet A definiert die Sprache L(S, M) = L(S, w) w M (alle Wörter v, die von irgendeinem w M durch eine Ableitung in S erreicht werden) 47

Ausdrucksstärke von Wortersetzungssystemen Wortersetzungssysteme ermöglichen eine endliche Darstellung unendlicher Sprachen. (als Erzeugungsvorschrift für alle Wörter der Sprache) Beispiele: L ({ε aaa}, ε) = {a 3n n N} = (aaa) L ({2 020, 2 121}, 2) = {w2w R w {0, 1} } können zur Modellierung von Zuständen und Übergängen dazwischen verwendet werden z.b. Spiele, Ausführung von Programmen, Programmverifikation Beispiel: Lineares Solitaire können Berechnungen simulieren (Bestimmung von erreichbaren Wörtern ohne Nachfolger) Beispiel: ε L ({ }, ) 48

Wortproblem für durch Wortersetzungssysteme definierte Sprachen Ist ein gegebenes Wort w in der Sprache L(S, u) enthalten? alternative Formulierung: Gilt u S w? Ableitungsrelation S als (unendlicher) gerichteter Graph G S = (V, E) mit Knoten: V = A Kanten: E = {(u, v) u S v} u S w gilt genau dann, wenn in G S ein Pfad von u nach w existiert. Beispiel: (Tafel) S = {ab ba}, abab S baba, aber abab S abaa, abab S aabb 49

Sprachen aus Wortersetzungssystemen Lösung des Wortproblems und anderer Fragen zu Sprachen ist für endliche Sprachen einfach, für unendliche Sprachen oft nicht. Darstellung der Sprache durch ein Wortersetzungssystem kann helfen. Lösung des Wortproblem w L(S, u) durch Standardverfahren: Suche eines Pfades von u nach w im Ableitungsgraphen des Wortersetzungssystems S Problem: Pfadsuche ist Standardverfahren für endliche Graphen. Ableitungsgraphen von Wortersetzungssystemen sind meist unendlich. Standardverfahren ist in Spezialfällen anwendbar, wenn Suche in einem endlichen Teilgraphen genügt 50

Nichtverlängernde Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverlängernd, wenn für jede Regel (l r) S gilt: l r. Wortproblem (L, w): Eingabe : Sprache L A, Wort w A Frage: Gilt w L? Ausgabe ja oder nein Beispiel: S = {ab ba, ac a}, u = abcac, v = aacb Satz Es gibt einen Algorithmus, welcher für für jedes nichtverlängernde Wortersetzungssystem S A A und beliebige Wörter u, w A das Wortproblem (L(S, u), w) in endlicher Zeit korrekt löst. Idee: Suche im endlichen Teilgraphen aller Wörter v A mit v u 51

Nichtverkürzende Wortersetzungssysteme Ein Wortersetzungssystem S heißt genau dann nichtverkürzend, wenn für jede Regel (l r) S gilt: l r. Beispiel: S = {a ba, b a}, u = ba, w = aaba, w = abab Satz Es gibt einen Algorithmus, welcher für für jedes nichtverkürzende Wortersetzungssystem S A A und beliebige Wörter u, w A das Wortproblem (L(S, u), w) in endlicher Zeit korrekt löst. Idee: Suche im endlichen Teilgraphen aller Wörter v A mit u v w 52

Wortersetzungssysteme mit verlängernden und verkürzenden Regeln Beispiel: Gilt c S d? S = c baaca, c aacba, c bbcabb, aca d, bcb d, ada d, bdb d Für Wortersetzungssysteme S mit verlängernden und verkürzenden Regeln existiert im Allgemeinen kein Algorithmus, der für beliebige Wörter u, w A feststellt, ob u s w gilt. 53

Was bisher geschah Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen interessante Fragen für Sprachen und Wörter Reguläre Ausdrücke Syntax, Semantik endliche Darstellung evtl. unendlicher Sprachen Wortersetzungssysteme P A A Wortersetzungssregel l r mit l, r A Ableitung in P: endliche Folge von Ersetzungsschritten Ausdrucksstärke: Darstellung von (evtl. unendlichen) Sprachen Modellierung von Zustandsübergängen Ausführen von Berechnungen 54

Wiederholung Wortersetzungssysteme A = {s, w}, R = {ww s, ss s, ws w, sw w} (nichtverlängernd) Ist ww aus wsww ableitbar? (Gilt wsww R ww?) L(R, wsww) ={wsww, www, wss, sw, ws, w} A = {b, r, w}, S = {wr rw, br rb, bw wb} (nichtverlängernd und nichtverkürzend) Ist wbbr aus brwb ableitbar? L(S, brwb) ={brwb, rbwb, rwbb} A = {a, b, c}, T = {a ba, b cc} (nichtverkürzend) Ist aabbcc aus a ableitbar? L(T, a) =L ((b + cc) a) 55

Ableitbare Wörter über Teilalphabet Beispiele: A = {a, b, c}, S = c aca, c bcb, c ε, c a, c b L(S, c) = {u d u R u {a, b} d {a, b, c, ε}} Menge aller Wörter in L(S, c) {a, b} : Palindrome über {a, b} c ist Hilfssymbol zur Erzeugung der Palindrome 56

Natürliche Sprache Wortersetzungssystem S enthält die Regeln: Satz Subjekt Prädikat. Subjekt martikel msubstantiv Subjekt wartikel wsubstantiv martikel Der wartikel Die msubstantiv Hund wsubstantiv Sonne Prädikat bellt Prädikat scheint Alphabet A = {Der, Die, Hund, Sonne, scheint, bellt,.} { Satz,Subjekt, Prädikat, wartikel, martikel, wsubstantiv, msubstantiv} Ableitbare Wörter in L(S, Satz ) ohne Hilfssymbole aus der Menge {Satz, Subjekt, Prädikat, martikel, wartikel, msubstantiv, wsubstantiv}: Menge korrekter deutscher Sätze (dieser einfachen Form mit ausschließlich den Worten Der, Die, Hund, Sonne, scheint, bellt). 57

Aussagenlogische Formeln Wortersetzungssystem S enthält die Regeln Formel Variable Formel Konstante Formel ( Formel ) Formel ( Formel Formel ) Formel ( Formel Formel ) Variable p Variable q Konstante t Konstante f Alphabet A = {t, f, p, q,,,, (, )} { Formel,Variable, Konstante} Formel S (Formel Formel) 2 S (Formel f) S ((p ( q)) f) Wörter in L(S, Formel ) {t, f, p, q,,,, (, )} : Menge AL({p, q}) aller aussagenlogischen Formeln mit Aussagenvariablen aus der Menge {p, q} 58

Aussagenlogische DNF Wortersetzungssystem S enthält die Regeln DNF Minterm DNF DNF Minterm Minterm Literal Minterm Minterm Literal Literal Variable Literal Variable Variable p Variable q Alphabet A = {p, q,,, } { DNF, Minterm, Literal,Variable} DNF S Minterm DNF 3 S p DNF S p q p q Wörter in L(S, DNF ) {p, q,,, } : Menge AL({p, q}) aller disjunktiven Normalformen mit Aussagenvariablen aus der Menge {p, q} 59

Dezimaldarstellung natürlicher Zahlen Wortersetzungssystem S enthält die Regeln Zahl 0 Zahl 1Ziffernfolge. Zahl 9Ziffernfolge Ziffernfolge 0Ziffernfolge. Ziffernfolge 9Ziffernfolge Ziffernfolge ε Alphabet {0,..., 9} { Zahl, Ziffernfolge } Zahl S 3Ziffernfolge S 32Ziffernfolge S 327Ziffernfolge S 327 Wörter in L(S, Zahl ) {0,..., 9} : Menge aller Dezimaldarstellungen natürlicher Zahlen 60

Programmiersprachen Java-Syntax (Ausschnitt) in Backus-Naur Form (BNF) (John Backus, Peter Naur) <while statement>::=while(<expression>)<statement> <expression>::=<assignment expression> <assignment expression>::=<conditional expression> <assignment> <assignment>::=<left hand side><assignment operator><assignment expression> <left hand side>::=<expression name> <field access> <array access> <assignment operator>::= = *= /= %= += -= <<= >>= >>>= &= ^= = a r 1 r 2... r n statt mehrerer Regeln a r 1,..., a r n ::= statt (in ASCII darstellbar) Hilfssymbole markiert durch < und > 61

Definition Grammatik Grammatik G = (N, T, P, S) mit Nichtterminalsymbole endliche Menge N (Hilfssymbole) Terminalsymbole endliche Menge T (Alphabet der erzeugten Sprache) Wortersetzungssystem P (N T ) + (N T ) (Produktionen) Startsymbol S N Beispiel: G = (N, T, P, S) mit N = {S}, T = {0, 1}, { S 0S1 P = S ε } 62

Grammatiken: Beispiele G = (N, T, P, E) mit N = {E, F, G}, T = {(, ), a, +, } und E G, E E + G, G F, P = G G F, F a, F (E) G = (N, T, P, S) mit N = {S, A, B, C}, T = {a, b, c} S asbc, S abc, CB BC, P = ab ab, bb bb, bc bc, cc cc 63

Ableitungen in Grammatiken Ableitung in Grammatik G = (N, T, P, S): Ableitung im Ersetzungssystem P mit Startwort S Beispiel: G = (N, T, P, S) mit N = {S, A, B} T = {0, 1} S 0SA S 0A P = A 1 B A 64

Durch Grammatiken definierte Sprachen Grammatik G = (N, T, P, S) definiert die Sprache L(G) = {w T S P w} = L(P, S) T Beispiel: G = (N, T, P, S) mit N = {S, Z} definiert die Sprache L(G) =... T = {0, 1} S 1Z, S 0, P = Z 0Z, Z 1Z, Z ε 65

Äquivalenz von Grammatiken Zwei Grammatiken G 1 und G 2 heißen genau dann äquivalent, wenn L(G 1 ) = L(G 2 ) gilt. Beispiel: G 1 = (N 1, {0, 1}, P 1, S) mit N 1 = {S, A, B} und S 0SA S 0A P 1 = A 1 B A und G 2 = (N 2, {0, 1}, P 2, S ) mit N 2 = {S } und P 2 = { S 0S 1, S 01 } sind äquivalent wegen L(G 1 ) = L(G 2 ) =... Äquivalenz von Grammatiken ist eine Äquivalenzrelation. (ÜA) 66

Grammatiken mit ε-regeln ε-regel : Grammatik-Regel der Form l ε Beispiele: G 1 = ({A, B}, {0, 1}, P 1, A) mit P 1 = {A 1B0, B 1B0, B ε} ist äquivalent zu G 2 = ({A}, {0, 1}, P 2, A) mit P 2 = {A 1A0, A 10} (ohne ε-regel) G = ({A}, {0, 1}, P, A) mit P = {A 1A0, A ε} ist nicht äquivalent zu einer Grammatik ohne ε-regel 67

Chomsky-Hierarchie (Noam Chomsky) Eine Grammatik G = (N, T, P, S) ist vom Chomsky-Typ 0 immer, 1, falls für jede Regel (l r) P gilt: l r (monoton, kontextsensitiv) 2, falls Typ 1 und für jede Regel (l r) P gilt: l N (kontextfrei) 3, falls Typ 2 und für jede Regel (l r) P gilt: l N und r (T (T N)) (regulär) Eine Sprache L T heißt vom (Chomsky-)Typ i für i {0,..., 3}, falls eine Grammatik G vom Typ i mit L \ {ε} = L(G) existiert. L i bezeichnet die Menge aller Sprachen vom Typ i. Achtung: Nicht jede Sprache wird durch eine Grammatik erzeugt. 68

Beispiele G = ({S}, {a, b}, P, S) mit P = {S asb, S ab, S a, S b} ist vom Typ 2 G = ({S}, {a, b}, P, S) mit P = {S asb, S a, S b, S ε} ist vom Typ 0 G = ({S, A, B}, {a, b}, P, S) mit P = {S aa, A ab, B bb, B b} ist vom Typ 3 G = ({A, B, C}, {a, b, c}, P, A) mit P = A aabc, A abc, CB BC, ab ab, bb bb, bc bc, cc cc ist vom Typ 1 definiert L(G) = {a n b n c n n N \ {0}} 69

Was bisher geschah: Formale Sprachen Alphabet, Wort, Sprache Operationen und Relationen auf Wörtern und Sprachen reguläre Ausdrücke: Syntax, Semantik, Äquivalenz Wortersetzungssysteme Wortersetzungsregeln und -systeme Ableitungen, Ableitungsgraph durch Wortersetzungssysteme definierte Sprachen Wortproblem in Wortersetzungssystemen im Allgemeinen nicht algorithmisch lösbar, aber algorithmisch lösbar für nichtverlängernde Systeme nichtverkürzende Systeme Grammatiken Terminal-, Nichtterminalsymbole Ableitungen in Grammatiken durch Grammatiken definierte Sprachen Äquivalenz von Grammatiken Chomsky-Hierarchie für Grammatiken und Sprachen 70

Wortproblem für Typ-1-Sprachen gegeben : Grammatik G = (N, T, P, S) vom Chomsky-Typ 1, Wort w T Frage : Gilt w L(G)? Satz Es existiert ein Algorithmus, welcher für jede beliebige Eingabe (G, w), wobei T ein endliches Alphabet, w T und G eine monotone Grammatik (Chomsky-Typ 1) über T sind die Wahrheit der Aussage w L(G) korrekt beantwortet. (folgt aus entsprechendem Satz für nichtverkürzende Wortersetzungssysteme) demnächst spezielle (effizientere) Verfahren für Grammatiken vom Chomsky-Typ 2 und 3 71

Dyck-Sprache Klammerpaar ( und ) Dyck-Sprache: Menge aller korrekt geklammerten Ausdrücke erzeugt durch Grammatik Beispiele: ()(()()) L(G) ())( L(G) ε L(G) Achtung: G hat Chomsky-Typ 0 G = ({S}, {(, )}, P, S) mit S ε P = S SS S (S) Dyck-Sprache hat Chomsky-Typ 2 72

Allgemeine Dyck-Sprachen Menge aller korrekt geklammerten Ausdrücke mit n Paaren von Klammern: ( i, ) i für i {1,..., n} erzeugt durch Grammatik G = ({S}, {( i, ) i i {1,..., n}}, P, S) mit { } S ε P = {S ( S SS i S) i i {1,..., n}} Symbole müssen nicht notwendig Klammern sein, z.b. aacdacababdbbcabdb Dyck-Sprache mit a statt ( 1, b statt ) 1, c statt ( 2 und d statt ) 2 73

Beispiel HTML mehrere Paare öffnender und schließender Klammern (Tags) <html> <head> <title> Theoretische Informatik </title> </head> <body> <h1> Theoretische Informatik </h1>... </body> </html> 74

Wiederholung: abzählbare Mengen (Mathematik 1. Semester) Eine Menge M heißt genau dann abzählbar, wenn sie höchstens so mächtig wie N ist. (also eine surjektive Funktion f : N M existiert) Mit dem ersten Diagonalverfahren von Cantor lässt sich z.b. zeigen: Z und Q sind abzählbar. Für jedes endliche Alphabet A ist die Menge A aller Wörter über A abzählbar. Für jedes endliche Alphabet A ist jede Sprache L A abzählbar. Mengen, die nicht abzählbar sind, heißen überabzählbar. 75

Beispiele überabzählbarer Mengen Mit dem zweiten Diagonalverfahren von Cantor lässt sich zeigen: R ist überabzählbar (mächtiger als N). (Es gibt überabzählbar viele reelle Zahlen.) [0, 1] R ist überabzählbar. (Intervall [0, 1] enthält überabzählbar viele reelle Zahlen.) 2 N (Menge aller Mengen natürlicher Zahlen) ist mächtiger als N. (Überabzählbarkeit der Menge 2 N ) Es gibt überabzählbar viele Mengen natürlicher Zahlen. 2 {0,1} Menge aller Sprachen L {0, 1} ist mächtiger als {0, 1}. (Es gibt überabzählbar viele Sprachen über dem Alphabet {0, 1}.) 2 (A ) ist für beliebiges endliches Alphabet A mächtiger als A (Für jedes nichtleere endliche Alphabet A ist die Menge aller Sprachen über A überabzählbar. ) 76

Lässt sich jede Sprache durch eine Grammatik erzeugen? Existiert für jedes endliche Alphabet A zu jeder Sprache L A eine Grammatik G mit L = L(G)? Nein (Gegenbeispiel später) Begründung: 1. Wieviele Sprachen L A gibt es? (Mächtigkeit von 2 (A ) ) überabzählbar viele 2. Wieviele Grammatiken über dem endlichen Alphabet A gibt es? abzählbar viele, weil Alphabet A = A {(, ),,, {, },, ε} endlich Menge (A ) aller Wörter über A abzählbar jede Grammatik über A ist ein Wort aus (A ) (endliche Beschreibung) Menge aller Grammatiken über A ist Teilmenge der abzählbaren Menge (A ), also selbst abzählbar Damit existieren sogar sehr viel mehr (überabzählbar viele) Sprachen, die nicht durch Grammatiken beschrieben werden können. 77

Zustandsübergangssystem Münzschließfach fg b S O Z A S G fo bo bg O Aktionen: A aufschließen Z zuschließen O Tür öffnen S Tür schließen G Geld einwerfen Zustände : fg frei, Tür zu fo frei, Tür offen bo bezahlt, Tür offen bg bezahlt, Tür zu b belegt 78

Endliche Automaten Definition NFA (nondeterministic finite automaton) A = (X, Q, δ, I, F ) mit X endliches Alphabet, Q endliche Menge von Zuständen, δ Übergangsrelationen δ : X (Q Q), I Q Startzustände, F Q akzeptierende Zustände. 79

NFA: Beispiel A = (X, Q, δ, {0, 3}, {2, 3, 4}) mit X = {a, b, c} Q = {0, 1, 2, 3, 4} δ(a) = {(0, 0), (0, 1), (1, 3)} δ(b) = {(0, 0), (1, 2)} δ(c) = {(0, 3), (3, 3), (4, 1)} a,b 0 3 c a a b 1 2 c c 4 80

Eigenschaften endlicher Automaten NFA A = (X, Q, δ, I, F ) heißt vollständig, falls a X p Q : {q (p, q) δ(a)} 1 deterministisch (DFA), falls 1. I = 1 und 2. a X p Q : {q (p, q) δ(a)} 1 Beispiele: a,b b 0 1 a b a b b 0 1 a b 0 1 vollständig nicht vollständig vollständig nicht deterministisch deterministisch deterministisch a b 81

Was bisher geschah Alphabet, Wort, Sprache Operationen auf Wörtern und Sprachen Grammatiken, Chomsky-Hierarchie Wiederholung zweistellige Relationen, deren Verknüpfung und Darstellungen (Graph, Matrix) endlicher Automat (NFA) A = (X, Q, δ, I, F ) Eigenschaften eines NFA A = (X, Q, δ, I, F ): vollständig: für jedes Symbol a X und jeden Zustand p Q existiert mindestens ein Zustand q Q mit (p, q) δ(a) deterministisch: genau ein Startzustand und für jedes Symbol a X und jeden Zustand p Q existiert höchstens ein Zustand q Q mit (p, q) δ(a) 82

Wiederholung: zweistellige Relationen Verkettung der Relationen R M M und S M M: R S = {(a, b) c M : (a, c) R (c, b) S} Beispiel: M = {a, b, c} R = {(a, a), (b, c)} S = {(a, c), (c, b)} R S = {(a, c), (b, b)} S R = {(c, c)} 83

Darstellung als Graph als gerichteter Graph G = (V, E) mit V = M und E = R M = {a, b, c} R = {(a, a), (b, c)} S = {(a, c), (c, b)} a Verkettung als Pfade mit passender Markierung b c R S = {(a, c), (b, b)} S R = {(c, c)} a b c 84

Darstellung als Matrix mit Booleschen Einträgen M = {a, b, c} R = {(a, a), (b, c)} S = {(a, c), (c, b)} 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 Verkettung als Matrixmultiplikation mit Booleschen Operationen R S = S R = 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 = = 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 85

Übergangsrelation auf Wörtern Fortsetzung der Übergangsrelationen δ : X (Q Q) auf Wörter δ : X (Q Q): δ (ε) = {(q, q) q Q} = I Q Identität auf Q δ (wa) = δ (w) δ(a) für alle w X, a X = {(p, q) r Q : (p, r) δ (w) (r, q) δ(a)} Für w = w 1 w n X n gilt also δ (w) = δ(w 1 ) δ(w n ) (Multiplikation der Matrizen δ(w 1 ),..., δ(w n )) 86

Beispiel a,b b A = ({a, b}, {0, 1}, δ, I, F ) mit δ(a) = {(0, 0)} und δ(b) = {(0, 0), (0, 1), (1, 1)} b 0 1 δ(a) = ( 1 0 0 0 δ (ba) = δ(b)δ(a) = ) ( 1 1 0 1 δ(b) = ) ( 1 0 0 0 ( 1 1 0 1 ) = ) ( 1 0 0 0 ) δ (abb) = δ(a)δ(b)δ(b) = ( 1 0 0 0 ) ( 1 1 0 1 ) ( 1 1 0 1 ) = ( 1 1 0 0 ) 87

Beispiel a,b b A = ({a, b}, {0, 1}, δ, I, F ) mit δ(a) = {(0, 0)} und δ(b) = {(0, 0), (0, 1), (1, 1)} b 0 1 δ(a) = δ(ba) = δ(b)δ(a) = ( 1 0 0 0 ) ( 1 1 0 1 δ(b) = ) ( 1 0 0 0 ( 1 1 0 1 ) = ) ( 1 0 0 0 ) δ(abb) = δ(a)δ(b)δ(b) = ( 1 0 0 0 ) ( 1 1 0 1 ) ( 1 1 0 1 ) = ( 1 1 0 0 ) 88

Von einem NFA akzeptierte Wörter NFA A = (X, Q, δ, I, F ) akzeptiert ein Wort w X genau dann, wenn δ(w) (I F ). alternative Formulierung: A akzeptiert w genau dann, wenn ein akzeptierender Weg, d.h. eine Folge (q 0,..., q w ) von Zuständen q i Q existiert, für die gilt: 1. i {1,..., w } : (q i 1, q i ) δ(w i ), 2. q 0 I (Startzustand) und 3. q w F (akzeptierender Zustand). w q 1 w 0 2 w q1 n qn mit q 0 I und q n F 89

Beispiel A = ({a, b}, {0, 1}, δ, {0}, {0}) mit δ(a) = {(0, 1)}, δ(b) = {(0, 1), (1, 0)} akzeptiert abbb über den Weg a,b 0 1 b 0 a 1 b 0 b 1 b 0 F akzeptiert bbb nicht 0 b 1 b 0 b 1 F akzeptiert aaba nicht 0 a 1 a? 90

NFA-akzeptierbare Sprachen NFA A = (X, Q, δ, I, F ) akzeptiert die Sprache L(A) = {w X s I f F : (s, f ) δ(w)} Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0), (2, 2)} und δ(b) = {(0, 0), (0, 1), (1, 2), (2, 2)} akzeptiert L(A) =... Sprache L X heißt genau dann NFA-akzeptierbar, wenn ein NFA A mit L = L(A) existiert. Menge aller NFA-akzeptierbaren Sprachen: REC(NFA) (recognizable) Beispiel: L = {w w enthält ein Infix aa oder bba} ist NFA-akzeptierbar. 91

Beispiele NFA-akzeptierbarer Sprachen L 1 = {w {0, 1} w 0 ist ungerade } L 2 = {w {a, b} w beginnt mit ab und endet mit ba} L 3 = L(G) mit G = ({S, T }, {0, 1}, P, S) mit P = {S 11T, T 0S, T 0} L 4 = L(E) mit E = (a + b) ab L 5 = L(F ) mit F = ((a + b)c) 92

Isomorphie endlicher Automaten Zwei NFA A = (X, Q, δ, I, F ) und B = (X, Q, δ, I, F ) sind genau dann isomorph, wenn eine bijektive Funktion h : Q Q existiert, so daß 1. genau dann s I, wenn h(s) I, 2. genau dann f F, wenn h(f ) F und 3. für jedes a X : genau dann (p, q) δ(a), wenn (h(p), h(q)) δ (a). Beispiel: A = ({a, b}, {0, 1, 2}, δ, {0}, {0}) mit δ(a) = {(0, 1), (1, 2), (2, 0)} und δ(b) = {(0, 2), (1, 0), (2, 1)} und B = ({a, b}, {α, β, γ}, δ, {β}, {β}) mit δ(a) = {(α, β), (β, γ), (γ, α)} und δ(b) = {(α, γ), (β, α), (γ, β)} sind isomorph mit h(0) = β, h(1) = γ, h(2) = α. (Graphisomorphie zwischen gerichteten Graphen mit markierten Kanten) Fakt Isomorphie von NFA ist eine Äquivalenzrelation. 93

Äquivalenz endlicher Automaten Zwei NFA A, B heißen genau dann äquivalent, wenn L(A) = L(B) gilt. Beispiel: Der NFA A = ({a, b}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1)} und δ(b) = {(1, 1), (1, 2)} und der NFA B = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 1), (2, 1), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} sind äquivalent. Warum? Fakt Äquivalenz endlicher Automaten ist eine Äquivalenzrelation. Fakt Isomorphe endliche Automaten sind immer auch äquivalent. 94

Konstruktion von DFA aus NFA Motivation: In DFA existiert zu jedem Wort höchstens ein akzeptierender Weg, schnelles Feststellen der Akzeptanz möglich. Beispiel: A = ({a, b}, {0, 1, 2, 3, 4}, δ, {0, 4}, {3}) mit δ(a) = {(0, 0), (4, 4)(0, 1), (1, 3), (3, 3)} und δ(b) = {(0, 0), (4, 4), (4, 2), (2, 3), (3, 3)} allgemeines Verfahren: gegeben: NFA A = (X, Q A, δ A, I A, F A ) gesucht: DFA B = (X, Q B, δ B, I B, F B ) mit L(A) = L(B) Potenzmengenkonstruktion: NFA B = (X, Q B, δ B, I B, F B ) mit Q B = 2 Q A (Einschränkung auf von I B erreichbare genügt) I B = {I A } F B = {M Q A F A M } a X : δ B (a) = {(M, N) N = {q p M : (p, q) δ A (a)}} Fakt Der nach der Potenzmengenkonstruktion aus dem NFA A konstruierte Automat B ist vollständig, deterministisch und äquivalent zu A. 95

Was bisher geschah endlicher Automat (NFA) A = (X, Q, δ, I, F ) NFA-Eigenschaften: vollständig, deterministisch akzeptierender Weg für Wort w = w 1 w n in einem NFA A = (X, Q, δ, I, F ): Folge (q 0,..., q n ) von Zuständen aus Q mit 1. q 0 I, 2. q n F und 3. i {1,..., n} : (q i 1, q i ) δ(w i ) vom NFA A akzeptierte Sprache L(A) Menge aller NFA-akzeptierbaren Sprachen: REC(NFA) Isomorphie von NFA Äquivalenz von NFA Zu jedem NFA existiert ein äquivalenter DFA. (Potenzmengenkonstruktion) 96

Vervollständigung von NFA Motivation: In vollständigen NFA existiert zu jedem Wort wenigstens ein Weg, Akzeptanz jedes Wortes durch Menge der mit dem letzten Symbol erreichten Zustände auf allen Wegen feststellbar. Satz Zu jedem NFA existiert ein äquivalenter vollständiger NFA. (Hinzufügen eines zusätzlichen nichtakzeptierenden Zustandes, falls notwendig) Beispiel: A = ({a, b, c}, {0, 1, 2, 3, 4}, δ, {0}, {2, 4}) mit δ(a) = {(0, 0), (1, 2), (3, 4), (4, 4)}, δ(b) = {(0, 1), (0, 3)} und δ(c) = {(3, 0)} 97

Wiederholung: Konstruktion von DFA aus NFA Motivation: In DFA existiert zu jedem Wort höchstens ein akzeptierender Weg, schnelles Feststellen der Akzeptanz möglich. Beispiel: A = ({a, b}, {0, 1, 2, 3, 4}, δ, {0, 4}, {3}) mit δ(a) = {(0, 0), (4, 4)(0, 1), (1, 3), (3, 3)} und δ(b) = {(0, 0), (4, 4), (4, 2), (2, 3), (3, 3)} allgemeines Verfahren: gegeben: NFA A = (X, Q A, δ A, I A, F A ) gesucht: DFA B = (X, Q B, δ B, I B, F B ) mit L(A) = L(B) Potenzmengenkonstruktion: NFA B = (X, Q B, δ B, I B, F B ) mit Q B = 2 Q A (Einschränkung auf von I B erreichbare genügt) I B = {I A } F B = {M Q A F A M } a X : δ B (a) = {(M, N) N = {q p M : (p, q) δ A (a)}} Fakt Der nach der Potenzmengenkonstruktion aus dem NFA A konstruierte Automat B ist vollständig, deterministisch und äquivalent zu A. 98

Wiederholung: Operationen auf Sprachen Mengenoperationen,, \, Sprachoperationen R,, reguläre Ausdrücke RegExp(X ): Syntax: Menge aller Grundterme über der Signatur mit Konstantensymbolen, ε, jedes a X Operationssymbolen +, oder erzeugt durch Grammatik (ÜA 4.3.a) Semantik: Zuordnung E RegExp(X ) Sprache L(E) X Konstantensymbole Basissprachen (Einermengen bzw. ) Operationssymbole Sprachoperationen 99

NFA für Spiegelung (ÜA 5.6) Beispiel: DFA A = ({a, b}, {0, 1, 2, 3}, δ A, {0}, {2, 3}) mit δ A (a) = {(0, 1), (1, 3), (3, 3)} und δ A (b) = {(1, 2), (2, 2)} allgemeines Verfahren: gegeben: NFA A = (X, Q, δ A, I A, F A ) gesucht: NFA B mit L(B) = (L(A)) R Konstruktion: NFA B = (X, Q, δ B, I B, F B ) mit 1. I B = F A 2. F B = I A 3. a X : δ B (a) = δ A (a) 1 = {(q, p) (p, q) δ A (a)} Fakt Der oben definierte NFA B akzeptiert die Sprache (L(A)) R. Die Menge REC(NFA) ist abgeschlossen unter Spiegelung. 100

NFA für Komplement NFA-akzeptierbarer Sprachen Beispiel: vollständiger DFA A = ({a, b}, {0, 1, 2, 3}, δ, {0}, {2}) mit δ(a) = {(0, 1), (1, 3), (2, 2), (3, 3)} und δ(b) = {(0, 3), (1, 2), (2, 2), (3, 3)} allgemeines Verfahren: gegeben: vollständiger DFA A = (X, Q, δ, I, F ) gesucht: NFA B mit L(B) = L(A) Konstruktion: DFA B = (X, Q, δ, I, Q \ F ) Fakt Der oben definierte NFA B akzeptiert die Sprache L(A). Die Menge REC(NFA) ist abgeschlossen unter Komplementbildung. 101

NFA für Vereinigung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0, 1}, δ A, {0}, {0}) mit δ A (a) = {(0, 1), (1, 0)} und δ A (b) = NFA B = ({a, b}, {2, 3, 4}, δ B, {2}, {4}) mit δ B (a) = {(2, 3), (4, 3)} und δ B (b) = {(3, 4)} allgemeines Verfahren: gegeben: NFA A = (X, Q A, δ A, I A, F A ) und NFA B = (X, Q B, δ B, I B, F B ) mit Q A Q B = (Zustände umbenennen, falls notwendig) gesucht: NFA C mit L(C) = L(A) L(B) Konstruktion: NFA C = (X, Q A Q B, δ C, I A I B, F A F B ) mit a X : δ C (a) = δ A (a) δ B (a) Fakt Der oben definierte NFA C akzeptiert die Sprache L(A) L(B). Die Menge REC(NFA) ist abgeschlossen unter Vereinigung. Zu gegebenen NFA A und B lässt sich damit auch ein Automat C mit L(C) = L(A) L(B) = L(A) L(B) (demorgan) konstruieren. 102

DFA für Schnittmenge Beispiel: DFA A = ({a, b}, {0, 1}, δ A, {0}, {1}) mit δ A (a) = {(0, 0)} und δ A (b) = {(0, 1), (1, 1)} DFA B = ({a, b}, {2, 3}, δ B, {2}, {3}) mit δ B (a) = {(2, 3), (3, 3)} und δ B (b) = {(3, 3)} allgemeines Verfahren: gegeben: DFA A = (X, Q A, δ A, I A, F A ), DFA B = (X, Q B, δ B, I B, F B ) gesucht: DFA C = (X, Q C, δ C, I C, F C ) mit L(C) = L(A) L(B) Produkt-Konstruktion: DFA C = (X, Q A Q B, δ C, I A I B, F A F B ) mit a X : δ C (a) = {((p, q), (r, s)) (p, r) δ A (a) (q, s) δ B (a)} Fakt Der oben definierte DFA C akzeptiert die Sprache L(A) L(B). Die Menge REC(NFA) ist abgeschlossen unter Schnitt. Modifikation (Tafel): dieselbe Konstruktion des DFA C aus vollständigen DFA A und B mit akzeptierenden Zuständen F C = F A F B akzeptiert L(A) L(B) mit akzeptierenden Zuständen F C = (F A Q B ) (Q A F B ) akzeptiert L(A) L(B) 103

NFA mit ε-übergängen ε-nfa: NFA ohne Einschränkung δ(ε) = I Q, stattdessen δ(ε) I Q (zusätzliche Kanten im Automatengraphen mit Beschriftung ε) ε-nfa vereinfachen oft die Modellierung von Sprachen und Abläufen. Beispiel: A = ({a, b, c}, {0, 1, 2}, δ, {0}, {2}) mit δ(a) = {(0, 0)}, δ(b) = {(1, 1)}, δ(c) = {(2, 2)} und δ(ε) = {(0, 1), (1, 2)} Akzeptanz von Wörtern analog zu NFA: ε-nfa A = (X, Q, δ, I, F ) akzeptiert ein Wort w X genau dann, wenn δ (w) (I F ). δ (w) = δ (ε) δ(w 1 ) δ (ε) δ (ε) δ(w n ) δ (ε) ε-nfa A im Beispiel oben akzeptiert die Sprache L(A) = a b c Fakt Zu jedem NFA A existiert ein äquivalenter ε-nfa B mit genau einem Startzustand und genau einem akzeptierenden Zustand. 104

Eliminierung der ε-übergänge aus ε-nfa δ (ε) ist der transitive Abschluß der Relation δ(ε) ε-hülle eines Zustandes q Q: H ε (q) = {p (q, p) δ (ε)} allgemeines Verfahren: gegeben: ε-nfa A = (X, Q, δ, I, F ) mit δ(ε) I Q gesucht: NFA B ohne ε-übergänge mit L(B) = L(A) Konstruktion (ε-eliminierung): B = (X, Q, δ, I, F ) mit I = q I H ε (q) : a X : δ (a) = δ(a) { (p, q ) (p, q) δ(a) q H ε (q) } Fakt Der durch ε-eliminierung aus dem ε-nfa A konstruierte NFA B enthält keine ε-übergänge und ist äquivalent zu A. 105

NFA für Verkettung NFA-akzeptierbarer Sprachen Beispiel: NFA A = ({a, b}, {0}, δ A, {0}, {0}) mit δ A (a) = und δ A (b) = {(0, 0)} NFA B = ({a, b}, {1, 2, 3}, δ B, {1, 3}, {2}) mit δ B (a) = {(3, 2), (3, 3)} und δ B (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X, Q A, δ A, I A, F A ) und NFA B = (X, Q B, δ B, I B, F B ) mit Q A Q B = gesucht: NFA C mit L(C) = L(A) L(B) Konstruktion: 1. (A A F A = 1): ε-nfa A = (X, Q A {f A }, δ A, I A, {f A }) mit a X : δ A (a) = δ A(a) und δ A (ε) = δ A(ε) {(q, f A ) q F A } 2. (B B I B = 1): ε-nfa B = (X, Q B {s B }, δ B, {s B}, F B ) mit a X : δ B (a) = δ B(a) und δ B (ε) = δ B(ε) {(s B, q) q I B } 3. ( ): ε-nfa C = (X, Q A Q B {f A, s B }, δ C, I A, F B ) mit a X : δ C (a) = δ A (a) δ B (a) δ C (ε) = δ A (ε) δ B (ε) {(f A, s B )} Fakt Der oben definierte ε-nfa C akzeptiert die Sprache L(A) L(B). Die Menge REC(NFA) ist abgeschlossen unter Verkettung. 106

Was bisher geschah NFA A = (X, Q, δ, I, F ) Akzeptanz von Wörtern durch NFA, DFA, ε-nfa von NFA, DFA, ε-nfa akzeptierte Sprache L(A) NFA-akzeptierbare Sprachen REC(NFA) Für jede Sprache L X sind die folgenden Aussagen äquivalent: 1. L REC(NFA), d.h. es existiert ein NFA A mit L = L(A). 2. Es existiert ein vollständiger NFA B mit L = L(B). 3. Es existiert ein DFA C mit L = L(C). 4. Es existiert ein vollständiger DFA D mit L = L(D). REC(NFA) ist abgeschlossen unter: Mengenoperationen,,, \ Sprachoperationen R, 107

NFA für iterierte Verkettung Beispiel: NFA A = ({a, b}, {0, 1, 2, 3}, δ A, {0}, {3}) mit δ A (a) = {(0, 1), (2, 3)} und δ A (b) = {(1, 2)} allgemeines Verfahren: gegeben: NFA A = (X, Q, δ A, I, F ) gesucht: NFA B mit L(B) = L(A) Konstruktion: 1. (A A I A = 1 F A = 1): ε-nfa A = (X, Q A {s A, f A }, δ A, {s A}, {f A }) mit a X : δ A (a) = δ A(a) und δ A (ε) = {(s A, q) q I A } {(q, f A ) q F A } 2. ( ): ε-nfa B = (X, Q A {s A, f A }, δ B, {s A }, {f A }) mit a X : δ B (a) = δ A (a) und δ B (ε) = δ A (ε) {(s A, f A ), (f A, s A )} Fakt Der oben definierte ε-nfa B akzeptiert die Sprache L(A). REC(NFA) ist abgeschlossen unter iterierter Verkettung. 108