Handout - Institut für Theoretische Informatik - Technische ...
Handout - Institut für Theoretische Informatik - Technische ...
Handout - Institut für Theoretische Informatik - Technische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Theoretische</strong> <strong>Informatik</strong> 1<br />
Jürgen Koslowski<br />
<strong>Institut</strong> für <strong>Theoretische</strong> <strong>Informatik</strong><br />
<strong>Technische</strong> Universität Braunschweig<br />
WS 2010/2011<br />
http://www.iti.cs.tu-bs.de/˜koslowj/Theo1<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 1 / 191
Outline<br />
Hintergrund und Motivation<br />
Übersicht: Hintergrund und Motivation I<br />
1 Hintergrund und Motivation<br />
Was ist <strong>Theoretische</strong> <strong>Informatik</strong><br />
Ziele der Vorlesungen “<strong>Theoretische</strong> <strong>Informatik</strong> 1+2”<br />
Vorgehensweise<br />
Hintergrund: Lösbarkeit<br />
Hintergrund: Komplexität (TheoInf 2)<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 2 / 191
Outline<br />
Endliche Automaten<br />
Übersicht: Endliche Automaten I<br />
2 Endliche Automaten<br />
Geschichtliches<br />
erste Beispiele<br />
Ziel der Modellierung<br />
Probleme=formale Sprachen<br />
Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Weitere Beispiele<br />
Erste Automatenkonstruktionen<br />
Determinismus vs. Nichtdeterminismus<br />
Das Pumping-Lemma für reguläre Sprachen<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
ε-Übergänge<br />
Residuierung<br />
Reguläre Ausdrücke<br />
Minimierung von DEAs<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 3 / 191
Outline<br />
Endliche Automaten<br />
Übersicht: Endliche Automaten II<br />
Regularitätsnachweise<br />
Universelle Automaten<br />
Kritik am Autmatenbegriff<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 4 / 191
Outline<br />
Kontextfreie Sprachen<br />
Übersicht: Kontextfreie Sprachen I<br />
3 Kontextfreie Sprachen<br />
Idee einer formalen Grammatik<br />
Kontextfreie Grammatiken und Sprachen<br />
Kontextfreie und reguläre Sprachen<br />
Ableitungsbäume<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Normalformen und Anwendungen<br />
Kellerautomaten<br />
Deterministisch kontextfreie Sprachen<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 5 / 191
Outline<br />
Mathematischer Hintergrund<br />
Übersicht: Mathematischer Hintergrund I<br />
4 mathematischer Hintergrund<br />
Mengen<br />
Relationen und Funktionen<br />
Äquivalenzrelationen<br />
Tupel als Funktionen<br />
Abzählbarkeit<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 6 / 191
Hintergrund und Motivation<br />
Was ist <strong>Theoretische</strong> <strong>Informatik</strong><br />
Hintergrund und Motivation<br />
Auf die Frage “Was ist <strong>Informatik</strong>” liefert z.B. Wikipedia entweder auf<br />
Deutsch oder auf Englisch die Erkenntnis, daß es sich um<br />
⊲ mehr handelt als nur das Wissen über Aufbau, Funktionsweise und<br />
Programmierung von Computern.<br />
Speziell widmet sich die theoretische <strong>Informatik</strong><br />
⊲ dem formalen mathematischen Unterbau für die Methoden der<br />
<strong>Informatik</strong><br />
⊲ grundlegenden Fragen der Informationsverarbeitung, unabhängig von<br />
konkreten Computern<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 7 / 191
Hintergrund und Motivation Ziele der Vorlesungen “<strong>Theoretische</strong> <strong>Informatik</strong> 1+2”<br />
Es sollen Werkzeuge und Methoden bereitgestellt werden zur<br />
Beantwortung folgender Fragen:<br />
(1) Welche (Klassen von) Probleme(n) kann ein Computer/Algorithmus<br />
überhaupt lösen<br />
Hintergrund<br />
(2) Wie effizient kann ein Computer/Algorithmus die Probleme<br />
bestimmter Klassen lösen<br />
Zu diesem Zweck werden wir in “<strong>Theoretische</strong>r <strong>Informatik</strong> 1”<br />
einfache Modelle von Computern betrachten<br />
die durch sie lösbaren Probleme klassifizieren<br />
Abschlußeigenschaften der entsprechenden Klassen untersuchen<br />
Hintergrund<br />
eine alternative Charakterisierung der Problemklassen kennenlernen<br />
(mittels Grammatiken)<br />
bestimmte (Rechen-)Methoden/Algorithmen erlernen<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 8 / 191
Hintergrund und Motivation<br />
Vorgehensweise<br />
Unsere Vorgehensweise wird mathematischer Natur sein:<br />
Betrachtung abstrakter Modelle von Computern/Algorithmen<br />
mathematisch präzise Argumentation<br />
in Hausaufgaben und Klausur: klares Formulieren und vollständiges<br />
Aufschreiben von Argumenten sind zu üben!<br />
Zum unverzichtbaren Handwerkszeug gehören:<br />
Definitionen<br />
Sätze<br />
Propositionen<br />
Lemmata<br />
Beweise<br />
Einführung und Namensgebung abstrakter Konzepte;<br />
Grundlegende Aussagen über die Struktur oder<br />
Verknüpfungen der Konzepte;<br />
Interesante Aussagen über die Konzepte;<br />
Hilfssätze eher technischer Natur;<br />
Ketten logischer Schlußfolgerungen, um ggf. mit Hilfe<br />
expliziter Konstruktionen die Gültigkeit von Sätzen/<br />
Propositionen/Lemmata nachzuweisen;<br />
(Detailliertheit gemäß der<br />
mathematischen Reife der Zielgruppe) endliche Automaten<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 9 / 191
Hintergrund und Motivation<br />
Hintergrund: Lösbarkeit<br />
Diese Frage wurde schon in den 1930’er Jahren von Alan Turing betrachtet<br />
(vergl. auch folgenden Lebenslauf ), bevor es überhaupt Computer gab.<br />
Insofern ist die theoretische <strong>Informatik</strong> die älteste <strong>Informatik</strong>-Disziplin,<br />
wenn auch jung im Vergleich zu anderen Wissenschaften.<br />
Beispiel (Primfaktorzerlegung)<br />
Gegeben eine positive natürliche Zahl: bestimmen Sie ihre Zerlegung in<br />
Primfaktoren. (leicht per Computer implementierbar; brute force oder geschicktere Vorgehensweise)<br />
Beispiel (Halteproblem)<br />
Gegeben ein Programmtext in Ihrer bevorzugten Programmiersprache und<br />
eine Eingabe: bestimmen Sie, ob eine Endlosschleife auftritt.<br />
(nicht per Computer lösbar)<br />
Return<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 10 / 191
Hintergrund und Motivation Hintergrund: Komplexität (TheoInf 2)<br />
In den 1960’er Jahren begann Stephen Cook, den Unterschied zwischen<br />
“leichten” und “schweren” per Computer lösbaren Problemen zu<br />
präzisieren:<br />
“leicht” in der Praxis existiert ein “effizienter” Lösungsalgorithmus<br />
“schwer” in der Praxis existiert kein solcher Lösungsalgorithmus<br />
“effizient” die Laufzeit ist polynomial in der Größe der Eingabe<br />
Beispiel (leicht)<br />
Das Sortieren einer Liste von Zahlen.<br />
Beispiel (schwer)<br />
Das Optimieren einer Rundreise durch gegebene Städte gemäß Reisekosten<br />
oder Entfernung oder Zeit; bekannt als “Problem des Handlungsreisenden”<br />
oder TSP (Travelling Salesman Problem).<br />
Return<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 11 / 191
Endliche Automaten<br />
Geschichtliches<br />
Endliche Automaten<br />
Die Geschichte des Studiums endlicher Automaten beginnt in den<br />
1940’er/1950’er Jahren. Ihre Bedeutung und ihr Anwendungsbereich<br />
haben seither ständig zugenommen, z.B.:<br />
Schaltungsentwurf<br />
lexikalische Analyse von Programmtexten im Compiler<br />
schnelle Textsuche<br />
automatische Verifikation von Hard- und Software<br />
Modellierungssprachen<br />
Als Modell konkreter oder abstrakter “Systeme” verfügen sie über ein<br />
endliches Gedächtnis (über die Systemvorgeschichte), in Form sogenannter<br />
Zustände. Zustandsänderungen erfolgen mittels markierter sog. Übergänge<br />
oder Transitionen, die mit gewissen Labeln versehen sind..<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 12 / 191
Endliche Automaten<br />
erste Beispiele<br />
Beispiel (Lichtschalter)<br />
start<br />
aus<br />
s<br />
s<br />
an<br />
Systemstart, Anfangszustand<br />
“guter” oder Endzustand<br />
”markierter” Übergang;<br />
Zustandsänderung bei Eingabe s<br />
Beispiel (Texterkennung des Worts “theo”)<br />
t h e o<br />
start t th the theo<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 13 / 191
Endliche Automaten<br />
erste Beispiele<br />
Beispiel (Getränkeautomat: instant Tee/Kaffee für 1€)<br />
z<br />
mögliche Aktionen<br />
1€ zahlen<br />
start<br />
e<br />
S<br />
e<br />
t<br />
k<br />
Tee-Taste drücken<br />
Kaffee-Taste drücken<br />
T<br />
z<br />
K<br />
e<br />
Becher entnehmen<br />
t<br />
1€<br />
k<br />
Münzschlitz nur offen im Startzustand;<br />
Tasten nur aktiv im Zustand 1€;<br />
Becher nur vorhanden in Zuständen T und K ;<br />
Achtung: wir ignorieren die Zeit, etwa beim Prüfen des 1€-Stücks,<br />
oder beim Befüllen der Becher.<br />
Kritik<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 14 / 191
Endliche Automaten<br />
erste Beispiele<br />
Was macht einen Automaten aus, informelle Idee:<br />
Gerichteter Graph mit endlich vielen Zustände; darunter ausgewählte<br />
Anfangs- und Endzustände;<br />
die Zustandsübergänge (Kanten) werden durch externe Eingaben<br />
gesteuert; diese liefern Label/Markierungen;<br />
die Ausgaben haben die Form ja/nein, je nachdem, ob ein Endzustand<br />
vorliegt oder nicht.<br />
die Label-Folgen entlang derjenigen Wege im Graphen, die einen<br />
Anfangs- mit einem Endzustand verbinden, sind “interessant”.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 15 / 191
Endliche Automaten<br />
Ziel der Modellierung<br />
Soll das Verhalten des Systems in jedem Zustand und bei jeder<br />
möglichen Eingabe eindeutig bestimmt sein, führt dies zum Begriff<br />
des vollständig deterministischen Automaten;<br />
in der realen Welt sind Systeme nicht-deterministisch, da nicht<br />
vollständig spezifizierbar (philosophisches Problem); wie funktioniert<br />
z.B. der Getränkeautomaten in folgenden Fällen<br />
− Kaffee/Tee verbraucht;<br />
− falsche Münze eingegeben;<br />
− Geldspeicher voll;<br />
− Tastenkontakt verrostet;<br />
− kosmische Strahlung stört den Schaltkreis zur Geldprüfung;<br />
− . . .<br />
Bevor wir die Frage “Was ist ein Automat” genauer erörtern, wollen wir<br />
uns zunächst den “Labeln” oder “Markierungen” der Kanten zuwenden,<br />
sowie endlichen Folgen solcher Label.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 16 / 191
Endliche Automaten<br />
Probleme=formale Sprachen<br />
Eine naiver (aber in allen Lehrbüchern unkritisch übernommener) Ansatz<br />
faßt die Markierungen (oder Label) entlang der Übergänge zu einer<br />
unstrukturierten Menge zusammen:<br />
Definition (Alphabet, Buchstabe, Wort, Präfix, formale Sprache)<br />
Eine nichtleere endliche Menge heißt Alphabet, ihre Elemente nennen<br />
wir Buchstaben.<br />
Für n ∈ N nennen wir eine Folge w = s 0 s 1 . . . s n−1 von Buchstaben<br />
s i ∈ X , i < n , ein Wort (über X ) der Länge |w| = n . Im Fall<br />
n = 0 erhalten wir das leere Wort ε . Die Menge aller Wörter über X<br />
bezeichnen wir mit X ∗ .<br />
formal<br />
⊑ bezeichnet die Präfix-Relation auf X ∗ :<br />
u ⊑ w gdw ∃v ∈ X ∗ . uv = w<br />
Unter einer (formalen) Sprache L über X verstehen wir eine<br />
beliebige Teilmenge von X ∗ .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 17 / 191
Endliche Automaten<br />
Probleme=formale Sprachen<br />
Wörter s 0 s 1 . . . s n−1 dienen als Abkürzungen für Tupel 〈s 0 , s 1 , . . . , s n−1 〉 ,<br />
ohne Anfangs-, End- und Trennsymbole. Damit Wörter über X eindeutig<br />
in Buchstaben aus X zerlegt werden können, vereinbaren wir, daß die<br />
Buchstaben in X nicht selber als Wörter unterschiedlicher Länge über<br />
einer anderen Menge Y dargestellt sind .<br />
Beispiel<br />
Wähle as X die Menge der Dezimalzahlen von 0 bis 99 . dann liefern die<br />
Tupel 〈1, 3, 1, 3〉 , 〈1, 3, 13〉 , 〈1, 31, 3〉 , 〈13, 1, 3〉 und 〈13, 13〉 alle<br />
dasselbe Wort 1313 .<br />
Bemerkung<br />
Will man mit Wörtern über X ∗ arbeiten, darf man die Elemente aus X ∗<br />
nicht als Wörter über X darstellen, sondern muß Tupel verwenden. Bei<br />
Wörtern über X n für festes n entfällt diese Einschränkung für die<br />
Elemente von X n .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 18 / 191
Endliche Automaten<br />
Probleme=formale Sprachen<br />
Proposition<br />
Für jede Menge X trägt die Menge X ∗ aller endlichen Wörter über X<br />
die algebraische Struktur eines Monoids mit<br />
assoziativer Multiplikation mittels Konkatenation<br />
〈s 0 s 1 . . . s n−1 , t 0 t 1 . . . t m−1 〉 ↦→ s 0 s 1 . . . s n−1 t 0 t 1 . . . t m−1<br />
neutralem Element ε , dem leeren Wort über X .<br />
Dieses Monoid ist genau dann kommutativ, wenn |X | ≤ 1 gilt.<br />
Proposition<br />
P(X ∗ ) trägt neben den Booleschen Operationen Vereinigung ∩ ,<br />
Durchschnitt ∪ , Komplement (−) c und der Inklusions-Ordnung ⊆ auch<br />
eine von X ∗ induzierte i.A. nicht kommutative Monoid-Struktur, bzgl. der<br />
die Singleton-Abbildung X ∗ {}<br />
P(X ∗ ) ein Homomorphismus ist (damit<br />
ist X ∗ isomorph zu einem Untermonoid).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 19 / 191
Endliche Automaten<br />
Probleme=formale Sprachen<br />
Definition<br />
Jede formale Sprache L ∈ X ∗<br />
E-Problem) wie folgt:<br />
definiert ein Entscheidungsproblem (kurz<br />
Für jede Eingabe w ∈ X ∗<br />
Beispiel (E-Probleme einiger formaler Sprachen)<br />
ist zu entscheiden, ob w ∈ L gilt.<br />
(0) {a, b} 2 = {aa, ab, ba, bb} : w ∈ {a, b} ∗ auf |w| = 2 testen.<br />
(1) { a n b n : n ∈ N } : w ∈ {a, b} ∗ testen, ob |w| gerade und jeder<br />
Buchstabe der vorderen (hinteren) Häfte ein a ( b ) ist.<br />
(2) {|} ∗ = { | n : n ∈ N } ∼ = N : trivialer Test.<br />
(3) { | p : p Primzahl } : n ∈ N auf Primalität testen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 20 / 191
Endliche Automaten<br />
Probleme=formale Sprachen<br />
Später werden wir die Begriffe “E-Problem” und “Sprache” im obigen<br />
Sinne synonym verwenden.<br />
In der Realität ist man eher an Berechnungsproblemen (kurz<br />
B-Problemen) interessiert, etwa der Primfaktorzerlegung von n ∈ N ,<br />
oder einer kosten-optimalen Reiseroute.<br />
Dennoch kann die Einschränkung auf E-Probleme sinnvoll sein, da<br />
“schwere” E-Probleme nur von “schweren” B-Problemen herrühren<br />
können.<br />
Um z.B. das B-Problem des Handlungsreisenden als Sprache<br />
betrachten zu können, erweitert man es zunächst mittels einer<br />
“Kostenschranke” K zu einem E-Problem das fragt: exitiert eine<br />
Rundreise, deren “Kosten” maximal K betragen<br />
Außerdem wird es nötig sein, Probleme mit Hilfe geeigneter<br />
Alphabete zu codieren.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 21 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Formale Definition endlicher Automaten<br />
Definition<br />
Ein nicht-deterministischer endlicher Automat (NEA) A = 〈Q, X , δ, I , F 〉<br />
besteht aus<br />
einer endlichen Menge Q sogenannter Zustände;<br />
einem Alphabet X ;<br />
Relationen δ(a) ⊆ Q × Q für jedes a ∈ X ;<br />
Teilmengen I , F ⊆ Q von Anfangs- bzw. Endzuständen.<br />
Der Automat A heißt<br />
deterministisch (DEA), falls alle Relationen δ(a) partielle Funktionen<br />
sind und es höchstens einen Anfangszustand q 0 gibt;<br />
vollständig deterministisch (vDEA), oder kurz vollständig, falls alle<br />
δ(a) Funktionen sind und es genau einen Anfangszustand q 0 gibt.<br />
Relation etc.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 22 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Einige Anmerkungen:<br />
Jeder vDEA ist ein DEA, und jeder solche ist ein NEA.<br />
Die graphische Darstellung mittels ausgezeichneter Zustände und<br />
markierter Übergänge haben wir bereits kennengelernt.<br />
Man kann eine Relation Q r Q als gerichteten Graphen mit<br />
Knotenmenge Q darstellen, dessen Kanten genau den geordneten<br />
Paaren aus r entsprechen. Bei gleichzeitiger Betrachtung mehrerer<br />
Relationen Q δ(a) Q, a ∈ X , unterscheiden wir die entsprechenden<br />
Pfeilmengen mittels Markierungen a ∈ X an den jeweiligen Pfeilen.<br />
Man spricht dann von einem markierten Transitionssystem (labeled<br />
transition system), oder kurz LTS.<br />
Die Familie von Relationen X δ P(Q × Q) kann equivalent auch als<br />
einzelne Relation Q × X δ′ Q, oder als Funktion Q × X δ′′ P(Q)<br />
dargestellt werden. Man findet alle Varianten in der Literatur.<br />
Teilmengen von Q entsprechen Relationen 1 Q.<br />
Für w = a 0 a 1 . . . a n−1 setzen wir δ(w) := δ(a 0 ); δ(a 1 ); · · · ; δ(a n−1 ) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 23 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Welche Bedeutung haben die Wege von Anfangs- zu Endzuständen<br />
Definition (Spracherkennung durch NEAs)<br />
A = 〈Q, X , δ, I , F 〉 erkennt das Wort w = s 0 s 1 . . . s n−1 ∈ X ∗ , falls<br />
1 I Q δ(s 0)<br />
Q δ(s 1)<br />
. . .<br />
δ(s n−1 )<br />
Q F op 1 = 1<br />
1<br />
1 (⋆)<br />
Die von A erkannte Sprache L(A) ⊆ X ∗<br />
erkannten Wörtern.<br />
besteht genau aus den von A<br />
(⋆) bedeutet, daß q ∈ I , p ∈ F und ein Weg der Länge n von q nach p<br />
mit Kantenlabeln s 0 , s 1 , . . . , s n−1 existiert.<br />
Für (manche) <strong>Informatik</strong>er scheint diese Definition zu abstrakt und wenig<br />
operational zu sein. Betrachten wir zunächst ein Beispiel, und formulieren<br />
dann denselben Sachverhalt etwas umständlicher:<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 24 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Beispiel<br />
Für einen Automaten A = 〈{q 0 , q 1 , q 2 }, {0, 1}, δ, {q 0 }, {q 2 }〉 können wir<br />
δ durch Auflisten der Relationen, tabellarisch oder mittels eines Graphen<br />
mit markierten Kanten angeben (Mehrfachlabel sind zulässig):<br />
δ(0) = {〈q 0 , q 0 〉, 〈q 1 , q 2 〉, 〈q 2 , q 0 〉}<br />
δ(1) = {〈q 0 , q 1 〉, 〈q 1 , q 1 〉, 〈q 2 , q 1 〉, 〈q 2 , q 0 〉}<br />
0<br />
start<br />
q 0<br />
0, 1<br />
1<br />
1<br />
q 2<br />
q 1<br />
0<br />
1<br />
Zustand 0 1<br />
q 0 q 0 q 1<br />
q 1 q 2 q 1<br />
q 2 q 0 q 0 , q 1<br />
Zustand 0 1<br />
q 0 q 0 q 1 I<br />
q 1 q 2 q 1<br />
q 2 q 0 q 0 , q 1 F<br />
I und F lassen sich leicht zusätzlich in der Tabelle markieren.<br />
Welche Sprache L(A) erkennt der Automat A <br />
Während z.B. 0110 erkannt wird, gilt das für 0101 nicht.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 25 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Definition (Konfiguration, Folgekonfigration, Berechnung)<br />
Die Elemente von Q × X ∗ heißen Konfigurationen des NEA A .<br />
Interpretation: aktueller Zustand und Rest der Eingabe.<br />
〈q, w〉 ⊢ 〈p, u〉 gdw. ∃a ∈ X . w = au ∧ 〈q, p〉 ∈ δ(a)<br />
spezifiziert eine Relation ⊢ (Folgekonfiguration) auf Q × X ∗ .<br />
Falls q ∈ I und 〈q, w〉 ⊢ ∗ 〈p, ε〉 , so existiert eine Berechnung von w .<br />
Diese ist akzeptierend, sofern p ∈ F gilt.<br />
⊢ ∗<br />
Ist A speziell ein DEA (vDEA), so besitzt jedes Wort w ∈ X ∗<br />
(genau) eine Berechnung.<br />
höchstens<br />
Satz<br />
Ist A = 〈Q, X , δ, I , F 〉 ein NEA, so besteht L(A) genau aus denjenigen<br />
Wörtern w ∈ X ∗ , die eine akzeptierende Berechnung in A besitzen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 26 / 191
Endliche Automaten Endliche Automaten über X und die von ihnen erkannten Sprachen<br />
Jeder Berechnungsschritt ⊢ “verbraucht” einen Buchstaben, also hat jede<br />
Berechnung von w die Länge |w| .<br />
Beispiel (Fortsetzung)<br />
0<br />
Vermutung<br />
start<br />
q 0<br />
0, 1<br />
L(A) besteht aus allen Binärwörtern<br />
mit dem Postfix 10 .<br />
1<br />
1<br />
q 2<br />
q 1<br />
0<br />
1<br />
Begründung<br />
q 2 ist nur von q 1 aus mit Eingabe<br />
0 erreichbar.<br />
q 1 ist nur mit der Eingabe 1<br />
erreichbar, und zwar von allen drei<br />
Zuständen aus.<br />
Jedes Binärwort führt vom<br />
Anfangszustand aus zu einem der<br />
drei Zustände, denn man kann<br />
nicht “steckenbleiben”.<br />
Kann man dieses Ergebnis auch erhalten, ohne nachzudenken<br />
Ja, mit Hilfe des Kleene’schen Algorithmus (in Kürze)!<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 27 / 191
Endliche Automaten<br />
Weitere Beispiele<br />
Beispiel<br />
Die Menge G ⊆ N aller geraden Zahlen wird akzeptiert von:<br />
start<br />
q 0<br />
|<br />
|<br />
q1<br />
start<br />
1<br />
q 0<br />
0<br />
q1<br />
bei Verwendung des<br />
Alphabets X = {|}<br />
(unäre Codierung)<br />
1<br />
0<br />
q 2 q 3<br />
1<br />
bei Verwendung des<br />
Alphabets X = {0, 1}<br />
(binäre Codierung)<br />
0<br />
Beispiel (Beweis später)<br />
Die Menge P ⊆ N aller Primzahlen wird von keinem endlichen Automaten<br />
akzeptiert, unabhängig von der Codierung.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 28 / 191
Endliche Automaten<br />
Weitere Beispiele<br />
Beispiel<br />
L = { w ∈ {0, 1} ∗ : |w| 0 , |w| 1 gerade } wird von folgendem Automaten<br />
erkannt:<br />
start<br />
q 0<br />
1<br />
1<br />
q1<br />
0 0 0 0<br />
1<br />
q 2 q 3<br />
1<br />
Beispiel<br />
Welche Sprache erkennt dieser Automat<br />
start<br />
q 0<br />
1<br />
1<br />
q1<br />
0 0 0 0<br />
1<br />
q 2 q 3<br />
1<br />
Offenbar L ′ = { w ∈ {0, 1} ∗ : |w| 0 gerade ∧ |w| 1 ungerade }<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 29 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Zustände, die von keinem Anfangszustand aus entlang eines Weges<br />
erreichbar sind, tragen nichts zur erkannten Sprache eines NEA bei.<br />
Definition<br />
Für einen NEA A = 〈Q, X , δ, I , F 〉 sei der erreichbare Automat<br />
A (r) := 〈Q (r) , X , δ (r) , I , F (r) 〉 gegeben durch<br />
besteht aus den Zuständen, die von einem Anfangszustand aus<br />
entlang von Wegen erreichbar sind;<br />
Q (r)<br />
δ (r) (a) ist die Einschränkung von δ(a) auf Q (r) , a ∈ X ;<br />
F (r) := Q (r) ∩ F .<br />
A heißt erreichbar, wenn A = A (r)<br />
Proposition<br />
gilt.<br />
Jeder NEA A erfüllt (A (r) ) (r) = A (r) sowie L(A) = L(A (r) ) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 30 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Wie berechnet man den Automaten A (r) <br />
Algorithmus<br />
Eingabe: ein NEA A = 〈Q, X , δ, I , F 〉 mit n Zuständen<br />
Ausgabe: der erreichbare NEA A (r) = 〈Q (r) , X , δ (r) , I , F (r) 〉<br />
⊲ Lege eine Tabelle an deren Zeilen mit Anfangs- und deren Spalten mit<br />
Nichtanfangs-Zuständen indiziert sind.<br />
⊲ Gesucht wird pro Spalte p ein Zeuge w ∈ X ∗ , der einen Weg vom<br />
Anfangszustand der Zeile nach p beschreibt.<br />
⊲ Initialisierung: ist Zelle 〈p, q〉 leer und gilt 〈q, p〉 ∈ δ(a) , so wird a<br />
in die Zelle geschrieben. Ob außerdem noch 〈q, p〉 ∈ δ(b) gilt, ist<br />
irrelevant.<br />
⊲ Rekursion: wir testen systematisch Zeugen der Länge < n um noch<br />
leere Positionen zu füllen.<br />
Zustände, in deren Spalten kein Zeuge auffindbar ist, werden aus Q<br />
entfernt und die entsprechenden Zeilen der δ -Tabelle gestrichen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 31 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Beispiel<br />
0<br />
1<br />
1<br />
1<br />
start q 0<br />
q 1 q 2 q 3 start<br />
1<br />
0<br />
1<br />
1 0<br />
1<br />
1<br />
1<br />
0<br />
0<br />
1<br />
start q 4<br />
q 5 q 6<br />
q 7 0, 1<br />
0<br />
1<br />
0<br />
1<br />
0 0<br />
0<br />
0<br />
1<br />
1<br />
0 q 8 q 9 q A q B 1<br />
1<br />
0<br />
0<br />
0<br />
Zustand q 1 q 2 q 5 q 6 q 7 q 8 q 9 q A q B<br />
q 0 1<br />
q 3 1 10<br />
q 4 0 0001 000 00<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 32 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Definition<br />
Automaten heißen äquivalent, wenn sie dieselbe Sprache erkennen.<br />
Definition<br />
Für einen NEA A = 〈Q, X , δ, I , F 〉 ist der Potenzmengenautomat (PMA)<br />
P(A) := 〈P(Q), X , ¯δ, {I }, ¯F 〉 gegeben durch:<br />
¯δ(a)<br />
U<br />
P(Q) P(Q), (1 Q) ↦→ (1 Q δ(a) Q),<br />
U; δ(a) ist das Bild von U unter der Relation δ(a)<br />
U ∈ ¯F gdw U; F op = 1 (gdw U ∩ F ≠ ∅ )<br />
für alle U ⊆ Q und a ∈ X .<br />
U<br />
Proposition<br />
Für jeden NEA A sind P(A) sowie P(A) (r)<br />
vDEAs.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 33 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Beispiel (Potenzmengenautomat)<br />
1<br />
0<br />
1<br />
start<br />
q 0<br />
0<br />
start<br />
q 1<br />
0<br />
0, 1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
1<br />
−<br />
0<br />
q 1<br />
q 0<br />
q 0 , q 1 start<br />
q 1 , q 2<br />
q 0 , q 1 , q 2<br />
q 0 , q 2<br />
1<br />
Einige Berechnungen:<br />
q 2<br />
01 : 〈q 0 , 01〉 ⊢ 〈q 1 , 1〉 ⊢ 〈q 2 , ε〉 akzeptiert<br />
〈q 0 , 01〉 ⊢ 〈q 2 , 1〉 ⊢ 〈q 2 , ε〉 akzeptiert<br />
〈q 1 , 01〉 ⊢ 〈q 1 , 1〉 ⊢ 〈q 2 , ε〉 akzeptiert<br />
010 : hat keine Berechnung<br />
10 : 〈q 0 , 10〉 ⊢ 〈q 0 , 0〉 ⊢ 〈q 1 , ε〉 akzeptiert nicht<br />
〈q 0 , 10〉 ⊢ 〈q 0 , 0〉 ⊢ 〈q 2 , ε〉 akzeptiert<br />
1<br />
0<br />
1<br />
1<br />
q 2<br />
0 1<br />
Die beiden von {q 0 , q 1 } aus nicht erreichbaren Zustände {q 0 }<br />
und {q 0 , q 1 , q 2 } können unbesorgt entfernt werden.<br />
Übrig bleibt der erreichbare Potenzmengenautomat; dort haben<br />
alle Wörter aus X ∗ genau eine Berechnung:<br />
〈{q 0 , q 1 }, 01〉 ⊢ 〈{q 1 , q 2 }, 1〉 ⊢ 〈{q 2 }, ε〉<br />
〈{q 0 , q 1 }, 010〉 ⊢ 〈{q 1 , q 2 }, 10〉 ⊢ 〈{q 2 }, 0〉 ⊢ 〈∅, ε〉<br />
〈{q 0 , q 1 }, 10〉 ⊢ 〈{q 0 , q 2 }, 0〉 ⊢ 〈{q 1 , q 2 }, ε〉<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 34 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Bei wachsender Zustandszahl kann die graphische Darstellung eines<br />
PMA’n schnell unübersichtlich werden; darüberhinaus gibt es keine<br />
Standardanordnung der Knoten, und für verschiedene Darstellungen ist es<br />
schwer zu überprüfen, ob sie denselben Automaten beschreiben. Das<br />
spricht für die tabellarische Variante:<br />
Beispiel (Fortsetzung)<br />
1<br />
start<br />
q 0<br />
0<br />
0<br />
q 2<br />
start<br />
1<br />
q 1<br />
Zustand 0 1<br />
q 0 q 1 , q 2 q 0 I<br />
q 1 q 1 q 2 I<br />
q 2 − q 2 F<br />
1<br />
0<br />
Zustand 0 1<br />
{q 0 , q 1 } {q 1 , q 2 } {q 0 , q 2 } I<br />
{q 1 , q 2 } {q 1 } {q 2 } F<br />
{q 0 , q 2 } {q 1 , q 2 } {q 0 , q 2 } F<br />
{q 1 } {q 1 } {q 2 }<br />
{q 2 } ∅ {q 2 } F<br />
∅ ∅ ∅<br />
{q 0 } {q 1 , q 2 } {q 0 }<br />
{q 0 , q 1 , q 2 } {q 1 , q 2 } {q 0 , q 2 } F<br />
Die Zeilen für die Singleton-Zustände ergeben sich direkt<br />
aus den Zeilen für den Ausgangsautomaten, die anderen<br />
entsprechend durch Vereinigung solcher Zeilen. Der Zustand<br />
∅ kann nicht verlassen werden.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 35 / 191
Endliche Automaten<br />
Erste Automatenkonstruktionen<br />
Algorithmus<br />
Eingabe: ein NEA A = 〈Q, X , δ, I , F 〉 in Tabellenform<br />
Ausgabe: Tabelle des erreichbaren PMA P(A) (r)<br />
⊲ Lege eine Tabelle für einen vDEA über X an.<br />
⊲ Die erste Zeile ist für den einzigen Anfangszustand I bestimmt.<br />
⊲ In Zeile R ⊆ Q ergibt sich der Eintrag ¯δ(a)(R) ⊆ Q für a ∈ X<br />
durch Zusammenfassen der entsprechenden Werte aller Zeilen q ∈ R<br />
aus der Tabelle für A .<br />
⊲ Falls ¯δ(a)(R) ⊆ Q noch nicht als Zeilenlabel vorkommt, wird eine<br />
neue Zeile mit diesem Label eingerichtet;<br />
⊲ R ist Endzustand von P(A) (r) , sofern mindestens ein Element von R<br />
Endzustand von A ist.<br />
Der Algorithmus terminiert nach höchstens |P(Q)| Zeilen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 36 / 191
Endliche Automaten<br />
Determinismus vs. Nichtdeterminismus<br />
Satz<br />
Jeder NEA ist zu seinem (erreichbaren) PMA äquivalent.<br />
Beweisidee.<br />
Eine P(A)-Berechnung 〈I , w〉 ⊢ 〈R 1 , a 1 . . . a n−1 〉 ⊢ · · · ⊢ 〈R n , ε〉 hat als<br />
Zustände genau die komponierten Relationen gemäß<br />
1<br />
I<br />
Q δ(a 0)<br />
Q δ(a 1)<br />
· · ·<br />
δ(a n−1 )<br />
Q<br />
R n schneidet F nichtleer gdw (1<br />
R n Q<br />
F op 1) = (1<br />
1<br />
1).<br />
Folgerung<br />
Zu jedem NEA existiert ein äquivalenter vDEA.<br />
Definition<br />
Sprachen, die von einem NEA (DEA, vDEA) erkannt werden konnen,<br />
heißen regulär, oder alternativ, vom Typ 3.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 37 / 191
Endliche Automaten<br />
Determinismus vs. Nichtdeterminismus<br />
Für die Implementation ist das potentiell exponentielle Wachstum der<br />
Zustandsanzahl von P(A) (r) gegenüber A ein Nachteil:<br />
Beispiel (für exponentielles Zustandswachstum)<br />
0, 1<br />
A n : 1 0, 1 0, 1 0, 1<br />
start q 0 q1 q 2 . . . q n<br />
(für n > 0 )<br />
erkennt offenbar die Sprache L n<br />
von rechts eine 1 steht, formal:<br />
aller Binärwörter, bei denen in Position n<br />
L n = L(A n ) = { w : ∃u, v ∈ {0, 1} ∗ . w = u1v ∧ |v| = n − 1 }<br />
Lemma<br />
Ein vDEA A mit L(A) = L(A n ) hat mindestens 2 n<br />
Zustände.<br />
Beweis.<br />
Betrachte die Berechnungs-Endpunkte aller Wörter w ∈ X n .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 38 / 191
Endliche Automaten<br />
Determinismus vs. Nichtdeterminismus<br />
DEAs lassen sich einfacher in äquivalente vDEAs umwandeln:<br />
Definition<br />
Für einen DEA A = 〈Q, X , δ, I , F 〉 erweitern wir die (potentiell) partiellen<br />
I<br />
Funktionen 1 Q und Q δ(a) Q zu totalen Funktionen indem wir Q<br />
um einen neuen Zustand ⊥ vergrößern. Das liefert einen vDEA<br />
A ⊥ := 〈Q + {⊥}, X , δ ⊥ , I ⊥ , F 〉 mit<br />
{<br />
{<br />
⊥ falls δ(a)(q) undef. I falls I ≠ ∅<br />
δ ⊥ (a)(q) =<br />
I ⊥ =<br />
δ(a)(q) sonst<br />
{⊥} sonst<br />
δ ⊥ (a) ist strikt in dem Sinne, daß δ ⊥ (a)(⊥) = ⊥ gilt.<br />
Im Falle eines vDEA A ist der neue Zustand ⊥ in A ⊥ isoliert,<br />
insbesondere also unerreichbar. Somit gilt (A ⊥ ) (r) = A (r) .<br />
Proposition<br />
Jeder DEA A ist zu A ⊥<br />
äquivalent.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 39 / 191
Endliche Automaten<br />
Determinismus vs. Nichtdeterminismus<br />
Beispiel<br />
Die Sprache aller Binärwörter mit Präfix 010 und Postfix 1 , formal<br />
L = { w ∈ {0, 1} ∗ : ∃u ∈ {0, 1} ∗ . w = 010u1 } , wird von folgendem<br />
weniger übersichtlichen übersichtlichen aber nicht vDEA vollständigen erkannt: DEA erkannt:<br />
0 start q 0 q1<br />
1<br />
q 2<br />
0<br />
q 3<br />
1<br />
q 4<br />
0<br />
1<br />
⊥<br />
0<br />
1<br />
0, 1<br />
0 1<br />
informelle Terminologie<br />
Ein Zustand q eines vDEA, der δ(a)(q) = q für alle a ∈ X erfüllt und<br />
kein Endzustand ist, wird gelegentlich Papierkorb-Zustand , oder schwarzes Loch ,<br />
oder Hotel California Zustand (HCZ) genannt.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 40 / 191
Endliche Automaten<br />
Das Pumping-Lemma für reguläre Sprachen<br />
Existieren nicht-reguläre Sprachen<br />
Bevor wir uns den Abschlußeigenschaften der Klasse der regulären<br />
Sprachen zuwenden, wollen wir untersuchen, ob überhaupt Sprachen<br />
existieren, die nicht regulär sind. Sollte dies nicht der Falls sein, könnten<br />
wir uns die Untersuchung der Abschlußeigenschaften sparen. Idee:<br />
Wir suchen eine Eigenschaft, die alle regulären Sprachen haben<br />
müssen.<br />
Jede Sprache, die diese Eigenschaft nicht hat, kann folglich nicht<br />
regulär sein. (In logischer Terminologie ist dies die Kontraposition<br />
der vorigen Aussage.)<br />
Dieser Ansatz dient dazu, Regularität zu widerlegen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 41 / 191
Endliche Automaten<br />
Das Pumping-Lemma für reguläre Sprachen<br />
Satz (Das Pumping-Lemma für reguläre Sprachen, PL(reg))<br />
Zu jeder regulären Sprache L ⊆ X ∗ existiert eine Zahl n L > 0 , so daß<br />
jedes Wort w ∈ L mit |w| ≥ n L eine Zerlegung w = xyz mit<br />
x, y, z ∈ X ∗ besitzt, die folgende Bedingungen erfüllt:<br />
(0) y ≠ ε ; (1) |xy| ≤ n L ; (2) ∀k ∈ N. w k := xy k z ∈ L .<br />
Beweis.<br />
Wähle einen vDEA A mit L(A) = L . Setze n L := |Q| . Für w ∈ L mit<br />
|w| ≥ n L sei p ∈ Q der erste Zustand, der mehrfach bei der Berechnung<br />
von w vorkommt, und x bzw. xy die Präfixe von w bis zum ersten<br />
bzw. zweiten Auftreten von p , und z das Postfix mit w = xyz .<br />
〈q 0 , w k 〉 ⊢ ∗ 〈p, y k z〉 ⊢ ∗ 〈p, z〉 ⊢ ∗ 〈q, ε〉<br />
ist dann für jedes k ∈ N akzeptierend, da w = w 1 ∈ L .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 42 / 191
Endliche Automaten<br />
Das Pumping-Lemma für reguläre Sprachen<br />
Beispiel<br />
Die Sprache L = { a i b i : i ∈ N } ⊆ {a, b} ∗<br />
ist nicht regulär:<br />
Für n > 0 betrachte w := a n b n = xyz mit y ≠ ε und |xy| ≤ n .Wegen<br />
|y| b = 0 folgt |xy 2 z| a > |xy 2 z| b und somit xy 2 z /∈ L . Da n generisch<br />
war, ist L nicht regulär.<br />
Beispiel<br />
Die Menge P ⊆ N ∼ = {|} ∗<br />
aller Primzahlen ist nicht regulär:<br />
Für n > 0 betrachte die nächstgrößere Primzahl p und das Wort<br />
w := | p = | a | b | c = | a+b+c mit b > 0 und a + b ≤ n .<br />
Für k ∈ N setze w k = | a | kb | c = | a+kb+c . Speziell für k = a + c ist der<br />
Exponent a + kb + c = (a + c)(1 + b) keine Primzahl, also gilt w k /∈ P .<br />
Da n generisch war, ist P nicht regulär.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 43 / 191
Endliche Automaten<br />
Das Pumping-Lemma für reguläre Sprachen<br />
Die Widerlegung der Regularität einer konkreten Sprache L ⊆ X ∗ mittels<br />
des PL folgt immer demselben<br />
Schema<br />
Man überprüft eine generische Zahl n > 0 auf Ihre Eignung als Konstante<br />
n L aus dem Pumping Lemma und verwirft sie:<br />
(0) wähle ein spezifisches Wort w ∈ L mit |w| ≥ n ;<br />
typischerweise wird w vom Wert n als Parameter abhängen;<br />
(1) betrachte eine generische Zerlegung w = xyz mit y ≠ ε und<br />
|xy| ≤ n ; dies sind ihre einzigen bekannten Eigenschaften;<br />
(2) optional: beschreibe das allgemeine Wort w k = xy k z , k ∈ N ;<br />
(3) finde einen spezifischen Wert k 0 ∈ N mit w k0 /∈ L .<br />
Da n generisch war, entfällt jedes n > 0 als Kandidat für n L , also kann<br />
L nicht regulär sein.<br />
Die wesentliche Arbeit besteht in der geschickten Wahl von w ∈ L (0)<br />
und in der Bestimmung von k 0 (3).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 44 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Satz<br />
Endliche Vereinigungen regulärer Sprachen sind regulär.<br />
Beweis.<br />
Als leere Vereinigung wird ∅ ⊆ X ∗ vom leeren Automaten erkannt<br />
(natürlich auch von vielen anderen Automaten).<br />
Sind L i ⊆ Xi ∗ regulär mit L(A i ) = L i für Automaten<br />
A i = 〈Q i , X i , δ i , I i , F i 〉 , i < 2 , definiere deren disjunkte Vereinigung<br />
A 0 + A 1 = 〈Q 0 + Q 1 , X 0 ∪ X 1 , δ 0 + δ 1 , I 0 + I 1 , F 0 + F 1 〉<br />
wobei (δ 0 + δ 1 )(a) := δ 0 (a) + δ 1 (a) . Je nachdem, ob die Berechnung in in<br />
I 0 oder in I 1 beginnt, werden Wörter in L 0 bzw. L 1 erkannt, woraus<br />
L(A 0 + A 1 ) = L 0 ∪ L 1 folgt.<br />
Achtung: A 0 + A 1<br />
ist i.A. nicht deterministisch!<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 45 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Satz<br />
Komplemente regulärer Sprachen sind regulär.<br />
Beweis.<br />
Ist L ⊆ X ∗ regulär, wähle einen vDEA A = 〈Q, X , δ, I , F 〉 mit L(A) = L .<br />
Da jedes Wort genau eine Berechnung hat, akzeptiert der Automat<br />
A ′ = 〈Q, X , δ, I , Q \ F 〉 das Komplement ¯L := X ∗ − L von L .<br />
Folgerung<br />
Endliche Durchschnitte regulärer Sprachen sind regulär.<br />
Beweis.<br />
Endliche Durchschnitte sind Komplemente endlicher Vereinigungen<br />
(Stichwort: de Morgan’sche Regeln.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 46 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Satz<br />
Jede endliche Sprache ist regulär.<br />
Beweis.<br />
Jede endliche Sprache ist endliche Vereinigung von Singleton- Sprachen,<br />
damit genügt es, diese als regulär nachzuweisen.<br />
Für w = s o s 1 . . . s n−1 ∈ X ∗ benötigen wir n + 1 Zustände, die wir mit<br />
den Präfixen von w codieren, und n Übergänge:<br />
s 0 s 1 s 2 s n−2 s n−1<br />
start ε<br />
s 0 s 0 s 1 . . . s 0 . . . s n−2 w<br />
Der einzige Weg vom Start- zum Endzustand erkennt w .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 47 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Definition<br />
Die Spiegeloperation X ∗<br />
sp<br />
X ∗ ist rekursiv definiert:<br />
sp(ε) := ε und sp(aw) := sp(w)a für a ∈ X und w ∈ X ∗<br />
Für L ⊆ X ∗ heißt sp[L] = { sp(w) : w ∈ L } Spiegelbild von L .<br />
Ein Palindrom über X ist ein Wort w ∈ X ∗<br />
mit<br />
w = sp(w)<br />
Offenbar ist die Spiegeloperation selbst-invers, sowohl für Wörter wie auch<br />
für Sprachen, d.h., für w ∈ X ∗ und L ⊆ X ∗ gilt<br />
sp(sp(w)) = w und sp[sp[L]] = L<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 48 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Satz<br />
Spiegelbilder regulärer Sprachen sind regulär.<br />
Beweis.<br />
Ist L ⊆ X ∗ regulär, wähle einen NEA A = 〈Q, X , δ, I , F 〉 mit L(A) = L .<br />
Der duale Automat A op = 〈Q, X , δ op , F , I 〉 entsteht durch Vertauschen<br />
der Anfangs- und Endzustandsmengen sowie durch Umkehrung der<br />
Übergänge<br />
δ op (a) := (δ(a)) op<br />
(Akzeptierende) A-Berechungen von w ∈ X ∗ entsprechen nun bijektiv<br />
(akzeptierenden) A op -Berechnungen von sp(w) .<br />
Achtung: Um A op als NEA auffassen zu können, bedarf es einer<br />
selbst-dualen Definition eines NEA; speziell müssen Mengen von<br />
Anfangszuständen anstelle einzelner Anfangszustände erlaubt sein!<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 49 / 191
Endliche Automaten<br />
Erste Abschlußeigenschaften regulärer Sprachen<br />
Was passiert, wenn man das Alphabet ändert<br />
Satz<br />
Homomorphe Urbilder regulärer Sprachen sind regulär. Genauer: für einen<br />
Monoid-Homomorphismus X ∗ h<br />
Y ∗ , d.h.,<br />
ist mit R ⊆ Y ∗<br />
Beweis.<br />
(0) h(ε) = ε ; (1) h(uv) = h(u)h(v) für u, v ∈ X ∗<br />
auch das Urbild h −1 [R] = { w ∈ X ∗ : h(w) ∈ R } regulär.<br />
Wähle einen vDEA A = 〈Q, Y , δ, {q 0 }, F 〉 mit L(A) = R und definiere<br />
X δ′ P(Q × Q) durch<br />
δ ′ (a) := δ(b 0 ); δ(b 1 ); · · · ; δ(b n−1 ) für h(a) = b 0 b 1 . . . b n−1 ∈ Y ∗<br />
Dann ist 〈Q, X , δ ′ , {q 0 }, F 〉 ein vDEA, der h −1 [R] akzeptiert.<br />
Der Beweis für homomorphe Bilder kann später leichter geführt werden.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 50 / 191
ε-Übergänge<br />
Endliche Automaten<br />
ε - Übergänge<br />
Weitere Fragen nach der Abgeschlossenheit der Klasse der regulären<br />
Sprachen betreffen die Monoid-Strukturen einerseits auf den Mengen der<br />
Sprachen, andererseits auf den Mengen der Wörter; genauer:<br />
Abgeschlossenheit unter Konkatenation von Sprachen<br />
L · M := { uv : u ∈ L ∧ v ∈ M } für L, M ⊆ X ∗<br />
Formen die regulären Sprachen über X ein Untermonoid von<br />
〈P(X ∗ ), ·, {ε}〉 <br />
Abgeschlossenheit unter homomorphen Bildern, d.h., wohin bilden<br />
Homomorphismen X ∗ h<br />
Y ∗ , d.h., Abbildungen, die mit der<br />
Monoid-Stuktur verträglich sind, reguläre Sprachen über X ab<br />
(Wie gerade gesehen, erhalten Urbilder Regularität.)<br />
Zumindest die erste Fragen läßt sich beantworten, wenn wir neben den<br />
Buchstaben aus X ein weiteres Kantenlabel zulassen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 51 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Die naive Lösung des Konkatenationsproblems ist klar: um L · M<br />
akzeptieren zu können, wählt man Automaten A bzw. B mit L(A) = L<br />
und L(B) = M . Dann verbindet man alle Endzustände in A mit allen<br />
Anfangszuständen in B .<br />
Problem: Welche Label sollen diese neuen Übergänge haben Bei<br />
Berechnungen dürfen hier keine Eingabesymbole verbraucht werden.<br />
Versuch der Lösung: Die Labelmenge um das leere Wort ergänzen, also<br />
X 0 + X 1 = {ε} + X =: X ε zulassen.<br />
Problem 0: Kann man diese neuen Label später wieder eliminieren<br />
Problem 1: Was ist nun der korrekte Determinismus-Begriff<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 52 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Definition<br />
Ein nicht-deterministischer endlicher Automat mit ε-Übergängen (εNEA)<br />
A = 〈Q, X ε , δ, I , F 〉 besteht aus<br />
einer endlichen Zustandsmenge Q ;<br />
einem Alphabet X ;<br />
Relationen δ(a) ⊆ Q × Q für jedes a ∈ X ε ;<br />
Teilmengen I , F ⊆ Q von Anfangs- bzw. Endzuständen.<br />
Der Automat A heißt deterministisch (εDEA), falls<br />
es höchstens einen Anfangszustand q 0 gibt;<br />
die Relationen δ(a) , a ∈ X ε , partielle Funktionen sind;<br />
D(δ(ε)) ∩ D(δ(a)) = ∅ für alle a ∈ X ;<br />
F ; δ(ε) ⊆ F .<br />
Übergänge mit Label ε heißen auch spontane Übergänge.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 53 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Einige Anmerkungen:<br />
Jeder NEA ist ein εNEA, mit δ(ε) = ∅ .<br />
Manche Authoren führen ein separates Label ≠ ε für spontane<br />
Übergänge ein; bisher sehe ich darin keinen Vorteil.<br />
Es gibt keine vollständigen εDEAs: fordert man Funktionen δ(a) für<br />
a ∈ X ε , so hat man in jedem Zustand die Option, den nächsten<br />
Buchstaben zu verarbeiten oder stattdessen einen ε-Übergang zu<br />
vollziehen. Genau dies verhindert aber die Bedingung<br />
D(δ(ε)) ∩ D(δ(a)) = ∅ für alle a ∈ X . Also schließen sich die<br />
Existenz spontaner Übergänge und die Existenz einer Funktion δ(a)<br />
im deterministischen Fall aus.<br />
Im deterministischen Fall soll die Forderung F ; δ(ε) ⊆ F Übergänge<br />
in Nicht-Endzustände verhindern, nachdem ein Wort bereits<br />
akzeptiert wurde. Damit können akzeptierende Berechnungen ihren<br />
Status nicht mehr ändern. ε-Übergänge von Nicht-Endzuständen in<br />
Endzustände sind nicht verboten.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 54 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Wie funktioniert die Spracherkennung bei εNEAs, wie sind die Begriffe der<br />
Konfiguration und der Berechnung anzupassen<br />
Es ist nicht auszuschließen, daß mehrere (= endlich viele) spontane<br />
Übergänge hintereinander stattfinden; der Effekt solcher Verknüpfungen ist<br />
von “einfachen” spontanen Übergängen nicht zu unterscheiden (denn<br />
unsere idealisierten Übergänge erfolgen instantan, d.h., ohne zeitliche<br />
Ausdehnung).<br />
Daher bietet es sich an, die Relation δ(ε) unter Komposition<br />
abzuschließen, d.h., ihre reflexive transitive Hülle zu betrachten:<br />
δ ∗ (ε) = ⋃ { δ n (ε) : n ∈ N }<br />
wobei δ n (ε) die n-fache Komposition der Relation Q δ(ε) Q mit sich<br />
bezeichnet. Anschauliche Interpretation: δ ∗ (ε) beschreibt die<br />
Erreichbarkeit mittels ε-Übergängen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 55 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Definition (Spracherkennung durch εNEAs)<br />
A = 〈Q, X ε , δ, I , F 〉 erkennt w = s 0 s 1 . . . s n−1 ∈ X ∗ , falls<br />
1<br />
I<br />
Q<br />
δ ∗ (ε)<br />
Q<br />
δ(s 0 )<br />
Q<br />
δ ∗ (ε)<br />
Q<br />
δ(s 1 )<br />
Q<br />
. . .<br />
Q<br />
δ(s n−1 )<br />
Q<br />
δ ∗ (ε)<br />
Q<br />
F op<br />
1<br />
mit der Relation 1<br />
1<br />
1 übereinstimmt.<br />
D. h.: es existiert ein Weg der Länge ≥ |w| von einem Anfangs- zu einem<br />
Endzustand, entlang dessen die Label s 0 , s 1 , . . . s n−1 in dieser<br />
Reihenfolge auftreten, und sonst höchstens noch ε .<br />
Die Begriffe der Konfiguration, der Berechnung und der Akzeptanz bleiben<br />
unverändert, einzig den Begriff der Folgekonfiguration müssen wir an die<br />
erweiterte Labelmenge anpassen:<br />
〈q, w〉 ⊢ 〈p, u〉 gdw. ∃a ∈ X ε . w = au ∧ 〈q, p〉 ∈ δ(a)<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 56 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Eine Berechnung von w ∈ X ∗ mittels eines NEA muß genau |w| Schritte<br />
haben, im Falle eines εNEA kann sie auch länger ausfallen.<br />
Zwar kommt δ ∗ (ε) nicht explizit in der Definition der Folgekonfiguration<br />
vor, aber dieser Aspekt steckt bereits im Begriff der Berechnung<br />
〈q, w〉 ⊢ ∗ 〈p, ε〉 (wie schon für NEAs).<br />
Dagegen zeigt der obige Begriff der Spracherkennung, wie ε-Übergänge<br />
eliminiert werden könnten: per Absorbtion durch die “normalen”<br />
Übergänge. Dafür gibt es mindestens drei Möglichkeiten:<br />
δ L (s 0 ) δ L (s 1 ) (F L ) op<br />
1<br />
Q<br />
I I L δ(s 0 )<br />
I B<br />
δ ∗ (ε)<br />
Q<br />
δ B (s 0 ) δ B (s 1 )<br />
Q<br />
δ ∗ (ε)<br />
Q<br />
δ(s 1 )<br />
Q<br />
. . .<br />
Q<br />
δ(s n−1 )<br />
Q<br />
δ ∗ (ε)<br />
δ B (s n−1 )<br />
F B<br />
Q<br />
F op<br />
(F R ) op<br />
1<br />
I R δ R (s 0 ) δ R (s n−1 )<br />
von links, rechts oder, wegen δ ∗ (ε); δ ∗ (ε) = δ ∗ (ε) , beidseitig.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 57 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Proposition ( ε-Elimination)<br />
Für jeden εNEA A = 〈Q, X ε , δ, I , F 〉 ist A @ = 〈Q, X , δ @ , I @ , F @ 〉 ,<br />
@ ∈ {L,R,B} , ein äquivalenter NEA mit<br />
δ L (a) := δ ∗ (ε); δ(a)<br />
δ R (a) := δ(a); δ ∗ (ε)<br />
δ B (a) := δ ∗ (ε); δ(a); δ ∗ (ε)<br />
(a ∈ X )<br />
I L := I<br />
I R := I ; δ ∗ (ε)<br />
I B := I ; δ ∗ (ε)<br />
F L := F ; δ ∗ (ε) op<br />
F R := F<br />
F B := F ; δ ∗ (ε) op<br />
Offenbar gilt ( A R) op = (A op ) L sowie A B = ( A L+ε)R = ( A R+ε)L .<br />
Proposition<br />
Für einen deterministischen εNEA A ist A L<br />
ein DEA.<br />
Beweis.<br />
D(δ(ε)) ∩ D(δ(a)) = ∅ garantiert, daß δ ∗ (ε); δ(a) eine partielle Funktion<br />
bleibt, und I L = I ist ohnehin ein Singleton.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 58 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Beispiel<br />
A :<br />
start<br />
q 0<br />
ε<br />
0<br />
q 2<br />
ε<br />
q1<br />
Zustand ε 0 1<br />
q 0 q 2 q 1 − I<br />
q 1 − − q 2 F<br />
q 2 q 1 − −<br />
Die ε - Erreichbarkeits-Relation δ ∗ (ε) bestimmt man<br />
rekursiv mit einer Binärmatrix, die mit δ(ε) sowie<br />
∆ Q initialisiert wird:<br />
q 0 q 1 q 2<br />
q 0 1 1 1<br />
q 1 1<br />
q 2 1 1<br />
Die Bearbeitung erfolgt zeilenweise: Für jede Eins in<br />
Position 〈i, j〉 , i ≠ j , wird Zeile i durch ihre<br />
komponentenweise Disjunktion ( ∨ ) mit Zeile j<br />
ersetzt, bis keine neuen Einsen auftreten.<br />
1<br />
Die Tabelle für A L enthält eine Hilfs-Spalte für die<br />
ε - Erreichbarkeit. Analog zur PMA-Konstruktion werden die<br />
Elemente der entsprechenden Menge in die Spalten für<br />
a ∈ X eingetragen.<br />
Zustand ε ∗ 0 1<br />
q 0 q 0 , q 1 , q 2 q 1 q 2 I , F<br />
q 1 q 1 − q 2 F<br />
q 2 q 1 , q 2 − q 2 F<br />
q i ist genau dann Endzustand in A L , wenn von q i aus ein<br />
Endzustand von A erreichber ist.<br />
A L :<br />
start<br />
Die Übergänge der Automaten A R und A B sind etwas<br />
umständlicher zu berechnen, da in beiden Fällen die<br />
ε - Nachfolger der Zielzustände aus A zu betrachten sind.<br />
Daß A L<br />
q 0<br />
1<br />
0<br />
q 2<br />
deterministisch ist, ist hier Zufall!<br />
1<br />
q1<br />
1<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 59 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Beispiel (Fortsetzung)<br />
start<br />
q 0<br />
0<br />
q1<br />
start<br />
q 0<br />
0<br />
q1<br />
A :<br />
ε<br />
q 2<br />
ε<br />
1<br />
A L :<br />
1<br />
q 2<br />
1<br />
1<br />
A R :<br />
start<br />
start q 0<br />
0<br />
q 1<br />
start q 2<br />
1<br />
1<br />
A B :<br />
start<br />
0, 1<br />
start q 0<br />
q 1<br />
start q 2 1<br />
1<br />
1 1<br />
1<br />
Man beachte, daß A R und A B nicht deterministisch sind, schon allein da<br />
sie mehr als einen Anfangszustand haben.<br />
Es gibt weitere zu A äquivalente NEAs mit den nicht-spontanen<br />
Übergängen aus A , die untersuchen wir aber nicht.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 60 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Algorithmus<br />
Eingabe: ein εNEA A = 〈Q, X ε , δ, I , F 〉 in Tabellenform<br />
Zwischenergebnis: Matrix der ε-Erreichbarkeits-Relation δ ∗ (ε)<br />
⊲ Initialisiere eine Q × Q -Matrix mit Einsen in der Diagonale und in<br />
den durch δ(ε) bestimmten Positionen.<br />
⊲ Zeilenweise iterativ bis Matrix stabil: für jede 1 in Position 〈q, p〉<br />
mit q ≠ p wird Zeile p mittels komponentenweiser logischer<br />
Disjunktion (“oder”) zu Zeile q hinzugefügt.<br />
⊲ Leere Positionen werden mit Nullen beschrieben.<br />
Ausgabe: ein äquivalenter NEA A L in Tabellenform δ ∗ (ε)<br />
⊲ Lege eine Tabelle für einen NEA über X an mit einer Hilfs-Spalte ε ∗<br />
für ε-Erreichbarkeit (nach der Zustands-Spalte).<br />
⊲<br />
Übertrage hier die ε-erreichbaren Zustände gemäß obiger Matrix.<br />
⊲ Restliche Spalten: Vereinigung analog zur PMA-Konstruktion bzgl.<br />
der Werte in Spalte ε ∗ (nur ohne Mengenklammern).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 61 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Satz<br />
Konkatenationen regulärer Sprachen sind regulär.<br />
Beweis.<br />
Die leere Konkatenation {ε} ist als endliche Sprache regulär.<br />
Sind L 0 , L 1 ⊆ X ∗ regulär mit L(A i ) = L i für NEAs<br />
A i = 〈Q i , X , δ i , I i , F i 〉 , i < 2 , definiere deren Konkatenation<br />
A 0 A 1 = 〈Q 0 + Q 1 , X ε , δ 0 δ 1 , I 0 , F 1 〉<br />
mit (δ 0 δ 1 )(ε) := F 0 × I 1 und (δ 0 δ 1 )(a) := δ 0 (a) + δ 1 (a) für a ∈ X .<br />
Akzeptieren 〈q i , u i 〉 ⊢ ∗ 〈p i , ε〉 in A i , i < 2 , so auch<br />
〈q 0 , u 0 u 1 〉 ⊢ ∗ 〈p 0 , u 1 〉 ⊢ 〈q 1 , u 1 〉 ⊢ ∗ 〈p 1 , ε〉 in A 0 A 1 . Umgekehrt braucht<br />
jede akzeptierende Berechnung 〈q 0 , w〉 ⊢ ∗ 〈p 1 , ε〉 in A 0 A 1 genau einen<br />
Übergang 〈p 0 , q 1 〉 ∈ δ(ε) . Dieser zerlegt w als w = u 0 u 1 mit<br />
akzeptierenden A i -Berechnungen 〈q i , u i 〉 ⊢ ∗ 〈p i , ε〉 . Also gilt<br />
L 0 L 1 = L(A 0 A 1 ) = L((A 0 A 1 ) L ) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 62 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Was passiert, wenn wir die Endzustände eines Automaten A mittels<br />
ε-Übergängen nicht mit den Anfangszuständen eines anderen Automaten,<br />
sondern mit denen von A selbst verbinden Diese Konstruktion verdient<br />
einen eigenen Namen:<br />
Definition (Feedback-Automat)<br />
Der Feedback-Automat A + = 〈Q, X ε , δ + , I , F 〉 für einen εNEA<br />
A = 〈Q, X ε , δ, I , F 〉 ist spezifiziert durch<br />
Satz<br />
δ + (a) = δ(a) und δ + (ε) := δ(ε) ∪ (F × I )<br />
L(A) = L impliziert L(A + ) = L + := ⋃ { L n : n > 0 } .<br />
Achtung: L n bezeichnet hier die n-fache Konkatenation von L mit sich,<br />
nicht das n-fache cartesische Produkt!<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 63 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Das Konstrukt L + erlaubt keine 0-fache Iteration.<br />
Definition (Iteration oder Kleene-Stern)<br />
Der Kleene-Stern P(X ∗ ( )<br />
)<br />
⋆ P(X ∗ ) bildet L ⊆ X ∗ ab auf<br />
L ⋆ := {ε} ∪ L + = ⋃ { L n : n ∈ N } ⊆ X ∗<br />
Bemerkung<br />
Die Ähnlichkeit der Notationen ( ) ⋆ und ( ) ∗<br />
ist ärgerlich!<br />
Aber die Operatoren beziehen sich auf verschiedene binäre Operationen:<br />
Konkatenation für ( ) ⋆ bzw. cartesisches Produkt für ( ) ∗ . Man beachte:<br />
für Sprachen L ⊆ X ⊆ X ∗ gilt L ⋆ = L ∗ .<br />
Ist X echte Teilmenge von L ⊆ L ⋆ ⊆ X ∗ , so ist X ∗ auch echte<br />
Teilmenge von L ∗ .<br />
Von nun an wird ( ) ⋆ für uns wichtiger sein!<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 64 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Satz<br />
Für eine reguläre Sprache L ∈ X ∗ sind L + und L ⋆ regulär.<br />
Beweis.<br />
Falls L = L(A) wird L + vom Feedback-Automaten A + akzeptiert. L ⋆ ist<br />
Vereinigung regulärer Sprachen.<br />
Rechenregeln<br />
∅ ⋆ = {ε} und ∅ + = ∅ ;<br />
L ⊆ L + ⊆ L ⋆ (Extensivität);<br />
(L ⋆ ) ⋆ = L ⋆ und (L + ) + = L + (Idempotenz);<br />
L ⊆ M impliziert L + ⊆ M +<br />
ε ∈ L genau dann wenn L + = L ⋆ ;<br />
L ⋆ = (L + ) ⋆ = (L ⋆ ) + .<br />
und L ⋆ ⊆ M ⋆ (Isotonie);<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 65 / 191
Endliche Automaten<br />
ε - Übergänge<br />
Um die noch offene Frage nach dem Verhalten regulärer Sprachen unter<br />
homomorphen Bildern zu beantworden, könnte man das Automatenmodell<br />
weiter verallgemeinern, indem man alle endlichen Wörter als Label zuläßt.<br />
Dann ließe sich für einen Homomorphismus X ∗ Y ∗ und einen<br />
Automaten A = 〈Q, X , δ, I , F 〉 ein entsprechend verallgemeinerter<br />
Automat h(A) = 〈Q, X ∗ , h(δ), I , F 〉 über Y mit demselben<br />
unterliegenden Graphen konstruieren, bei dem nur die Label a ∈ X durch<br />
die Label h(a) ∈ Y ∗ ersetzt werden.<br />
Anschließend wäre zu untersuchen, wie sich Übergänge mit Labeln der<br />
Länge > 1 durch Übergänge mit Labeln der Länge 1 ersetzen lassen, was<br />
nicht schwer ist.<br />
In dieser Vorlesung wollen wir dies aber vermeiden und unser offenes<br />
Problem stattdessen im Rahmen des übernächsten Abschnitts über<br />
“reguläre Ausdrücke” lösen.<br />
Zuvor wollen wir aber die Grenzen des Pumping Lemmas PL(reg) ausloten.<br />
h<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 66 / 191
Endliche Automaten<br />
Residuierung<br />
Zwei weitere Operationen sind eng mit der Konkatenation verwandt:<br />
Definition<br />
Für Sprachen L, M ⊆ X ∗<br />
heißen die folgenden “Brüche”<br />
M/L := { u ∈ X ∗ : {u}L ⊆ M } , L\M := { v ∈ X ∗ : L{v} ⊆ M }<br />
Links- bzw. Rechts-Residuierung von M bzgl. L .<br />
Proposition<br />
Jede Sprache M ⊆ X ∗ erfüllt M/{ε} = M = {ε}\M .<br />
Beispiel (mit X = {a, b} )<br />
{ a n b n : n ∈ N }/{b 2 } = { a k+2 b k : k ∈ N }<br />
{ a n b n : n ∈ N }/{b} ∗ = ∅<br />
{a 2 , a 3 }\{ w : |w| a > |w| b } = { w : |w| a − 1 > |w| b }<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 67 / 191
Endliche Automaten<br />
Residuierung<br />
Satz<br />
Residuierung mit beliebigen Sprachen bewahrt Regularität.<br />
Beweis (für Links-Residuierung)<br />
Ist M ⊆ X ∗ regulär, wähle einen vDEA A = 〈Q, X , δ, {q 0 }, F 〉 mit<br />
L(A) = M . Definiere eine neue Endzustandsmenge wie folgt:<br />
F L := { q ∈ Q : ∀v ∈ L. δ(v)(q) ∈ F }<br />
Nach Konstruktion erkennt A L := 〈Q, X , δ, {q 0 }, F L 〉 genau die Wörter<br />
u ∈ X ∗ mit {u}L ⊆ M . D.h. L(A L ) = M/L ist regulär.<br />
Achtung: die Bestimmung der Menge F L<br />
ihres Komplements<br />
kann aufwändiger sein als die<br />
Q − F L = { q ∈ Q : ∃v ∈ L δ(v)(q) /∈ F }<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 68 / 191
Endliche Automaten<br />
Residuierung<br />
Es gibt nicht-reguläre Sprachen, die die Bedingungen des Pumping<br />
Lemmas für reguläre Sprachen erfüllen:<br />
Beispiel<br />
M = {a, b} ∗ ∪ {c} + { a n b n : n ∈ N} erfüllt die Bedingungen des Pumping<br />
Lemmas mit n M = 1 :<br />
w ∈ M mit |w| ≥ 1 zerlegen wir als w = yz mit |y| = 1 . Damit gilt<br />
y ≠ ε und |xy| ≤ 1 , aber auch w k = y k z ∈ M für jedes k ∈ N , wobei<br />
einzig der Fall y = c und k = 0 interessant ist.<br />
Andererseits ist { a n b n : n ∈ N} bekanntlich nicht regulär. Wegen<br />
{ a n b n : n ∈ N} = ({c} ∗ { a n b n : n ∈ N}) ∩ {a, b} ∗<br />
kann also auch M nicht regulär sein.<br />
= ({c}\M) ∩ {a, b} ∗<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 69 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Reguläre Ausdrücke<br />
Ziel Wir wollen alle regulären Sprachen über X aus möglichst einfachen<br />
Sprachen und nach möglichst einfachen Regeln aufbauen.<br />
Zur Verfügung stehen neben den Buchstaben aus X<br />
die nulläre Vereinigung ( ∅ ),<br />
die binäre Vereinigung ( ∪ ),<br />
das unäre Komplement ( ( ) c ),<br />
der nulläre Durchschnitt ( X ⋆ ),<br />
der binäre Durchschnitt ( ∩ ),<br />
die nulläre Konkatenation ( {ε} ),<br />
die binäre Konkatenation ( · ),<br />
die binären Residuierungen ( / und \ ),<br />
die unäre Iteration bzw. der Kleen-Stern ( ( ) ⋆ ).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 70 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Wir wählen einen indirekten syntaktischen Ansatz, der uns endliche<br />
“Baupläne” für alle regulären Sprachen liefern wird.<br />
Das Alphabet X wird um endlich viele “formale Operations-<br />
Symbole” einer vorgegebenen “Stelligkeit” (arity) erweitert;<br />
wir betrachten Bäume, deren innere bzw. äußere Knoten mit<br />
Operations-Symbolen der entsprechenden Stelligkeit bzw. 0-stelligen<br />
Konstanten markiert sind; diese Bäume sind aus elementaren Bäumen<br />
geringer Tiefe zusammengesetzt;<br />
es gibt mehrere Möglichkeiten, die Bäume zu “linearisieren”; das führt<br />
zu sog. “regulären Ausdrücken”;<br />
wir definieren eine Semantik-Abbildung, die Bäumen bzw. regulären<br />
Ausdrücken reguläre Sprachen zuordnet; reguläre Ausdrücke mit<br />
derselben Semantik heißen “äquivalent;<br />
aus einem Automaten A wird sich ein regulärer Ausdruck R(A) mit<br />
Semantik L(A) extrahieren lassen (Kleene-Algorithmus).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 71 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Außer den Konstanten aus X , die zu 0-stelligen Konstanten werden,<br />
abstrahieren wir 5 der 10 zur Verfügung stehenden Operationen:<br />
· + ⋆ ∅ ε a , a ∈ X<br />
sollen die Operationen Konkatenation, Vereinigung und Kleene-Stern<br />
symbolisieren, sowie die Konstanten ∅ , {ε} und {a} , a ∈ X<br />
symbolsieren. Als alternative Bezeichnungen sind auch ⊔ statt + , 0<br />
statt ∅ , und 1 statt ε verbreitet.<br />
Die aus diesen Elementarbausteinen konstruierbaren regulären Bäume sind<br />
zwar sehr übersichtlich, in ihrer 2-dimensionalen Struktur aber nur schlecht<br />
maschinenlesbar, und ein typographischer Alptraum (damals gab es noch<br />
kein TikZ/PGF ).<br />
Also werden wir die Bäume linearisieren, d.h. auf bestimmte Wörter über<br />
einem Alphabet abbilden, das X + {·, +, ⋆, ∅, ε} enthält. Das kann auf<br />
mindestens drei verschiedene Weisen geschehen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 72 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Die binären Operationssymbole · und ⊔ : können als Infix-, Präfix- oder<br />
Postfix-Opertoren gehandhabt werden:<br />
Beispiel (Linearisierungen eines regulären Baums)<br />
a<br />
·<br />
+ c<br />
⋆<br />
b<br />
Infix-Schreibweise (erfordert Klammern):<br />
((a + (b) ⋆ ) · c) oder kürzer (a + b ⋆ ) · c<br />
Präfix-Schreibweise:<br />
· + a ⋆ bc<br />
Postfix-Schreibweise, oder RPN:<br />
ab ⋆ +c ·<br />
Definition<br />
Infix-linearisierte reguläre Bäume heißen reguläre Ausdrücke.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 73 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Die Infix-Schreibweise erscheint uns nur deshalb natürlich, weil wir sie<br />
von klein auf gewohnt sind. Sie erfordert weiteren syntaktischen<br />
Ballast in Form von Klammern, und zu dessen Eindämmung<br />
Vereinbarungen über Operatoren-Präzedenz:<br />
⋆ bindet stärker als · bindet stärker als + .<br />
Die Klammern sowie die Operator-Präzedenzen entfallen bei den<br />
anderen Varianten.<br />
Bei der Präfix-Schreibweise müssen wir uns für jedes gelesene<br />
Operatorsymbol (dessen Stellichkeit ist bekannt) die nötigen<br />
Argumente durch vorausschauendes Lesen beschaffen; dabei kann die<br />
Auswertung weiterer Teilausdrücke erfoderlich sein. Die Anzahl<br />
teilausgewerteter Ausdrücke ist unbeschränkt.<br />
Die Postfix-Schreibweise eliminiert die Nachteile der Präfix-<br />
Schreibweise mittels eines Stacks; speziell kann jeder Operator zum<br />
Zeitpunkt seines Auftretens verarbeitet werden, seine Argumente<br />
stehen bereits auf dem Stack. RPN may the FORTH be with you<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 74 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Definition<br />
Wir definieren die Semantik-Abbildung X -RegEx X -Reg per<br />
struktureller Induktion über den Aufbau regulärer Ausdrücke:<br />
regulärer Ausdruck r erzeugte Sprache L(r)<br />
a<br />
{a}<br />
∅<br />
∅<br />
ε<br />
{ε}<br />
r 0 + r 1 L(r 0 ) ∪ L(r 1 )<br />
r 0 · r 1 L(r 0 )L(r 1 )<br />
r ⋆<br />
(L(r)) ⋆<br />
(r)<br />
L(r)<br />
Reguläre Ausdrücke mit gleicher Semantik heißen äquivalent ( ≈ ).<br />
Aus Schlampigkeit wird häufig “ = ” anstelle von “ ≈ ” verwendet.<br />
L<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 75 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Satz (Kleene’scher Satz, 1. Hälfte)<br />
Die Semantik jedes regulären Ausdrucks ist regulär.<br />
Interessanter ist die umgekehrte Richtung: ist jede reguläre Sprache die<br />
Semantik eines regulären Ausdrucks<br />
Beispiel<br />
Reguläre Ausdrücke mit vorgegebener Semantik über X = {a, b} :<br />
{ w : w beginnt und endet mit ab } : ab + ab(a + b) ⋆ ab<br />
{ w : w beginnt oder endet mit ab } : ab(a + b) ⋆ + (a + b) ⋆ ab<br />
{ w : |w| a ≥ 2 } : (a + b) ⋆ a(a + b) ⋆ a(a + b) ⋆<br />
{ w : |w| a mod 2 = |w| b mod 5 = 0 } : <br />
Ziel ist es nun, jedem Automaten A einen regulären Ausdruck r mit<br />
L(r) = L(A) zuzuordnen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 76 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Definition<br />
Für einen X -Automaten A mit fortlaufend durchnummerierter<br />
Zustandsmenge Q = { q i : i < n } definieren wir ausgehend von<br />
L ij := { w ∈ X ⋆ : 〈q i , w〉 ⊢ ⋆ 〈q j , ε〉 }<br />
für i, j < n<br />
die Hilfs-Sprachen L k ij ⊆ L ij für k ≤ n , indem wir nur Wörter mit<br />
mindestens einer Konfigurationsfolge 〈q i , w〉 ⊢ ⋆ 〈q j , ε〉 zulassen, deren<br />
Zwischenzustände q r der Bedingung r < k a genügen ( q i und q j sind<br />
von dieser Einschränkung ausgenommen).<br />
a Starten die Zustandsnummern mit 1 , ist hier r ≤ k zu verlangen!<br />
Im Falle |Q| = n gilt für k ≥ n offenbar L k ij = L ij .<br />
Natürlich ändern sich diese Hilfs-Sprachen, wenn man die Zustände anders<br />
nummeriert. Werden Zustände mit Index < n − 1 entfernt, ist zwingend<br />
umzunummerieren.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 77 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Proposition<br />
Für A = 〈{ q i : i < n }, X ⋆ , δ, I , F 〉 genügen die Hilfs-Sprachen L k ij<br />
i, j, k < n der Rekursion<br />
= L k ij ∪ L k (<br />
ik L<br />
k<br />
)⋆<br />
kk L<br />
k a<br />
kj<br />
L k+1<br />
ij<br />
für<br />
a Zustandsnummerierung ab 1 liefert hier eine andere Rekursionsformel!<br />
Beweis.<br />
“ ⊇ ” Rechts können Zwischenzustände mit Index > k vermieden werden.<br />
“ ⊆ ” Jedes w ∈ L k+1<br />
ij<br />
\ L k ij<br />
eine (keine) Konfigurationsfolge, deren<br />
Zwischenzustände q r der Bedingung r ≤ k ( r < k ) genügen. Das erstbzw.<br />
letztmalige Auftreten von q k in dieser Folge liefert eine Zerlegung<br />
w = xyz mit x ∈ L k ik , y ∈ ( L k kk)⋆ und z ∈ L<br />
k<br />
kj<br />
.<br />
Rechenregeln (anwendbar, falls i = k oder j = k )<br />
L ∪ MM ⋆ L = M ⋆ L und L ∪ LM ⋆ M = LM ⋆ .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 78 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Satz (Kleene’scher Satz, 2. Hälfte)<br />
Jede reguläre Sprache ist Semantik eines regulären Ausdrucks.<br />
Beweis.<br />
Für jeden εNEA A = 〈{ q i : i < n}, X ε , δ, I , F 〉 gilt<br />
L(A) = ⋃ { L n ij : q i ∈ I ∧ q j ∈ F }<br />
Die Rekursionsformel reduziert die Identifikation der Sprachen L k ij<br />
mit<br />
k ≤ n als Semantiken regulärer Ausdrücke auf den Fall k = 0 . Aber<br />
L 0 ij = { a ∈ X ε : 〈q i , q j 〉 ∈ δ(a) }<br />
ist Semantik eines regulären Ausdrucks, der endliche Summe von<br />
Symbolen aus X und evtl. ε ist.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 79 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Beispiel<br />
0<br />
start<br />
q 0<br />
1<br />
0<br />
1 0<br />
q 2<br />
q 1<br />
1<br />
Ausgehend von L(A) = L 3 02 bestimmen wir<br />
rückwärts die Sprachen L k ij , und dann<br />
vorwärts möglichst einfache erzeugende<br />
regulären Ausdrücke:<br />
ij \ k 0 1 2 3<br />
00 ε + 0<br />
01 1<br />
02 ∅<br />
10 ∅<br />
0 `L0 0L ⋆0 01 00´⋆L<br />
1 ∪ L0 0<br />
00`L0 01 00´⋆L 01<br />
0 `L0 ∅L 0 02 00´⋆L ∪ L0 0<br />
00`L0 02 00´⋆L 02 L 1 02 ∪ 1<br />
0 ⋆ 11 ⋆ 001`L1 11´⋆L 12<br />
∪ L2 2<br />
0L ⋆2 0211 `L2 ⋆ 22´⋆<br />
0`01 02`L2 ⋆ 22´⋆L<br />
0 + 10 ⋆ 22 11 ⋆ 0´⋆<br />
11 ε + 1 ε L 0 11 + ∪ 1 L0 0<br />
10`L0 00´⋆L 01<br />
12 0 0L 0 12 ∪ L0 10`L0 00´⋆L 0<br />
02<br />
20 1<br />
21 0 0 L 0 + 10 ⋆ 21 ∪ L0 0<br />
20`L0 1 00´⋆L 01<br />
22 ε εL 0 22 ∪ L0 0<br />
20`L0 00´⋆L 02 L 1 22 ∪ L1 1<br />
ε + 01 ⋆ 21`L1 0 + 11´⋆L<br />
10 ⋆ ⋆ 12 0<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 80 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Algorithmus<br />
Eingabe: ein ∗NEA A = 〈Q, X ∗ , δ, I , F 〉 mit n Zuständen,<br />
durchnummeriert von 0 bis n − 1<br />
Ausgabe: ein regulärer Ausdruck r mit L(r) = L(A)<br />
⊲ Lege eine ij\k -Tabelle an mit i, j < n und k ≤ n .<br />
⊲ Identifiziere L(A) als Vereinigung geeigneter Sprachen L n ij .<br />
⊲ Finde mit der Rekursionsformel L k+1<br />
ij<br />
= L k ij ∪ Lk ik(<br />
L<br />
k<br />
kk<br />
)⋆ L<br />
k<br />
kj<br />
alle für<br />
L(A) benötigten Hilfs-Sprachen und Tabellenfelder.<br />
⊲ Inspektion von A liefert reguläre Ausdrücke rij 0 mit L(rij 0)<br />
= L0 ij<br />
die erste Spalte der Tabelle.<br />
⊲ Schreibe gemäß der Rekursionsformel für aufsteigendes k reguläre<br />
Ausdrücke in die relevanten Tabellenfelder, wobei elementare<br />
Vereinfachungen (s.u.) gleich vorzunehmen sind.<br />
für<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 81 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Folgerung<br />
Die regulären Sprachen über X bilden den Abschluß der Singleton-<br />
Sprachen {a} , a ∈ X , unter den Operationen endliche Vereinigung,<br />
endliche Konkatenation und Kleene-Stern.<br />
Kleene Algebra<br />
Rechenregeln für die Äquivalenz regulärer Ausdrücke<br />
r + s ≈ s + r , r + ∅ ≈ r , r + r ≈ r (elementar)<br />
r · ε ≈ r , r · ∅ ≈ ∅ (elementar)<br />
r · (s + t) ≈ r · s + r · t<br />
(elementar)<br />
∅ ⋆ ≈ ε , (r ⋆ ) ⋆ ≈ r ⋆ (elementar)<br />
(r + s) ⋆ ≈ r ⋆ · (s · r ⋆ ) ⋆ ≈ (r ⋆ · s ⋆ ) ⋆<br />
(r · s) ⋆ r ≈ r(s · r) ⋆<br />
L(r ⋆ ) ⊆ L(s ⋆ ) impliziert r ⋆ · s ⋆ ≈ s ⋆<br />
L(r) ⊆ L(s ⋆ ) impliziert (r + s) ⋆ ≈ s ⋆<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 82 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Beispiel (für den Nachweis einer Rechenregel)<br />
L ( (r · s) ⋆ · r ) = ( L(r)L(s) ) ⋆ L(r)<br />
= ⋃ { (<br />
L(r)L(s)<br />
) n : n ∈ N<br />
}<br />
L(r)<br />
= ⋃ { (<br />
L(r)L(s)<br />
) nL(r) : n ∈ N<br />
}<br />
= ⋃ {<br />
L(r)<br />
(<br />
L(s)L(r)<br />
) n : n ∈ N<br />
}<br />
= L<br />
(<br />
r · (s · r)<br />
⋆ )<br />
Beispiel (für den Nachweis einer weiteren Rechenregel)<br />
Wegen ε ∈ L(r ⋆ ) gilt immer L(r ⋆ s ⋆ ) = L(r ⋆ )L(s ⋆ ) ⊇ L(s ⋆ ) .<br />
Somit impliziert L(r ⋆ ) ⊆ L(s ⋆ ) die Äquivalenz r ⋆ · s ⋆ ≈ s ⋆ , denn<br />
L(r ⋆ s ⋆ ) = L(r ⋆ )L(s ⋆ ) ⊆ L(s ⋆ )L(s ⋆ ) = (L(s)) ⋆ (L(s)) ⋆<br />
= ⋃ {<br />
(L(s)) n : n ∈ N } ⋃{<br />
(L(s)) k : k ∈ N }<br />
= ⋃ {<br />
(L(s)) m : m ∈ N } = L(s ⋆ ) ⊆ L(r ⋆ s ⋆ )<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 83 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Anmerkungen:<br />
Das Konkatenationssymbol “ · ” wird oft weggelassen.<br />
Wegen ∅ ⋆ ≈ ε ist der Baustein ε redundant; zur Abkürzung kann<br />
man auch r + für rr ⋆ ≈ r ⋆ r , oder r für r + ε , oder<br />
Symbolbereiche wie (a − z) einführen.<br />
Reguläre Ausdrücke können genauso unübersichtlich sein wie<br />
Automaten, aber sie sind besser maschinell zu bearbeiten.<br />
Für reguläre Sprachen, die mittels Durchschnitt, Komplement,<br />
Residuierung oder Shuffle konstruiert wurden, sind eher komplizierte<br />
reguläre Ausdrücke zu erwarten.<br />
Umnummerierung von Q liefert i.A. einen anderen regulären<br />
Ausdruck für L(A) . Insbesondere gibt es außer in elementaten Fällen<br />
keine Normalformen für reguläre Ausdrücke, d.h., keine “besten”,<br />
“kürzesten” oder “einfachsten” Ausdrücke für eine gegebene<br />
Semantik.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 84 / 191
Endliche Automaten<br />
Reguläre Ausdrücke<br />
Satz<br />
Reguläre Sprachen sind unter homomorphen Bildern abgeschlossen.<br />
Genauer: für einen Monoid-Homomorphismus X ∗ h<br />
Y ∗ , d.h.,<br />
(0) h(ε) = ε ; (1) h(uv) = h(u)h(v) für u, v ∈ X ∗<br />
ist mit R ⊆ X ∗ auch das Bild h[R] = { h(w) : w ∈ R } ⊆ Y ∗ regulär.<br />
Beweis.<br />
˜h ersetzt a ∈ X in r ∈ X -RegEx<br />
durch h(a) , also ˜h(r) ∈ Y -RegEx .<br />
h[ ]<br />
P(X ∗ ) P(Y ∗ ) erhält immer<br />
Vereinigungen und Singletons (speziell ∅<br />
und {ε} ), für einen Homomorphismus h<br />
zusätzlich Konkatenation und Iteration<br />
von Sprachen. Also folgt für die Semantik<br />
X -RegEx<br />
˜h<br />
Y -RegEx<br />
L X<br />
L Y<br />
X -Reg Y -Reg<br />
inc<br />
inc<br />
P(X ∗ ) P(Y ∗ )<br />
h[ ]<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 85 / 191
Endliche Automaten<br />
Minimale vDEAs<br />
Minimierung von DEAs<br />
Unsere Haupt-Konstruktionen von vDEAs (erreichbarer PMA) vermeidet<br />
unerreichbare Zustände, aber können wir auch sicher sein, daß in vDEAs<br />
die Zustandszahl minimal ist (Effizienz der Implementierung)<br />
Nein, denn wir können die Zahl der erreichbaren Zustände vergrößern,<br />
ohne die akzeptierte Sprache zu verändern:<br />
Beispiel<br />
1<br />
start q 0 q1<br />
1<br />
0<br />
0 0 0 0<br />
0<br />
1<br />
q 2 q 3 q 4<br />
1<br />
1<br />
Umgekehrt gilt es festzustellen, ob in einem vDEA evtl. Zustände<br />
zusammengefaßt werden können, wie q 3 und q 4 im obigen Beispiel.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 86 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Das Mittel der Wahl zur Identifikation gewisser Elemente einer Menge ist<br />
die Äquivalenzrelation .<br />
Gesucht ist die größte ÄR ∼ auf Q , bei der die Zusammenfassung<br />
äquivalenter Zustände die erkannte Sprache nicht verändert.<br />
Abkürzung für NEAs<br />
Zur Erinnerung: für w = a 0 a 1 . . . a n−1 setzen wir<br />
(<br />
)<br />
δ(w) := δ(a 0 ); δ(a 1 ) . . . δ(a n−1 ) = δ(a n−1 )◦. . . δ(a 1 )◦δ(a 0 ) für DEAs<br />
Insbesondere dürfen von q 0 aus erreichbare Zustände p und q nur dann<br />
äquivalent sein, falls für jedes w ∈ X ∗ gilt<br />
δ(w)(p) ∈ F gdw. δ(w)(q) ∈ F<br />
Denn: aus p = δ(u)(q 0 ) ( q = δ(v)(q 0 ) ) und δ(uw)(q 0 ) = δ(w)(p) /∈ F<br />
( δ(vw)(q 0 ) = δ(w)(q) ∈ F ) folgt uw /∈ L(A) ( vw ∈ L(A) ). Faßt man<br />
p und q zusammen, wird aber auch uw akzeptiert, Widerspruch.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 87 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Folgende Abbildung induziert einen Kandidaten ∼ für die gesuchte ÄR:<br />
Q L P(X ∗ ) , q ↦→ { w ∈ X ∗ : δ(w)(q) ∈ F }<br />
Definition<br />
Zustände p, q ∈ Q heißen bisimilar ( p ∼ q ), falls L(p) = L(q) .<br />
Beispiel (Fortsetzung)<br />
1<br />
start q 0 q1<br />
1<br />
0<br />
0 0 0<br />
0<br />
1<br />
q 2 q 3 q 4<br />
1<br />
1<br />
L(q 0 ) = { w ∈ {0, 1} ∗ : |w| 0 mod 2 = |w| 1 mod 2 = 0 }<br />
L(q 1 ) = { w ∈ {0, 1} + : |w| 0 mod 2 = |w| 1 mod 2 − 1 = 0 }<br />
L(q 2 ) = { w ∈ {0, 1} + : |w| 0 mod 2 − 1 = |w| 1 mod 2 = 0 }<br />
L(q 3 ) = { w ∈ {0, 1} + : |w| 0 mod 2 = |w| 1 mod 2 = 1 }<br />
L(q 4 ) = { w ∈ {0, 1} + : |w| 0 mod 2 = |w| 1 mod 2 = 1 }<br />
Einzig q 3 und q 4 sind verschieden und bisimilar.<br />
Liefert Bisimilarität auch sonst die gewünschte Verkleinerung<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 88 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Satz<br />
Jeder vDEA A = 〈Q, X , δ, {q 0 }, F 〉 ist äquivalent zum Faktorautomaten<br />
A/∼ = 〈Q/∼ , X , δ ∼ , {[q 0 ] ∼ }, F /∼ 〉 mit<br />
δ ∼ (a)[q] ∼ := [δ(a)(q)] ∼<br />
Ist A erreichbar, sind alle zu A äquivalenten vDEAs mit minimaler<br />
Zustandszahl zu A/∼ isomorph.<br />
Beweis der Wohldefiniertheit von δ ∼ (a) , a ∈ X , und von F /∼<br />
Zu klären ist, ob aus p ∼ q auch δ(a)(p) ∼ δ(a)(q) folgt, also die<br />
Definition von δ ∼ (a)[q] ∼ von der Wahl des Repräsentanten der<br />
Äquivalenklasse unabhängig ist. Aber L(p) = L(q) impliziert für a ∈ X<br />
L(δ(a)(p)) = {a}\L(p) = {a}\L(q) = L(δ(a)(q))<br />
Wegen q ∈ F gdw ε ∈ L(q) ist zudem ∼ auf F beschränkbar.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 89 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Beweis von L(A) = L(A/∼ )<br />
Mit obiger Abkürzung, und da es sich um vDEAs handelt, gilt<br />
L(A) = { w ∈ X ∗ : δ(w)(q 0 ) ∈ F }<br />
L(A/∼ ) = { w ∈ X ∗ : δ ∼ (w)[q 0 ] ∼ ∈ F /∼ }<br />
Gemäß Definition von δ ∼<br />
sind die Bedingungen aber äquivalent:<br />
δ ∼ (w)[q 0 ] ∼ = [δ(w)(q 0 )] ∼ ∈ F /∼ gdw δ(w)(q 0 ) ∈ F<br />
Sofern A erreichbar ist, gilt dies auch für A/∼ . Folglich existiert dann zu<br />
jedem Zustand [q] ∼ von A/∼ ein Wort w [q] ∈ X ∗ mit<br />
δ ∼ (w [q] )[q 0 ] ∼ = [q] ∼<br />
w [q]∼ heißt Zeuge für die Erreichbarkeit von [q] ∼ .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 90 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Beweis der Minimalität bei erreichbarem A<br />
Der vDEA B = 〈R, X , σ, {r 0 }, G〉 sei äquivalent zu A . Sind A- Zustände<br />
p, q ∈ Q nicht bisimilar, existiert o.B.d.A. u ∈ X ∗ mit u ∈ L(p) − L(q) ,<br />
und folglich w [p] u ∈ L(A) = L(B) . Wegen w [q] u /∈ L(A) = L(B) können<br />
die B -Zustände σ(w [p] )(r 0 ) und σ(w [q] )(r 0 ) nicht übereinstimmen, d.h.,<br />
|Q/∼ | ≤ |R| . Falls |Q/∼ | = |R| , dienen die Wörter w [q] auch in B für<br />
alle Zustände als Erreichbarkeitszeugen, folglich gilt B ∼ = A/∼ .<br />
Definition<br />
Für jeden vDEA A heist A min<br />
:= A (r) /∼<br />
Minimalautomat.<br />
Proposition<br />
Für jeden vDEA A stimmt A (r) /∼ mit (A/∼ ) (r) überein.<br />
Allerdings geht die Berechnung von A (r) /∼<br />
schneller.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 91 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Alle Sprachen L(q) , q ∈ Q , zwecks Minimierung von A zu berechnen<br />
erweist sich als ineffizient.<br />
Einfacher ist die Bestimmung nicht äquivalenter Zustandspaare, das liefert<br />
die Nullen in der Binärmatrix für ∼ . Wir verfahren ähnlich wie bei der<br />
ε-Erreichbarkeits-Relation für εNEAs.<br />
Algorithmus<br />
Eingabe: ein (erreichbarer) vDEA A = 〈Q, X , δ, I , F 〉 .<br />
Ausgabe: Binärmatrix für die ÄR ∼<br />
⊲ Aufgrund der Symmetrie kann man sich auf das Dreieck unterhalb der<br />
Diagonale (aus Einsen) beschränken.<br />
⊲ Initialisierung der Positionen 〈p, q〉 , q < p , mit Nullen, für die genau<br />
eine Komponente ein Endzustand ist<br />
⊲ Zeilenweise iterativ bis Matrix stabil: 0 in Position 〈p, q〉 , falls<br />
a ∈ X existiert mit 0 in Position 〈δ(a)(p), δ(a)(q)〉 .<br />
⊲ Leere Positionen werden mit Einsen beschrieben.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 92 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Die Bisimilarität-Relation ∼ zeigt, welche Identifikationen von Zuständen<br />
den Minimalautomaten liefern.<br />
Zumal bei durchnummerierten Zuständen ist es zweckmäßiger, mit<br />
Repräsentanten statt mit Äquivalenzklassen als neuen Zuständen zu<br />
arbeiten.<br />
Algorithmus<br />
Eingabe: ein vDEA A = 〈Q, X , δ, I , F 〉 samt Bisimilarität ∼<br />
Ausgabe: Faktorautomat bzgl. ∼<br />
⊲ Auswahl eines (canonischen) Representanten aus jeder ÄK.<br />
⊲ Tabelle: Streichen aller Zeilen von Nicht-Repräsentanten; dann<br />
Ersetzen aller Zielzustände durch ihre Repräsentanten.<br />
⊲ Graph: Ersetzen aller Knotennamen durch die Namen der<br />
entsprechenden Repräsentanten; dann Zusammenfassen aller Knoten<br />
mit demselben Namen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 93 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Beispiel<br />
a<br />
A: (r) min : :<br />
b<br />
start<br />
b a, bb<br />
q 7 q 1 q 0<br />
a<br />
q 2<br />
q 3 q 6 q 5 q 4<br />
b<br />
b<br />
b<br />
a, b a<br />
a<br />
a<br />
a<br />
b<br />
a<br />
Zur Berechnung von A (r) :<br />
A (r)<br />
min a b<br />
q 0 q 21<br />
q 1<br />
I<br />
q 1 q 5 q 1<br />
q 2 q 5 q 2<br />
q 3 q 3 q 3 F<br />
q 4 q 2 q 5 F<br />
q 5 q 0 q 6<br />
q 6 q 6 q 3<br />
q 7 q 3 q 1<br />
Zustand q 0 q 1 q 2 q 3 q 4 q 5 q 6 q 7<br />
Zeuge ε b a babb − ba bab −<br />
Zur Berechnung von A min :<br />
q 0 1<br />
q 1 0 7 1<br />
q 2 0 8 1 1<br />
q 3 0 0 0 1<br />
q 5 0 4 0 5 0 6 0 1<br />
q 6 0 0 0 1 0 2 0 0 3 1<br />
q 0 q 1 q 2 q 3 q 5 q 6<br />
Ein trennender X - Buchstabe genügt für einen 0 - Eintrag.<br />
0. δ(b)(q 0 ) = q 1 ≁ q 3 = δ(b)(q 6 )<br />
1. δ(b)(q 1 ) = q 1 ≁ q 3 = δ(b)(q 6 )<br />
2. δ(b)(q 2 ) = q 2 ≁ q 3 = δ(b)(q 6 )<br />
3. δ(b)(q 5 ) = q 6 ≁ q 3 = δ(b)(q 6 )<br />
4. δ(b)(q 0 ) = q 1 ≁ q 6 = δ(b)(q 5 )<br />
5. δ(a)(q 1 ) = q 5 ≁ q 0 = δ(a)(q 5 )<br />
6. δ(b)(q 2 ) = q 5 ≁ q 6 = δ(b)(q 5 )<br />
7. δ(a)(q 0 ) = q 2 ≁ q 5 = δ(a)(q 1 )<br />
8. δ(b)(q 0 ) = q 1 ≁ q 5 = δ(b)(q 2 )<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 94 / 191
Endliche Automaten<br />
Minimierung von DEAs<br />
Wie steht es mit der Minimierung von DEAs<br />
Jeder DEA A ist äquivalent zu A ⊥ , (A ⊥ ) (r) und (A ⊥ ) min<br />
; diese<br />
vDEAs haben höchstens einen Zustand mehr als A .<br />
Besitzt ein erreichbarer vDEA B einen HCZ ⊥ , so kann dessen<br />
Aquivalenzklasse [⊥] ∼ kein Endzustand von B/∼ sein und muß<br />
δ ∼ (a)[⊥] ∼ = [⊥] ∼ für jedes a ∈ X erfüllen, ist also wieder ein HCZ.<br />
Damit vererbt sich ein HCZ von (A ⊥ ) (r) auf (A ⊥ ) min<br />
. Entfernt man<br />
diesen, bleibt ein äquivalenter DEA übrig.<br />
Also stimmt der minimale DEA für A entweder mit dem<br />
Minimalautomaten für A ⊥ überein, oder hat einen Zustand weniger<br />
als dieser.<br />
Bisimilarität ist auch für NEAs und εNEAs ein sinnvoller Begriff, aber die<br />
entsprechende Relataion ist ungleich schwerer zu berechnen.<br />
Wir werden dieses Thema hier nicht weiterverfolgen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 95 / 191
Endliche Automaten<br />
Regularitätsnachweise<br />
Regularitätsnachweise<br />
Methoden zum Regularitätsnachweis:<br />
Konstruktion von Automaten (εNEA, NEA, (v)DEA);<br />
Konstruktion aus einfacheren regulären Sprachen gemäß der<br />
Abschlußeigenschaften;<br />
Spezialfall: Einschränkung auf einelementige Sprachen aus<br />
einbuchstabigen Wörtern, endliche Vereinigungen und<br />
Konkatenationen, sowie Kleene- Stern (reguläre Ausdrücke);<br />
Kombination der obigen Methoden.<br />
Das Arsenal zur Widerlegung der Regularität ist kleiner:<br />
Anwendung des Pumping Lemmas für reguläre Sprachen<br />
(Kontraposition);<br />
Konstruktion aus einfacheren Sprachen gemäß der Abschlußeigenschaften<br />
für reguläre Sprachen und Nachweis, daß mindestens<br />
eine dieser einfacheren Sprachen nicht regulär ist.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 96 / 191
Endliche Automaten<br />
Regularitätsnachweise<br />
Beispiel<br />
L sei die Menge aller Wörter über X = {0, 1, 2, . . . , 9} , die eine durch 6<br />
teilbare Dezimalzahl darstellen, ohne führende Nullen.<br />
Wir stellen L als Durchschnitt von drei regulären Sprachen dar:<br />
L 0 = L(0 + (1 − 9)(0 − 9) ⋆ ) , keine führenden Nullen;<br />
L 1 = L((0 − 9) ⋆ (0 + 2 + 4 + 6 + 8)) gerade Zahlen;<br />
L 2 bestehe aus den Darstellungen durch 3 teilbarer Zahlen, d.h., aus<br />
Wörtern mit durch 3 teilbarer Quersumme.<br />
Wegen L 0 brauchen wir uns in L 1 und L 2 um führende Nullen nicht<br />
mehr zu kümmern. Nach Konstruktion gilt nun<br />
L = L 0 ∩ L 1 ∩ L 2<br />
Sowohl L 0 als auch L 1 sind als Semantiken regulärer Ausdrücke regulär.<br />
Nachzuweisen bleibt die Regularität von L 2 .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 97 / 191
Endliche Automaten<br />
Regularitätsnachweise<br />
Beispiel (Fortsetzung)<br />
Zu diesem Zweck konstruieren wir einen Automaten A 2 mit L(A 2 ) = L 2 :<br />
Design-Idee: Zustand i < 3 representiert den Rest modulo 3 der Summe<br />
der bisher verarbeiteten Ziffern. Die Übergänge erfüllen<br />
〈i, j〉 ∈ δ(a) gdw (i + a) mod 3 = j (∗)<br />
A 2 :<br />
start<br />
0<br />
x<br />
y<br />
y<br />
z<br />
z<br />
z<br />
1<br />
2<br />
y<br />
x<br />
x<br />
mit<br />
x ∈ {0, 3, 6, 9}<br />
y ∈ {1, 4, 7}<br />
z ∈ {2, 5, 8}<br />
“ L(A 2 ) ⊆ L 2 ”: Da 0 einziger Endzustand ist, ist die Quersumme jedes<br />
erkannten Worts durch 3 teilbar.<br />
“ L(A 2 ) ⊇ L 2 ”: Induktion über |w| mit Hilfe von (∗) : der Rest der<br />
Ziffernsumme bestimmt den Zustand am Ende der Berechnung.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 98 / 191
Endliche Automaten<br />
Regularitätsnachweise<br />
Beispiel<br />
max(L) bezeichne die Sprache aller Wörter in L , die maximale Länge<br />
haben, d.h., nicht echtes Präfix eines anderen Worts aus L sind. Zum<br />
Beispiel:<br />
max(∅) = ∅<br />
max(L(a ⋆ b ⋆ )) = ∅<br />
max({ a n b n : n ∈ N } = { a n b n : n ∈ N }<br />
max(L(a ⋆ b ⋆ a)) = L(a ⋆ b + a)<br />
Wir zeigen, daß sich Regularität von L auf max(L) vererbt.<br />
A = 〈Q, X , δ, {q 0 }, F 〉 sei ein minimaler vDEA mit L(A) = L . Ob w ∈ L<br />
zu einem echt längeren Wort in L fortgesetzt werden kann, ist durch den<br />
Zustand p w := δ(w)(q 0 ) ∈ F bestimmt: sind Endzustände entlang<br />
nichtleerer Wege von p w aus erreichbar<br />
Also wird max(L) von A ′ = 〈Q, X , δ, {q 0 }, F ′ 〉 akzeptiert, mit<br />
F ′ := { p ∈ F : ∀w ∈ X + . δ(w)(p) /∈ F }<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 99 / 191
Endliche Automaten<br />
Regularitätsnachweise<br />
Beispiel<br />
chp(L) bestehe aus allen Wörtern uv ∈ X ∗ , mit |u| = |v| und uav ∈ L<br />
für ein a ∈ X . D.h., aus allen L-Wörtern ungerader Länge wird der<br />
mittlere Buchstabe entfernt. Erhält diese Operation Regularität<br />
Betrachte die Semantik L des regulären Ausdrucks a ⋆ cb ⋆ . Wegen<br />
chp(L) = { u ∈ chp(L) : |u| c = 0 } + { u ∈ chp(L) : |u| c = 1 }<br />
ist die Sprache<br />
= { a n b n : n ∈ N } + { u ∈ chp(L) : |u| c = 1 }<br />
chp(L) ∩ {a, b} ∗ = { a n b n : n ∈ N }<br />
nicht regulär. Da aber {a, b} ∗ regulär ist, kann das für chp(L) nicht<br />
gelten. Also lautet die Antwort: Nein.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 100 / 191
Endliche Automaten<br />
Universelle Automaten<br />
Universelle Automaten<br />
Ohne die Beschränkung auf endliche Zustandsmengen kann jede Sprache<br />
von einem vollständig deterministischen Automaten akzeptiert werden:<br />
Definition<br />
Auf der Menge P(X ∗ ) definieren wir Übergangsfunktionen<br />
P(X ∗ )<br />
∇(a)<br />
P(X ∗ ), L ↦→ {a}\L<br />
für a ∈ X<br />
Φ ⊆ P(X ∗ ) besteht aus genau den Sprachen, die ε enthalten.<br />
Satz<br />
Der vDA A(L) := 〈P(X ∗ ), X , ∇, {L}, Φ〉 (r) akzeptiert L .<br />
Beweis.<br />
w = a 0 . . . a n−1 ∈ L gdw ε ∈ {a n−1 }\ . . . \{a 0 }\L gdw ε ∈ {w}\L .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 101 / 191
Endliche Automaten<br />
Universelle Automaten<br />
Satz<br />
Für endliches Alphabet X ist L ∈ X ∗ ist genau dann regulär, wenn der<br />
Automat A(L) endlich ist. Bis auf Umbenennung der Zustände stimmt<br />
A(L) dann sogar mit dem Minimalautomaten für L überein.<br />
Beweis.<br />
Da A(L) , wie gerade gezeigt, L akzeptiert, folgt aus der Endlichkeit von<br />
A(L) die Regularität von L .<br />
Umgekehrt sei A ein Minimalautomat für L mit n Zuständen. Falls A(L)<br />
mehr Zustände hat, existieren u, v ∈ X ∗ , die vom Anfangszustand in A<br />
zum selben Zustand führen, in A(L) aber nicht, d.h., ∇(u)(L) ≠ ∇(v)(L).<br />
Wähle w in der Differenz dieser Sprachen. Dann erkennt A(L) genau eins<br />
der Wörter uw und vw , während A entweder beide oder keines erkennt,<br />
Widerspruch.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 102 / 191
Endliche Automaten<br />
Universelle Automaten<br />
Wie groß sind die relevanten Zustandsmengen Da für jede nichtleere<br />
abzählbare Menge X die Menge X ∗ abzählbar unendlich ist, handelt es<br />
sich bei P(X ∗ ) um eine überabzählbare Menge! (Im Fall X = ∅ ist X ∗<br />
ein- und P(X ∗ ) zwei-elementig.)<br />
Andererseits ist jede Teilmenge L der abzählbaren Menge X ∗ ebenfalls<br />
abzählbar. Wegen der Erreichbarkeit aller Zustände kann A(L) also nur<br />
abzählbar viele Zustände haben.<br />
⊲ Warum verwendet man nicht ein abzählbares Alphabet, in dem sich<br />
bis auf Isomorphie alle endlichen Alphabete wiederfinden lassen<br />
⊲ Für jede reguläre Sprache L über einem endlichen Teilalphabet hätte<br />
der entsprechende Automat A(L) endlich viele Zustände, und von<br />
den unendlich vielen Übergängen landeten nur endlich viele nicht im<br />
Hotel California Zustand ∅ .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 103 / 191
Endliche Automaten<br />
Universelle Automaten<br />
Satz<br />
Für abzählbar unendliches Alphabet X ist L ∈ X ∗ ist genau dann regulär,<br />
wenn der durch Entfernen des Hotel California Zustands ∅ aus A(L)<br />
entstehende DA endlich ist.<br />
Beweis.<br />
Wir müssen nur noch zeigen, daß die Bedingung hinreichend ist. Aber aus<br />
der Endlichkeit des um den HCZ ∅ verminderten Automaten folgt sofort,<br />
daß in den Wörten von L nur endlich viele der Buchstaben in X<br />
vorkommen. Über dem entsprechenden Teilalphabet wird L nun durch<br />
einen DEA akzeptiert.<br />
Achtung: Bei der Arbeit mit einem abzählbar unendliche Alphabet X ist<br />
Vorsicht geboten: Z.B. ist das Komplement einer regulären Sprache<br />
natürlich relativ zum relevanten endlichen Teilalphabet zu verstehen, nicht<br />
relativ zu X !<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 104 / 191
Endliche Automaten<br />
Universelle Automaten<br />
Zurück zu endlichen Alphabeten!<br />
Definition<br />
Jede Sprace L ⊆ X ∗ induziert eine sog. Nerode Relation N L ⊆ X ∗ × X ∗ :<br />
Satz<br />
〈u, v〉 ∈ N L gdw ∀w ∈ X ∗ . uw ∈ L ⇔ vw ∈ L<br />
N L ist eine Äquivalenzrelation, und L ⊆ X ∗ ist genau dann regulär, wenn<br />
N L endlich viele Äquivalenzklassen hat.<br />
Beweis.<br />
Umschreiben der definierenden Bedingung liefert<br />
〈u, v〉 ∈ N L gdw {u}\L = {v}\L<br />
Damit ist N L offenbar eine ÄR, und ihre Äquivalenzklassen entsprechen<br />
bijektiv den Zuständen des Automaten A(L) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 105 / 191
Endliche Automaten<br />
Kritik am Autmatenbegriff<br />
Kritik am traditionellen Automatenbegriff<br />
Ist es wirklich essenziell, wie im Fall von vDEAs, in jedem Zustand einen<br />
Übergang mit jedem möglichen Label zu verlangen Oder ist dies nur<br />
Nebeneffekt des Wunsches, mit Funktionen zu arbeiten, statt mit<br />
partiellen Funktionen oder gar Relationen<br />
Im Gegensatz zu DEAs vertragen vDEAs z.B. keine Vergrößerung des<br />
Alphabets. Ggf. ist dann ein Hotel California Zustand hinzuzufügen.<br />
Andererseits kann man im Falle eines DEA nie sicher sein, ob nicht ein<br />
wichtiger Übergang vergessen wurde.<br />
Schon beim Getränkeautomaten deutete sich die Möglichkeit an, daß lokal, also<br />
für jeden Zustand, unterschiedliche Aktionen verfügbar sein können.<br />
⊲ Statt mit einer unstrukturierten Labelmenge hätten wir es dann mit<br />
einem Label- oder besser Kontroll-Graphen zu tun;<br />
⊲ und anstelle einer Labelfunktion wäre nun ein Graphen-<br />
Homomorphismus zu betrachten, der Knoten und Kanten erhält.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 106 / 191
Endliche Automaten<br />
Kritik am Autmatenbegriff<br />
Beispiel (Getränkeautomat: LTS revisited)<br />
start<br />
ψ<br />
T<br />
S<br />
ζ<br />
ϕ<br />
K<br />
l<br />
0<br />
e<br />
2<br />
z<br />
wobei<br />
l(S) = 0<br />
l(T ) = l(K) = 2<br />
l(1€) = 1<br />
l(ϕ) = l(ψ) = e<br />
τ<br />
κ<br />
t<br />
k<br />
l(ζ) = z<br />
l(τ) = t<br />
1€<br />
1<br />
l(ζ) = z<br />
Achtung: hier sind alle Kanten tatsächlich mit ihren Namen markiert!<br />
Bisher waren links immer nur deren l-Werte als Label verwendet<br />
worden, weshalb dasselbe Label auch mehrfach auftauchen konnte.<br />
Auch ein Alphabet X kann als Kontroll-Graph aufgefaßt werden, mit<br />
nur einem Knoten und den Elementen von X als Loops.<br />
Als “Sprachen” über einem Kontroll-Graphen wären nun Mengen von<br />
Wegen zu betrachten. Dieses Gebiet scheint noch weitgehend<br />
unerforscht zu sein, speziell wenn der Kontroll-Graph über eine<br />
Kompositions-struktur verfügt (also eine Kategorie ist).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 107 / 191
Kontextfreie Sprachen<br />
Kontextfreie Sprachen<br />
⊲ Reguläre Sprachen waren eine erste Approximation von E-Problemen,<br />
und endliche Autamaten dienten der algorithmischen Problemlösung.<br />
⊲ Aber bereits einfache Sprachen sind nicht regulär und erfordern<br />
stärkere Automaten, z.B. { a n b n : n ∈ N } .<br />
⊲ Zunächst wollen wir aber ein neues Paradgima zur Sprachbehandlung<br />
vorstellen: die Spracherzeugung im Gegensatz zur bisher betrachteten<br />
Spracherkennung.<br />
⊲ Dies entspricht eher der historischen Entwicklung der formalen<br />
Sprachentheorie aus der Linguistik (vergl. auch Noam Chomsky )<br />
Als mögliche Anwendungen erwähnen wir nur<br />
den Compilerbau, was sowohl die Syntax von Programmiersprachen<br />
als auch die Implementation von Parsern angeht;<br />
den Austausch strukturierter Informationen im WEB (Document Type<br />
Definition in XML).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 108 / 191
Kontextfreie Sprachen<br />
Idee einer formalen Grammatik<br />
Reguläre Ausdrücke zeigen, wie Wörter einer regulären Sprache auch<br />
anders als in einem links-rechts-Durchlauf konstruierbar sind:<br />
Beispiel<br />
Wie setzt sich L S = L(a(a ⋆ + b ⋆ )b) aus L R = L(a ⋆ + b ⋆ ) , L A = L(a ⋆ )<br />
und L B = L(b ⋆ ) zusammen Betrachte semantische Ungleichungen in den<br />
Mengenvariablen S , R , A und B :<br />
S ⊇ {a}R{b} , R ⊇ A ∪ B , A ⊇ {a}A ∪ {ε} , B ⊇ {b}B ∪ {ε}<br />
Offenbar bilden die obigen Sprachen 〈L S , L R , L A , L B 〉 einen Fixpunkt für<br />
dieses Ungleichungssystem, und zwar den kleinsten. Der größte Fixpunkt<br />
ist gegeben durch 〈X ∗ , X ∗ , X ∗ , X ∗ 〉 .<br />
Aber wie findet man den kleinsten Fixpunkt eines Ungleichungssystems mit<br />
Konkatenationen und Vereinigungen von Sprachen auf der rechten Seite<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 109 / 191
Kontextfreie Sprachen<br />
Idee einer formalen Grammatik<br />
Beispiel (Fortsetzung)<br />
Ein Ungleichungssystem wie<br />
S ⊇ {a}R{b} , R ⊇ A ∪ B , A ⊇ {a}A ∪ {ε} , B ⊇ {b}B ∪ {ε}<br />
kann prinzipiell mehrere Fixpunkte haben, d.h., Lösungen mit Gleichheit in<br />
allen Komponenten, aber es gibt immer einen bzgl. Mengeninklusion<br />
kleinsten Fixpunkt, der ausgehend von S 0 = R 0 = A 0 = B 0 = ∅ iterativ<br />
berechnet werden kann:<br />
S k+1 := {a}R k {b}<br />
R k+1 := A k ∪ B k<br />
A k+1 := {a}A k ∪ {ε}<br />
B k+1 := {b}B k ∪ {ε}<br />
liefert den<br />
Fixpunkt<br />
L S = ⋃ i∈N S i = L(a(a ⋆ + b ⋆ )b)<br />
L R = ⋃ i∈N R i = L(a ⋆ + b ⋆ )<br />
L A = ⋃ i∈N A i = L(a ⋆ )<br />
L B = ⋃ i∈N B i = L(b ⋆ )<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 110 / 191
Kontextfreie Sprachen<br />
Idee einer formalen Grammatik<br />
Diese Beobachtungen sind nicht auf reguläre Sprachen beschränkt:<br />
Beispiel<br />
L S := { a n b n : n ∈ N } ist der kleinste Fixpunkt der Ungleichung<br />
Beispiel<br />
S ⊇ {ε} ∪ {a}S{b}<br />
Die Sprache L := { w ∈ X ∗ : w = sp(w) } der Palindrome über X ist der<br />
kleinste Fixpunkt der Ungleichung<br />
S ⊇ {ε} ∪ ⋃ { {a} : a ∈ X } ∪ ⋃ { {a}S{a} : a ∈ X }<br />
Die iterative Lösung solcher (Systeme von) Ungleichungen kann allerdings<br />
mühsam sein. Geht das auch einfacher Wir wollen versuchen, das oben<br />
beschriebene Verfahren zu syntaktisieren:<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 111 / 191
Kontextfreie Sprachen<br />
Kontextfreie Grammatiken<br />
Kontextfreie Grammatiken und Sprachen<br />
Neben den Elementen von X , bei denen wir wie von den regulären<br />
Ausdrücken gewöhnt, die Mengenklammern weggelassen, benötigen wir<br />
sog. Variablen, die wir meist mit Großbuchstaben bezeichnen.<br />
Definition (kontextfreie Grammatik, traditionell)<br />
Eine kontextfreie Grammatik (kfG) G = 〈V, X , S,<br />
〉 besteht aus<br />
disjunkten Mengen X (Konstanten) und V (Variablen);<br />
einer ausgezeichneten Variable S ∈ V , dem Startsymbol;<br />
einer endliche Relation<br />
⊆ V × (X + V) ∗ aus sog. Produktionen.<br />
Für jeden Kontext 〈u, v〉 ∈ (X + V) ∗ × (X + V) ∗ und jede Produktion<br />
A w ist uwv aus uAv direkt ableitbar, wir schreiben dafür:<br />
Die reflexive transitive Hülle<br />
uAv<br />
uwv<br />
∗ heißt Ableitbarkeits-Relation.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 112 / 191
Kontextfreie Sprachen<br />
Kontextfreie Grammatiken und Sprachen<br />
Achtung: zwar wird pro Ableitungsschritt genau eine Variable ersetzt, aber<br />
dies ist weniger wichtig als es zunächst erscheint.<br />
Mehrere Produktionen A w i , i < n , mit derselben linken Seite können<br />
vorkommen, insofern sind kfG’n automatisch nicht-deterministisch. Oft<br />
faßt man solche Produktionen abkürzend wie folgt zusammen<br />
Konzeptionell abstrahieren<br />
A<br />
w 0 | w 1 | . . . | w n−1<br />
⊲ die Variablen in V die obigen Mengenvariablen über X ∗ ;<br />
⊲ die Konstanten a ∈ X die Sprachen {a} (wie bei regulären<br />
Ausdrücken wird auf Mengenklammern verzichtet);<br />
⊲ die Konkatenation von Symbolen die Konkatenation von Sprachen;<br />
⊲ der Pfeil die Obermengenrelation ⊇ .<br />
⊲ der vertikale Strich | die Vereinigung ∪ (pro Ableitungsschritt wird<br />
aber nur eine der rechten Alternativen verwendet).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 113 / 191
Kontextfreie Sprachen<br />
Kontextfreie Grammatiken und Sprachen<br />
Definition<br />
Die von einer kfG G = 〈V, X , S, 〉 erzeugte Sprache ist definiert als<br />
L(G) := { w ∈ X ∗ : S ∗ w }. Eine Sprache L ⊆ X ∗ heißt kontextfrei,<br />
wenn mindestens eine kfG G existiert mit L(G) = L .<br />
Beispiel<br />
G = 〈{S}, {a, b}, S, 〉 mit S aSb | ε erzeugt L = { a n b n : n ∈ N } :<br />
L ⊆ L(G) : Wendet man die erste Produktion n-mal und die zweite<br />
einmal an, so wird a n b n erzeugt.<br />
L(G) ⊆ L : Im Startsymbol und allen Outputs der Produktionen gibt es<br />
gleichviele Symbole a auf der linken wie Symbole b auf der rechten Seite.<br />
Die Substitution für die zentrale Variable erhält diese Eigenschaft.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 114 / 191
Kontextfreie Sprachen<br />
Kontextfreie Grammatiken und Sprachen<br />
Das folgende Beispiel mag auf den ersten Blick überraschen:<br />
Beispiel (reguläre Ausdrücke)<br />
Die regulären Ausdrücke über einem Alphabet X bilden eine kontextfreie<br />
Sprache. Als kfG verwenden wir<br />
G = 〈{r}, X + {0, 1, e, ∅, +, ·, ⋆ , (, )}, r, 〉 mit<br />
r<br />
a ∈ X | 0 | 1 | e | ∅ | r + r | r · r | r ⋆ | (r)<br />
(Da aus technischen Gründen ε als Element unserer Alphabete nicht<br />
zulässig ist, andererseits aber ε einen speziellen regulären Ausdruck<br />
bezeichnet (schlecht!), haben wir an dieser Stelle ε durch e ersetzt.)<br />
Den Nachweis, daß L(G) im Wesentlichen die Sprache der regulären<br />
Ausdrücke über X ist, überlassen wir der LeserIn.<br />
Jetzt stellt sich die Frage, ob auch jede reguläre Sprache mit Hilfe einer<br />
kfG erzeugt werden kann.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 115 / 191
Kontextfreie Sprachen<br />
Kontextfreie und reguläre Sprachen<br />
Definition<br />
Eine kfG G = 〈V, X , S, 〉 heißt linear, wenn die rechte Seite jeder<br />
Produktion höchstens eine Variable enthält. Sie heißt links- bzw.<br />
rechts-linear, wenn zudem die Variablen auf der rechten Seite der<br />
Produktionen immer am Anfang bzw. Ende auftreten.<br />
Satz<br />
Die regulären Sprache stimmen genau mit den kontextfreien Sprachen<br />
überein, die durch eine rechts-lineare kfG erzeugbar sind.<br />
Beweis<br />
Zu einem vDEA A = 〈Q, X , δ, {q 0 }, F 〉 mit L = L(A) konstruieren wir<br />
eine rechts-lineare Grammatik G = 〈Q, X , q 0 , 〉 wie folgt:<br />
q ap gdw 〈q, p〉 ∈ δ(a) und q ε gdw q ∈ F<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 116 / 191
Kontextfreie Sprachen<br />
Kontextfreie und reguläre Sprachen<br />
Beweis (Fortsetzung)<br />
Induktion über die Wortlänge liefert eine Äquivalenz zwischen<br />
Berechnungen 〈q 0 , s 0 . . . s n−1 〉 ⊢ 〈q 1 , s 1 . . . s n−1 〉 ⊢ · · · ⊢ 〈q n , ε〉<br />
und Ableitungen q 0 s 0 q 1 . . . s 0 . . . s n−1 q n<br />
Die Berechnung ist genau dann akzeptierend wenn q n ∈ F gilt, d.h., wenn<br />
die Ableitung um s 0 . . . s n−1 q n s 0 . . . s n−1 ergänzt werden kann.<br />
Achtung: Die rechten Seiten obiger Produktionen gehören zu X × V + {ε} .<br />
Für eine beliebige rechts-lineare kfG G = 〈V, X , S, 〉 liefert das<br />
Nachspielen der obigen Konstruktion leider nur einen ∗NEA (in dieser VL<br />
nicht betrachtet). Um zumindest einen εNEA zu erhalten, ist G in eine<br />
äquivalente Grammatik G ′ = 〈V ′ , X , S, 〉 umzuwandeln, so daß deren<br />
Produktionen rechte Seiten in X ε + (X ε × V) + {ε} haben.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 117 / 191
Kontextfreie Sprachen<br />
Kontextfreie und reguläre Sprachen<br />
Beweis (Fortsetzung)<br />
Für R a 0 a 1 . . . a n−1 T mit n > 1 führen wir n − 1 spezifische neue<br />
Variable U i , i < n − 1 , ein und simulieren die Produktion durch<br />
R a 0 U 0 , U i a i+1 U i+1 für i < n − 2, U n−2 a n−1 T (∗)<br />
Die neuen Produktionen (∗) können nur die ursprüngliche Produktion<br />
R a 0 a 1 . . . a n−1 T simulieren, sonst nichts. Damit folgt L(G ′ ) = L(G) .<br />
Nun konstruieren wir aus G ′<br />
einen εNEA A = 〈V ′ , X ε , δ, {S}, F 〉 mit<br />
〈B, C〉 ∈ δ(a) gdw B aC , B ∈ F gdw B ε<br />
Für w = s 0 s 1 . . . s n−1 ∈ X ∗ mit s i ∈ X ε , i < n , und Variable B i+1 ,<br />
i < n , erhalten wir wie oben eine Äquivalenz zwischen G ′ -Herleitungen<br />
und akzeptierenden A-Berechnungen von w . Folglich gilt w ∈ L(G ′ )<br />
gdw w ∈ L(A) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 118 / 191
Kontextfreie Sprachen<br />
Ableitungsbäume<br />
Bevor wir Abschlußeigenschaften kontextfreier Sprachen untersuchen, ist<br />
zu klären, ob alle Sprachen kontextfrei sind. Dazu eine Vorüberlegung.<br />
In Analogie zu regulären Ausdrücken kann man die Produktionen einer<br />
kontextfreien Grammatik als elementare Bausteine für Ableitungsbäume<br />
auffassen, mit der linken (rechten) Seite als Eingabe (Ausgabe).<br />
Allerdings sind diesmal die Kantenlabel aus X + V wichtiger als die<br />
Knotenlabel (Namen oder Nummern der Produktionen).<br />
Beispiel (für G = 〈{S, T }, {0, 1}, S, 〉)<br />
Die fünf Produktionen S 0S1S | 1S0S | T und T 0T | ε entsprechen<br />
den Knoten<br />
S<br />
S<br />
S<br />
T<br />
T<br />
0<br />
1<br />
2<br />
3<br />
4<br />
0 S 1 S<br />
1 S 0 S<br />
T<br />
0 T<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 119 / 191
Kontextfreie Sprachen<br />
Ableitungsbäume<br />
Satz<br />
Für eine kfG G = 〈V, X , S, 〉 stimmt L(G) mit der Sprache aller<br />
Wörter w ∈ X ∗ überein, für die ein Ableitungsbaum mit Input S und<br />
Output w existiert.<br />
Beweis.<br />
In einer Ableitung von w ∈ L(G) bestimmt jeder Schritt eine “aktuelle”<br />
zu ersetzende Variable und eine anzuwendende Produktion.<br />
Entsprechendes Zusammensetzen der Produktionen-Knoten liefert einen<br />
Ableitungbaum mit Input S und Output w .<br />
Umgekehrt können wir aus einem Ableitungsbaum für w ∈ X ∗ sequenziell<br />
alle Produktionen-Knoten ohne Nachfolge-Knoten entfernen und erhalten<br />
auf diese Weise rückwärts eine Ableitung von w (diese wird i.A. nicht<br />
eindeutig sein).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 120 / 191
Kontextfreie Sprachen<br />
Ableitungsbäume<br />
Einige Anmerkungen:<br />
Verschiedene Ableitungen können denselben Baum erzeugen:<br />
aufgrund der Kontextfreiheit sind “parallele” Unterbäume B 0 und B 1<br />
(so daß B i nicht Unterbaum von B 1−i ist) insofern unabhängig<br />
voneinander, als die zeitliche Abfolge der Ableitungsschritte in B 0<br />
relativ zu denen in B 1 völlig beliebig ist. Erzeugen zwei Ableitungen<br />
denselben Baum, so verwenden sie dieselben Produktionen gleich<br />
häufig, nur in anderer Reihenfolge.<br />
Es spräche Einiges dafür, derartige Unterschiede zu ignorieren, etwa,<br />
indem man die simultane Ersetzung aller aktuellen Variablen zuläßt.<br />
Für uns werden Ableitungsbäume wichtiger sein als Ableitungen.<br />
Ein Wort kann aber auch verschiedene Ableitungsbäume haben, vergl.<br />
HA. Im Gegensatz zum obigen Phänomen ist dies ein Ausdruck von<br />
echtem Nichtdeterminismus.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 121 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen, PL(kf)<br />
Analog zum regulären Fall, suchen wir eine Eigenschaft, die alle<br />
kontextfreien Sprachen haben müssen.<br />
Jede Sprache, die diese Eigenschaft nicht hat, kann folglich nicht<br />
kontextfrei sein.<br />
Dieser Ansatz dient wieder dazu, Kontextfreiheit zu widerlegen und liefert<br />
als Korollar zu folgendem Satz wieder ein Pumping Lemma.<br />
Satz (Lemma von Ogden)<br />
Zu jeder kontextfreien Sprache L ∈ X ∗ existiert eine Zahl n L > 0 , so daß<br />
jedes Wort u ∈ L mit mindestens n L (z.B. rot) markierten Positionen<br />
zerlegbar ist als u = vwxyz mit v, w, x, y, z ∈ X ∗ und<br />
(0) wy enthält eine Markierung (1) wxy enthält ≤ n L Markierungen<br />
(2) ∀k ∈ N. u k := vw k xy k z ∈ L<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 122 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Beweis (Illustration umseitig)<br />
Für eine kfG G = 〈V, X , S, 〉 mit L(G) = L setze n L := r |V|+1 , wobei<br />
r die maximale Output-Länge der Produktionen ist.<br />
In einem Ableitungsbaum B für u ∈ L mit ≥ n L (z.B. rot) markierten<br />
Positionen markieren wir alle Knoten (z.B. rot), in denen sich die Wege<br />
von S zu den markierten u -Positionen verzweigen. Wähle unter allen von<br />
S startenden Wegen einen mit maximaler Anzahl m markierter Knoten.<br />
Da u mindestens r |V|+1 Markierungen hat, gilt m > |V| .<br />
Mindestens zwei der letzten |V| + 1 markierten Knoten dieses Weges<br />
haben denselben Input. |V| + 1 beschränkt die “markierte Tiefe” der<br />
zugehörigen Unterbäume B ′ und B ′′ ; diese liefern als Output wxy mit<br />
≤ n L Markierungen bzw. x . Die von der B ′ -Wurzel aus entlang<br />
verschiedener Zweige erreichbaren markierten u -Positionen gehören nicht<br />
sämtlich zu x , also enthält wy eine solche. Nach Konstruktion kann nun<br />
die Differenz B ′ − B ′′ iteriert werden, woraus u k ∈ L für k ∈ N folgt.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 123 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
′′<br />
B ′′ y<br />
Von der Wurzel von B ′ sind ≥ 2<br />
−<br />
markierte u -Positionen erreichbar,<br />
x<br />
daher muß eine in wy liegen.<br />
w<br />
B ′ −B B ′<br />
Positionen von wxy markiert.<br />
Die schwarze Kurve ist ein Weg von der<br />
Gegeben: kfG G = 〈V, X , S, 〉 für L<br />
Wurzel S mit maximaler Anzahl m<br />
und ein Ableitungsbaum für u ∈ L mit<br />
markierter Knoten (von denen aus<br />
≥ n L := r |V|+1 markierten Positionen. jeweils mindestens zwei markierte<br />
S<br />
u -Positionen erreichbar sind).<br />
Mindestes zwei der letzten |V| + 1<br />
markierten Knoten auf diesem Weg<br />
− haben denselben Input; die<br />
•<br />
entsprechenden Unterbäume B ′ und<br />
B ′′ liefern eine Zerlegung u = vwxyz .<br />
k -faches Iterieren von B ′ − B ′′<br />
z<br />
liefert u k = vw k xy k z ∈ L .<br />
|V|+1<br />
v<br />
•<br />
|V| + 1 beschränkt die markierte<br />
Tiefe von B ′ , daher sind ≤ n L<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 124 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Werden alle Positionen von u markiert, so erhalten wir<br />
Corollar (Das Pumping-Lemma für kontextfreie Sprachen, PL(kf))<br />
Zu jeder kontextfreien Sprache L ∈ X ∗ existiert eine Zahl n L > 0 , so daß<br />
jedes Wort u ∈ L mit |w| ≥ n L eine Zerlegung u = vwxyz mit<br />
v, w, x, y, z ∈ X ∗ besitzt, die folgende Bedingungen erfüllt:<br />
(0) wy ≠ ε ; (1) |wxy| ≤ n L ; (2) ∀k ∈ N. u k := vw k xy k z ∈ L .<br />
Beispiel ( L = { a i b j c k d l : i = j = k ∨ l = 0 } )<br />
L ist nicht kontextfrei (Lemma von Ogden, vergl. HA), erfüllt aber die<br />
Bedingungen des PL(kf) mit n L := 1 :<br />
Von Interesse ist einzig der Fall a i b i c i d l ∈ L mit i, l > 0 .<br />
Setze v = a i b i c i d l−1 , w = d und x = y = z = ε . Für k ∈ N gilt dann<br />
u k = uv k xy k z = a i b i c i d l−1+k ∈ L .<br />
Dennoch genügt das PL(kf) häufig in der Praxis.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 125 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Beispiel (PL(kf))<br />
Die Sprache L = { a n b n c n : n ∈ N } ⊆ {a, b, c} ∗<br />
ist nicht kontextfrei:<br />
Für n > 0 betrachte u := a n b n c n = vwxyz mit wy ≠ ε und |wxy| ≤ n .<br />
Letzteres impliziert, daß wy nicht gleichzeitig die Buchstaben a und c<br />
enthalten kann. Also folgt |u 2 | a ≠ |u 2 | c und somit u 2 /∈ L . Da n beliebig<br />
war, ist L nicht kontextfrei.<br />
Beispiel (PL(kf))<br />
Die Menge P ⊆ N ∼ = {|} ∗<br />
aller Primzahlen ist nicht kontextfrei:<br />
Für n > 0 betrachte die nächstgrößere Primzahl p und das Wort<br />
u := | p = | s | t | a | b | c = | s+t+a+b+c mit t + b > 0 und t + a + b ≤ n .<br />
Für k ∈ N setze u k = | s | kt | a | kb | c = | s+a+c+k(t+b) . Speziell für<br />
k = s + a + c ist s + a + c + k(t + b) = (s + a + c)(1 + t + b) keine<br />
Primzahl, also gilt u k /∈ P . Da n beliebig war, ist P nicht kontextfrei.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 126 / 191
Kontextfreie Sprachen<br />
Das Pumping Lemma für kontextfreie Sprachen<br />
Die Widerlegung der Kontextfreiheit einer konkreten Sprache L ⊆ X ∗<br />
mittels Lemma von Ogden (PL(kf)) folgt immer demselben<br />
Schema<br />
Man überprüft eine generische Zahl n > 0 auf Ihre Eignung als Konstante<br />
n L aus dem Pumping Lemma und verwirft sie:<br />
(0) wähle ein spezifisches Wort u ∈ L mit ≥ n Markierungen ( |u| ≥ n );<br />
typischerweise wird u vom Wert n als Parameter abhängen;<br />
(1) betrachte eine generische Zerlegung u = vwxyz mit mindestens einer<br />
Markierung in wy ( wy ≠ ε ) und ≤ n Markierungen in wxy<br />
( |wxy| ≤ n ); dies sind ihre einzigen bekannten Eigenschaften;<br />
(2) optional: beschreibe das allgemeine Wort u k = vw k xy k z , k ∈ N ;<br />
(3) finde einen spezifischen Wert k 0 ∈ N mit u k0 /∈ L .<br />
Da n generisch war, entfällt jedes n > 0 als Kandidat für n L , also kann<br />
L nicht kontextfrei sein.<br />
Die geschickte Wahl von u ∈ L samt Markierung (0) und die Bestimmung<br />
von k 0 (3) erfordern die meiste Arbeit.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 127 / 191
Kontextfreie Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Satz<br />
Kontextfreie Sprachen sind unter abgeschlossen unter endlicher<br />
Vereinigung und endlicher Konkatenation.<br />
Beweisidee (der binäre Fall genügt).<br />
Die Vereinigung zweier kfG’n G i , i < 2 , mit disjunkten Variablenmengen<br />
hat zwei Startsymbole, S 0 und S 1 und ist somit keine kfG. Fügt man<br />
aber ein neues Startsymbol S und Produktionen S S 0 sowie S S 1<br />
hinzu, so erhält man eine kfG, die L(G 0 ) ∪ L(G 1 ) erzeugt. Verwendet man<br />
stattdessen die neue Produktion S S 0 S 1 , so erzeugt die resultierende<br />
kfG L(G 0 )L(G 1 ) . Details als HA.<br />
Vielleicht überraschend sind kontextfreie Sprachen nicht unter binären<br />
Durchschnitten, also auch nicht unter Komplementen abgeschlossen:<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 128 / 191
Kontextfreie Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Beispiel<br />
Die Sprache L 0 = { a n b n : n ∈ N}{c} ∗ ist als Konktenation kontextfreier<br />
Sprachen wieder kontextfrei; analoges gilt für L 1 = {a} ∗ { b n c n : n ∈ N } .<br />
L 0 ∩ L 1 = { a n b n c n : n ∈ N }<br />
ist nicht kontextfrei, dafür aber L 0 ∩ L 1 = ¯L 0 ∪ ¯L 1 . Um ¯L 0 als kontextfrei<br />
nachzuweisen, vereinige drei reguläre Sprachen (“ein b vor einem a ”,<br />
“ein c vor einem b ” und “ein c vor einem a ”) und zwei kontextfreie<br />
Sprachen ( a n b m c k mit n < m sowie n > m , vergl. HA). Analog für L 1 .<br />
Proposition<br />
Die Spiegelung einer kontextfreien Sprache ist kontextfrei.<br />
Beweisidee.<br />
Man spiegelt einfach die rechten Seiten aller Produktionen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 129 / 191
Kontextfreie Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Satz<br />
Iteration bzw. Kleene-Stern erhalten die Kontextfreiheit von Sprachen.<br />
Beweisidee.<br />
Eine kfG mit Startsymbol S wird um ein neues Startsymbol @ und<br />
Produktionen @ S@ | ε ergänzt.<br />
Satz<br />
Homomorphe Bilder kontextfreier Sprachen sind wieder kontextfrei.<br />
Beweis.<br />
h<br />
Ist X ∗ Y ∗ ein Homomorphismus und ist G = 〈V, X , S, 〉 eine kfG,<br />
so gilt das auch für h[G] := 〈V, Y , S,<br />
′ 〉, deren Produktionen aus<br />
G -Produktionen durch Ersetzung aller Buchstaben a ∈ X durch Wörter<br />
h(a) ∈ Y ∗ entstehen. Damit liefert jeder G -Ableitungsbaum einen<br />
h[G]-Ableitungsbaum. Umgekehrt hat jede h[G]-Produktion mindestens<br />
ein Urbild, also folgt L(h[G]) = h[L(G)] .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 130 / 191
Kontextfreie Sprachen<br />
Abschlußeigenschaften kontextfreier Sprachen<br />
Beispiel<br />
Kontextfreiheit bleibt unter Residuierung nicht notwendig erhalten:<br />
M = {d}{ a n b n : n ∈ N }{c} ∗ ∪ {e}{a} ∗ { b n c n : n ∈ N }<br />
ist als Vereinigung von Konkatenationen kontextfreier Sprachen<br />
kontextfrei. Aber<br />
ist nicht kontextfrei.<br />
{d, e}\M = {d}\M ∩ {e}\M = { a n b n c n : n ∈ N }<br />
Um festzustellen, unter welchen Einschränkungen Residuierung evtl. doch<br />
Kontextfreiheit erhält, und wie es mit homomorphen Urbildern<br />
kontextfreier Sprachen aussieht, wenden wir uns nun Normalformen<br />
kontextfreier Grammatiken zu, die auch für weitere Zwecke nützlich sind.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 131 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Das Wortproblem für kf Grammatiken<br />
Für einen DEA A über X und ein Wort w ∈ X ∗ läßt sich in linearer Zeit<br />
feststellen, ob w ∈ L(A) gilt: man führt die einzig mögliche Berechnung<br />
durch. Genau dann, wenn diese nicht steckenbleibt und zu einem<br />
Endzustand führt, gilt w ∈ L(A) . Jeder Berechnungsschritt verbraucht ein<br />
Symbol.<br />
Ist A nichtdeterminstisch (aber ohne ε-Übergänge), so kann die Zahl der<br />
möglichen Berechnungen exponentiell in |w| sein. Die Potenzmengenkonstruktion<br />
spiegelt dies wider: um die Zahl der möglichen Berechnungen<br />
auf eine zu reduzieren, nimmt man ein potentiell exponentielles Wachstum<br />
der Zustandsmenge in Kauf.<br />
Analog kann man für eine kfG G = 〈V, X , S, 〉 und ein Wort w ∈ X ∗<br />
fragen, ob w ∈ L(G) gilt. Dies kann mit Hilfe des sog. CYK-Algorithmus<br />
festgestellt werden, der erfreulicherweise zumindest polynomial in |w| ist,<br />
und bei geschickter Anwendung linear in der Größe |G| der Grammatik;<br />
allerdings muß diese eine spezielle Normalform haben.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 132 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Zunächst wollen wir “überflüssige” Variable entfernen:<br />
Proposition<br />
Eine Variable U ∈ V einer kfG G = 〈V, X , S,<br />
unproduktiv, falls aus U ∗ w folgt w /∈ X ∗ ;<br />
unerreichbar, falls aus S ∗ w folgt |w| U = 0 .<br />
〉 heißt<br />
Entfernen derartiger Variablen läßt die erkannte Sprache L(G) invariant.<br />
Im Folgenden setzen wir voraus, daß weder unproduktive noch<br />
unerreichbare Variablen vorhanden sind. Erst dann ist es sinnvoll, die<br />
Größe einer Grammatik mit Hilfe ihrer Produktionen zu definieren:<br />
Definition<br />
Eine kfG G = 〈V, X , S,<br />
〉 hat die Größe<br />
|G| := ∑ A∈V<br />
∑<br />
1 + |α|<br />
A→α<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 133 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Umwandeln einer kfG (ohne überflüssige Variablen) in die gewünschte<br />
Normalform erfordert Arbeit und kann die Grammatik vergrößern. Diesem<br />
Aspekt wurde aber erst kürzlich (2009) von Martin Lange und Hans Leiß (LMU<br />
München) die gebührende Aufmerksamkeit zuteil; dieser Abschnitt des<br />
Scripts stützt sich auf ihren Artikel<br />
To CNF or not to CNF An Efficient Yet Presentable Version of the CYK<br />
Algorithm, Informatica Didactica 8 (2008–2010), 21pp.<br />
Lange und Leiß listen einige für CYK relevante Normalformen auf und ihre<br />
Beziehungen bzgl. Inklusion (“CNF” steht für Chomsky Normalform)<br />
2LF<br />
Name Form der Produktionen<br />
CNF −ε A BC | a<br />
2NF<br />
CNF A BC | a , S ε (∗)<br />
CNF +ε A BC | a | ε<br />
CNF<br />
S2F A α mit |α| = 2<br />
+ε C2F<br />
C2F A BC | B | a , S ε (∗)<br />
2NF A α mit |α| ≤ 2<br />
CNF<br />
2LF A uBvCw | uBv | v , u, v, w ∈ X ∗<br />
CNF −ε<br />
S2F<br />
(∗) Falls die Produktion S ε auftritt, darf S nicht auf der rechten Seite einer anderern Produktion vorkommen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 134 / 191
Kontextfreie Sprachen<br />
Der CYK Algorithmus<br />
Normalformen und Anwendungen<br />
Um für eine kfG G in 2NF zu entscheiden, ob w ∈ X + zu L(G) gehört,<br />
werden im Wesentlichen alle möglichen Ableitungsbäume für w rückwärts<br />
aufgebaut, mittels einer “Divide-and-Conquer” Strategie mit Speicherung<br />
von Zwischenergebnissen, die als dynamischen Programmierung bekannt ist.<br />
Genauer: für jedes Teilwort w i,j von Position i bis Position j des Worts<br />
w wird die Menge V i,j aller Variablen konstruiert, aus denen w i,j<br />
herleitbar ist. Dies kann induktiv erfolgen.<br />
Für eine kfG in CNF wurde der Algorithmus unabhängig von John Cocke<br />
and Jacob T. Schwartz (1970), Tadao Kasami (1965) und Daniel H.<br />
Younger (1967) entdeckt und ist folglich als CYK-Algorithmus bekannt.<br />
In der Version von Langer und Leiß für G in 2NF werden zusätzlich die<br />
klassisch berechneten Mengen unter Vorgängern bzgl. einer bestimmten<br />
Relation abgeschlossen, die vorweg zu bestimmen ist. Spätestens dabei<br />
stellt sich heraus, ob ε ∈ L(G) gilt (was im Fall der CNF trivial ist).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 135 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Skizze des klassischen CYK-Algorithmus<br />
Eingabe: kfG G = 〈V, X , S, 〉 in CNF und w ∈ X + mit |w| = n<br />
Ausgabe: JA gdw S ∈ V 0,n−1 := { A ∈ V : A ∗ w },<br />
⊲ Initialisierung: V i,i := { A ∈ V : A<br />
w i,i = s i } für i < n<br />
⊲ Zeilenweise rekursiv: A ∈ V i,j gdw i ≤ h < j und A BC<br />
existieren mit B ∈ V i,h und C ∈ V h+1,j , für i < j < n .<br />
Beispiel<br />
G = 〈{S, A, B, C}, {a, b}, S, 〉<br />
S<br />
A<br />
B<br />
C<br />
AB | BC<br />
BA | a<br />
CC | b<br />
AB | a<br />
Gilt w = baaba ∈ L(G) Ja!<br />
0≤j≤5<br />
−<br />
S, C, A<br />
A, S, C<br />
− B B<br />
A, S B S, C A, S<br />
0≤i≤5<br />
B A, C A, C B A, C<br />
b a a b a<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 136 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Die Umwandlung einer allgemeinen kfG in eine der drei Varianten der CNF<br />
verwendet üblicherweise vier Schritte:<br />
(Term) Ersetzen von Konstanten in rechten Seiten der Länge > 1 ;<br />
(Bin) Ersetzen von Produktionen mit zu langer rechter Seite;<br />
(Del) Entfernen von Lösch-Produktionen A ε (nicht bei CNF +ε );<br />
(Unit) Entfernen von Variablenumbenennungen A B.<br />
Die Reihenfolge ihrer Anwendung entscheidet darüber, wie sich die Größe<br />
der Ausgangsgrammatik G ändert: (Del) vor (Bin) kann exponentielles<br />
Wachstum der Grammatik G ′ bewirken!<br />
⊲ Hopcroft/Motwani/Ullman 2001: (Del) ; (Unit) ; (Term) ; (Bin)<br />
liefert |G ′ | ≈ 2 2|G| , was die Authoren aber nicht erwähnen;<br />
⊲ Rich 2007: (Bin) ; (Del) ; (Unit) ; (Term) liefert |G ′ | ≈ |G| 2 ,<br />
was die Authorin auch erwähnt;<br />
Weitere Beispiele finden sich in Tabelle 3 des Artikels von Lange und Leiß.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 137 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Die Einsicht von Lange und Leiß besteht darin, zwei für die Schritte (Del)<br />
und (Unit) nötigen Hilfsergebnisse statt zur Grammatikumwandlung<br />
direkt beim CYK-Algorithmus einzusetzen.<br />
Darüberhinaus erweist sich der Schritt (Term) als überflüssig, also bleibt<br />
einzig (Bin) übrig, was die Grammatik nur linear vergrößern kann.<br />
Liegt G schon in CNF −ε oder CNF vor, kann der CYK-Algorithmus wie<br />
bisher direkt angewendet werden: die Berechnung der Hilfsergebnisse<br />
erübrigt sich (nicht so im Fall einer allgemeinen 2NF Grammatik).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 138 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Satz<br />
Zu jeder kfG G = 〈V, X , S, 〉 existiert eine äquivalente Grammatik<br />
G ′ = 〈V ′ , X , S,<br />
′ 〉 in 2NF, die in linearer Zeig bzgl. |G| berechnet<br />
werden kann, und deren Größe linear in |G| ist.<br />
Beweis.<br />
Ersetze jede Produktion A x 0 x 1 . . . x n−1 mit x i ∈ V + X und n > 2<br />
durch Produktionen<br />
A<br />
′ x 0 B 1 , B 1 ′ x 1 B 2 , . . . , B n−2 ′ x n−2 x n−1<br />
wobei die B i , 0 < i < n − 1 spezifische neue Variable für die<br />
ursprüngliche Produktion sind. Dies erfordert einen Durchlauf durch die<br />
Grammatik G , und die Anzahl der neuen Variablen ist durch |G|<br />
beschränkt. Die Äquivalenz folgt sofort aus der Betrachtung der<br />
Ableitungsbäume.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 139 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Definition<br />
Die Menge der nullierbaren Variablen einer kfG G = 〈V, X , S,<br />
〉 ist<br />
E G := { A ∈ V : A + ε }<br />
während ihre Einheitsrelation gegeben ist durch<br />
U G := { 〈A, y〉 ∈ V × (V + X ) : ∃α, β ∈ E ∗ G . A αyβ }<br />
Lemma<br />
Jede kfG G = 〈V, X , S,<br />
〉 erfüllt E G = E |V| , wobei<br />
E 0 = { A ∈ V : A ε } und E i+1 = E i ∪ { A ∈ V : ∃α ∈ E + i<br />
. A α }<br />
Beweis.<br />
Hausaufgabe.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 140 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Algorithmus (Berechnung der nullierbaren Variablen in linearer Zeit)<br />
Eingabe: eine kfG G = 〈V, X , S, 〉 in 2NF<br />
Ausgabe: Menge E der nulierbaren Variablen<br />
Initialisierung: E := ∅ ; T : ∅ ; for all A ∈ V do o(A) := ∅ ;<br />
for all A B do o(B) := o(B) ∪ {A} ;<br />
for all A BC do o(B) := o(B) ∪ {〈A, C〉} ; o(C) := o(C) ∪ {〈A, B〉} ;<br />
for all A ε do E := E ∪ {A} ; T := T ∪ {A} ;<br />
while T ≠ ∅ do<br />
entferne ein B aus T ;<br />
for all A, 〈A, C〉 ∈ o(B) mit C ∈ E do<br />
if A /∈ E then E := E ∪ {A} ; T := T ∪ {A} ;<br />
return E<br />
Satz<br />
Zeit- und Raumbedarf des obigen Algorithmus sind linear in |G| .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 141 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Satz<br />
Für eine kfG G in 2NF sind Zeit- und Raumbedarf bei der Berechnung<br />
der Einheitsrelation U G linear in |G| .<br />
Beweis.<br />
Wir betrachten U G als Graph auf der Menge V + X . Nach Berechnung<br />
von E G wird für jede Produktion A y, A By oder A yB mit B<br />
nullierbar die Kante 〈A, y〉 hinzugefügt.<br />
Satz<br />
Für jedes y ∈ V + X ist der Zeit- und Raumbedarf bei der Berechnung<br />
der Menge U ∗ G (y) ihrer U∗ G<br />
-Vorgänger linear in |G| .<br />
Beweis.<br />
Die Berechnung der Erreichbarkeitsrelation in einem Graphen ist linear in<br />
der Summe der Knoten- und Kantenzahl.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 142 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
CYK(LL)-Algorithmus (explizite Version)<br />
Eingabe: kfG G = 〈V, X , S, 〉 in 2NF, U G , w = s 0 . . . s n−1 ∈ X +<br />
Ausgabe: Entscheidung, ob w ∈ L(G) .<br />
for i < n do V i,i := U ∗ G (s i)<br />
for 0 < j < n do<br />
for j > i > 0 do V ′ i,j := ∅ ;<br />
for i ≤ h < j do<br />
for all A yz<br />
if y ∈ V i,h and z ∈ V h+1,j then V ′ i,j := V′ i,j ∪ {A}<br />
V i,j := U ∗ G [V′ i,j ] = ⋃ y∈V ′ U ∗ i,j G<br />
(y) ′<br />
if S ∈ V 0,n−1<br />
then return “yes” else return “no”<br />
Satz<br />
Der Zeit- und Raumbedarf des obigen Algorithmus bewegt sich in der<br />
Größenordnung von |G| · |w| 3 bzw. |G| · |w| 2 .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 143 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Da die Größe der binäre Normalform und der Zeitbedarf für die<br />
Berechnung von E G und U G linear in |G| sind, ergibt sich<br />
Corollar<br />
Die Lösung des Wort-Problems für eine kfG G und ein Wort der Länge n<br />
benötigt größenordnungsmäßig |G| · n 3 Zeit und |G| · n 2 Raum.<br />
Beispiel<br />
Über dem Alphabet X = {a, b, 0, 1, (, ), +, ∗} betrachten wir die<br />
Grammatik G = 〈{E, T , F , I }, X , E, 〉 mit folgenden Produktionen<br />
E<br />
T | E + T<br />
F<br />
aI | bI | (E)<br />
T<br />
F | T ∗ F<br />
I<br />
0I | 1I | ε<br />
Nachzählen liefert 4 Variable, 10 Produktionen und |G| = 29 .<br />
Offenbar handelt es sich bei L(G) um die Sprache der arithmetischen<br />
Ausdrücke in + und ∗ , mit Identifiern der Form u ∈ {a, b}{0, 1} ∗ .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 144 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Beispiel (Fortsetzung)<br />
Die Umformung in binäre Normalform liefert die G ′ -Produktionen<br />
E<br />
T<br />
T | EQ<br />
F | TR<br />
Q<br />
R<br />
+ T<br />
∗ F<br />
F aI | bI | (S<br />
I 0I | 1I | ε<br />
S E)<br />
Nachzählen liefert 7 Variable, 13 Produktionen und |G ′ | = 35 .<br />
Nur I is nullierbar, also E G = {I } . Weiter gilt<br />
U G ′ = {〈E, T 〉, 〈T , F 〉, 〈F , a〉, 〈F , b〉, 〈I , 0〉, 〈I , 1〉}<br />
woraus sich z.B. folgende Vorgängermengen ergeben<br />
U ∗ G (a) = {a, E, T , F } U ∗ G (0) = {0, I } U ∗ G (T ) = {T , E}<br />
U ∗ G (b) = {b, E, T , F } U ∗ G (F ) = {F , T , E} (I ) = {I }<br />
U ∗ G<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 145 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Beispiel (Fortsetzung)<br />
Wir prüfen, ob w = (a0 + b) ∗ a zu L(G) gehört: gilt E ∈ V 0,7 Ja!<br />
T E<br />
0 ≤ j ≤ 7<br />
−<br />
−<br />
E, T<br />
F − −<br />
− S − −<br />
0 ≤ i ≤ 7<br />
− E − − −<br />
− − − − − −<br />
E, T<br />
− F − Q S − R<br />
E, T , F I E, T , F E, T , F<br />
( a 0 + b ) ∗ a<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 146 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Beispiel<br />
Wandelt man die obige Grammatik G = 〈{E, T , F , I }, X , E,<br />
Produktionen<br />
E T | E + T F aI | bI | (E)<br />
T<br />
F | T ∗ F<br />
I<br />
0I | 1I | ε<br />
〉 mit den<br />
gemäß (Del) ; (Unit) ; (Term) ; (Bin) mechanisch(!) in CNF um, so<br />
erhält man eine hochgradig redundante Grammatik der Größe 84:<br />
E AI | a | BI | b | (Q 0 | TR 0 | ES 0<br />
T AI | a | BI | b | (Q 1 | TR 1<br />
F AI | a | BI | b | (Q 2<br />
I CI | 0 | DI | 1<br />
Q 0 E)<br />
Q 1 E)<br />
Q 2 E)<br />
R 0<br />
R 1<br />
∗ F<br />
∗ F<br />
S 0 + T A a<br />
während (Del) ; (Unit) ; (Term) ; (Bin) ebenfalls viel Redundanz und<br />
eine Größe von 75 liefert:<br />
E<br />
T<br />
AI | a | BI | b | (Q | TR | ES<br />
AI | a | BI | b | (Q | TR<br />
F AI | a | BI | b | (Q<br />
I CI | 0 | DI | 1<br />
Q E)<br />
R<br />
S<br />
∗ F<br />
+ T<br />
A<br />
B<br />
a<br />
b<br />
C 0<br />
D 1<br />
B<br />
b<br />
C 0<br />
D 1<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 147 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Im Falle einer kfG in CNF kann man aus CYK-Tabellen durch<br />
Rückverfolgung des Startsymbols direkt Ableitungsbäume extrahieren:<br />
Beispiel ( S AB | BC, A BA | a, B CC | b, C AB | a )<br />
−<br />
S, C, A<br />
A, S, C<br />
A<br />
S<br />
0<br />
B<br />
−<br />
B<br />
B<br />
B<br />
2<br />
A<br />
C<br />
4<br />
C<br />
A, S<br />
B<br />
S, C<br />
A, S<br />
5<br />
3<br />
A<br />
6<br />
B<br />
7<br />
B<br />
A, C A, C B<br />
A, C<br />
b a a b a<br />
b<br />
a<br />
3<br />
a<br />
5<br />
b<br />
a<br />
Es kann mehrere solche Ableitungsbäume geben. Im obigen Beispiel kann<br />
man statt mit der Produktion S AB (Nr. 0) auch mit S BC (Nr. 1)<br />
beginnen, wie umseitig ausgeführt wird.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 148 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Beispiel ( S AB | BC, A BA | a, B CC | b, C AB | a )<br />
−<br />
−<br />
S, C, A<br />
B<br />
A, S, C<br />
B<br />
A, S B S, C A, S<br />
B<br />
A, C<br />
A, C B<br />
A, C<br />
b a a b a<br />
S<br />
B<br />
1<br />
C<br />
5<br />
A<br />
6<br />
B<br />
b 4<br />
C<br />
4<br />
C<br />
a<br />
A<br />
3<br />
6<br />
B<br />
5<br />
7<br />
a<br />
a<br />
b<br />
Bei einer 2NF, die keine CNF ist, wird der resultierende Baum beim<br />
Auftreten von echten U ∗ G<br />
-Vorgängern neben G -Produktionen noch<br />
Knoten enthalten, die G -Ableitungen der Form A<br />
∗ y mit A ∈ V und<br />
y ∈ V + X entsprechen, in deren Verlauf evtl. Variablen nulliert werden.<br />
Um einen echten G -Baum zu erhalten, sind diese Knoten durch die<br />
entsprechenden Ableitungen zu ersetzen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 149 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Die Greibach Normalform (GNF)<br />
Definition<br />
Eine kfG G hat Greibach Normalform (GNF), falls alle Produktionen die<br />
Form A aP ∈ X V ∗ oder S ε haben, wobei im letzteren Fall S nicht<br />
auf der rechten Seite einer Produktion auftreten darf.<br />
Insbesondere werden hier nichtleere Wörter von links nach rechts mit<br />
genau einer neuen Konstante pro Ableitungsschritt erzeugt.<br />
Jede(r) Ableitung(sbaum) für w ∈ X + enthält |w| Produktionen;<br />
das erlaubt wie oben die Definition einer Entscheidungsprozedur für<br />
die Zugehörigkeit zu L(G) ;<br />
Grammatiken in GNF können sehr leicht in Kellerautomaten (verl.<br />
nächster Abschnitt) ohne ε-Übergänge umgewandelt werden. Diese<br />
sind insofern nützlich, als sie immer terminieren.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 150 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Leider ist die Umwandlung einer beliebigen kfG in eine äquivalente kfG in<br />
GNF noch umständlicher, als die Umwandlung in CNF. Insofern gehen die<br />
Beweis der folgenden Ergebnisse über den Rahmen dieser Vorlesung hinaus.<br />
Lemma<br />
Jede kf Sprache wird durch eine kfG G = 〈V, X , S,<br />
höchstens S nullierbar ist;<br />
Konstanten nur in Produktionen der Form A<br />
keine links-rekursive Produktion der Form U<br />
vorkommt.<br />
〉 erzeugt, bei der<br />
a ∈ X auftreten;<br />
Uv ∈ {U}(V + X ) ∗<br />
Während die ersten beiden Bedingungen mittels (Del) und (Term)<br />
realisiert werden können, ist die dritte nicht so einfach umzusetzen.<br />
Satz<br />
Jede kontextfreie Sprache wird durch eine kfG in GNF erzeugt.<br />
Aber einige Konsequenzen sind durchaus für uns interessant:<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 151 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Proposition<br />
Für jede kontextfreie Sprache M ∈ X ∗ und jedes Wort w ∈ X ∗ sind die<br />
Residuierungen {w}\M bzw M/{w} wieder kontextfrei.<br />
Beweis.<br />
Es genügt, sich auf Wörter der Form a ∈ X zu beschränken. Wähle eine<br />
Grammatik G = 〈V, X , S, 〉 mit L(G) = M in GNF, bei der oBdA S<br />
nicht auf der rechten Seite einer Produktion vorkommt.<br />
Wir ersetzen jede Produktion @ aT ∈ X V ∗ durch @ T , entfernen<br />
alle Produktionen @ bT mit b ≠ a und erhalten eine kfG G ′ . Der<br />
Vergleich der G -Ableitungsbäume und der G ′ -Ableitungsbäume zeigt<br />
L(G ′ ) = {a}\M . Aufgrund der Abgeschlossenheit kontextfreier Sprachen<br />
unter Spiegelung ist auch M/{a} kontextfrei.<br />
Dieses Ergebnis eignet sich wie das Lemma von Ogden bzw. das PL(kf)<br />
zur Widerlegung der Kontextfreiheit mancher Sprachen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 152 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Beispiel<br />
Wir wissen bereits, daß die Sprache L = { a i b j c k d l : i = j = k ∨ l = 0 }<br />
nicht kontextfrei ist. Mit Hilfe des obigen Ergebnisses können wir aber das<br />
Lemma von Ogden umghen: Da folgende Sprache nicht kontextfrei ist<br />
L/{d}∩{a, b, c} ∗ = { a n b n c n :n ∈ N }{d} ∗ ∩{a, b, c} ∗ = { a n b n c n :n ∈ N }<br />
können weder L/{d} (wegen der Regularität von {a, b, c} ∗ ) noch L<br />
(nach obigem Satz) kontextfrei sein.<br />
Achtung: Hierdurch wird das Lemma von Ogden nicht überflüssig!<br />
Man betrachte etwa die Sprache<br />
L ′ = { a i b j c k d l : i = j = l ∨ k = 0 }<br />
Hier hilft der Residuierungstrick nicht weiter, während das Lemma von<br />
Ogden wie zuvor angewendet werden kann.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 153 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Satz<br />
Homomorphe Urbilder kontextfreier Sprachen sind wieder kontextfrei.<br />
Beweis.<br />
h<br />
Jeder Homomorphismus X ∗ Y ∗ ist durch seine Einschränkung<br />
X i X ∗ h<br />
Y ∗ eindeutig bestimmt. Ist G = 〈V, Y , S, 〉 eine kfG in<br />
GNF mit L(G) = M , so konsturiere h −1 [G] = 〈V, X , S,<br />
′ 〉 wie folgt:<br />
Falls für U ∈ V und a ∈ X eine G -Ableitungen der Form U<br />
∗ h(a)W<br />
mit W ∈ V ∗ existiert, so ist U ′ aW eine Produktion von h −1 [G] .<br />
Ersetzt man in einem h −1 [G]-Ableitungsbaum von w ∈ L(h −1 [G]) jeden<br />
Knoten durch den entsprechenden G -Baum, so erhält man einen<br />
G -Ableitungsbaum von h(w) ∈ M , d.h., w ∈ h −1 [M] . Umgekehrt lassen<br />
sich in einem G -Ableitungsbaum von h(s 0 s 1 . . . s n−1 ) ∈ M Teilbäume<br />
zusammenfassen, deren Ausgaben mit h(s i ) , i < n , beginnen. Daher<br />
folgt s 0 s 1 . . . s n−1 ∈ L(h −1 [G]) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 154 / 191
Kontextfreie Sprachen<br />
Normalformen und Anwendungen<br />
Wozu sind Ergebnisse über homomorphe Bilder bzw. Urbilder gut<br />
Definition<br />
Die Dyck-Sprache D 1 über dem Alpahbet {(, )} aus einer öffnenden<br />
Klammer ( und einer schließenden Klammer ) besteht aus allen “korrekt<br />
geklammerten Ausdrücken”.<br />
Offenbar ist D 1 kontextfrei; sie wird z.B. von der kfG 〈{S}, {(, )}, S, 〉<br />
mit den Produktionen S ε | (S) | SS erzeugt.<br />
Der folgende Satz geht weit über den Rahmen dieser Vorlesung hinaus, ist<br />
aber eines the Highlights der Theorie formaler Sprachen (und hoffentlich<br />
ein Appetithappen für eine entsprechende Vorlesung):<br />
Satz (Chomsky-Schützenberger (1963))<br />
Jede kontextfreie Sprache ist homomorphes Bild eines Durschschnitts einer<br />
regulären Sprache mit einem homomorphen Urbild von D 1 .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 155 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Kellerautomaten<br />
Ziel: den Begriff des endlichen Automaten so zu verallgemeinern, daß<br />
genau die kontextfreien Sprachen akzeptiert werden. Als Sonderfall sollen<br />
sich endliche Automaten ergeben, die alle regulären Sprachen erkennen.<br />
Problem: Um eine kontextfreie aber nicht reguläre Sprache akzeptieren zu<br />
können, brauchen wir zwingend eine abzählbar unendliche Zustandsmenge.<br />
Ausweg: Zu jedem Zeitpunkt wird nur ein endlicher Teil dieser<br />
Zustandsmenge “sichtbar” bzw. zugänglich sein (Eisbergprinzip). Genauer:<br />
wir verwenden ein cartesisches Produkt einer endliche Menge “äußerer<br />
Zustände” (wie bei endlichen Automaten) und einer abzählbaren<br />
Parametermenge der Form B ∗ für B endlich. Für nichtleere Parameter<br />
möge nur das erste Symbol “sichtbar” sein. Falls B = ∅ , also B ∗ = {ε} ,<br />
soll der Automat wie ein εNEA aussehen. Im allgemeinen Fall kann ein<br />
Zustandswechsel auch den Wert des Parameters durch Ersetzen des<br />
“sichtbaren” Teils ändern, wobei der “unsichtbare” Teil wachsen kann.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 156 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Weitere Vorüberlegungen:<br />
⊲ Endliche Automaten erkennen Wörter in einem Durchlauf von links<br />
nach rechts, wobei NEAs (wie auch (v)DEAs) pro Schritt genau einen<br />
und εNEAs höchstens einen Buchstaben abarbeiten.<br />
⊲ Wie auf Seite 116/117 gesehen, entsprechen NEAs mit einem<br />
Anfangszustand dabei im Wesentlichen rechts-linearen kfG’n in GNF:<br />
zunächst wird pro Ableitungsschritt eine Konstante erzeugt; zum<br />
Schluß wird die Variable entfernt oder durch eine Konstante ersetzt.<br />
⊲ Für allgemeine kfG’n in GNF ist der Verbleib der zusätzlichen<br />
Output-Variablen zu klären. Diese sind zwecks späterer Verwendung<br />
zwischenzuspeichern, brauchen aber erst sichtbar zu werden, wenn<br />
alle vorherigen Variablen verbraucht worden sind.<br />
⊲ Letztlich existiert für jede kfG ein Automat, bei dem (V + X ) ∗ zur<br />
cumulativen Speicherung der bisher nicht bearbeiteten Teile der<br />
rechten Seiten bisher verwendeter Produktionen dient.<br />
Wir führen nun den Datentyp des “Kellers” bzw. “Stacks” ein.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 157 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Definition<br />
Für eine Menge B besteht ein Keller oder Stack vom Typ B aus der<br />
Menge B ∗ zusammen mit zwei inversen Operationen<br />
definiert durch<br />
{ε} + B × B ∗<br />
push<br />
pop<br />
push(ε) = ε , push(b, m) := bm<br />
{<br />
〈b, n〉 falls m = bn mit b ∈ B und n ∈ B ∗ ;<br />
pop(m) =<br />
ε falls m = ε.<br />
Wir vereinbaren, Stacks horizontal als Wörter über B zu schreiben und<br />
von links zu befüllen, damit liefert pop im nichtleeren Fall das erste<br />
Element und den verbleibenden Rest-Stack.<br />
B ∗<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 158 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Definition (Kellerautomat)<br />
Ein Kellerautomat K = 〈Q, B, X , δ, I , F 〉 besteht aus<br />
einer endlichen Menge Q äußerer Zustände;<br />
einer endlichen Menge B (Kelleralphabet) und einem Alphabet X ;<br />
Relationen Q × (B ε )<br />
δ(a)<br />
Q × B ∗ für a ∈ X ε ;<br />
Mengen von (äußeren) Anfangs- bzw. Endzuständen I , F ⊆ Q .<br />
K heißt deterministisch, sofern<br />
es höchstens einen Anfangszustand q 0 gibt;<br />
die Relationen δ(a) , a ∈ X ε , sämtlich partielle Funktionen sind;<br />
D(δ(ε)) ∩ D(δ(a)) = ∅ für alle a ∈ X ;<br />
F ; δ(ε) ⊆ F .<br />
Achtung: Für B = ∅ erhalten wir im Wesentlichen die Definition eines<br />
εNEA, denn in diesem Fall ist B ε = {ε} + B ∼ = B ∗ = {ε} ein-elementig.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 159 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Bei den Zuständen sollte eigentlich unterschieden werden zwischen<br />
globalem oder parametrisiertem Zustand 〈q, m〉 ∈ Q × B ∗ , in dem<br />
sich der Automat K befindet; falls B ≠ ∅ ist diese Menge unendlich;<br />
äußerem Zustand q ∈ Q als Bindeglied zu εNEAs ( B = ∅ );<br />
innerem Zustand m ∈ B ∗ zur Speicherung unbeschränkt großer<br />
endlicher Informationen, von denen nur eine aktuell zugänglich ist;<br />
sichtbarem Zustand 〈q, b〉 ∈ Q × B ε , der die aktuell möglichen<br />
Übergänge bestimmt; diese Menge ist endlich.<br />
Arbeitsweise eines Kellerautomaten:<br />
⊲ Pro Schritt wird höchstens ein Buchstabe der Eingabe verarbeitet;<br />
⊲<br />
Übergänge beschreiben differenzielle Zustandsänderungen abhängig<br />
vom “sichtbaren” Teil des aktuellen Kellers ( b für bm ∈ B + , bzw. ε<br />
sonst). Neben einer Änderung des äußeren Zustands ersetzt ein Wort<br />
r ∈ B ∗ den “sichtbaren” Teil des Kellers; mit r = ε kann ein<br />
vorhandenes Top-Element gelöscht werden;<br />
⊲ am Anfang und Ende möge der Keller leer sein (Konvention).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 160 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Definition<br />
Elemente von Q × B ∗ × X ∗ heißen Konfigurationen des Kellerautomaten.<br />
Interpretation: aktueller globaler Zustand und Rest der Eingabe.<br />
〈q, bm, au〉 ⊢ 〈p, rm, u〉 gdw a ∈ X ε ∧ 〈〈q, b〉, 〈p, r〉〉 ∈ δ(a)<br />
〈q, ε, au〉 ⊢ 〈p, r, u〉 gdw a ∈ X ε ∧ 〈〈q, ε〉, 〈p, r〉〉 ∈ δ(a)<br />
spezifizieren eine Relation ⊢ (Folgekonfiguration) auf Q × B ∗ × X ∗ .<br />
Definition<br />
K = 〈Q, B, X , δ, I , F 〉 akzeptiert w ∈ X ∗ , falls Zustände q ∈ I und<br />
p ∈ F existieren mit 〈q, ε, w〉 ⊢ ∗ 〈p, ε, ε〉 .<br />
Einschub: Die relationale Beschreibung der Akzeptanz erfordert absolute<br />
statt differentielle Zustandsänderungen, daher ist Q × B ε δ(a)<br />
Q × B ∗ ,<br />
a ∈ X ε , in Q × B ∗ γ(a)<br />
Q × B ∗ umzuwandeln:<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 161 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Definition<br />
Q × B ∗<br />
γ(a)<br />
Q × B ∗<br />
Q × pop<br />
Q × (〈id, ι〉 + B × B ∗ )<br />
Q × ({ε} + B × B ∗ )<br />
Q × B ∗ × B ∗<br />
Q × concat<br />
δ(a) × B ∗<br />
Q × ({ε} × B ∗ + B × B ∗ )<br />
∼=<br />
Q × ({ε} + B) × B ∗<br />
id<br />
〈id, ι〉 faßt die Spanne {ε} {ε} B ∗ aus Identität und Inklusion<br />
zu einer Abbildung {ε} {ε} × B ∗ zusammen. Die Distributivität von<br />
× über + liefert den unteren Isomorphismus.<br />
Die Akzeptanz von Wörtern durch Kellerautomaten kann nun wie für<br />
εNEAs mittels Relationenprodukten der γ(a) , a ∈ X , formuliert werden.<br />
Wir werden das hier aber nicht weiterverfolgen.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 162 / 191<br />
ι
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Darstellung von Kellerautomaten<br />
Wir entwickeln die graphische Darstellung von εNEAs fort. Falls b ∈ B ε<br />
so schreiben wir<br />
q<br />
b/a/r<br />
p<br />
anstelle von<br />
〈〈q, b〉, 〈p, r〉〉 ∈ δ(a)<br />
(Äußere) Anfangs- und Endzustände werden markiert wie zuvor.<br />
Auch wenn die resultierenden Graphen äußerlich den bekannten εNEAs<br />
entsprechen, ist zu beachten, daß die neuen Pfeile nicht notwendig<br />
komponierbar sind, da ihre Label auch Zustandsinformationen tragen:<br />
b/a/r b ′ /a ′ /r ′ ist (nicht) komponierbar, sofern<br />
q p o<br />
r ∈ B + (nicht) mit b ′ beginnt.<br />
Falls r = ε , kommt es auf das aktuelle Stack-Element unterhalb von b ′<br />
an, ob eine Komposition möglich ist.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 163 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Im Gegensatz zu εNEAs stellen die Graphen für Kellerautomaten keine<br />
lauffähigen Automaten dar, sondern sind bloß Alternativen zur tabellarischen<br />
Darstellung von δ . Um einen Durchlauf des Kellerautomaten<br />
nachzuvollziehen, ist zwingend über den gesamten Kellerinhalt<br />
buchzuführen, wie das etwa in Konfigurationen geschieht.<br />
Beispiel<br />
Die Dyck-Sprache D 1 der korrekt geklammerten Ausdrücke über den<br />
Alphabet X = {(, )} mit öffnender Klammer ( und schließender Klammer<br />
) wird von der kfG 〈{S}, {(, )}, S, 〉 mit den Produktionen<br />
S ε | (S) | SS erzeugt, und vom KA 〈{q 0 }, {(}, {(, )}, δ, {q 0 }, {q 0 }〉 mit<br />
folgenden Übergängen erkannt:<br />
start<br />
q 0<br />
ε/(/(<br />
(/)/ε<br />
(/(/((<br />
( )<br />
q 0 ε q 0 ( I , F<br />
( q 0 (( q 0 ε<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 164 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Beispiel<br />
Die Sprache L = { a n b n : n ∈ N } hat zwar eine einfachere Beschreibung<br />
als D 1 , benötigt aber einen Kellerautomaten mit zwei Zuständen. Das<br />
folgt weil L ≠ L ⋆ , wohingegen D 1 = D ⋆ 1 gilt. Ein Kellerautomat<br />
〈{q 0 , q 1 }, {a}, {a, b}, δ, {q 0 }, {q 0 , q 1 }〉 für L ist gegeben durch<br />
ε/a/a<br />
start<br />
q 0<br />
a/a/aa<br />
a/b/ε<br />
q1<br />
a/b/ε a b<br />
q 0 ε q 0 a I , F<br />
a q 0 aa q 1 ε<br />
q 1 ε F<br />
a q 1 ε<br />
Zwar hatten wir zur Motivation von Kellerautomaten speziell Grammatiken<br />
in GNF betrachtet, die den buchstabenweisen Aufbau der Wörter von links<br />
nach rechts ermöglichen, aber die folgende Idee, kfG’n in Kellerautomaten<br />
zu übersetzen,funktioniert auch im allgemeinen Fall:<br />
Verwende den Stack zur Simulation der Produktionen<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 165 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Definition<br />
Zu einer kfG G = 〈V , X , S, 〉 definieren wir einen Kellerautomaten<br />
K(G) = 〈{q 0 , q 1 }, V + X , X , δ, {q 0 }, {q 1 }〉 wie folgt:<br />
start<br />
q 0<br />
ε/ε/S<br />
q1<br />
U/ε/ω<br />
a/a/ε<br />
mit U ω und a ∈ X<br />
Satz<br />
Jede kfG G = 〈V , X , S, 〉 erfüllt L(G) = L(K(G)) .<br />
Beweis<br />
Betrachte ω = ω 0 . . . ω n−1 ∈ (V + X ) n mit n > 0 und w ∈ X ∗ . Jede<br />
Konfigurationenfolge 〈q 1 , ω, w〉 ⊢ ∗ 〈q 1 , ε, ε〉 und jede Ableitung ω<br />
∗ w<br />
zerlegt w als w = w 0 . . . w n−1 mit 〈q 1 , ω i , w i 〉 ⊢ ∗ 〈q 1 , ε, ε〉 (nach<br />
Definition von K(G) ), bzw. w = w 0 ′ . . . w n−1 ′ mit ω i<br />
∗ w<br />
i ′,<br />
i < n . Dabei<br />
gilt ω i ∈ X gdw w i = ω i bzw. w<br />
i ′ = ω i .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 166 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Beweis (Fortsetzung)<br />
Für U ∈ V setzen wir L U := { w ∈ X ∗ : 〈q 1 , U, w〉 ⊢ ∗ 〈q 1 , ε, ε〉 } bzw.<br />
L ′ U := { w ∈ X ∗ : U ∗ w } sowie L a = L ′ a = {a} .<br />
Induktion über die Tiefe der Ableitungsbäume zeigt: ∀U ∈ V . L ′ U ⊆ L U<br />
Für Produktionen ohne Variablen im Output ist die Behauptung klar.<br />
Wir nehmen an, die Behauptung gilt für Baumtiefe < k . Falls w ∈ L ′ U<br />
einen Baum der Tiefe k benötigt, greift die Behauptung für alle<br />
Unterbäume der ersten Produktion S ω 0 . . . ω n−1 . Konkatenation der<br />
entsprechenden Teilwörter in L ′ ω i<br />
, i < n , liefert die Behauptung.<br />
Umgekehrt stellen wir fest, daß in 〈q 1 , U, w〉 ⊢ ∗ 〈q 1 , ε, ε〉 spontane<br />
Übergänge genau G -Ableitungsschritten entsprechen, während die<br />
nicht-spontanen Übergänge G -erzeugte Konstanten auf dem Stack mit<br />
der Eingabe vergleichen. somit folgt auch ∀U ∈ V . L U ⊆ L ′ U .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 167 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Korollar<br />
Jede kontextfreie Sprache wird von einem Kellerautomaten akzeptiert<br />
Der Nachweis der umgekehrten Richtung ist etwas umständlicher.<br />
Satz<br />
Jede von einem Kellerautomaten akzeptierte Sprache ist kontextfrei.<br />
Beweisidee<br />
Der Kellerautomat K = 〈Q, B, X , δ, I , F 〉 wird zunächst normalisiert zu<br />
K ′ := 〈Q + {i, f }, B + {⊥}, X , δ ′ , {i}, {f }〉 . Für δ ′ -Übergänge gilt:<br />
〈〈q, b〉, 〈p, m〉〉<br />
mit b ∈ B bleibt erhalten;<br />
〈〈q, ε〉, 〈p, m〉〉 wird ersetzt durch 〈〈q, ⊥〉, 〈p, m⊥〉〉;<br />
〈〈i, ε〉, 〈q, ⊥〉〉<br />
〈〈p, ⊥〉, 〈f , ε〉〉<br />
mit q ∈ I wird neu hinzugefügt;<br />
mit p ∈ F wird neu hinzugefügt.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 168 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Beweisidee (Fortsetzung)<br />
Man kann L(K) = L(K ′ ) zeigen; informell arbeitet K ′ nach dem ersten<br />
Übergang wie K , bis auf das Kellerende ⊥ . Ist nach Abarbeitung der<br />
Eingabe ein alter Endzustand erreicht, kann ein Keller der Form ⊥ geleert<br />
werden, was zur Akzeptanz im Zustand f führt.<br />
Für jedes 〈q, b, p〉 ∈ Q × (B + {⊥}) × Q setze<br />
U(q, b, p) := { w ∈ X ∗ : 〈q, b, w〉 ⊢ ∗ 〈p, ε, ε〉 }<br />
Diese Mengen zusammen mit S bilden die Variablen unserer Grammatik.<br />
Die ersten Produktionen sind<br />
S U(q, ⊥, f ) mit q ∈ I und U(p, ⊥, f ) ε mit p ∈ F<br />
Offenbar gilt L(K ′ ) = ⋃ q∈I<br />
U(q, ⊥, f ) . Die übrigen Produktionen werden<br />
durch die K ′ -Übergänge induziert (die Idee dazu liefern Systeme<br />
semantischer Ungleichungen, vergl. S. 109ff).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 169 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Beweisidee (Fortsetzung)<br />
Jeder K ′ -Übergang 〈〈q, c〉, 〈p, b 0 . . . b n−1 〉〉 ∈ δ ′ (a) mit q, p ∈ Q ,<br />
c ∈ B + {⊥} , n ∈ N , b i ∈ B für i < n , a ∈ X ε und jede Zustandsfolge<br />
z ∈ Q n induziert eine Produktion<br />
U(q, c, z n−1 ) aU(p, b 0 , z 0 )U(z 0 , b 1 , z 1 ) . . . U(z n−2 , b n−1 , z n−1 )<br />
Interpretation: der Übergang von q in den Zustand z n−1 unter Abbau<br />
genau eines Stackelements c kann mittels eines Worts aw 0 . . . w n−1<br />
erfolgen, falls nach Verarbeitung des Inputs a , Übergang in den Zustand<br />
p und Aufstocken des Stacks um b 0 . . . b n−1 dieser mittels der Wörter w i<br />
und der Zwischenzustände z i wieder abgebaut werden kann.<br />
Mit den früheren Produktionen zeigt dies L(G) = L(K ′ ) = L(K)<br />
Obige Produktionen haben fast Greibach Normalform, allerdings<br />
müssen die Outputs nicht mit einer Konstante beginnen.<br />
I.A. sind viele Variablen unproduktiv oder unerreichbar.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 170 / 191
Kontextfreie Sprachen<br />
Kellerautomaten<br />
Erlaubt man mehr als einen Stack, können Sprachen akzeptiert werden, die<br />
nicht kontextfrei sind:<br />
Beispiel<br />
L = { a n b n c n : n ∈ N } wird von einer 2-Stack-Maschine akzeptiert: Idee:<br />
ausgehend von zwei leeren Stacks befülle den ersten Stack mit allen<br />
Symbolen a , den zweiten Stack mit allen Symbolen b und überprüfe, ob<br />
die Anzahl der Symbole c mit der Länge beider Stacks übereinstimmt.<br />
Auf diese Weise erhalten wir eine Hierarchie von Maschinen:<br />
⊲ Kellerautomaten “ohne Stack” ( B = ∅ ), d.h., εNEAs; diese erkennen<br />
genau die regulären Sprachen;<br />
⊲ (normale) Kellerautomaten mit einem Stack; diese erkennen genau die<br />
kontextfreien Sprachen;<br />
⊲ Kellerautomaten mit zwei Stacks; diese erweisen sich als äquivalent zu<br />
(den populäreren) Turing-Maschinen und sind die mächtigsten<br />
bekannten Automaten. Erlaubt man mehr als zwei Stacks, wird die<br />
Klasse der akzeptierten Sprachen nicht größer (vergl. TheoInf2).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 171 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Definition<br />
Eine Sprache heißt deterministisch kontextfrei, wenn sie von einem<br />
deterministischen Kellerautomaten erkannt werden kann.<br />
Beispiel<br />
Die Sprachen D 1 und { a n b n : n ∈ N } sind deterministisch kontextfrei,<br />
denn die auf den Seiten 152 bzw. 153 angegebenen Kellerautomaten für<br />
diese Sprachen sind deterministisch:<br />
In beiden Fällen gibt es keine spontanen Übergänge. Damit reduziert sich<br />
die Überprüfung des Determinismus darauf festzustellen, ob mehrere<br />
Kanten vom selben sichtbaren Zustand aus dasselbe mittlere Label tragen.<br />
Proposition<br />
Die Klasse der deterministisch kontextfreien Sprachen enthält die Klasse<br />
der reguären Sprachen echt.<br />
Aber ist jede kontextfreie Sprache schon deterministisch kontextfrei<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 172 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Satz<br />
Durchschnitte von regulären mit (deterministisch) kontextfreien Sprachen<br />
sind wieder (deterministisch) kontextfrei.<br />
Beweis.<br />
Betrachte Kellerautomaten K i = 〈Q i , B i , X i , δ i , I i , F i 〉 , i < 2 , mit<br />
B 0 = ∅ . Also ist K 0 ein verkappter εNEA. Der Durchschnittsautomat<br />
K := 〈Q 0 × Q 1 , B, X 0 ∩ X 1 , δ, I 0 × I 1 , F 0 × F 1 〉 habe folgende Übergänge:<br />
b/a/r<br />
〈q, p〉 〈q ′ , p ′ 〉 in K<br />
gdw<br />
a<br />
q q ′ in K 0<br />
b/a/r<br />
p p ′<br />
in K 1<br />
Akzeptierende K -Berechnungen entsprechen genau Paaren akzeptierender<br />
K i -Berechnungen, folglich gilt L(K 0 ∩ K 1 ) = L(K 0 ) ∩ L(K 1 ) .<br />
Im Falle von B 0 ≠ ∅ können wir keinen gemeinsamen Stack finden, da die<br />
Längen der Einzel-Stacks im Allgemeinen unabhängig fluktuieren.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 173 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Proposition<br />
Für eine deterministisch kontextfreie Sprache L ∈ X ∗<br />
und k ∈ N ist auch<br />
deterministisch kontextfrei.<br />
P k (L) = { w ∈ L : |{ u ∈ L : u ≤ w }| = k }<br />
Beweisidee<br />
Ausgehend von einem deterministischen Kellerautomaten K für L ersetzt<br />
man die Menge Q der äußeren Zuständen durch Q × (k + 1) × 2 .<br />
Die erste der “Buchhaltungkomponenten” zählt, wieviele Präfixe des zu<br />
bearbeitenden Wortes bereits als Elemente von L identifiziert wurden.<br />
Solange diese Zahl kleiner ist als k , drückt die zweite, Boole’sche,<br />
Komponente aus, ob die Eingabe schon mitgezählt wurde. Sonst<br />
verwendet man sie um festzustellen, ob Anzahl der Präfixe in L mit k<br />
übereinstimmt, oder größer ist. Dies funktioniert, da alle Wörter aus L<br />
genau eine Berechnung haben.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 174 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Beispiel<br />
Annahme: die kontextfreie Sprache L = { w sp(w) : w ∈ {a, b} ∗ } ist<br />
deterministisch kontextfrei. Dann hat auch die Sprache L ′ := P 3 (L) ∩ R<br />
mit R = L ((ab) + (ba) + (ab) + (ba) + ) diese Eigenschaft. L ′ enthält alle<br />
Wörter r sp(r) ∈ R mit einem echten Präfix ε ≠ t sp(t) . Falls t mit a<br />
endet, folgt t = r , Widerspruch. Also muß t mit b enden. Symmterrie<br />
und die Präfixeigenschaften zeigen<br />
L ′ = { (ab) p (ba) p+j (ab) p+j (ba) p : p > 0 ∧ j ∈ N }<br />
Für n > 0 betrachte eine Zerlegung (ab) n (ba) n (ab) n (ba) n = vwxyz mit<br />
wy ≠ ε und |wxy| ≤ n . Damit u k = vw k xy k z ∈ L ′ für alle k ∈ N ,<br />
dürfen aa und bb weder in w noch in y enthalten sein. Falls w in<br />
einem Teilwort (ab) n bzw (ba) n enthalten ist, muß y im folgenden<br />
Teilwort (ba) n bzw. (ab) n enthalten sein, woraus u 0 /∈ L ′ folgt. Nach<br />
dem PL(kf) ist L ′ also nicht kontextfrei, und somit L ebensowenig.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 175 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Die Klasse der deterministisch kontextfreien Sprachen hat recht<br />
ungewöhnliche Abschlußeigenschaften:<br />
⊲ nicht unter binären Durchschnitten, vergl. HA.;<br />
⊲ unter Komplementbildung (umständlich); aufgrund der<br />
de Morgan’schen Regeln also nicht unter binären Vereinigungen;<br />
⊲ weder unter Konkatenation noch unter Iteration;<br />
⊲ nicht unter der Spiegeloperation. Dies schließt eine Charakterisierung<br />
der deterministisch kontextfreien Sprachen durch eine leicht<br />
beschreibbare Klasse von kontextfreien Grammatiken aus.<br />
Insbesondere kann es nicht genügen zu fordern, daß jede Variable nur<br />
als Input einer einzigen Produktion auftritt.<br />
Von Programmiersprachen muß man verlangen, daß sie in geeigneter Form<br />
deterministisch und mit Hilfe von Grammatiken darstellbar sind.<br />
Möglicherweise haben wir hier eine Demarkationslinie zwischen Mathematik<br />
und <strong>Informatik</strong> erreicht.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 176 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Definition<br />
Unter einem Parser für eine kfG G versteht man ein Programm, das die<br />
Zugehörigkeit eines Worts w zu L(G) entscheidet, indem es einen<br />
Ableitungsbaum konstruiert.<br />
Wir sind natürlich vorrangig an deterministischen Parsern interessiert.<br />
Definition<br />
Unter einer LR(k)-Grammatik G versteht man eine kfG, für die ein<br />
deterministischer Parser existiert, der für jedes w ∈ L(G) in einem<br />
Durchlauf von links eine Rechtsableitung von w erzeugt und dabei<br />
höchstens k Symbole im Voraus liest.<br />
Definition<br />
Eine kontextfreie Sprache heißt LR(k)-Sprache, wenn sie von einer<br />
LR(k)-Grammatik erzeugt werden kann.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 177 / 191
Kontextfreie Sprachen<br />
Deterministisch kontextfreie Sprachen<br />
Die folgenden Ergebnisse werden sicherlich in anderen praxisorientierten<br />
Vorlesungen angesprochen werden:<br />
Satz<br />
Die Klasse der deterministisch kontextfreien Sprachen ist die Vereinigung<br />
der Klassen aller LR(k)-Sprachen mit k ∈ N .<br />
Satz<br />
Für jedes k ∈ N ist die Klasse der LR(k)-Sprachen in der Klasse der<br />
LR(1)-Sprachen enthalten. Damit entspricht letztere der Klasse der<br />
deterministisch kontextfreien Sprachen.<br />
LR(1)-Sprachen erlauben einen tabellen-basierten Anzatz zum<br />
deterministischen Parsen; leider können diese Tabellen unpraktikabel groß<br />
werden.<br />
Eine eingeschränkte Klasse läßt sich aber mit sogenannten LARL-Parsern<br />
(lookahead LR-Parsern) effizient behandeln, und dies schließt fast alle in<br />
der (<strong>Informatik</strong>-) Praxis relevanten Sprachen ein.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 178 / 191
mathematischer Hintergrund<br />
Mengen<br />
Mathematischer Hintergrund<br />
Definition (Menge, Element)<br />
Eine Menge ist eine Zusammenfassung unterscheidbarer Objekte zu einer<br />
Gesamtheit. Die Zugehörigkeit eines Objekts a zu einer Menge A wird<br />
mit a ∈ A ausgedrückt; a heißt Element von A .<br />
Definition<br />
Speziell hat die leere Menge ∅ keine Elemente, während N die Menge der<br />
natürlichen Zahlen 0, 1, 2, . . . bezeichnet.<br />
Definition (Teilmenge, Potenzmenge)<br />
A heißt Teilmenge von B ( A ⊆ B ), falls x ∈ A ⇒ x ∈ B . Die<br />
Potenzmenge P(B) besteht aus allen Teilmengen von B .<br />
Jede Menge A erfüllt A ⊆ A , ∅ ⊆ A , A ∈ P(A) und ∅ ∈ P(A) .<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 179 / 191
mathematischer Hintergrund<br />
Mengen<br />
Definition (Aussonderung)<br />
Ist A eine Menge und ϕ eine Eigenschaft, die Objekte haben können, so<br />
bezeichnet<br />
A(ϕ) := { x : x ∈ A ∧ ϕ(x) } ⊆ A<br />
die Teilmenge aller Elemente aus A mit der Eigenschaft ϕ ; alternative<br />
Schreibweise: A(ϕ) = { x ∈ A : ϕ(x) } . Daß es sich bei A(ϕ) wirklich um<br />
eine Menge handelt, ist der Inhalt des Aussonderung-Axioms (engl.<br />
comprehension).<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 180 / 191
mathematischer Hintergrund<br />
Mengen<br />
Definition (Durchschnitt, Vereinigung)<br />
Der Durchschnitt bzw. die Vereinigung zweier Mengen A und B sind<br />
gegeben durch<br />
A ∩ B := { x : x ∈ A ∧ x ∈ B }<br />
A ∪ B := { x : x ∈ A ∨ x ∈ B }<br />
Im Falle einer Teilmenge A ⊆ P(X ) erhalten wir<br />
⋂<br />
A := { x : ∀A ∈ A. x ∈ A } ⊆ X<br />
⋃<br />
A := { x : ∃A ∈ A. x ∈ A } ⊆ X<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 181 / 191
mathematischer Hintergrund<br />
Mengen<br />
Definition (cartesisches Produkt)<br />
Das cartesische Produkt zweier Mengen A und B ist<br />
A × B := { 〈a, b〉 : a ∈ A ∧ b ∈ B }<br />
wobei 〈a, b〉 ein geordnetes Paar bezeichnet. Die Spezifikation für<br />
geordnete Paare verlangt<br />
〈a, b〉 = 〈c, d〉 gdw (a = c ∧ b = d)<br />
Im Spezialfall A = B schreiben wir abkürzend A n für das n-fache<br />
cartesische Produkt von A mit sich.<br />
Achtung: Die Schreibweise ( ) n für ein n-faches Produkt wird auch in<br />
anderen Situationen benutzt, ist also kontextsensitiv.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 182 / 191
mathematischer Hintergrund<br />
Mengen<br />
Definition (disjunkte Vereinigung)<br />
Die Summe oder disjunkte Vereinigung zweier Mengen A and B :<br />
A + B := (A × {0}) ∪ (B × {1})<br />
Jede andere Methode zur “Disjunktifizierung” der Mengen A und B ist<br />
ebenfalls zulässig, z.B. folgende von Paul Taylor<br />
A + B ∼ = { 〈U, V 〉 ∈ P(A) × P(B) : |U| + |V | = 1 }<br />
Proposition<br />
Die Menge X ∗<br />
aller endlichen Wörter über einer Menge X erfüllt<br />
X ∗ = ∑ { X n : n ∈ N }<br />
Return<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 183 / 191
mathematischer Hintergrund<br />
Relationen und Funktionen<br />
Definition (Relation, partielle Funktion, Funktion)<br />
Unter einer Relation r von einer Menge A in eine Menge B verstehen<br />
wir eine Teilmenge r ⊆ A × B ; Schreibweise: A r B. Ihr<br />
Definitionsbereich ist D(r) := { a ∈ A : ∃b ∈ B. 〈a, b〉 ∈ r } . Die<br />
Komposition mit einer Relation B s C definiert man als<br />
r; s := {〈a, c〉 ∈ A × C : ∃b ∈ B. 〈a, b〉 ∈ r ∧ 〈b, c〉 ∈ s }<br />
Eine Relation A r B heißt partielle Funktion (A r B), bzw. Funktion<br />
(A r B), falls jedes a ∈ A zu höchstens, bzw. genau, einem b ∈ B in<br />
Relation steht (das dann mit r(a) bezeichnet wird).<br />
D.h., wir identifizieren (partielle) Funktionen mit ihren “Graphen”. Die<br />
“Verknüpfung” von Funktionen A f B g C erfüllt g ◦ f = f ; g .<br />
Return<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 184 / 191
mathematischer Hintergrund<br />
Relationen und Funktionen<br />
Definition (spezielle Relationen)<br />
Für jede Menge A setze ∆ A = { 〈a, a〉 : a ∈ A } .<br />
Die zu A r B duale Relation B r op A ist durch 〈b, a〉 ∈ r op<br />
gdw. 〈a, b〉 ∈ r spezifiziert.<br />
A r A heißt<br />
( r ) reflexiv, falls r 0 := ∆ A ⊆ r ;<br />
( t ) transitiv, falls r; r ⊆ r ;<br />
(s) symmetrisch, falls r = r op ;<br />
(a) antisymmetrisch, falls r ∩ r op ⊆ ∆ A ;<br />
(PO) Prä-Ordnung, sofern (r) und (t) erfüllt sind;<br />
(HO) Halbordnung, sofern (r), (t) und (a) erfüllt sind;<br />
(ÄR) Äquivalenzrelation, sofern (r), (t) und (s) erfüllt sind.<br />
r ∗ = ⋃ n∈N r n heißt reflexive transitive Hülle von A r A.<br />
Relationen 1 B sind Teilmengen von B .<br />
Funktionen 1 B sind Elemente von B . Return<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 185 / 191
mathematischer Hintergrund<br />
Äquivalenzrelationen<br />
Definition<br />
(a) Für eine ÄR E ⊆ Q × Q ist [q] E := { p ∈ Q : p E q } die<br />
Äquivalenzklasse von q bzgl. E .<br />
(b) Eine Partition K ⊆ P(Q) von Q besteht aus nichtleeren paarweise<br />
diskunkten Teilmengen von Q mit ⋃ K = Q .<br />
Satz<br />
Die Äquivalenzrelationen auf einer Menge Q entsprechen bijektiv den<br />
Partitionen der Menge Q .<br />
Beweis.<br />
Die Äquivalenzklassen einer ÄR partitionieren Q . Umgekehrt definiert<br />
man Elemente von Q als äquivalent, wenn sie zur selben Menge in der<br />
Partition gehören.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 186 / 191
mathematischer Hintergrund<br />
Äquivalenzrelationen<br />
Proposition<br />
Jede Abbildung Q L B induziert eine Äquivalenzrelation ∼ L via<br />
p ∼ L q gdw . L(p) = L(q)<br />
Das L-Bild L[Q] = { L(q) : q ∈ Q } ist in canonischer Weise isomorph zur<br />
sogenannten Faktormenge Q/∼ L := { [q] ∼L : q ∈ Q } aller<br />
∼ L -Äquivalenzklassen.<br />
Beispiel<br />
Die Preisfunktion auf allen Artikeln eines Supermarkts: Toilettenpapier<br />
ist äquivalent zu Haarfestiger, ist äquivalent zu Dosen-Kohlrabi. . .<br />
Division durch n mit Rest: liefert die Funktion<br />
N modn n = { i : i < n }.<br />
Minimierung<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 187 / 191
mathematischer Hintergrund<br />
Tupel als Funktionen<br />
Definition<br />
B A bezeichnet die Menge aller Funktionen von A nach B .<br />
Dies imitiert die Schreibweise B n für die Menge aller n-Tupel über B ,<br />
also das n-fache cartesische Produkt der Menge B mit sich.<br />
Interpretiert man die Zahl n als Menge ihrer Vorgänger, d.h.,<br />
n = { k ∈ N : k < n } und speziell 0 = ∅<br />
so stimmen n-Tupel über B mit Funktionen n<br />
Folgerung<br />
ε<br />
B überein.<br />
Alle Inklusionsabbildungen ∅ X , X eine Menge, stimmen mit der<br />
einzigen Teilmenge ∅ ⊆ ∅ × X = ∅ überein.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 188 / 191
mathematischer Hintergrund<br />
Abzählbarkeit<br />
Definition<br />
Eine Menge B heißt abzählbar, wenn es eine injektive Abbildung B<br />
gibt. Anderfalls heißt sie überabzählbar.<br />
N<br />
Satz<br />
Teilmengen, endliche cartesische Produkte und abzählbare Vereinigungen<br />
abzählbarer Mengen sind wieder abzählbar. Dagegen sind Potenzmengen<br />
abzählbar unendlicher Mengen überabzählbar.<br />
Beweis für Teilmengen<br />
Für jede Teilmenge C einer abzählbaren Menge ist die Inklusionsabbildung<br />
C i B injektiv, also auch ihre Komposition mit einer<br />
injektiven Abbildung B j N.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 189 / 191
mathematischer Hintergrund<br />
Abzählbarkeit<br />
Beweis für binäre cartesische Produkte<br />
Es genügt, die Abzählbarkeit von N × N zu zeigen:<br />
4<br />
3<br />
2<br />
1<br />
10<br />
9<br />
3<br />
2<br />
11<br />
8 12<br />
4 7 13<br />
0 0 1 5 6 14<br />
0 1 2 3 4<br />
Beweis für abzählbare Vereinigungen<br />
⋃ { Bi : i ∈ N } = ∑ { B i − ⋃ { B j : j < i } : i ∈ N }<br />
Also genügt, sich auf abzählbare disjunkte Vereinigungen zu beschränken.<br />
Aber N × N ist die disjunkte Vereinigung abzählbar vieler Kopien von N<br />
und abzählbar.<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 190 / 191
mathematischer Hintergrund<br />
Abzählbarkeit<br />
Beweis für Potenzmengen<br />
Es genügt zu zeigen, daß P(N) überabzählbar ist. Wir nehmen an,<br />
g<br />
P(N) N ist injektiv. Aufgrund der Injektivität erfüllt<br />
K := { g(B) : B ⊆ N ∧ g(B) /∈ B } die Bedingung g(K) ∈ K<br />
gdw g(K) /∈ K , Widerspruch. (Dieses Argument funktioniert für jede<br />
Menge anstelle von N .)<br />
Folgerung<br />
Für jede nichtleere abzählbare Menge X ist X ∗<br />
abzählbar unendlich.<br />
Beweis.<br />
X ∗ = ∑ { X n : n ∈ N } ist abzählbare disjunkte Vereinigung endlicher<br />
Produkte einer abzählbaren Menge.<br />
universelle Automaten<br />
Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 1 WS 2010/2011 191 / 191