01.01.2015 Aufrufe

Handout - Institut für Theoretische Informatik - Technische ...

Handout - Institut für Theoretische Informatik - Technische ...

Handout - Institut für Theoretische Informatik - Technische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!