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

Ähnliche Dokumente
Endliche Automaten. Endliche Automaten 1 / 108

Reguläre Sprachen Endliche Automaten

Grammatiken. Einführung

Vorlesung Theoretische Informatik

Einführung in die Theoretische Informatik

Skript zur Vorlesung Theoretische Informatik 2. Prof. Dr. Georg Schnitger

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka

Sprachen/Grammatiken eine Wiederholung

Konfiguration einer TM als String schreiben: Bandinschrift zwischen den Blank-Zeichen Links von der Kopfposition Zustand einfügen.

Programmiersprachen und Übersetzer

Theoretische Informatik

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

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

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

Grundbegriffe der Informatik

Informatik I. Lutz Donnerhacke PGP:db c1c 6311 ef09 d819 e029 65be bfb6 c9cb

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

7. Formale Sprachen und Grammatiken

THEORETISCHE INFORMATIK

ARBEITSBLATT ZU FORMALEN SPRACHEN

Grundbegriffe der Informatik

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

Zusammenfassung Grundzüge der Informatik 4

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

Theoretische Informatik I

Was ist ein Compiler?

Formale Sprachen und Grammatiken

4 Greedy-Algorithmen (gierige Algorithmen)

Formale Sprachen, reguläre und kontextfreie Grammatiken

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

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

Grundbegriffe der Informatik

Mathematische Grundlagen der Informatik 2

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Einführung in die Informatik Grammars & Parsers

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Formelsammlung theoretische Informatik I

Grundbegriffe der Informatik

Syntax (= Satzgefüge), vgl. auch Grammatik

Theoretische Informatik

Formale Sprachen. Script, Kapitel 4. Grammatiken

Formale Sprachen und deren Grammatiken. Zusammenhang mit der Automatentheorie.

Grundlagen der Theoretischen Informatik

Übungen zu Modellierung verteilter Systeme

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Z 50. Z O Z Int Z Komma Z Real Ziffer Komma Ziffer

Theoretische Informatik

Übungsaufgaben und Lösungen. zur Vorlesung. Theoretische Grundlagen der Informatik

Informatik IC2. Balazs Simon

Theoretische Informatik I

Aufgabentypen die in der Klausur vorkommen

Automatentheorie Berechnungsmodell für logische Sprachen

Automaten, Formale Sprachen und Berechenbarkeit I. Skript zur Vorlesung im WS 2001/02 an der TU München

Aufgabe 2: HRU-Beispiel Fernuni

Automaten und Formale Sprachen. Skript zur Vorlesung WS 2009/2010. Vorlesender: Prof. Dr. M. Kunde. Fassung vom

Endlicher Automat (EA)

2.11 Kontextfreie Grammatiken und Parsebäume

Grundlagen der Theoretischen Informatik, SoSe 2008

Sprachbeschreibung und Erweiterung

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Grundlagen der Theoretischen Informatik - Sommersemester Übungsblatt 1: Lösungsvorschläge

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

Tutorium zur theoretischen Informatik Übungsblatt 4 ( )

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

b) Eine nd. k-band-turingmaschine M zur Erkennung einer m-stelligen Sprache L (Σ ) m ist ein 8-Tupel

4.2.4 Reguläre Grammatiken

WS 2009/10. Diskrete Strukturen

Informatik I WS 07/08 Tutorium 24

16. All Pairs Shortest Path (ASPS)

Informatikgrundlagen (WS 2015/2016)

Grammatiken und die Chomsky-Hierarchie

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Theorie der Informatik

Was bisher geschah: Formale Sprachen

Logik und diskrete Strukturen

Theorie der Informatik

Theoretische Informatik SS 04 Übung 1

4 Lexikalische Analyse und Parsing

Formale Grundlagen der Informatik 1 Kapitel 12 Zusammenfassung

Kapitel 2: Formale Sprachen Gliederung

Multimedia im Netz Wintersemester 2011/12

Patrick Simianer Visualisierung regulärer Ausdrücke

GTI. Hannes Diener. 6. Juni Juni. ENC B-0123, diener@math.uni-siegen.de

5.1 Drei wichtige Beweistechniken Erklärungen zu den Beweistechniken... 56

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Seminar über Software Model Checking Vortrag zum Thema Predicate Abstraction

2.4.3 Zustandsgraphen

Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8

Prof. Dr. Jürgen Dix Institut für Informatik, TU Clausthal Informatik III, WS 2006/07 2/561

2.4.3 Zustandsgraphen

TEIL III: FORMALE SPRACHEN

2 Einfache Rechnungen

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Theoretische Informatik 1

Aufgabe 3: Übersetzen Sie die folgenden natürlich-sprachlichen Aussagen in die Sprache der

Das Briefträgerproblem

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

Transkript:

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit Sommersemester 2012 Prof. Dr. Nicole Schweikardt AG Theorie komplexer Systeme Goethe-Universität Frankfurt am Main Herzlich willkommen! 1 / 17

Kapitel 1: Einführung Einführung 2 / 17

Worum geht s? Reguläre Sprachen: Das stärkste vollständig beherrschbare Rechnermodell: Automatische Verifikation und Minimierung sind effizient möglich. Verschiedene äquivalente Perspektiven: Reguläre Ausdrücke, reguläre Grammatiken, deterministische und nichtdeterministische endliche Automaten. Kontextfreie Sprachen. Grundlage des Compilerbaus: effiziente Compiler Die Chomsky-Hierarchie XML und reguläre Baumsprachen Berechenbarkeit. Was können Rechner heutiger und zukünftiger Technologien? Welche algorithmischen Probleme sind (durch Rechner) lösbar, welche Probleme lassen sich nicht lösen? Einführung Inhaltsangabe 3 / 17

Worauf wird aufgebaut? Diskrete Modellierung: Beweismethoden eine erste Behandlung von endlichen Automaten und kontextfreien Sprachen Datenstrukturen und GL-1 (Algorithmentheorie bzw. Theo. Inf. 1): Laufzeitanalyse: O, o, Ω, ω and Rekursionsgleichungen Traversierung von Graphen Dynamische Programmierung NP-Vollständigkeit Einführung Vorwissen 4 / 17

Literatur G. Schnitger, Skript zur Vorlesung Formale Sprachen und Berechenbarkeit aus dem Sommersemester 2011, Goethe-Universität Frankfurt. J.E. Hopcroft, J.D. Ullman, Introduction to automata theory, languages and computation, Addison-Wesley, 1979. I. Wegener, Kompendium Theoretische Informatik eine Ideensammlung, B.G. Teubner, 1996. I. Wegener, Theoretische Informatik: Eine algorithmenorientierte Einführung, B.G. Teubner 1999 (2. Auflage). U. Schöning, Theoretische Informatik - kurzgefasst, Springer 2001 (4. Auflage). M. Sipser, Introduction to the Theory of Computation, PWS Publishing, 1997. Einführung Literatur 5 / 17

Organisatorisches Die Webseite der Veranstaltung enthält alle wichtigen Informationen zur Veranstaltung wie Logbuch, Skript, Folien, Übungsblätter, Klausurtermine, usw. www.tks.informatik.uni-frankfurt.de/teaching/ss12/ th-inf-2 Übungsbetrieb: BITTE UNBEDINGT TEILNEHMEN! Wöchentliche Ausgabe der Aufgabenblätter nach der Vorlesung Abgabe der Lösungen: nach 1-wöchiger Bearbeitungszeit, vor Beginn der Vorlesung (frühere Abgabe auch im Büro von Joachim Bremer bzw. Frederik Harwath möglich) Durch Bearbeiten der Übungsaufgaben können BONUSPUNKTE gesammelt werden. Einführung Organisatorisches 6 / 17

Einige Grundbegriffe zum Thema Worte und Sprachen Worte und Sprachen 7 / 17

Alphabete, Worte und Sprachen 1 N := {0, 1, 2, 3...} ist die Menge aller natürlichen Zahlen. N >0 := {1, 2, 3,...} ist die Menge aller positiven natürlichen Zahlen. 2 Ein Alphabet Σ ist eine endliche, nicht-leere Menge von Buchstaben. 3 Σ n = {a 1 a n a 1,..., a n Σ} ist die Menge aller Worte der Länge n über Σ. 4 Σ 0 = {ε} besteht nur aus dem leeren Wort ε. 5 Σ = n N Σn ist die Menge aller Worte über dem Alphabet Σ. 6 Σ + = n N >0 Σ n ist die Menge aller nicht-leeren Worte über Σ. 7 Für w Σ ist w die Länge von w, also die Anzahl der Buchstaben von w. Eine Sprache L (über Σ) ist eine Teilmenge von Σ. Worte und Sprachen 8 / 17

Beispiele für Sprachen - Die Menge der im Duden aufgeführten Worte über dem Alphabet {a, A,..., z, Z,ä, Ä,..., ü,ü, ß, }. - Deutsch besteht aus allen syntaktisch korrekt aufgebauten und semantisch sinvollen Sätzen mit Worten aus dem Duden. - C++ ist die Menge aller syntaktisch richtig aufgebauten C++ Programme. Das Alphabet ist die Menge aller ASCII-Symbole. - Die Sprache der arithmetischen Ausdrücke mit den Variablen x und y besteht aus allen arithmetischen Ausdrücken über dem Alphabet {x, y, +,,, /, (, )}. - Weitere Beispielssprachen: Die Menge aller HTML-Dokumente, die Menge aller XML-Dokumente. Worte und Sprachen 9 / 17

Operationen auf Sprachen Sei Σ ein Alphabet, u = u 1 u n und v = v 1 v m seien Worte über Σ. 1 uv = u 1 u n v 1 v m ist die Konkatenation von u und v. 2 Für Sprachen L 1, L 2 über Σ ist L 1 L 2 = {uv u L 1, v L 2 } die Konkatenation von L 1 und L 2. Oft schreiben wir kurz L 1 L 2 oder L 1 L 2 statt L 1 L 2. 3 Für eine Sprache L über Σ ist L n = {u 1 u n u 1,..., u n L} L = n N L n (mit L 0 := {ɛ}) L ist die Kleene-Hülle (oder Kleene-Stern) von L. Worte und Sprachen Operationen auf Sprachen 10 / 17

Kompakte Beschreibung von Sprachen und Mengen 1 Die Menge aller Felder eines Schachbretts ist {A, B, C, D, E, F, G, H} {1, 2, 3, 4, 5, 6, 7, 8}. 2 Die Menge aller Karten eines Skatblatts ist {,,, } {7, 8, 9, 10, Bube,Dame,König,Ass}. 3 Die Menge der Binärdarstellungen der natürlichen Zahlen größer Null ist {1} {0, 1}. 4 4 i=1 {, }i ist die Menge der Kodierungen von Buchstaben im Morsealphabet. 5 Die Menge der Uhrzeiten eines Tages ist ({2} {0, 1, 2, 3} {ɛ, 1} {0, 1,..., 9}) {:} {0, 1,..., 5} {0, 1,..., 9}. 6 Und die amerikanische Entsprechung ist ({1} {0, 1, 2} {1,..., 9}) {:} {0, 1,..., 5} {0, 1,..., 9} {am, pm}. Worte und Sprachen Operationen auf Sprachen 11 / 17

Aus welchen Worten besteht die Sprache K = ({a} {b} {d} {c} ) Behauptung: K {a, b, c, d} K besteht nur aus Worten über dem Alphabet {a, b, c, d}. {a, b, c, d} besteht aus allen Worten über {a, b, c, d}. Behauptung stimmt. Behauptung: {a, b, c, d} K Der letzte in der Definition von K ist mächtig! Sei w = w1 w n ein beliebiges Wort in {a, b, c, d} : Jeder Buchstabe gehört zu ({a} {b} {d} {c} ). Also ist w = w 1 w n ({a} {b} {d} {c} ) n und deshalb ist w ({a} {b} {d} {c} ) = K. Worte und Sprachen Operationen auf Sprachen 12 / 17

Rekursive Definitionen von Sprachen L sei die rekursiv wie folgt definierte Sprache über dem Alphabet Σ = {0, 1}: Basisregel: ɛ L Rekursive Regel: wenn u L, dann 0u L und u1 L. Wie sieht L aus? (1) Behauptung: {0} {1} L. Sei w {0} {1}, also w = 0 n 1 m für n, m N. Es ist ɛ L und deshalb 0ɛ, 00ɛ,..., 0 n ɛ = 0 n L. Dann aber auch 0 n 1, 0 n 11,..., 0 n 1 m L und deshalb ist w L. (2) Behauptung: {0} {1} L. Dies sieht man leicht per Induktion nach dem Aufbau von L. Somit ist L = {0} {1}. Worte und Sprachen Rekursive Definitionen 13 / 17

Reguläre Ausdrücke Die Menge der regulären Ausdrücke über einem endlichen Alphabet Σ wird rekursiv wie folgt definiert: Basisregel: Die Ausdrücke, ɛ und a für a Σ sind regulär. Die Ausdrücke stellen die leere Sprache, die Sprache des leeren Wortes und die Sprache des einbuchstabigen Wortes a dar. Rekursive Regeln: Sind R und S reguläre Ausdrücke, dann auch (R S), (R S) und R. ist die Vereinigung (und wird manchmal auch mit + bezeichnet), die Konkatenation (und wird manchmal auch mit bezeichnet), und ist die Kleene-Hülle. Worte und Sprachen Rekursive Definitionen 14 / 17

Das Wortproblem Das Wortproblem für eine Sprache L: Für ein vorgegebenes Wort w, entscheide ob w L? Das Wortproblem für den Duden: Entscheide, ob ein vorgegebenes Wort im Duden ist. Einfach: Bitte nachschauen. Das Wortproblem für Deutsch: Entscheide, ob ein Satz syntaktisch richtig und sinnvoll ist. Sehr schwierig. Das Wortproblem für C++: Entscheide, ob ein C++ Programm syntaktisch korrekt ist. Compiler können das. Wie schwer ist das Wortproblem für stets stets haltende C++ Programme? Worte und Sprachen Das Wortproblem 15 / 17

Das Wortproblem für C++ Programme, die stets halten main(int n) int i; { i=n; while (NOT(prim(i) && prim(i+2)) ) i++; } Die Funktion prim(i) gebe den Wert wahr genau dann zurück, wenn i eine Primzahl ist. Das Programm hält genau dann für eine Eingabe n, wenn es Primzahl-Zwillinge i, i + 2 mit i n gibt. Das Programm hält genau dann immer, wenn es unendlich viele Primzahl-Zwillinge gibt. Leider ist die Frage, ob es unendlich viele Primzahl-Zwillinge gibt, bis heute offen! Das Wortproblem für stets haltende C++ Programme ist extrem schwierig. Worte und Sprachen Das Wortproblem 16 / 17

Das Wortproblem: Ein vorläufiges Fazit Die Komplexität des Wortproblems variiert stark - von trivialen Problemen wie dem Dudenproblem, - zu ernst zunehmenden Problemen wie dem Compiler-Problem für C++ Programme, - zu den sehr schwierigen NP-vollständigen Problemen, - bis hin zu nicht lösbaren Problemen wie dem Wortproblem für stets haltende C++ Programme. Wir betrachten später das Wortproblem für reguläre Sprachen (abhängig von der Repräsentation als determ. oder nichtdeterm. Automat oder als regulärer Ausdruck), kontextfreie Sprachen (wenn durch eine Grammatik repräsentiert) und auch für stets haltende C++ Programme. Worte und Sprachen Das Wortproblem 17 / 17

Kapitel 2: Endliche Automaten & reguläre Sprachen Endliche Automaten 1 / 96

Endliche Automaten Endliche Automaten erlauben eine Beschreibung von Handlungsabläufen: Wie ändert sich ein Systemzustand in Abhängigkeit von veränderten Umgebungsbedingungen? Vielfältiges Einsatzgebiet, nämlich: - in der Definition bzw. Repräsentation von Sprachen (sog. reguläre Sprachen) - in der Entwicklung digitaler Schaltungen - in der Softwaretechnik (zum Beispiel in der Modellierung des Applikationsverhaltens) - in der Compilierung: Lexikalische Analyse - im Algorithmenentwurf für String Probleme - in der Abstraktion tatsächlicher Automaten (wie Bank- und Getränkeautomaten) Endliche Automaten 2 / 96

Die Komponenten eines endlichen Automaten (DFA) - das Eingabealphabet Σ: Beschreibung der atomaren Umgebungseinflüsse, - die endliche Menge Q der Zustände, - der Anfangszustand q 0 Q, - die Menge F Q der akzeptierenden Zustände, - das Programm bzw. die Zustandsüberführungsfunktion δ, die eine partielle Funktion von Q Σ nach Q ist. Der Automat heißt vollständig, falls δ eine totale Funktion δ : Q Σ Q ist. Wie rechnet ein endlicher Automat A? 1 A beginnt im Zustand q 0 und 2 liest die Eingabe Buchstabe für Buchstabe und bewirkt Zustandsänderungen (oder stürzt ab). 3 Die Eingabe wird akzeptiert, wenn der Automat nicht abstürzt und der zuletzt erhaltene Zustand akzeptierend ist. Definition und Anwendungen 3 / 96

Endliche Automaten: Die Definition I Sei A = (Q, Σ, δ, q 0, F) ein endlicher Automat (DFA). Das Programm δ wird von Buchstaben auf Worte in Σ fortgesetzt: δ(q, w 1 w n) ist der Zustand, den A nach Lesen der Eingabe w 1 w n erreicht, wenn im Zustand q begonnen wird oder das Symbol, falls A beim Verarbeiten von w 1 w n abstürzt. Präzise: Sei Q := Q { }. Definiere ˆδ : Q Σ Q wie folgt: Für alle w Σ ist ˆδ(, w) :=. Für alle q Q ist ˆδ(q, ε) := q. Für alle q Q, w Σ, a Σ und für q := ˆδ(q, w) ist { falls q ˆδ(q, = wa) := δ(q, a) sonst. An Stelle von ˆδ schreiben wir im Folgenden auch kurz δ. Definition und Anwendungen 4 / 96

Endliche Automaten: Die Definition II Was ist die Sprache eines DFA A? A akzeptiert w Σ genau dann, wenn δ(q 0, w) F. L(A) = {w Σ A akzeptiert w } ist die von A akzeptierte (oder erkannte) Sprache. Eine Sprache L Σ heißt regulär, wenn es einen DFA A mit L = L(A) gibt. Definition und Anwendungen 5 / 96

Graphische Darstellung: Zustandsdiagramme Die Knoten des Diagramms entsprechen den Zuständen. Für jeden Befehl δ(q, a) = q wird eine mit a beschriftete Kante eingesetzt, die vom Knoten q zum Knoten q verläuft. Der Anfangszustand wird durch einen Pfeil hervorgehoben, akzeptierende Zustände werden doppelt umrandet. Die Sprache Parität = ist regulär. Warum? { } w {0, 1} w hat gerade viele Einsen gerade 1 ungerade 0 0 Definition und Anwendungen Zustandsdiagramm 6 / 96

Beispiel: Freischaltung eines Fernsehers Um die Kindersicherung des Fernsehers über die Fernbedienung freizuschalten, muss ein dreistelliger Code korrekt eingegeben werden. Dabei sind die folgenden Tasten relevant: - Die Tasten 0,..., 9, - die Taste CODE sowie - die Taste BACK. Die Taste CODE muss vor Eingabe des Codes gedrückt werden. Wird CODE während der Codeeingabe nochmals gedrückt, so wird die Eingabe neu begonnen. Wird BACK gedrückt, so wird die zuletzt eingegebene Zahl zurückgenommen. Der Code zum Entsperren ist 999. Definition und Anwendungen Zustandsdiagramm 7 / 96

Freischaltung eines Fernsehers: Der Automat CODE BACK CODE ready 9 BACK CODE 9 9 BACK 9 99 ON CODE 0,...,8 x BACK CODE CODE CODE 0,...,8 9x BACK 0,...,8 0,...,9 BACK xx 0,...,9 0,...,9 OFF 0,...,9 BACK Definition und Anwendungen Zustandsdiagramm 8 / 96

Lexikalische Analyse Zu Beginn liest der Compiler Anweisung nach Anweisung und bricht Anweisungen in Tokenklassen auf. Betrachte zum Beispiel die Anweisung if distance >= rate * (end - start) then distance = maxdistance; mit den Tokenklassen: - Keywords (für if und then), - Variablen (für distance, rate, end, start, maxdistance), - Operatoren (für *, -, =) und Vergleichsoperatoren (für >=), - Klammern (für ( und )) und Semikolon (für ;). Die lexikalische Analyse benutzt reguläre Grammatiken, bzw nichtdeterminische endliche Automaten. Definition und Anwendungen Beispiel: Lexikalische Analyse 9 / 96

Nichtdeterministische Automaten (NFAs) Nichtdeterminismus kann die Modellierung vereinfachen! Angenommen, wir befinden uns im Zustand q und lesen den Buchstaben a Σ. Ein deterministischer Automat legt den Nachfolgezustand δ(q, a) eindeutig fest. δ : Q Σ Q ist eine (partielle) Funktion. Ein nichtdeterministischer Automat hingegen hat möglicherweise viele Optionen. δ(q, a) ist eine Teilmenge von Q: Der Automat darf mit jedem beliebigen Zustand der Menge δ(q, a) weiterrechnen! Ein nichtdeterministischer Automat besitzt für jede Eingabe also unter Umständen viele Berechnungen, einige sind erfolgreich, andere nicht. Nichtdeterministische Automaten 10 / 96

Ein Beispiel für einen NFA Der nichtdeterministische Automat N akzeptiert die Sprache 0 1 1 0,1 2 0,1 L(N) = {0, 1} {1} {0, 1} aller Worte über dem Alphabet {0, 1}, deren vorletzter Buchstabe eine 1 ist. Nichtdeterministische Automaten 11 / 96

Die Komponenten eines NFAs die Zustandsmenge Q, das Eingabealphabet Σ, der Anfangszustand q 0 Q, die Menge F Q der akzeptierenden Zustände, das Programm δ, das wir als Funktion δ : Q Σ P(Q) auffassen, wobei P(Q) die Potenzmenge von Q bezeichnet. Nur die Form des Programms ist neu: Jedem Zustand und gelesenen Buchstaben ist eine Menge von Nachfolgezuständen zugeordnet. Nichtdeterministische Automaten 12 / 96

Wie rechnet ein nichtdeterministischer Automat N? - N hat möglicherweise viele Berechnungen auf einer Eingabe w, einige sind akzeptierend, andere nicht. - Die Philosophie: Ein NFA rät und das kann schon mal daneben gehen. Wir wollen erfolgreiche Berechnungen belohnen und wir übersetzen erfolgreich als akzeptierend Akzeptiere w, wenn mindestens eine Berechnung in einen akzeptierenden Zustand führt. Nichtdeterministische Automaten 13 / 96

Wie rechnet ein nichtdeterministischer Automat N? Sei N = (Q, Σ, δ, q 0, F) ein NFA. Das Programm δ wird von Buchstaben auf Worte in Σ fortgesetzt: δ(q, w 1 w n) ist die Menge der Zustände, in denen N nach Lesen der Eingabe w 1 w n sein kann, wenn im Zustand q begonnen wird. Präzise ist die Fortsetzung δ : Q Σ P(Q) von Buchstaben auf Worte rekursiv wie folgt definiert: δ(q, ɛ) = {q} und δ(q, wa) = δ(p, a). p δ(q,w) δ(q, wa) ist die Menge der von Zustand q aus erreichbaren Zustände, wenn wa die Eingabe ist. Definition N akzeptiert w genau dann, wenn δ(q 0, w) F. L(N) = {w Σ N akzeptiert w} ist die von N akzeptierte (oder erkannte) Sprache. Nichtdeterministische Automaten 14 / 96

Die Potenzmengenkonstruktion I Akzeptieren nichtdeterministische Automaten aber möglicherweise nicht-reguläre Sprachen? Nein! Für jeden nichtdeterministischen Automaten N bauen wir einen äquivalenten deterministischen Automaten D: - Sei N = (Q N, Σ, δ N, q 0, F N ). - Idee: Wir lassen D die Menge δ N (q 0, w) der von q 0 aus erreichbaren Zustände berechnen! - Und wie soll das gehen? Die Teilmengen von QN sind die Zustände von D. Wir müssen das deterministische Programm δd so definieren, dass der Zustand von D auf Eingabe w mit der Menge δ N (q 0, w) übereinstimmt. Nichtdeterministische Automaten Die Potenzmengenkonstruktion 15 / 96

Die Potenzmengenkonstruktion II Sei N ein NFA mit Komponenten Q N, Σ, δ N, q 0 und F N. Wir definieren einen äquivalenten deterministischen Automaten D mit: Q D = {t t Q N } = P(Q N ), Anfangszustand q 0 = {q 0 }, akzeptierende Zustände F D = {t Q D t enthält einen Zustand aus F N } { } δ D (t, a) = p Q N Es gibt q t mit p δ N (q, a) = δ N (q, a). q t Dann sind D und N äquivalent, das heißt es gilt L(D) = L(N). Beweis: Per Induktion nach n zeigen wir, dass für alle n N und alle w Σ n gilt: δ D (q 0, w) = δ N (q 0, w). siehe Tafel Nichtdeterministische Automaten Die Potenzmengenkonstruktion 16 / 96

Die Potenzmengenkonstruktion: Ein Beispiel Beginne die Potenzmengenkonstruktion stets mit dem Startzustand {q 0 } und betrachte im Folgenden nur die von {q 0 } aus erreichbaren Zustände. Der NFA N 0 1 1 0,1 2 0,1 akzeptiert die Sprache L(N) = {0, 1} {1} {0, 1}. Führe die Potenzmengenkonstruktion aus. Wie sieht der resultierende DFA aus? siehe Tafel Nichtdeterministische Automaten Die Potenzmengenkonstruktion 17 / 96

Mealy Automaten Endliche Automaten können nur akzeptieren oder verwerfen, Mealy Automaten können beliebige Ausgaben ausgeben. Mealy Automaten sind wie vollständige DFAs aufgebaut, besitzen aber zusätzlich - ein Ausgabealphabet Ω und - eine Ausgabefunktion λ : Q Σ Ω. - Ein Mealy Automat produziert für jeden Zustand und für jeden gelesenen Buchstaben eine Ausgabe. Was kann man mit Mealy Automaten anstellen? Nichtdeterministische Automaten Ein Beispiel: Mealy Automat 18 / 96

Beispiel: Ein Mealy Automat für die Addition Die Binärzahlen x = 0x n x 0 und y = 0y n y 0 sind zu addieren. Die Eingabe ist [x 0 y 0 ][x 1 y 1 ] [x ny n][00]. Das i-te Ausgabe-Bit ist nur abhängig von x i 1, y i 1 und dem im vorherigen Schritt evtl. erzeugten Übertrag. 0 00 01, 10 0 3 q 0 0 00 1 q 1 2 11 1 01, 10 11 1 Nichtdeterministische Automaten Ein Beispiel: Mealy Automat 19 / 96

Der Fahrplan - Wie minimiert man deterministische endliche Automaten (DFAs)? - Wie stellt man fest, ob eine Sprache regulär ist? - Wie vergleichen sich DFAs, NFAs, reguläre Ausdrücke und reguläre Grammatiken? - Welche endliche Automaten betreffende Fragen lassen sich effizient beantworten? Akzeptiert ein DFA kein Wort? Einfach! Sind zwei endliche DFAs äquivalent? Machbar! Akzeptiert ein NFA alle Worte? Schwer, aber machbar! Wir beginnen mit dem Problem der Minimierung von DFAs. Nichtdeterministische Automaten Der Fahrplan 20 / 96