THEORETISCHE INFORMATIK

Größe: px
Ab Seite anzeigen:

Download "THEORETISCHE INFORMATIK"

Transkript

1 THEORETISCHE INFORMATIK Vorlesungsskript Jiří Institut für Theoretische Informatik Technische Universität Braunschweig Dezember 28

2

3 Inhaltsverzeichnis Endliche Automaten. Mathematische Grundbegriffe Definition der endlichen Automaten Nichtdeterministische Automaten Reguläre Sprachen Minimierung von Automaten Nerode-Äquivalenz Beweise der Regularität Moore- und Mealy-Automaten Kontextfreie Sprachen und Kellerautomaten Die Idee einer formalen Grammatik Kontextfreie Grammatik Ableitungsbäume Kontextfreie und reguläre Sprachen Eigenschaften kontextfreier Sprachen Nullierbare Variablen Chomsky-Normalform Algorithmen für formale Sprachen Kellerautomaten Kellerautomaten und kontextfreie Sprachen Turingmaschinen Definition einer Turingmaschine Modifikationen von Turingmaschinen TM mit mehreren finalen Zuständen TM mit zusätzlichem Gedächtnis TM mit erweitertem Bandalphabet TM mit mehrspurigem Band TM mit mehreren Bändern Entscheidbare Probleme und rekursive Sprachen i

4 ii INHALTSVERZEICHNIS 3.4 Nichtdeterministische Turingmaschinen Berechenbare Funktionen Churchsche These RAM RAM-Berechenbarkeit Grammatiken und Turingmaschinen Chomsky-Hierarchie Rekursive Funktionen Unentscheidbare Probleme 9 5. Universelle Turingmaschine Das Halteproblem Weitere unentscheidbare Probleme Das Akzeptanzproblem Akzeptanz des leeren Wortes Ist eine TM ein Algorithmus? Satz von Rice Minimierung von Turingmaschinen Komplexität von Algorithmen Beispiele effizienter Algorithmen Komplexitätsklasse P Berechnungsprobleme und Reduzierbarkeit Robustheit der Klasse P TM mit zusätzlichem Gedächtnis TM mit mehrspurigem Band Mehr-Band TM RAM Geometrische Algorithmen und reelle RAM Komplexitätsklasse N P N P-Vollständigkeit Weitere N P-vollständige Probleme Komplexitätsklasse con P Komplexität von Optimierungsproblemen Approximation von Optimierungsproblemen Raumkomplexität

5 Kapitel Endliche Automaten In diesem Kapitel wird das einfachste Maschinenmodell eingeführt, das wir in diesem Skript untersuchen werden: die endlichen Automaten. Wie bei den realistischeren Modellen (Kellerautomaten, Turingmaschinen, usw.), die in den folgenden Kapiteln behandelt werden, gibt es auch zwei Typen von endlichen Automaten: die, die formale Sprachen akzeptieren und die, die Funktionen berechnen. Eine formale Sprache ist nichts anderes als eine Menge von Wörtern, die über einem Alphabet Σ gebildet werden, z. B. über dem binären Alphabet Σ = {, }. Sie repräsentieren für uns alle Entscheidungsprobleme. Beispiel: Hat ein gegebener Graph G eine Clique von 4 Elementen? Das ist ein Entscheidungsproblem: die Antwort auf jede Eingabe, die einen Graphen codiert, ist JA oder NEIN. Es gibt verschiedene Codierungsmöglichkeiten für Graphen über dem Alphabet {, } (z. B. als Liste aller Knoten und Kanten oder als Adjazenzmatrix zwischen Knoten und Kanten), aber für jede feste Codierung c läßt sich die Antwort auf die obige Frage auf folgende Weise ersetzen: L sei die formale Sprache aller Codes der Graphen mit Antwort JA, also L = { c(g) G ist ein Graph mit einer Clique von 4 Elementen }. Wir fragen dann, ob ein gegebenes Wort zu der Sprache L gehört. Diese einfache Formulierung ermöglicht es, dass wir uns weiterhin mit formalen Sprachen anstatt Entscheidungsproblemen beschäftigen können. So müssen wir nicht mehr die verschiedenen Codierungen der Eingaben diskutieren, sondern können annehmen, dass vorher eine geeignete Codierung vereinbart wurde. Nicht alle Probleme sind Entscheidungsprobleme, oft ist ein Ergebnis zu berechnen, anstatt eine Frage mit JA oder NEIN zu beantworten. Beispiel: Gegeben ist ein Graph G, finde eine Clique mit 4 Elementen. Was hier erwartet wird, ist eine Funktion f, die jedem binären Wort w = c(g), wobei G ein Graph mit einer Clique von 4 Elementen ist, ein Wort f(w), das eine Codierung einer konkreten Clique ist, zuordnet. Auch die Berechnungsprobleme haben viel mit den formalen Sprachen zu tun z. B. ist der Definitionsbereich unserer Funktion f genau die oben erwähnte formale Sprache L. Wir werden also Maschinen untersuchen, die entweder formale Sprachen erkennen oder Funktionen zwischen formalen Sprachen berechnen. Wir beginnen mit den sehr simplen, aber für einige Anwendungen noch hinreichenden, endlichen Automa-

6 2 KAPITEL. ENDLICHE AUTOMATEN ten. Ihre Theorie ist klarer als die der komplizierteren Maschinen, die wir später einführen. Vorher geben wir noch kurz einige Grundbegriffe an, die im ganzen Skript eine wichtige Rolle spielen.. Mathematische Grundbegriffe (a) Mengen Eine Menge kann durch eine Aufzählung ihrer Elemente gegeben werden, z. B.: A = {2} nur ein Element, 2, B = (leere Menge) kein Element, C = {a, b, c, 2} oder durch eine erzeugende Eigenschaft P in der Form {x; x hat Eigenschaft P }, z. B.: A = {x; x ist eine gerade Primzahl}, = {x; x x}. Für unendliche Mengen gibt es nur die zweite Variante. Wichtiges Beispiel: N bezeichnet die Menge aller natürlichen Zahlen. In diesem Skript ist eine natürliche Zahl, also N = {,, 2,...}. Eine Teilmenge einer Menge A ist eine Menge B mit der Eigenschaft, dass x B = x A. Notation: B A. Wir benutzen die übliche Notation für die Mengenoperationen: A B A B A B A B Vereinigung, Durchschnitt, Komplement, A B = {x; x A und x / B}, Kartesisches Produkt, A B = {(x, y); x A und y B}.

7 .. MATHEMATISCHE GRUNDBEGRIFFE 3 (b) Relationen und Funktionen Eine Relation zwischen zwei Mengen A und B ist eine Menge R von Paaren (a, b), wobei a A und b B gilt. Wir sagen, dass a in Relation R zu b steht und schreiben arb. Formal ist eine Relation R dasselbe wie eine Teilmenge von A B. Im Fall A = B nennen wir R eine Relation auf der Menge A. Diese heißt reflexiv, falls ara für alle a A gilt, und transitiv, falls aus arb und brc folgt arc (a, b, c A) Für jede Relation R auf der Menge A bezeichnen wir mit R die kleinste reflexive und transitive Relation, die R enthält, die sogenannte reflexive transitive Hülle von R. Also gilt für zwei Elemente a, b aus A: ar b genau wenn a = b oder es gibt a = c, c 2,..., c n = b in A mit c i Rc i+ für i =,..., n Eine Funktion f : A B ist eine Relation f A B mit der Eigenschaft, dass es für jedes Element a A genau ein Element b B gibt, mit dem a in Relation steht; das bezeichnen wir wie üblich mit f(a) = b. A heißt der Urbildbereich oder Definitionsbereich und B der Wertebereich der Funktion f. Ein schwächerer Begriff ist der einer partiellen Funktion f : A B: das ist eine Relation, die für jedes Element a A höchstens ein Element b B hat, das in Relation zu a steht. Funktionen nennen wir manchmal auch totale Funktionen, wenn wir betonen wollen, dass wir sie von den partiellen Funktionen unterscheiden. Beispiel. Die Nachfolgerfunktion ist eine (totale) Funktion suc: N N. Die Vorgängerfunktion ist dagegen eine partielle Funktion pred: N N, die durch pred(n) = n für alle n definiert ist (und pred() ist nicht definiert). Funktionen zweier Variablen lassen sich als (übliche) Funktionen formalisieren, deren Definitionsbereich ein kartesisches Produkt ist. Also ist f : A B C eine Funktion, die Variablen aus A und B nimmt und ihnen Werte in C zuordnet.

8 4 KAPITEL. ENDLICHE AUTOMATEN (c) Wörter Eine nichtleere endliche Menge heißt auch Alphabet und ihre Elemente werden auch Buchstaben genannt. Beispiel: das binäre Alphabet ist die Menge mit zwei Buchstaben, und. Falls Σ ein Alphabet ist und n eine natürliche Zahl, so wird ein geordnetes n-tupel von Elementen aus Σ als Wort der Länge n über dem Alphabet Σ bezeichnet. Wir schreiben die Wörter, etwas informell, ohne Kommas oder Klammern einfach als a für a Σ (Wörter der Länge ) ab für a, b Σ (Wörter der Länge 2) usw. Der Fall n = entspricht dem leeren Wort, das mit ε bezeichnet wird. Für die Länge eines Wortes w schreiben wir z. B. ε =, ab = 2 usw. w, Die Menge aller (endlichen!) Wörter über dem Alphabet Σ bezeichnen wir mit Σ. Beispiel: für das binäre Alphabet Σ = {, } gilt Σ = {ɛ,,,,,,,,... }. Die Konkatenation zweier Wörter u = a a 2... a n und v = b b 2... b m ist das Wort uv = a a 2... a n b b 2... b m (ohne Lücke geschrieben, denn Lücke kann selbst ein Symbol in Σ sein). Vereinbarung. Weiter nehmen wir immer an, daß jedes Alphabet, das hier betrachtet wird, die beiden Symbole ε (leeres Wort) und # (Blankzeichen) nicht als Elemente enthält. Das vermeidet Unklarheiten des Typs, ob εε die Konkatenation zweier leerer Wörter ist (also εε = ε), oder ein Wort der Länge 2 die zweite Variante schließen wir hier aus. Darüberhinaus nehmen wir an, dass für zwei Elemente a b des Alphabets, b kein Wort mit Präfix a ist. Also ist beispielsweise {,, 3} kein Alphabet während {,, 24} eines ist. (d) Formale Sprachen Eine formale Sprache ist eine Menge von Wörtern. Genauer: eine formale Sprache über dem Alphabet Σ ist das gleiche wie eine Teilmenge L der Menge Σ, L Σ. Beispiel: Σ selbst ist eine formale Sprache, aber auch ist eine. Die Menge L aller binären Codierungen der Graphen, die eine Clique mit 4 Elementen haben, ist eine formale Sprache L {, }.

9 .. MATHEMATISCHE GRUNDBEGRIFFE 5 Beispiel 2. Natürliche Zahlen als Wörter. Über dem sehr einfachen Alphabet Σ = { } gibt es nur die Wörter ε,,,,.... Diese Wörter sind (unäre) Codes von natürlichen Zahlen: wir identifizieren die Zahl n mit dem Wort, das aus n Strichen besteht, also mit, 2 mit usw. Die Zahl wird mit dem leeren Wort (von Null Strichen) identifiziert. Die Mengen N und { } werden wir oft nebeneinander benutzen. Formale Sprachen über dem Alphabet { } sind also genau die Mengen der natürlichen Zahlen, z.b. ist die Menge aller Primzahlen eine formale Sprache. (e) Graphen Ein gerichteter Graph ist eine Menge V (von Knoten) zusammen mit einer Relation E auf V, d.h. E V V. Die Paare (a, b) E heißen Kanten des Graphen. Beispiel: b a c bezeichnet den gerichteten Graphen mit den Knoten a, b, c und den Kanten (a, b), (b, c), (c, b) und (c, c). Falls die Kanten oder Knoten mit Symbolen eines Alphabets M bezeichnet werden, sprechen wir von markierten Graphen. Konkreter ist ein kantenmarkierter Graph ein Tripel (V, E, f), wobei (V, E) ein gerichteter Graph und f : E M eine Funktion ist. Beispiel: a b c bezeichnet den obigen Graphen mit der Markierung f : V {, } mit dem Wert für (a, b) und (b, c) und dem Wert für (b, c) und (c, c). Falls die Kanten eines Graphen keine Orientierung haben, spricht man von ungerichteten Graphen oder nur Graphen. Beispiel: b a c Ein Graph besteht also aus einer Menge V von Knoten und einer Menge E von Kanten, d.h. ungeordneten Paaren von Knoten.

10 6 KAPITEL. ENDLICHE AUTOMATEN.2 Definition der endlichen Automaten Reale Rechner bestehen aus einem Prozessor, der sich in einem von endlich vielen Zuständen befindet, einem Speicher und einer Ein-/Ausgabe-Einheit. Falls der Speicher beliebig erweitert werden kann, betrachten wir ihn als potentiell unendlich. Wenn aber keine Erweiterung möglich ist, können wir die Zustände des Speichers auch als globale Zustände des Rechners betrachten. Dann hat der Rechner also nur endlich viele Zustände. Wir befassen uns jetzt mit einem solchen Rechner, der noch dazu die Eingabe mit einem read-only Kopf bearbeitet, der sich systematisch von links nach rechts bewegt und das Ausgabealphabet {JA, NEIN} hat, so dass wir einfach zwei Typen von Zuständen unterscheiden: die finalen Zustände (Antwort JA) und die nicht finalen (Antwort NEIN). Mathematisch läßt sich solch eine einfache Maschine dadurch beschreiben, dass wir für jedes Paar (q, s) q - Zustand, s - Eingabesymbol den nächsten Zustand δ(q, s) bestimmen. Sei also Q die Menge aller Zustände und Σ das Eingabealphabet. Dann beschreibt die Übergangsfunktion δ : Q Σ Q die Arbeitsweise der Maschine. Wir gehen davon aus, dass die Bearbeitung der Eingabe immer in demselben (initialen) Zustand beginnt. Das führt zur folgenden Definition: Definition. Ein deterministischer endlicher Automat (DEA) ist ein Fünftupel A = (Q, Σ, δ, q, F ), wobei Q Σ δ : Q Σ Q q Q eine endliche Zustandsmenge, ein Eingabealphabet, die Übergangsfunktion, der Initialzustand und F Q die Menge finaler Zustände ist Notation. Statt δ(q, s) = q schreibt man auch q s q oder (q, s) q.

11 .2. DEFINITION DER ENDLICHEN AUTOMATEN 7 Wir benutzen auch kennzeichnen:, um den Initialzustand und die finalen Zustände zu q Initialzustand q Finaler Zustand Beispiel. Sei A = ({q, q, q 2 }, {, }, δ, q, {q 2 }) der Automat, dessen Übergangsfunktion δ wie folgt definiert ist: (q, ) q (q, ) q (q, ) q 2 (q, ) q (q 2, ) q (q 2, ) q Diesen Automaten kann man durch den folgenden markierten Graphen repräsentieren: q q Das Wort wird akzeptiert, denn der Initialzustand q wird dadurch in einen finalen Zustand überführt. Das Wort wird nicht akzeptiert. q 2 q q q q q2 F. Definition.. Eine Konfiguration eines DEA A = (Q, Σ, δ, q, F ) ist ein Paar (q, w), wobei q ein Zustand und w ein Wort über Σ ist (der momentane Zustand und der noch nicht gelesene Teil des Eingabewortes). Konfigurationen (q, w) heißen Initialkonfigurationen und Konfigurationen (q, ε) heißen Finalkonfigurationen. 2. Für jede Konfiguration (q, w) mit w = s s 2... s n heißt die Konfiguration (q, w ) mit q = δ(q, s ) und w = s 2... s n die Folgekonfiguration, und wir bezeichnen dies mit dem Symbol Kürzer: (q, w) (q, w ). (q, s s 2... s n ) (δ(q, s ), s 2... s n ). Beispiel 2. Der Automat aus Beispiel berechnet das Wort durch die folgende Reihe von Konfigurationen: (q, ) (q, ) (q, ) (q, ) (q 2, ε)

12 8 KAPITEL. ENDLICHE AUTOMATEN Bemerkung. Das kartesische Produkt Q Σ ist also die Menge aller möglichen Konfigurationen und (Folgekonfiguration) ist eine Relation auf dieser Menge. Wir bezeichnen durch die reflexive und transitive Hülle dieser Relation. Für zwei Konfigurationen (q, w) und (q, w ) aus Q Σ gilt demzufolge (q, w) (q, w ), falls entweder (q, w) = (q, w ) ist oder Konfigurationen (q, w ),..., (q n, w n ) existieren, so dass (q, w) = (q, w ), (q, w ) = (q n, w n ) und gilt. Die Liste der Konfigurationen heißt Berechnung von (q, w ) aus (q, w). (q, w ) (q 2, w 2 )... (q n, w n ) (q i, w i ), i =,..., n Definition. Ein DEA A = (Q, Σ, δ, q, F ) akzeptiert ein Wort w über Σ, falls die Initialkonfiguration (q, w) zu einer Berechnung mit Endkonfiguration (q, ε) führt, wobei q ein finaler Zustand ist. Das heißt, falls es einen Zustand q F gibt mit (q, w) (q, ε). Die Sprache aller Wörter, die A akzeptiert, wird mit L(A) bezeichnet und heißt die von A akzeptierte Sprache. Beispiel 3. Der Automat aus Beispiel akzeptiert das Wort, da (q, ) (q 2, ε). Das Wort akzeptiert A nicht, da es zur Berechnung (q, ) (q, ) (q, ) (q, ) (q, ) (q 2, ) (q, ε) führt und q nicht final ist. Beispiel 4. Die Sprache G { } aller geraden Zahlen wird von dem Automaten q q akzeptiert. Beispiel 5. Die Sprache aller Primzahlen wird von keinem endlichen Automaten akzeptiert. (Beweis später, siehe Beispiel 3 in Abschnitt.7) Beispiel 6. Die Sprache L {, } aller Wörter mit einer geraden Anzahl von en und einer geraden Anzahl von en wird von dem Automaten q q 2 q q 3 akzeptiert. Definition. Eine Sprache heißt regulär, falls es einen DEA gibt, der sie akzeptiert. Beispiel 7. Σ, und die Menge aller geraden Zahlen sind regulär.

13 .2. DEFINITION DER ENDLICHEN AUTOMATEN 9 Beispiel 8 (Eine nicht reguläre Sprache). Über dem Alphabet { } definieren wir L = { 2, 2, 2 2,... }. Wir zeigen, dass jeder Automat A mit L L(A) auch Wörter außerhalb L akzeptiert, also L L(A). Sei n die Anzahl der Zustände von A. Da n 2 von A akzeptiert wird, gibt es einen Weg durch A, der nach n 2 Schritten in einem finalen Zustand endet: q initial q = δ(q, ) q 2 = δ(q, ). q n 2 = δ(q n 2, ) final. Die Zustände q i, i =,..., n, sind nicht alle verschieden, da A nur n Zustände hat und hier n + Indizes auftreten. Daher existieren i und k mit < k n und q i = q i+k : q q... q i q i+k+... q n 2 q i+k q i+... Weil A das Wort n 2 = i + k + (n 2 i k) akzeptiert, folgt, dass auch n 2 + k = i + 2k + (n 2 i k) von A akzeptiert wird. (In beiden Fällen wird derselbe Weg durch A zurückgelegt, im zweiten Fall wird der Zyklus q i,..., q i+k, q i zweimal durchlaufen.) Es gilt aber: n 2 < n 2 + k, da k >, und (n + ) 2 > n 2 + n n + k, da k n. Also liegt n 2 + k zwischen n 2 und (n + ) 2 und kann kein Wort der Sprache L sein. Beobachtung. Sei A ein DEA mit Eingabealphabet Σ.. Für jedes Wort u über Σ gilt: aus (q, w) (q, w ) folgt (q, wu) (q, w u). In der Tat, für w = s s 2... s n haben wir Sei u = t... t m, dann gilt also q = δ(q, s ) und w = s 2... s n. q = δ(q, s ) und w u = s 2... s n t... t m. Das sagt genau, dass (q, wu) (q, w u), weil wu = s... s n t... t m. 2. Es gilt ebenfalls für jedes Wort u, dass aus (q, w) (q, w ) folgt (q, wu) (q, w u). Dies ist nur eine wiederholte Anwendung von.

14 KAPITEL. ENDLICHE AUTOMATEN.3 Nichtdeterministische Automaten Nichtdeterministische Automaten sind wie endliche Automaten definiert, nur hat die Übergangsfunktion δ(q, s) mehrere Möglichkeiten. Kurz: δ ist keine Funktion, sondern eine Relation zwischen Q Σ und Q: Definition. Ein nichtdeterministischer endlicher Automat (NEA) ist ein Quintupel A = (Q, Σ, δ, q, F ), wobei Q, Σ und F Q endliche Mengen sind, δ (Q Σ) Q eine Relation ist und q Q. Beispiel. q q q 2 Das ist der nichtdeterministische Automat mit Σ = {, }, Zuständen q (initial), q und q 2 (final) und den angedeuteten Übergängen. Bemerkung.. Wir verwenden dieselbe Notation wie im deterministischen Fall. Speziell schreiben wir q s q oder (q, s) q statt (q, s)δq. Hier können jedoch zwei verschiedene Übergangsregeln (q, s) q dieselbe linke Seite haben (und umgekehrt muß für ein Paar (q, s) keine Regel mit dieser linken Seite vorhanden sein). 2. Auch Konfigurationen sind, wie im deterministischen Fall, als Paare (q, w) in Q Σ definiert. Für jede Konfiguration (q, w) mit w = s s 2... s n gibt es im allgemeinen mehrere Folgekonfigurationen: alle Konfigurationen (q, w ), wobei (q, s ) q und w = s 2... s n. Wir benutzen wieder das Symbol, also (q, s s 2... s n ) (q, s 2... s n ) für alle q Q mit (q, s ) q. Die reflexive und transitive Hülle dieser Relation wird wieder mit bezeichnet. 3. Wichtige Frage: wann wird ein Wort akzeptiert? Jedes Eingabewort w hat natürlich verschiedene Berechnungen. Falls wenigstens eine Berechnung in einem finalen Zustand endet, sagen wir, dass der NEA das Wort w akzeptiert: Definition. Für einen NEA A wird ein Wort w über Σ akzeptiert, falls es einen finalen Zustand q mit (q, w) (q, ε) gibt. Die Menge L(A) aller akzeptierten Wörter heißt die von A akzeptierte Sprache. Beispiel 2. Der nichtdeterministische Automat aus Beispiel akzeptiert die Sprache L aller Wörter, die entweder. genau eine enthalten, oder 2. die Form i j k mit i, j >, k > haben.

15 .3. NICHTDETERMINISTISCHE AUTOMATEN Kann diese Sprache von einem deterministischen Automaten mit nur drei Zuständen akzeptiert werden? NEIN (Beweis später, siehe.6, Beispiel 4) Mit 2 3 = 8 Zuständen geht es: Konstruktion. Sei A ein NEA. Wir können einen DEA A mit derselben Sprache konstruieren: L(A) = L(A ). Die Idee ist, dass jede Gruppe M von Zuständen von A (das heißt, jede Untermenge M Q) als ein einziger Zustand des neuen Automaten betrachtet wird. Dann führt die nichtdeterministische Übergangsrelation δ zu der folgenden deterministischen Übergangsfunktion δ : für jeden Zustand von A, das heißt jede Menge M Q und jedes Eingabesymbol s Σ, bezeichnen wir durch δ (M, s) die Menge aller Zustände q, für die gilt (q, s) q (in δ), wobei q in M liegt. Kürzer: () δ (M, s) = {q Q; es gibt q M mit (q, s)δq}. Also ist A der folgende deterministische Automat A = (2 Q, Σ, δ, {q }, F ), wobei 2 Q die Menge aller Untermengen von Q bezeichnet, δ durch () (für alle M 2 Q und s Σ) definiert ist, {q } der Initialzustand ist und F genau die Zustände von A enthält, in denen wenigstens ein Finalzustand von A liegt: F = {M; M Q und M F }. Satz. Die Automaten A und A akzeptieren dieselbe Sprache. Beweis. Für jedes Wort s... s n über Σ bezeichnen wir durch M, M,..., M n die Zustände der Berechnung des Wortes im Automat A : M = {q } und M i+ = δ (M i, s i+ ). Wir beweisen, dass (2) ein Zustand q von A genau dann in M n liegt, wenn eine Berechnung von s... s n durch A existiert, die in q endet. Damit wird bewiesen, dass, falls s... s n in L(A ) liegt (falls also M n F einen finalen Zustand von A enthält), eine Berechnung durch A existiert, die in einem finalen Zustand endet also akzeptiert auch A das Wort s... s n. Umgekehrt gibt es, falls A das Wort akzeptiert, eine Berechnung, die in einem finalen Zustand endet. Dieser Zustand ist, aufgrund von (2), ein Element von M n das beweist, dass M n F, also akzeptiert A das Wort s... s n. Der Beweis von (2) erfolgt durch Induktion über die Länge n des gegebenen Wortes: n = : Hier ist M n = {q } und eine Berechnung von ε durch A endet immer in q. n n + : Da M n+ = δ (M n, s n+ ), sagt uns (), dass M n+ einen Zustand q genau dann enthält, wenn es einen Zustand q in M n gibt mit (q, s n+ )δq. Bei der Induktionsvoraussetzung sind diese Zustände q genau die, die in A durch eine Berechnung von s... s n erreicht werden können. Hier folgt (2) also aus der Beobachtung, dass die Berechnung von s... s n s n+ einen Zustand q genau dann erreicht, wenn es einen Zustand q gibt, der durch die Berechnung von s... s n erreicht werden kann und (q, s n+ )δq erfüllt.

16 2 KAPITEL. ENDLICHE AUTOMATEN Beispiel 3. NEA sind prinzipiell stärker als DEA im Hinblick auf die Anzahl der Zustände. Das illustrieren wir an dem Beispiel des folgenden NEA, A:, q q, q, 2..., q n Die Sprache L(A), die dieser akzeptiert, ist die Sprache aller Wörter w über {, } der Form w = uv, wobei v die Länge n hat. In der Tat, jedes solche Wort wird akzeptiert: solange u gelesen wird, bleibt A im Initialzustand und dann bewegt er sich zu q (Eingabe ) und über q 2,, q 3,... zu q n, wobei v gelesen wird. Umgekehrt: falls w ein Wort aus L(A) ist, bezeichnen wir mit u den Anfang, der solange gelesen wird, bis A den Initialzustand verlässt. Da A am Ende den Zustand q n erreichen muss, ist es klar, dass nach u die gelesene Eingabe sein muss und dass dann der Rest v der Eingabe genau die Länge n hat. Also sehen wir, dass der obige NEA mit n+ Zuständen die Sprache L (n) = {w w hat an der n-ten Stelle von rechts} über Σ = {, } akzeptiert. Wir beweisen später das folgende Lemma. Die Sprache L (n) wird von keinem DEA mit weniger als 2 n Zuständen akzeptiert. Bemerkung 2. Obwohl das letzte Beispiel zeigt, dass ein exponentielles Wachstum bei der obigen Konstruktion pinzipiell nicht vermeidbar ist, ist es doch bei manchen Anwendungen möglich, einen viel kleineren DEA zu konstruieren indem wir uns auf die Zuständem die vom Initialzustand durch ein Eingabewort erreichbar sind, beschränken. Definition. Ein Zustand q eines DEA A = (Q, Σ, δ, q, F ) ist erreichbar, falls es ein Wort w in Σ mit (q, w) (q, ε) gibt. Der folgende DEA A r = (Q r, Σ, δ r, q, F Q r ) wobei Q r die Menge aller erreichbaren Zustände von A ist und δ r die Restriktion von δ ist, heißt der erreichbare Teil von A. Falls A = A r ist, also jeder Zustand von A erreichbar ist, heißt A ein erreichbarer Automat. Bemerkung 3. Falls q erreichbar ist, ist auch der Zustand q = δ(q, s) (für jedes s Σ) erreichbar, denn aus (q, w) (q, ε) folgt (q, ws) (q, s) (q, ε). Wir erhalten also eine Funktion δ r : Q r Σ Q r als Restriktion von δ : Q Σ Q. Bemerkung 4. Es gilt: A und A r sind äquivalent, d.h. sie akzeptieren dieselbe Sprache. Es ist nämlich leicht zu sehen, dass (q, w) (q, ε) in A genau dann gilt, wenn es auch in A r gilt.

17 .3. NICHTDETERMINISTISCHE AUTOMATEN 3 Beispiel 4. Im Automat A q q q 3 q 2, ist der Zustand q 3 nicht erreichbar. Alle anderen Zustände sind aber erreichbar, deswegen ist A r der folgende Automat q q q 2, Beispiel 5. Für den NEA q q 3 q q 2 q 4 q 5 q 6 konstruieren wir einen äquivalenten DEA als den erreichbaren Teil der obigen Konstruktion: {q } {q, q 2 }, {q 3, q 6 } {q 4, q 5 },, Dieser hat also 5 (und nicht 2 7 = 28) Zustände.

18 4 KAPITEL. ENDLICHE AUTOMATEN Bemerkung 5. Für manche Anwendungen ist es geschickt, auch spontane Übergänge, d.h. Übergänge ohne Eingabe, zu erlauben. Dazu benutzen wir ein Spezialsymbol # (das nicht zum Eingabealphabet Σ gehört), das keine Eingabe bezeichnet. Jetzt können wir den spontanen Übergang von q nach q im selben Stil wie die anderen Übergänge (q, s) q bezeichnen, nämlich als q # q oder (q, #) q. Genauer: die Übergangsrelation δ (Q Σ) Q wird jetzt durch eine Relation δ (Q (Σ {#})) Q ersetzt: Definition. Ein nichtdeterministischer endlicher Automat mit spontanen Übergängen (NEAS) ist ein Quintupel A = (Q, Σ, δ, q, F ), wobei Q, Σ und F Q endliche Mengen mit # / Σ sind, δ (Q (Σ {#})) Q eine Relation ist und q Q. Bemerkung 6. Für jeden NEAS definieren wir, wie zuvor, eine Konfiguration als ein Paar (q, w) in Q Σ. Die Folgekonfigurationen einer Konfiguration (q, w) sind und. wie bisher: alle Konfigurationen (q, s 2... s n ), wobei w = s s 2... s n und (q, s ) q, 2. alle Konfigurationen (q, w), wobei (q, #) q also alle Konfigurationen, die durch spontane Übergänge den Zustand ändern, ohne das restliche Eingabewort zu beeinflussen. Kurz: ist die kleinste Relation auf die Menge Q Σ aller Konfigurationen mit und (q, s s 2... s n ) (q, s 2... s n ) falls (q, s ) q (q, s s 2... s n ) (q, s s 2... s n ) falls (q, #) q Die Bedeutung von ist wie oben, ein Wort w über Σ wird akzeptiert, falls es einen finalen Zustand q gibt mit (q, w) (q, ε). Beispiel 6. Der folgende NEAS q q # # q 2 akzeptiert das leere Wort, denn es gibt die folgende Berechnung Auch wird aufgrund der Berechnung akzeptiert. (q, ε) (q 2, ε) (q, ε). (q, ) (q, ) (q 2, ε) (q, ε)

19 .3. NICHTDETERMINISTISCHE AUTOMATEN 5 Definition. Zwei Automaten A und A (DEA, NEA, oder NEAS) heißen äquivalent, falls sie dieselbe Sprache akzeptieren, das heißt, L(A) = L(A ). Konstruktion. Für jeden NEAS A = (Q, Σ, δ, q, F ) konstruieren wir einen äquivalenten NEA: wir lassen Q und q unverändert und definieren A = (Q, Σ, δ, q, F ) wie folgt: und F = (q, s) δq genau wenn in A gilt (q, s) (q, ε) { F F {q } falls A das leere Wort nicht akzeptiert falls A das leere Wort akzeptiert Für den NEAS aus Beispiel 6 bekommen wir damit den folgenden NEA: q, q 2 q Bemerken wir, dass in A gilt (q, s) q genau dann, wenn in A eine Berechnung der Form q #... # s #... # q existiert. Wir beweisen jetzt, dass für jedes Wort w über Σ gilt: A akzeptiert w genau dann, wenn A es akzeptiert. (a) Sei w ein Wort, dass A akzeptiert. Falls w = ε, folgt aus der Definition von F, dass q final in A ist, also akzeptiert auch A das leere Wort. Falls w = s s 2... s n, n >, bedeutet das, dass es einen finalen Zustand q F gibt und eine Berechnung in A der Form (3) q #... # s #... # sn # #... q Bezeichnen wir mit q i den Zustand, den A nach der Eingabe s i erreicht (i =,..., n), dann gilt in A: (q, s ) q (q, s 2 ) q 2. (q n, s n ) q n, sogar (q n, s n ) q Also haben wir eine Berechnung in A (4) s q s q 2... s n q und da q F, ist das Wort s s 2... s n von A akzeptiert.

20 6 KAPITEL. ENDLICHE AUTOMATEN (b) Sei w ein Wort, das A akzeptiert. Falls w = ε, bedeutet das, dass q F. Also entweder q F (dann akzeptiert A natürlich ε) oder q F F und A akzeptiert ε aufgrund der Definition von F. Falls w = s s 2... s n, n >, haben wir eine Berechnung (4) in A mit q F. Daraus folgt, dass wir in A eine Berechnung (3) haben. Falls q F, akzeptiert also A das Wort w = s s 2... s n. Falls q F F, gilt: q = q, und A akzeptiert ε. Das letzte bedeutet, dass es einen Finalzustand q F gibt mit der folgenden Berechnung: q # #... # q Diese Berechnung kann, da q = q, an die von (3) angeknüpft werden, und wir sehen, dass (q, s... s n, ) (q, ε). Daraus folgt, dass A das Wort s s 2... s n akzeptiert..4 Reguläre Sprachen Wir wollen jetzt die regulären Sprachen (siehe Abschnitt.2) charakterisieren. Notation. Wir verwenden die folgenden Operationen für Sprachen L Σ :. Vereinigung L L 2 ist die Sprache aller Wörter, die in L oder L 2 liegen. 2. Konkatenation L L 2 (oder nur L L 2 ) ist die Sprache aller Wörter w w 2 mit w L, w 2 L 2. Falls L = L 2 = L, schreiben wir L 2 statt L L (analog L 3 usw.). 3. Iteration (oder Kleenescher Stern) L = {ε} L (L L) (L L L)... ist die Sprache aller Wörter w w 2... w n mit w,..., w n L (n N) (inklusive ε für den Fall n = ); wir benutzen auch L + für die Sprache aller Wörter w w 2... w n mit w,..., w n L und n. 4. Komplement L = Σ L. Beispiel. Für L = {} und L 2 = {, } gilt L L 2 = {,, } L L 2 = {, } L = {ε,,,... }. Satz. Falls L und L 2 reguläre Sprachen sind, sind auch die Sprachen L L 2 und L L 2 regulär. Beweis. Für L i (i =, 2) gibt es nach Definition einen DEA A i = (Q i, Σ, δ i, q i, F i ), der L i akzeptiert. Wir können ohne Beschränkung der Allgemeinheit annehmen, dass die Zustandsmengen Q und Q 2 disjunkt sind.

21 .4. REGULÄRE SPRACHEN 7. Regularität von L L 2 : die folgende parallele Komposition von A und A 2 : # q # q F q 2 F 2 akzeptiert die Sprache L(A ) L(A 2 ) = L + L 2. Formal ist dies der NEAS A = (Q Q 2 {q }, Σ, δ, q, F F 2 ), wobei q / Q Q 2 und δ durch die folgenden Übergangsregeln definiert wird: () (q, s) δ i (q, s) für alle q Q i, i =, 2, s Σ und (q, #) q, (q, #) q Regularität von L L 2 : die folgende serielle Komposition von A und A 2 : # q # F q 2 F 2 # akzeptiert die Sprache L(A ) L(A 2 ) = L L 2. Formal ist dies der NEAS A = (Q Q 2, Σ, δ, q, F 2 ), wobei δ durch () und (q, #) q 2 für alle q F definiert wird. Korollar. Jede endliche Sprache ist regulär. Beweis. Für L = {w,..., w n } gilt: L ist die Vereinigung der Sprachen L i = {w i }, und L i ist die Konkatenation der Sprachen L ij = {s j }, falls w i = s... s k oder L i = {ε}. Die Sprache {s j } bzw. {ε} sind regulär (konstruieren Sie einen Automaten, der nur s j bzw. nur ε akzeptiert). Daher ist L regulär. Satz 2. Falls L eine reguläre Sprache ist, sind auch L und L + regulär. Beweis. Der folgende Feedback eines L akzeptierenden Automaten A = (Q, Σ, δ, q, F ): q F # akzeptiert die Sprache L +. Formal definieren wir den NEAS A = (Q, Σ, δ, q, F ), wobei δ die ursprüngliche Übergangsfunktion mit den zusätzlichen spontanen Übergängen (q, #) q für alle q F ist. Es gilt L(A ) = L(A) + = L +. Der Fall L = L + {ε} folgt aus Satz und Korollar.

22 8 KAPITEL. ENDLICHE AUTOMATEN Beispiel 2. Die Sprache L aller Wörter in {, }, in denen jeder Buchstabe wiederholt wird, d. h. L = ({} {}), wird von dem folgenden Automaten akzeptiert: für haben wir analog für {}. Die parallele Komposition dieser Automaten: # # akzeptiert die Sprache {} {}. Jetzt machen wir den Feedback mit q final: # # # # Dieser Automat akzeptiert die Sprache L. Notation. Die triviale Sprache {s} wird einfach mit s bezeichnet. Also ist z. B. die Sprache, die nur das Wort enthält. Die Sprache aus Beispiel 2 hat also jetzt die Notation L = ( + ). Definition. Ein regulärer Ausdruck über einem Alphabet Σ = {s,..., s n } ist ein Ausdruck mit den Operationen +,,, die auf Buchstaben s,..., s n und auf die Symbole ε und angewendet werden. Genauer: die regulären Ausdrücke r werden durch BNF wie folgt definiert: r ::= s... s n ε r + r rr r (r). Jeder reguläre Ausdruck repräsentiert eine Sprache: s i ε L + L 2 L L 2 L repräsentiert {s i }, die Sprache, die nur das Wort s i enthält repräsentiert {ε}, die Sprache, die nur das leere Wort enthält repräsentiert (kein Wort) repräsentiert die Vereinigung repräsentiert die Konkatenation repräsentiert die Iteration (L) repräsentiert dasselbe wie L.

23 .4. REGULÄRE SPRACHEN 9 Beispiel 3. Die Sprache aller Wörter, die entweder mit beginnen oder enden, wird durch ( + ) + ( + ) repräsentiert. Beispiel 4. Für jede endliche Sprache L = {s s 2... s n, t t 2... t m,..., u u 2... u k } gibt es einen regulären Ausdruck, der L repräsentiert: s s 2... s n + t t 2... t m + + u u 2... u k. Korollar 2. Jede Sprache, die durch einen regulären Ausdruck repräsentiert wird, ist regulär. Beweis. Die trivialen Fälle s i, ε und repräsentieren reguläre Sprachen siehe Beispiel 7 in Abschnitt.2. Für kompliziertere reguläre Ausdrücke wissen wir schon aus den Sätzen und 2, dass die Operationen +,, die Regularität erhalten. Satz 3 (Kleenescher Satz). Eine Sprache ist genau dann regulär, wenn sie durch einen regulären Ausdruck repräsentiert werden kann. Beweis. Aufgrund des vorigen Korollars müssen wir nur beweisen, dass sich für jeden Automaten A ein regulärer Ausdruck finden läßt, der L(A) repräsentiert. Seien q (initial), q,..., q n alle Zustände von A. Wir bezeichnen mit L ij die Sprache aller Wörter, die q i nach q j überführen, also w L ij (q i, w) (q j, ε). Wenn wir einen regulären Ausdruck für jede Sprache L ij finden, sind wir fertig, da falls q ji, q j2,... q jm alle finalen Zustände sind, gilt L(A) = L j L j2 L jm. Um einen regulären Ausdruck für L ij zu finden, führen wir noch eine Verfeinerung dieser Sprache ein: wir bezeichnen mit L k ij (k =,..., n + ) die Sprache aller Wörter w L ij, die für den Übergang von q i nach q j keinen der Zustände q k,..., q n als innere Zustände brauchen. Genauer: setzen wir, für jedes Wort w = s,..., s m in L ij, q () = δ(q i, s ) q (2) = δ(q (), s 2 ). q (m) = δ(q (m ), s m ) Dann gilt q (m) = q j, und die Zustände q (),..., q (m ) sind innere Zustände des Überganges von q i zu q j. Dann definieren wir L k ij wie folgt: w L k ij alle Zustände q (),..., q (m ) liegen in der Menge {q,..., q k } Es ist klar, dass L ij = L n+ ij. Es genügt also zu zeigen, dass jede Sprache L k ij (für beliebige i, j und k) durch einen regulären Ausdruck repräsentiert werden kann. Das beweisen wir durch Induktion über k:

24 2 KAPITEL. ENDLICHE AUTOMATEN k = : Ein Wort w liegt genau dann in L ij, wenn alle Zustände q(),..., q (m ) in der leeren Menge liegen, d. h., sie existieren nicht. Das bedeutet, dass entweder w = ε und q i = q j, oder w = s und δ(q i, s) = q j. Ein regulärer Ausdruck für L ij existiert, da diese Sprache endlich ist. k k + : Für jedes Wort w in L k+ ij bezeichnen wir mit s die Zahl aller Indizes r =, 2,..., m mit q (r) = q k. Falls s = ist, liegt w in L k ij. Falls s >, können wir das Wort so in s Wörter w = w w 2... w s zerlegen, dass die Berechnung des ersten Teils w den Zustand q i zum ersten Mal nach q k überführt (also liegt w in L k ik ), die Berechnung von w 2 von der ersten zur zweiten Begegnung mit q k führt (also liegt w 2 in L k kk ), analog w 3,..., w s und w s überführt den Zustand q k beim letzten Auftreten nach q j (also liegt w s in L k kj ). Es folgt, dass entweder w L k ij oder w L k ik (L k kk) L k kj. Umgekehrt ist es leicht zu sehen, dass alle Wörter aus L k ik (Lk kk ) L k kj in L k+ ij liegen. Es gilt also (*) L k+ ij = L k ij L k ik (L k kk) L k kj. Das ergibt einen regulären Ausdruck für L k+ ij aufgrund von regulären Ausdrücken für L k ij (Induktionsvoraussetzung). Beispiel 5. Wir beschreiben einen regulären Ausdruck für die Sprache, die der folgende Automat akzeptiert: a q b q b a Wir suchen Die obige Formel (*) ergibt L(A) = L 2. L 2 = L L (L ) L. Es gilt L = L L (L ) L = a + (ε + b)(ε + b) a = a + b a und L = L L (L ) L = (ε + a) + b(ε + b) a = ε + a + bb a = ε + (ε + bb )a = ε + b a, also L(A) = (a + b a) + (a + b a)(ε + b a) (ε + b a). Auf den ersten Blick ist es klar, dass L(A) die Sprache aller Wörter, die mit einem a enden, ist, also L(A) = (a + b) a.

25 .5. MINIMIERUNG VON AUTOMATEN 2.5 Minimierung von Automaten Wie konstruiert man einen deterministischen Automaten, der eine gegebene Sprache L akzeptiert? Falls L durch einen regulären Ausdruck repräsentiert wird, können wir die Techniken des letzten Abschnittes (parallele und serielle Komposition sowie Feedback) anwenden, dann müssen wir aber zu dem nichtdeterministischen Automaten noch einen deterministischen Automaten konstruieren (wie in.3). Eine viel direktere Methode ist, für alle möglichen Wörter w in Σ neue Zustände q w zu basteln, wobei q w genau dann final ist, wenn das Wort w in L liegt. Übergänge werden durch (q w, s) q ws definiert. Die Gefahr hierbei liegt darin, dass wir unendlich viele Zustände benutzen. Beispiel. Für die Sprache L = ( + ) (siehe Beispiel 2 in Abschnitt.4) beginnen wir mit den Wörtern der Länge : dann die Wörter der Länge 2: q q ε q und der Länge 3: q q ε q q q q q q q ε q q q q q q q q q q q q q Um aber keine unendliche Struktur zu konstruieren, bemerken wir, dass der Zustand q mit q ε gleichgesetzt werden darf, denn ein Wort der Form w liegt genau dann in L, wenn w selbst in L liegt. Auch die Zustände q, q und alle ihre Nachfolger dürfen gleichgesetzt werden, denn kein Wort der Form w oder w liegt in L. Als Ergebnis erhalten wir den Automaten, der L akzeptiert.

26 22 KAPITEL. ENDLICHE AUTOMATEN Bemerkung. Falls ein DEA A mit L = L(A) gefunden ist, fragen wir uns, ob es nicht auch besser geht, z. B., ob für die Sprache aus Beispiel wirklich 4 Zustände nötig sind. Dazu dient der folgende Minimierungsprozeß: erst werfen wir alle Zustände von A, die unerreichbar sind, weg und dann fassen wir Paare von Zuständen mit dem gleichen Verhalten zusammen. Bemerkung 2. Der Begriff einer Äquivalenzrelation auf einer Menge A sollte dem Leser bekannt sein: es ist eine Relation, die reflexiv (x x), symmetrisch (x y = y x) und transitiv (x y, y z = x z) ist. Für jedes Element x A bezeichnen wir mit [x] die Äquivalenzklasse von x: [x] = {y; y A und y x}. Die Äquivalenzklassen bilden eine disjunkte Zerlegung der Menge A. Die Menge aller Äquivalenzklassen wird mit A/ bezeichnet. Beispiel 2. Die Parität ist eine Äquivalenzrelation auf der Menge N, wobei x y bedeutet, dass x und y beides gerade oder beides ungerade Zahlen sind. Es gilt: [] ist die Menge aller geraden Zahlen und [] = N [] die Menge aller ungeraden Zahlen. Also hat N/ = {[], []} zwei Elemente, [] und []. Definition. Ein DEA A = (Q, Σ, δ, q, F ) sei gegeben. Für jeden Zustand q in Q bezeichnen wir durch A(q) den DEA, der sich von A nur im Initialzustand unterscheidet: A(q) = (Q, Σ, δ, q, F ). Zwei Zustände heißen äquivalent, falls die Automaten A(q) und A(q ) äquivalent sind, d.h. dieselbe Sprache akzeptieren. Notation: q q L(A(q)) = L(A(q )). Bemerkung 3. Also sind q und q genau dann äquivalent, wenn für jedes Wort w über Σ gilt: Falls (q, w) (q, ε) und (q, w) (q, ε), ist q genau dann final, wenn q final ist. Das bedeutet usw.. q und q sind entweder beide final oder keiner (man wählt w = ε),. δ(q, s) und δ(q, s) sind, für beliebige s, beide final oder keiner, 2. δ(δ(q, s ), s 2 ) und δ(δ(q, s ), s 2 ) sind, für beliebige s und s 2, beide final oder keiner Lemma. Für beliebige Zustände q q gilt δ(q, s) δ(q, s), für alle s Σ. Beweis. Dies folgt aus der Beobachtung, dass der DEA A(q) ein Wort der Form sw (s Σ und w Σ ) genau wie A(δ(q, s)) das Wort w berechnet.

27 .5. MINIMIERUNG VON AUTOMATEN 23 Bemerkung 4. Wir wollen äquivalente Zustände identifizieren (siehe Beispiel ). Das bedeutet formal, dass wir, statt mit Q zu arbeiten, mit der Menge Q/ aller Äquivalenzklassen [q], wobei die oben definierte Äquivalenz ist, arbeiten. Auf dieser Menge möchten wir eine Übergangsfunktion δ : (Q/ ) Σ Q/ einführen, die der Funktion δ entspricht: aus δ(q, s) = q folgt δ([q], s) = [q], oder kürzer: (*) δ([q], s) = [δ(q, s)]. Aus dem obigen Lemma folgt, dass das korrekt ist. Definition.. Für einen erreichbaren DEA A = (Q, Σ, δ, q, F ) definieren wir die Minimierung als den DEA A min = (Q, Σ, δ, [q ], F ), dessen Zustände die Äquivalenzklassen der Zustände von A sind: Q = Q/, dessen Übergangsfunktion δ durch (*)definiert ist und dessen Zustand [q] genau dann final ist, wenn q in A final ist. 2. Für einen beliebigen Automaten A definieren wir die Minimierung als (A r ) min. Bemerkung 5. Ein DEA heißt minimal, wenn er mit seiner Minimierung übereinstimmt, d. h., wenn er erreichbar ist und seine Zustände paarweise nichtäquivalent sind. Satz 2 unten erläutert diese Terminologie. Beispiel 3. Der folgende Automat A a q b b q a a q 3 b q 2 a,b ist erreichbar. Die Zustände q und q 3 sind äquivalent. Die Äquivalenzklassen [q ] = {q }, [q ] = {q, q 3 } und [q 2 ] = {q 2 } sind voneinander verschieden. Die Minimierung von A ist der Automat a,b [q ] b [q ] a [q 2 ] a,b Satz. Die Minimierung eines Automaten A akzeptiert dieselbe Sprache wie A, d. h. L(A) = L(A min ).

28 24 KAPITEL. ENDLICHE AUTOMATEN Beweis. Es genügt, diesen Satz für erreichbare Automaten zu beweisen, siehe Bemerkung 4. Dazu stellen wir fest aus (q, w) (q, ε) in A folgt ([q], w) ([q ], ε) in A min. In der Tat, falls w = s... s n ist, bezeichnen wir q = δ(q, s ), q 2 = δ(q, s 2 ),..., q n = δ(q n, s n ) in A. Es gilt q = q n und aus (*) folgt [q ] = δ([q], s ),..., [q n ] = δ([q n ], sn) also [q ] = [q n ]. Das Wort w wird also genau dann von A akzeptiert, wenn q F (oder [q ] F ) ist. Der Automat A min akzeptiert das Wort w genau dann, wenn für q = q gilt [q ] F, d. h. genau dann, wenn w von A akzeptiert wird. Satz 2. Jeder DEA, der die Sprache L(A) akzeptiert, hat mindestens so viele Zustände wie der Automat A min. Beweis. Seien A = (Q, Σ, δ, q, F ) und A = (Q, Σ, δ, q, F ) zwei Automaten, die dieselbe Sprache akzeptieren. Falls die Äquivalenz von A genau n Klassen hat, zeigen wir, dass A mindestens n Zustände hat. Für jeden erreichbaren Zustand q von A wählen wir ein Wort w q über Σ mit (q, w q ) (q, ε) und bezeichnen mit q den entsprechenden Zustand von A : (q, w q ) (q, ε). Für zwei Zustände q, q 2 von A beweisen wir, dass aus q = q 2 folgt q q 2. In der Tat gilt für jedes Wort u (nach Beobachtung im Abschnitt.2) (q, w qi u) (q i, u) für i =, 2. Da q = q 2, haben wir also: A akzeptiert w q u genau dann, wenn er w q2 u akzeptiert. Da A dieselben Wörter wie A akzeptiert, beweist das, dass q q 2 (angenommen, dass q = q 2 ). Mit anderen Worten haben wir gezeigt, dass q q 2 = q q 2. Da wir in A r nach Voraussetzung n paarweise nichtäquivalente (erreichbare) Zustände q,..., q n haben, hat also A mindestens n Zustände q,..., q n.6 Nerode-Äquivalenz Den Minimierungsprozeß aus Abschnitt.5 können wir auch auf unendliche Automaten mit Zuständen q w für w Σ (siehe Beispiel in.5) anwenden: hier sind Zustände q w und q w2 äquivalent, falls für jedes Wort w gilt: q ww ist genau dann final, wenn q w2w final ist; d. h., w w liegt genau dann in L, wenn w 2 w in L liegt. Das ist die Intuition, die zu folgender Definition führt: Definition. Sei L Σ eine formale Sprache. Die Nerode-Äquivalenzrelation von L ist die Äquivalenzrelation auf der Menge Σ, in der zwei Wörter w und w 2 genau dann äquivalent sind, wenn für jedes Wort w Σ gilt w w L w 2 w L. Bemerkung. Falls w w 2 ist, gilt entweder, dass w, w 2 beide in L liegen, oder beide nicht in L liegen. (In der Definition setze man w = ε.) Beispiel. Für die Sprache L = ( + ) {, } gilt:

29 .6. NERODE-ÄQUIVALENZ 25. Die Wörter aus L sind alle äquivalent zu ε, denn aus w L folgt w w L genau dann, wenn w L. 2. Alle Wörter der Form w, mit w L, sind äquivalent zu, denn es gilt w w L genau dann, wenn w L. Analog sind alle Wörter der Form w, mit w L, sind äquivalent zu. 3. Die Wörter, die mit oder beginnen sind alle äquivalent, denn für zwei solche Wörter w, w 2 gilt w w / L und w 2 w / L. Allgemeiner: alle Wörter ausser (), (2) sind äquivalent. Die Menge {, } / aller Äquivalenzklassen hat also vier Elemente: [ε] = L [] = L [] = L [] = alle anderen Wörter. Falls die Nerode-Äquivalenzrelation endlich viele Klassen hat, ist L regulär. Wir zeigen, wie man einen (minimalen) Automaten für L konstruiert: Minimale Realisierung einer Sprache L Σ, deren Nerode-Äquivalenzrelation n Klassen hat. Die minimale Realisierung der Sprache L ist der DEA A L = (Σ /, Σ, δ, [ε], F ), dessen Zustände die Äquivalenzklassen [w] von Wörtern w aus Σ sind, die Übergangsregeln sind (*) ([w], s) [ws] für w Σ, s Σ und ein Zustand [w] ist genau dann final, wenn w L. Beispiel 2. Für L = (+) hat der oben konstruierte Automat A L die Zustände [ε], [], [], [], wobei [ε] sowohl initial als auch final ist. Die Übergangsregeln sind durch bestimmt, z. B. ([], ) [ε] und ([], ) [], denn ε und. Hier ist die minimale Realisierung von L: [ε] [] [] [], Bis auf eine Umbenennung der Zustände ist das derselbe Automat wie der in Abschnitt.5, Beispiel.

30 26 KAPITEL. ENDLICHE AUTOMATEN Lemma. Die oben definierte minimale Realisierung A L akzeptiert in der Tat die gegebene Sprache L und ist minimal. Beweis.. Wir beweisen, dass A L die Sprache L akzeptiert. Es gilt: ([v], w) ([vw], ε) für alle Wörter v, w in Σ. Das beweisen wir durch Induktion über die Länge n des Wortes w = s... s n : n = : ([v], ε) ([vε], ε) denn vε = v. n n + : Aus ([v], s... s n ) ([vs... s n ], ε) (Induktionsvoraussetzung) folgt nach der Definition von und δ (siehe (*) oben) ([v], s... s n s n+ ) ([vs... s n ], s n+ ) ([vs... s n s n+ ], ε). Angewendet auf den Initialzustand [ε] ergibt dies also L(A) = L. 2. A L ist bestimmt erreichbar, da w L(A) [εw] F w L, ([ε], w) ([w], ε). Falls zwei Zustände [w ], [w 2 ] äquivalent sind, d. h., falls für jedes Wort w gilt [w w] F [w 2 w] F, sind w und w 2 offensichtlich Nerode-äquivalent, also gilt [w ] = [w 2 ]. Deswegen ist A L minimal. Satz. Eine Sprache ist genau dann regulär, wenn die Nerode-Äquivalenzrelation endlich viele Äquivalenzklassen hat. Beweis. Die obige minimale Realisation beweist, dass die Bedingung hinreichend ist. Um zu beweisen, dass sie auch notwendig ist, sei L Σ regulär, d.h. es gibt einen DEA A = (Q, Σ, δ, q, F ) mit L = L(A). Falls A n Zustände hat, zeigen wir, dass die Nerode-Äquivalenzrelation höchstens n Klassen hat. Dazu genügt es zu beweisen, dass zwei Wörter w, w 2 über Σ Nerode-äquivalent sind, falls die Zustände q i mit (q, w i ) q i für i =, 2 gleich sind: es folgt dann, dass verschiedene Äquivalenzklassen zu verschiedenen Zuständen von A führen. Sei q = q 2. Nach Beobachtung im Abschnitt.2 gilt für jedes Wort w über Σ : (q, w i w) (q i, w) Also gilt w w L genau dann, wenn w 2 w L. Beispiel 3. Die Sprache L (n) aller binären Wörter mit einer auf der Stelle n von rechts (siehe Beispiel 3 in.3) kann durch keinen DEA mit weniger als 2 n Zuständen akzeptiert werden. Wir beweisen nämlich, dass alle 2 n Wörter der Länge n paarweise nicht Nerode-äquivalent sind. In der Tat, falls w v zwei Wörter der Länge n sind, gibt es eine Stelle i (=,..., n) in der sich w und v unterscheiden, sagen wir, w hat eine auf Stelle i und v eine. Das Wort w i hat eine auf Stelle (i ) + (n i + ) = n von rechts und gehört deshalb zu L (n), während v i eine an der Stelle n von rechts hat und darum nicht zu L (n) gehört. Das beweist, dass v w.

31 .7. BEWEISE DER REGULARITÄT 27 Beispiel 4. Die Sprache L = aus Beispiel 2 in Abschnitt.3 hat wenigstens 4 Äquivalenzklassen: die Wörter ε,,, und sind paarweise nichtäquivalent. Deswegen kann L von keinem DEA mit 3 Zuständen akzeptiert werden..7 Beweise der Regularität Wenn wir beweisen wollen, dass eine Sprache regulär ist, können wir verschiedene Methoden kombinieren:. reguläre Ausdrücke beschreiben reguläre Sprachen, 2. endliche Automaten (auch nichtdeterministische) akzeptieren reguläre Sprachen, 3. die Nerode - Äquivalenz einer regulären Sprache hat endlich viele Klassen und 4. Zusammensetzung aus einfacheren regulären Sprachen. Zu 4 wissen wir, dass die Operationen +,, aus regulären Sprachen wieder reguläre Sprachen erzeugen. Wir zeigen jetzt zwei weitere Eigenschaften dieses Typs: Satz. Falls L Σ eine reguläre Sprache ist, ist auch ihr Komplement L = Σ L regulär. Beweis. Sei M ein DEA, der L akzeptiert. Sei M derselbe Automat, bei dem nur die Mengen F (aller finalen Zustände) und Q F (aller nicht finalen Zustände) vertauscht sind: M = (Q, Σ, δ, q, F ) = M = (Q, Σ, δ, q, Q F ). Dann akzeptiert M ein Wort genau dann, wenn M das Wort nicht akzeptiert, also L(M) = Σ L(M). Korollar. Der Durchschnitt zweier regulärer Sprachen ist regulär. Beweis. Dies folgt aus den bekannten de Morganschen Regeln: Falls L, L 2 Σ regulär sind, so sind auch Σ L und Σ L 2 regulär, deswegen ist L = (Σ L ) + (Σ L 2 ) = Σ (L L 2 ) regulär und aus Satz folgt dann, dass auch L L 2 regulär ist. Korollar 2. Für jede reguläre Sprache L Σ ist auch die Sprache L + regulär. Beweis. Falls ε L, ist L + = L regulär, nach Satz 2 in Abschnitt.4 L + = L (Σ {ε}) und da L regulär ist (siehe.4) und Σ {ε}, als Komplement der regulären Sprache {ε}, regulär ist, ist auch L + regulär.

32 28 KAPITEL. ENDLICHE AUTOMATEN Beispiel. Sei L die Sprache aller Wörter über dem Alphabet Σ = {,,..., 9}, die dezimale Codierungen von Zahlen, die durch sechs teilbar sind, darstellen. Also: L = {w Σ ; w ist eine durch sechs teilbare Zahl}. Um zu zeigen, dass L regulär ist, beobachten wir, dass ausser kein Wort in L mit dem Buchstaben beginnt, also ist L eine Untermenge der regulären Sprache L = + ( )( ) aller Wörter, die eine Zahl codieren. Ferner stellen wir fest, dass eine Zahl genau dann durch sechs teilbar ist, wenn sie gerade und durch drei teilbar ist. Also gilt L = L L 2 L 3, wobei L 2 die Sprache aller Wörter, die mit einer geraden Zahl enden, ist: L 2 = ( ) ( ), und L 3 die Sprache aller Wörter ist, bei denen die Summe aller Ziffern durch 3 teilbar ist. Es bleibt zu zeigen, dass L 3 regulär ist. Wir untersuchen die Nerode- Äquivalenz von L 3 : falls Wörter w, w 2 über {,,..., 9} zwei Zahlen repräsentieren, die modulo 3 kongruent sind, sind sie Nerode-äquivalent, denn w u ist genau dann durch 3 teilbar, wenn w 2 u durch 3 teilbar ist. Jedes Wort ist also Nerode-äquivalent zu ε,, 2 oder 3. Die Nerode-Äquivalenz hat 4 Klassen, deswegen ist L 3 regulär. Beispiel 2. Ist die Sprache L {a, b} aller Wörter, deren Länge ungerade ist und die eine gerade Zahl an a s beinhalten, regulär? Wir sprechen also von der Sprache L = L L 2, wobei L die Sprache aller Wörter ungerader Länge und L 2 die Sprache der Wörter mit gerader Anzahl von a s ist. Es gilt: die Menge L aller Wörter gerader Länge ist regulär: L = (aa + ab + ba + bb). Also ist L auch regulär. Die Sprache L 2 ist regulär, denn sie wird von dem folgenden Automaten akzeptiert: b b a Bemerkung. In Beispiel 8 aus.2 haben wir eine Sprache gezeigt, die nicht regulär ist. Jetzt wollen wir ein Kriterium formulieren, das uns oft erlaubt, die Nichtregularität zu beweisen. Satz 2 (Pumping-Lemma für reguläre Sprachen). Falls L Σ eine reguläre Sprache ist, dann existiert ein n, so dass für jedes Wort w aus L mit einer Länge w n eine Zerlegung a w = xyz mit x, y, z Σ existiert, für die gilt. y ε 2. xy n

33 .7. BEWEISE DER REGULARITÄT xy m z L für alle m N. Beweis. Sei M ein DEA, der L akzeptiert, und sei n die Anzahl seiner Zustände. Für jedes Wort w L, das mindestens n Buchstaben hat, müssen sich in der Berechnung von w Zustände wiederholen. Das heißt, falls w = s s 2... s p (p n) bezeichnen wir mit q,..., q p die Zustände von M in der Berechnung von w: q ist der initiale Zustand und q = δ(q, s ),..., q p = δ(q p, s p ). Dann können die Zustände q,..., q p nicht alle voneinander verschieden sein, da wir nur n Zustände zur Verfügung haben und p + > n. Wir betrachten die erste Wiederholung eines Zustandes in der Folge q,..., q p, d. h. es seien k und i die kleinstmöglichen Indices mit q i = q i+k, für i =,..., n und k. q q... q i q i+k+... q p q i+k q i+... Wir setzen x = s s 2... s i y = s i+ s i+2... s i+k z = s i+k+ s i+k+2... s n Da k, gilt y ε. Da k und i die erste Wiederholung darstellen, also so klein wie möglich gewählt wurden, gilt ferner k + i n und somit xy n. Die Berechnung von w = xyz endet im Zustand q p, der final sein muß, weil w akzeptiert wird. Aber auch die Berechnung von xyyz endet im Zustand q p : nachdem xy berechnet worden ist, befindet sich der Automat M im Zustand q i+k = q i, und von diesem Zustand führt ihn das Wort yz nach q p. Deswegen wird auch xyyz akzeptiert. Analoges gilt für xy m z, falls m >. Und xz wird auch akzeptiert: hierbei wird der Kreis q i,..., q i+k ausgelassen. Beispiel 3. Die Sprache aller Primzahlen in N = { } ist nicht regulär. Ansonsten hätten wir eine Konstante n, so dass es für jede Primzahl p n eine Zerlegung p = x + y + z mit y gibt (die Konkatenation von Wörtern in { } Eigenschaft, dass entspricht der Addition), mit der x + my + z eine Primzahl ist für alle m. Das ist aber nicht möglich, denn für m = x + 2y + z + 2 gilt: x + (x + 2y + z + 2)y + z = (y + )(x + 2y + z) ist keine Primzahl.

34 3 KAPITEL. ENDLICHE AUTOMATEN Beispiel 4. Ist die Sprache L = {,,,... } = { n n ; n =, 2, 3,... } regulär? Nein, denn sonst hätten wir ein Wort xyz, y ε, so dass xy m z L für alle m. Aber aus xyz L, y ε, folgt xyyz / L. Falls nämlich y nur aus en besteht, hat xyyz mehr en als en, analog falls y nur aus en besteht. Aber falls y en sowie en beinhaltet, hat xyyz eine vor einer, also wieder xyyz / L. Beispiel 5. Ist die Sprache regulär? L = { a, b } { c n a k b k n, k } Nein, aber dies lässt sich leider nicht mit Hilfe des Pumping-Lemmas beweisen. Es sei n eine natürliche Zahl. Wir zeigen, dass jedes Wort w aus der Sprache L mit w n eine Zerlegung w = xyz mit den im Pumping-Lemma genannten Eigenschaften hat. Es sei also w = s s k L mit w n. Falls w { a, b }, erhält man die Zerlegung x = ε y = s z = s 2 s k. Es gilt y ε, xy = n und xy m z { a, b } L für alle m N. Anderenfalls gilt w = c i a j b j. Jetzt haben wir folgende Zerlegung x = ε y = c z = c i a j b j. Wiederum gilt y ε und xy = n. Falls i = ist, gilt xz = a j b j, was in { a, b } L liegt, und das Wort xy m z = c i +m a j b j, für m, liegt ebenfalls in L. Analog zum letzteren Fall liegt für i > das Wort xy m z in L für alle m N. Aus der Tatsache, dass man jedes Wort w aus L mit w n geeignet zerlegen kann, folgt nun allerdings nicht die Regularität von L. Die Bedingung im Pumping-Lemma ist doch nur notwendig und nicht hinreichend für Regularität. Um zu sehen, dass die Sprache L nicht regulär ist, bietet sich eine Untersuchung der Nerode-Äquivalenzklassen an (deren endliche Anzahl ist doch eine äquivalente Bedingung zur Regularität). Es ist leicht zu sehen, dass denn für das Wort u = b n gilt n m = [ca n ] [ca m ], ca n u = ca n b n L aber ca m u = ca m b n L. Deswegen sind die Äquivalenzklassen [c], [ca], [ca 2 ],... voneinander verschieden, was beweist, dass L nicht regulär ist. Beispiel 6. Ist die Sprache L = { n k m ; n, k, m =,, 2,... } regulär? Bestimmt! Sie ist doch repräsentiert durch.

35 .8. MOORE- UND MEALY-AUTOMATEN 3.8 Moore- und Mealy-Automaten Endliche Automaten können auch für die Berechnung von Funktionen (statt des Akzeptierens von Sprachen) verwendet werden. Anstelle der Menge F der finalen Zustände brauchen wir hier eine Abbildung λ, die den Zuständen Ausgaben zuordnet. Die Ausgabe hängt entweder nur vom Zustand ab (Moore-Automaten) oder vom Zustand und von der Eingabe (Mealy-Automaten). Definition. Ein Moore-Automat ist ein Sechs-Tupel A = (Q, Σ, δ, q, Γ, λ), wobei Q, Σ, δ : Q Σ Q und q Q dieselbe Bedeutung wie für DEA haben, Γ eine endliche Menge (von Ausgabesymbolen) ist und λ : Q Γ eine Abbildung (Ausgabefunktion) ist. Notation: q/y falls λ(q) = y. Der Automat berechnet die Funktion β : Σ Γ +, die jedem Eingabewort w = s s n das entsprechende Ausgabewort β(w) = y y y n der Berechnung von w s s q /y 2 q /y... s n q n /y n zuordnet. Also falls die q i induktiv durch q i = δ(q i, s i ) definiert werden, gilt y i = λ(q i ), i =,..., n. Es gilt speziell, dass β(ε) = λ(q ). Beispiel. Wir konstruieren einen Moore-Automaten, der zu jedem binären Wort w das Wort zuordnet, dass mit einem a beginnt und dann jede durch b und jede durch c ersetzt: q /a q /b q 2 /c Definition. Ein Mealy-Automat ist ein Sechs-Tupel A = (Q, Σ, δ, q, Γ, λ), wobei Q, Σ, δ : Q Σ Q und q Q dieselbe Bedeutung wie für DEA haben, Γ eine endliche Menge ist und λ : Q Σ Γ eine Ausgabefunktion. Notation: q s/y q falls δ(q, s) = q und λ(q, s) = y. Der Automat berechnet die Funktion β : Σ Γ, die jedem nichtleeren Eingabewort w = s s n das entsprechende Ausgabewort β(w) = y y n der Berechnung von w zuordnet, und β(ε) = ε. s q /y s q 2/y 2... s n/y n q n

36 32 KAPITEL. ENDLICHE AUTOMATEN Beispiel 2. Ein Mealy-Automat, der für binäre Zahlen die Kongruenzklasse modulo 8 berechnet (d. h., eine Binärzahl wird Wort über {, } mit dem niederwertigsten Bit zuerst eingegeben; die Ausgaben sind die drei ersten Bits des Wortes gefolgt von en) ist der folgende: / q / / q / / q 2 / / / q 3 Bemerkung. Moore- und Mealy-Automaten realisieren fast dieselbe Ausgabefunktionen. Genauer: (i) Zu jedem Moore-Automaten A gibt es einen Mealy-Automaten B mit wobei c = λ A (q ). Wir ersetzen β A (w) = cβ B (w), q/i s q /j durch q s/j q Beispiel: der Automat in Beispiel ergibt: q /b q /b /c /c q 2 /b /c (ii) Zu jedem Mealy-Automaten A gibt es einen Moore-Automaten B mit für ein c Γ. β B (w) = cβ A (w) Wir formen die neue Zustandsmenge: Q Γ. Wir wählen c Γ. Dann ersetzen wir q s/i q durch q, j s q, i für alle j Γ, wobei λ A ( q, j ) = j gilt, und als Initialzustand q, c gewählt wird.

37 .8. MOORE- UND MEALY-AUTOMATEN 33 Beispiel: Der Automat aus Beispiel 2 ergibt mit c = den folgenden Automaten:, q, q, q 2, q 3,, q, q, q 2, q 3,

38 34 KAPITEL. ENDLICHE AUTOMATEN

39 Kapitel 2 Kontextfreie Sprachen und Kellerautomaten 2. Die Idee einer formalen Grammatik Wir haben gesehen, wie endliche Automaten eine Sprache akzeptieren. In vielen Gebieten der Software-Entwicklung ist es aber wichtiger, Sprachen zu erzeugen, als zu akzeptieren. Dafür sind die regulären Ausdrücke besser als die endlichen Automaten geeignet. Das illustrieren wir informell durch einige Beispiele, bevor wir die formale Definition präsentieren. Beispiel. Betrachten wir die Sprache L, die durch den regulären Ausdruck a(a + b )b definiert wird. Dieser Ausdruck erzeugt die Wörter der Sprache L, indem er sagt:. Der erste Buchstabe ist a. 2. Dann folgt der Rumpf T des Wortes: eine Reihe lauter a s oder b s. 3. Am Ende kommt ein b. Diese Erzeugungsidee kann wie folgt formalisiert werden: sei S ein Startsymbol oder das Symbol, das wir abstrakt String (= Wort) nennen. Wir können., 2., 3. kompakt durch die folgenden drei Ersetzungsregeln ausdrücken. Zuerst hat jedes Wort die Form at b, wobei T der Rumpf aus a + b ist:. S at b. Das Symbol soll kann sein gelesen werden; hier also S (String) kann a(rumpf)b sein. Jetzt müssen wir den Rumpf durch geeignete Regeln erzeugen. Zuerst führen wir eine Variable A für String aus a s ein; diese wird durch die folgenden Regeln 2. A ε aa ( A kann entweder ε oder von der Form aa sein ) bestimmt. Analog für 3. B ε bb und letztlich 4. T A B ( der Rumpf kann entweder A oder B sein ). 35

40 36 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Beispiel 2. Die Sprache aller Wörter n n (n =, 2, 3,... ) lässt sich durch die folgenden Regeln S S erzeugen. In dieser Sprache gilt: ein Wort S kann (nur) oder von der Form (Wort) sein. Beispiel 3. Die Sprache aller Palindrome, d.h. aller Wörter im Alphabet Σ = {a, b,..., z}, die rückwärts genauso gelesen werden wie vorwärts, lässt sich durch die folgenden Regeln S ε asa bsb... zsz a b... z erzeugen. Diese Beispiele illustrieren informell die Idee einer formalen Grammatik: a. Man unterscheidet zwischen den eigentlichen oder terminalen Symbolen, in denen die erzeugten Wörter geschrieben werden (z.b. a, b in Beispiel in Abschnitt 2.) und Hilfssymbolen oder Variablen (z.b. S, T, A, B in Beispiel in Abschnitt 2.). b. Die Grammatik besteht aus Ersetzungsregeln (kurz Regeln, auch Produktionen genannt) der Form A w, die uns erlauben, in jedem Wort den Buchstaben A durch das Wort w zu ersetzen. c. Wir interessieren uns lediglich für die Wörter über dem terminalen Alphabet, die aus dem Startsymbol S ableitbar (durch eine oder mehrere Anwendungen der Regeln) sind. Notation. Ersetzungsregeln A w,..., A w n mit derselben linken Seite werden kompakter als A w w 2... w n beschrieben. 2.2 Kontextfreie Grammatik Definition. Eine kontextfreie Grammatik G ist ein Quadrupel G = (Σ, V, S, P ), wobei Σ ein Alphabet (aller terminalen Symbole) ist, V ein Alphabet (aller Variablen oder nichtterminalen Symbole) ist, das zu Σ disjunkt ist, S V das Startsymbol ist und P eine endliche Untermenge von V (Σ V ) ist, deren Elemente Produktionen (oder Ersetzungsregeln) heißen und in der Form A a a 2... a n mit A V und a... a n (Σ V ) dargestellt werden. Bemerkung. Die Anwendung der Produktion A a a 2... a n auf ein Wort w bedeutet, dass im Wort w der Buchstabe A durch das Wort u = a a 2... a n ersetzt wird. (Das ist nur möglich, falls w den Buchstaben A enthält. Falls w den Buchstaben an verschiedenen Stellen enthält, sind verschiedene Ergebnisse einer Anwendung der Produktion auf w möglich.) Formal: Sei w = w Aw ein Wort, wobei w, w (Σ V ) Wörter sind. Das Ergebnis der Anwendung der Produktion A u auf w ist das Wort w uw. Falls n =, die Produktion also die Form A ε hat, ist das Ergebnis der Anwendung auf w = w Aw das Wort w w. Da ε die Rolle der Bezeichnung des leeren Wortes hat, brauchen wir die folgende Voraussetzung: Weder Σ noch V enthält das Symbol ε.

41 2.2. KONTEXTFREIE GRAMMATIK 37 Notation. Es gelten die folgenden Regeln:. Mit bezeichnen wir die Anwendung einer einzelnen Produktion; also schreiben wir für Wörter w, v (Σ V ) w v, falls es eine Produktion A u der Grammatik und Wörter w, w (Σ V ) gibt, so dass w = w Aw und v = w uw. 2. Mit bezeichnen wir die reflexive und transitive Hülle der Relation. Das heißt: w v [zu lesen: v ist aus w ableitbar] bedeutet, dass w = v oder w v, oder es gibt Wörter w,..., w n mit w w w 2... w n v. Bemerkung 2. Das Wort w = w Aw heißt der Kontext, in dem sich der Buchstabe A befindet. Die obige Definition der Anwendung sagt uns, dass eine Produktion A u ohne Berücksichtigung des Kontextes von A angewendet wird deshalb spricht man von kontextfreien Grammatiken. Definition. Für jede kontextfreie Grammatik G heißt die Menge aller Wörter über dem Terminalalphabet Σ, die aus dem Startsymbol ableitbar sind, die von G erzeugte Sprache L(G). Kürzer: L(G) = {w Σ ; S w}. Beispiel. In Beispiel 2 in Abschnitt 2. behaupteten wir, dass die Sprache L = { n n ; n =, 2, 3,... } von der folgenden Grammatik G erzeugt wird: G = ({, }, {S}, S, P ), wobei P die folgenden Produktionen sind: R = {S, S S} oder kürzer: S S Das beweisen wir jetzt formal. Beweis. (von L = L(G)). Wir zeigen zuerst, dass jedes Wort n n ableitbar ist, das heißt, dass L L(G) gilt: wir wenden (n )-mal die Produktion A S an und bekommen S S S... n S n. Jetzt wird die Produktion S angewendet: S n S n n n. 2. Demnächst zeigen wir, dass L(G) L gilt. Wir beweisen eine etwas allgemeinere Aussage (die auch Wörter mit Variablen betrifft). Jedes Wort w {,, S}, das aus S ableitbar ist, hat die Form w = n n oder w = n S n. Das beweisen wir durch Induktion über der Länge k der Ableitung S w: k = : w = S ist hier von der zweiten Form (mit n = ). k k + : Falls w das vorletzte Wort der Ableitung von w ist, so gilt: S w w, und für w haben wir eine Ableitung der Länge k. Nach der Induktionsvoraussetzung gilt also entweder w = n n (das ist aber nicht möglich, denn es gilt w w und auf n n kann man keine Produktion anwenden) oder w = n S n. Die beiden Produktionen unserer Grammatik ergeben dann w = n+ n+ oder w = n+ S n+.

42 38 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Beispiel 2. Hier wollen wir ein Beispiel, das in die Richtung natürlicher Sprachen geht, vorführen. Wir verwenden die folgenden Variablen: S Startsymbol (oder Satz ) (SBS) Substantiv (ADJ) Adjektiv (VRB) Verb (PHR) Phrase mit den folgenden Produktionen:. Ein Satz hat die Form (Phrase)(Verb)(Phrase): S (PHR)(VRB)(PHR) 2. Phrase ist ein Substantiv mit oder ohne einem Adjektiv: (PHR) (SBS) (ADJ)(SBS) 3. Produktionen für Terminalsymbole: (SBS) Apfel Karl (ADJ) groß grün (VRB) isst Genauer: wir betrachten die Grammatik G = (Σ, V, S, P ), wobei Σ = { Apfel, Karl, groß, grün, isst }, V = {S, (SBS), (ADJ), (VRB), (PHR)} und P aus den oben genannten Produktionen. bis 3. besteht. Einige Beispiele der Sätze, die die Grammatik erzeugt: Karl isst Apfel groß Karl isst grün Apfel. Da unsere Grammatik kontextfrei ist, erhalten wir leider auch Sätze, die dem intuitiven Kontext nicht entsprechen, wie z.b. grün Karl isst grün Karl. Beispiel 3. Reguläre Ausdrücke. Erinnern wir uns an die Definition eines regulären Ausdrucks r, sagen wir, über {, }: r ::= ε r + r r r r* (r) Das ist fast eine kontextfreie Grammatik für reguläre Ausdrücke mit Startsymbol r. Wir müssen aber die folgenden Details modifizieren:. Die ersten vier regulären Ausdrücke werden selbstverständlich Terminalsymbole unserer Grammatik. Da aber ε kein Terminalsymbol sein darf, schreiben wir statt dessen epsilon. Also: die Sprache, die nur das leere Wort beinhaltet, ist mit epsilon repräsentiert. 2. Statt r schreiben wir r (zwei Buchstaben). 3. Wir erlaubten, r r als rr zu schreiben, jetzt bestehen wir auf r r. Das heißt, wir arbeiten mit der Grammatik G = (Σ, {r}, r, P ), wobei die Terminalsymbole die folgenden sind: Σ = {,, epsilon,, (, ), +,, }, die einzige Variable r das Startsymbol ist und P die folgende Menge von Produktionen ist: r epsilon r + r r r r (r) Es ist klar, dass (mit den obigen Modifikationen) die Sprache L(G) nur reguläre Ausdrücke über {, } enthält. Umgekehrt gilt, dass jeder reguläre Ausdruck ein

43 2.3. ABLEITUNGSBÄUME 39 Wort in L(G) ist, denn die Menge aller regulären Ausdrücke ist (laut Definition) die kleinste Menge, in der,, epsilon und enthalten sind, und dass für Elemente r, r 2 dieser Menge auch r +r 2, r r 2, r und (r) Elemente sind und L(G) erfüllt dies alles. Zum Beispiel ist die Sprache aller Wörter, die mit anfangen und, falls noch etwas kommt, die Form n haben, durch den regulären Ausdruck (* + ε) repräsentiert, oder, modifiziert: ( +epsilon). Dafür haben wir die folgende Ableitung: r r r r (r) r (r + r) r (r r + r) r (r r r + r) r (r r r + r) r r (r r r + r) r (r r r + r) (r r r + r) ( r r + r) ( r + r) ( + r) ( + epsilon) Bemerkung 3. Für jede kontextfreie Grammatik gilt:. Aus u u folgt vuw vu w (für beliebige Wörter u, u, v und w über Σ V ). In der Tat haben wir u = u Au und u = u αu, wobei A α eine Produktion unserer Grammatik ist. Es gilt vuw = (vu )A(u 2 w) und vu w = (vu )α(u 2 w), und das beweist, dass dieselbe Produktion vuw vu w ergibt. 2. Aus u u folgt vuw vu w. Dies ist eine wiederholte Anwendung des ersten Falls. 3. Aus u u und u 2 u 2 folgt u u 2 u u 2. In der Tat gilt u u 2 u u 2 (wir können 2. mit v = ε und w = u 2 anwenden) und u u 2 u u 2 (wir können 2. mit v = u und w = ε anwenden). 2.3 Ableitungsbäume Eine Möglichkeit, um Ableitungen anschaulicher zu machen, ist das Benutzen des Ableitungsbaumes (parsing tree), wobei dir Produktion A a... a n durch den Baum a A a 2... a n repräsentiert wird. Bevor wir diese Idee formalisieren, zeigen wir zwei Beispiele informell. a n

44 4 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Beispiel. In der Grammatik für die Sprache n n (Beispiel 2 in Abschnitt 2.) wird die Ableitung von wie folgt repräsentiert: S S S Hier sehen wir, dass der Baum mit Symbolen aus Σ V markiert wird, die Blätter terminale Symbole und die inneren Knoten Variablen tragen. Für jeden inneren Knoten formen alle Markierungen der Söhne entweder oder S, was den beiden Produktionen S und S S entspricht. Beispiel 2. Die Sprache aa(aa + bb) aller Wörter, in denen jeder Buchstabe wiederholt wird und die mit aa beginnen, hat die Grammatik G = ({a, b}, {S, T }, S, P ) mit den Produktionen P : S aat T ε aat bbt. Hier ist ein Ableitungsbaum für die Ableitung von aaaabb: S a a a T a b T b T ε Daran sehen wir, dass das Symbol ε (das aufgrund der Produktion T ε aufgetaucht ist) einfach ignoriert werden soll. Bemerkung. Wir wollen kurz an die Begriffe geordneter und ungeordneter Baum erinnern. Ein gerichteter Graph wird Baum genannt, falls er einen Knoten w (genannt Wurzel) hat, so dass für jeden weiteren Knoten genau ein gerichteter Pfad von der Wurzel zu diesem Knoten existiert. (Ein Pfad zwischen x und y ist eine Liste von Knoten x = z, z,..., z n = y, so dass (z i, z i ) für i =,..., n eine Kante ist.) Sei ein solcher Pfad für einen Knoten x wie folgt gegeben: w = z, z,..., z n = x. Dann heißt der Knoten z n der Vater von x. Umgekehrt heißt x Sohn des Vaters

45 2.3. ABLEITUNGSBÄUME 4 z n. Jeder Knoten außer w hat also genau einen Vater. Knoten, die keine Söhne haben, heißen Blätter. Ein geordneter Baum besteht aus folgenden zwei Komponenten:. einem Baum B und 2. einer linearen Ordnung aller Söhne von x, für jeden Knoten x, der kein Blatt ist. Falls y und z zwei Söhne von x sind, sagen wir, dass y links von z steht, falls in der Ordnung aller Söhne y vor z steht. Ein markierter geordneter Baum, kurz: Baum, mit der (gegebenen) Markierungsmenge M, ist ein geordneter Baum zusammen mit einer Funktion von der Menge aller Knoten nach M. Bäume können kürzer rekursiv definiert werden:. Die Wurzel allein mit einer Marke a M ist ein Baum: a 2. Falls Bäume B,..., B n (n ) und eine Marke a M für die Wurzel gegeben sind, so ist auch a B B 2... B n ein Baum. 3. Jeden Baum kann man durch endlich viele Anwendungen von. und 2. repräsentieren. Die Tiefe eines Baumes ist die maximale Länge eines Pfades (von der Wurzel zum entferntesten Blatt). Definition. Sei G = (Σ, V, S, P ) eine kontextfreie Grammatik. Ein Ableitungsbaum ist ein Baum B mit Markierungen von Knoten in der Markierungsmenge Σ V {ε} so dass gilt: Jeder innere Knoten wird mit einer Variablen A markiert, und falls alle seine Söhne von links nach rechts mit a,..., a n markiert werden, ist A a... a n eine Produktion in P. Bemerkung 2. Es gilt: Für jeden Ableitungsbaum B lesen wir die Markierungen aller Blätter von links nach rechts, nur Blätter mit Markierung ε werden ignoriert. Das ergibt ein Wort in (Σ V ), das wir mit w B bezeichnen und dass die Front des Baumes B heisst. Falls alle Blätter von B mit ε markiert sind, gilt w B = ε. Beispiel 3. In der Grammatik G aus Beispiel 2 in Abschnitt 2.3 sind die folgenden Bäume Beispiele für Ableitungsbäume:

46 42 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S S S a a T a a T b b T S ε a a T a a T b b T Bemerkung 3. Wir wollen jetzt zeigen, dass für jede kontextfreie Grammatik G gilt: Ein Wort w liegt in L(G) w hat einen Ableitungsbaum mit Wurzel S und w Σ. Wir müssen betonen, dass es im allgemeinen mehrere Ableitungsbäume für ein Wort w L(G) gibt, z.b. hat das Wort abc in einer Grammatik mit den Produktionen S as ab Sc bc die folgenden Ableitungsbäume: S S S c a S a b b c Konstruktion eines Ableitungsbaumes: Sei w ein Wort über Σ, das aus S ableitbar ist. Wir konstruieren einen Ableitungsbaum B mit w = w B wie folgt. Gegeben eine Ableitung S w w 2... w n w n = w. Wir konstruieren Bäume B,..., B n, so dass die Blätter von B i das Wort w i formen; der Baum B n ist dann ein Ableitungsbaum für w. Baum B : Sei w = a... a p, dann ist S a... a p eine Produktion unserer Grammatik. Wir setzen: B : S a a 2... a p Falls n =, das heißt S w, ist dies ein Ableitungsbaum für w. Baum B 2 : Sei A b... b q eine Produktion unserer Grammatik, deren Anwendung die Ableitung w w 2 ergibt: w = a... a i Aa i+... a p (das heißt A = a i ) ε

47 2.3. ABLEITUNGSBÄUME 43 und w 2 = a... a i b... b q a i+... a p Wir setzen B 2 : S a... a i a i a i+... a p b b 2... b q Und so weiter. Satz. Für jede kontextfreie Grammatik G ist L(G) genau die Sprache aller Wörter über Σ, die einen Ableitungsbaum mit Wurzel S haben. Beweis. Aus der obigen Konstruktion folgt, dass jedes Wort in L(G) einen Ableitungsbaum mit Wurzel S hat. Umgekehrt beweisen wir jetzt, dass für jeden Ableitungsbaum B mit Wurzel X gilt X w B. Falls B keine Variablen in den Blättern hat, folgt w B Σ. Falls nun außerdem X = S gilt, haben wir also w B L(G). Wir benutzen Induktion über die Tiefe k des Baumes B. k = : Hier besteht der Baum B aus der Wurzel allein, also gilt w B = X und deswegen X w B. k k + : Seien a,..., a n die Markierungen aller Söhne der Wurzel (von links nach rechts). X a a 2... a n B B 2 B n Mit B i bezeichnen wir den Baum aller Nachfolger des i-ten Sohns, für i =,..., n. Dann ist B i ein Baum mit Wurzel a i der Tiefe k. Die Induktionsvoraussetzung ergibt also a i w Bi für i =,..., n. Aus der ersten Bemerkung in 2.2 sehen wir, dass dann a a 2... a n w B a 2... a n w B w B2 a 3... a n w B w B2... w Bn. Ferner ist X a... a n eine Produktion unserer Grammatik, weswegen gilt X a... a n w B w B2... w Bn. Aus der Konstruktion der Bäume B,..., B n sehen wir, dass das Wort w B gleich dem Wort w B w B2... w Bn ist. Das beweist also X w. Beispiel 4. Die Syntax von vielen Programmiersprachen kann man durch eine kontextfreie Grammatik erzeugen. Das zeigen wir anhand einer sehr einfachen Sprache, deren Befehle COM nur eine der folgenden Formen. bis 3. haben:. COM = VAR := AEXP (Zuweisung), wobei VAR eine Variable (sagen wir, hier nur x oder y) und AEXP ein algebraischer Ausdruck ist. 2. COM = COM; COM (Verkettung) oder

48 44 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN 3. COM = if BEXP then COM else COM, wobei BEXP ein Boolescher Ausdruck ist. Für AEXP erlauben wir nur Variablen x, y, Konstanten,, 2 und Operationen +,. Für Boolesche Ausdrücke sind nur Konstanten true, false oder eine Gleichung zweier algebraischer Ausdrücke mit den üblichen Operationen and, not erlaubt. Unsere Grammatik G hat also die folgenden terminalen Symbole: Σ = {x, y,,, 2, +,, true, false, =, :, ;, and, not} und die folgenden nichtterminalen Symbole: V = {COM, AEXP, BEXP} mit dem Startsymbol COM. Die Produktionen sind: COM x := AEXP y := AEXP COM; COM if BEXP then COM else COM AEXP x y 2 + AEXP AEXP AEXP AEXP BEXP true false AEXP = AEXP and BEXP BEXP not BEXP Zum Beispiel das Programm x := ; if x = y then y := + xy else y := hat den Ableitungsbaum COM COM ; x := AEXP COM if BEXP then COM else COM AEXP = AEXP y := AEXP y := AEXP x y + AEXP AEXP x y Satz 2. Für eine kontextfreie Grammatik G bezeichnen wir die maximale Länge der rechten Seite einer Produktion mit k. Dann hat jedes Wort in L(G) mit einem Ableitungsbaum der Tiefe i höchstens die Länge k i. Beweis. Für jeden Ableitungsbaum B beweisen wir, dass das Wort w B, das die Blätter von B bilden (wenn ε wie üblich ignoriert wird), höchstens die Länge k i hat. Der Beweis ist durch Induktion über die Tiefe i des Baumes B durchzuführen. i = : Ein Baum der Tiefe besteht nur aus der Wurzel und somit gilt: w B hat eine Länge = k. i i + : Jeder Baum der Tiefe i + > hat die Form A B B 2... B n wobei B,..., B n (n ) Bäume sind, deren Tiefe höchstens i ist. Nach der Induktionsvoraussetzung gilt: die Länge des Wortes w Bj für j =,..., n ist höchstens k i. Seien a,..., a n die Markierungen aller Söhne von A (d.h. aller Wurzeln von B,..., B n ).. Falls a,..., a n in Σ V liegen, gilt w B = w B w B2... w Bn (Konkatenation), und die Länge von w B ist also höchstens k i +k i + +

49 2.4. KONTEXTFREIE UND REGULÄRE SPRACHEN 45 k i = nk i. Da A a,..., a n eine Produktion in P ist, gilt (nach Definition von k) n k, also nk i k i+. 2. Falls sich ε unter den a k s befindet, gilt n = und w B = ε: A ε Die Länge von w B ist k i Kontextfreie und reguläre Sprachen Definition. Eine Sprache heißt kontextfrei, falls sie von einer kontextfreien Grammatik erzeugt werden kann, d.h. falls sie die Form L(G), G ist eine kontextfreie Grammatik hat. Beispiel. Kontextfreie Sprachen: a. Die Sprache aller richtig gebildeten algebraischen Ausdrücke (mit gegebenen Operationen und Variablen) ist kontextfrei siehe Beispiel 3 in Abschnitt 2.2. b. Die (nichtreguläre) Sprache L = { n n ; n =, 2, 3,... } ist kontextfrei siehe Beispiel in Abschnitt 2.2. c. Die Sprache L = {a n b n c n ; n =, 2, 3,... } ist nicht kontextfrei, wie wir in Abschnitt 2.5 beweisen werden. d. Im Gegensatz zu 3. ist die Sprache L = {a n b n c k ; n, k =, 2, 3,... } kontextfrei. Sie wird von der folgenden Grammatik G = ({a, b, c}, {S, T }, S, P ) mit den Produktionen S Sc T c T ab at b erzeugt. In der Tat:

50 46 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN (a) Jedes Wort a n b n c k (n, k ) ist ableitbar: S S S c c k-mal S T a T b a T b c c (n )-mal a T b a T b a b (b) Jedes ableitbare Wort aus {a, b, c} hat die Form a n b n c k. Allgemeiner: jedes von S ableitbare Wort aus {a, b, c, T } hat entweder die Form a n b n c k oder a n T b n c k. Das folgt aus der Form der Ableitungsbäume und kann leicht durch Induktion über die Tiefe des Baumes bewiesen werden. Satz. Jede reguläre Sprache ist kontextfrei. Bemerkung. Für jede reguläre Sprache werden wir in der Tat eine Grammatik finden, deren Produktionen die Form A ε oder A bb (A, B V, b Σ) haben. Beweis. Für jede reguläre Sprache L gibt es einen endlichen Automaten M = (Q, Σ, δ, q, F ), der L akzeptiert. Wir definieren eine Grammatik G, deren Variablen die Zustände von M sind, wie folgt: G = (Σ, Q, q, P ) mit den folgenden Produktionen P : A ε A bb Wir beweisen, dass L = L(G) gilt. für jeden finalen Zustand A und für jeden Zustand A und jeden Buchstaben b Σ mit B = δ(a, b).. Zuerst zeigen wir, dass jedes akzeptierte Wort w = s... s n in der Grammatik G ableitbar ist; also folgt L L(G). Aus den Zuständen der Berechnung von s... s n : q = δ(q, s ), q 2 = δ(q, s 2 ),..., q n = δ(q n, s n ) erhalten wir den Ableitungsbaum für w:

51 2.4. KONTEXTFREIE UND REGULÄRE SPRACHEN 47 q s q s 2 q 2 s 3 s n q n q n ohne Variablen in den Blättern. ε 2. Jetzt zeigen wir, dass jedes ableitbare Wort w = s... s n von M akzeptiert wird, d.h. L(G) L: ein Ableitungsbaum ohne Variablen in den Blättern muss nämlich die obige Form haben, dann folgt aus q i = δ(q i, s i ), dass δ (q, w) = q n F. Definition. Eine reguläre Grammatik ist eine kontextfreie Grammatik, deren Produktionen die Form A b b 2... b n oder A b b 2... b n B haben, wobei A, B Variablen sind und b... b n ein (möglicherweise leeres) Wort aus terminalen Symbolen ist. Korollar. Jede reguläre Sprache kann durch eine reguläre Grammatik erzeugt werden. Bemerkung 2. Wir haben im Satz in Abschnitt 2.4 scheinbar etwas mehr bewiesen: nicht nur, dass reguläre Sprachen mit Hilfe der Produktionen A b... b n oder A b... b n B erzeugbar sind, sondern auch, dass uns die einfacheren Produktionen A ε oder A bb genügen. Dies ist allerdings nicht allgemeiner, denn jede reguläre Grammatik G kann so modifiziert werden, dass nur diese einfachere Form der Produktionen vorkommt. Genauer, eine einfachere Grammatik G mit L(G) = L(G ) kann wie folgt konstruiert werden:. Jede Produktion A b b 2... b n mit n kann man durch die folgenden Produktionen ersetzen: A b B B b 2 B 2. B n 2 b n B n B n b n B n B n ε (wobei B,..., B n neue Variablen sind, die sich paarweise unterscheiden). In der Tat, die Produktion A b b 2... b n

52 48 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN wird dann durch A b B b 2 b n B n B n ε ersetzt. (Und kein anderer Ableitungsbaum kann mit den neuen Variablen konstruiert werden.) Also gilt L(G) = L(G ). 2. Analog ersetzt man A b b 2... b n B durch A b B b 2 b n B n B 3. Es bleiben also Produktionen der Form A ε, A bb oder A B. Aus dem folgenden Satz folgt, dass die letzte Form auch ersetzbar ist. Beispiel 2. Die folgende Grammatik G = ({, }, {S, A, B}, S, P ) mit den Produktionen P : S A A B B B A ε ist regulär. Sie kann durch die Grammatik G = ({, }, {S, A, B, C, D}, S, R ) ersetzt werden, deren Produktionen R die folgenden sind: S C A B C A B D B D ε A ε Satz 2. Jede reguläre Grammatik erzeugt eine reguläre Sprache. Beweis. Wie aus der obigen Bemerkung folgt, genügt es zu zeigen, dass jede reguläre Grammatik G = (Σ, V, S, P ), deren Produktionen eine der Formen A ε, A bb, oder A B haben, eine reguläre Sprache erzeugt. Wir konstruieren einen NEAS wie folgt:

53 2.4. KONTEXTFREIE UND REGULÄRE SPRACHEN 49 M = (V, Σ, δ, S, F ), also sind Zustände die Variablen von G, mit S als Initialzustand. Die finale Zustände sind gerade die Variablen, bei denen A ε eine Produktion in P ist. Die Übergänge sind durch die Produktionenn der Grammatik bestimmt: A S B im Automaten M A sb ist eine Produktion und A # B im Automaten M A B ist eine Produktion. Dann gilt: L(G) = L(M), also akzeptiert M ein Wort w genau dann, wenn S w. In der Tat, falls M das Wort w = s... s n akzeptiert, haben wir eine Berechnung () S # A #... s A # i... s n A # in... # A k im Automaten M, und wir haben einen Ableitungsbaum ohne Variablen in den Blättern, der diese Berechnung kopiert: (2) S A s A i A i s 2 A i2 A i2 s n A in A in A k ε Umgekehrt wird jedes Wort w mit einem Ableitungsbaum B ohne Variablen in den Blättern von M akzeptiert: der Ableitungsbaum kann nämlich nur die Form (2) wie oben haben, und daraus können wir eine Berechnung () des Wortes durch M ableiten. Korollar 2. Eine Sprache ist genau dann regulär, wenn sie von einer regulären Grammatik erzeugt werden kann. Beispiel 3. Die Grammatik G aus Beispiel 2 in Abschnitt 2.4 ergibt den folgenden nichtdeterministischen Automaten, der L(G ) akzeptiert:

54 5 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN C S A B D Beispiel 4. Die folgende Grammatik G = ({, }, {S, T }, S, P ) mit den Produktionen S S T SS ist nicht regulär. Sie erzeugt jedoch eine reguläre Sprache: L(G) = Eigenschaften kontextfreier Sprachen Satz. Für zwei kontextfreie Sprachen L und L 2 sind auch die Sprachen L L 2 und L L 2 kontextfrei. Beweis. Wir haben eine Grammatik G i = (Σ i, V i, S i, R i ) für die Sprache L i (i =, 2), und ohne Beschränkung der Allgemeinheit können wir voraussetzen, dass V V 2 =.. Erzeugung der Sprache L L 2 : sei G die Grammatik mit terminalen Symbolen Σ Σ 2, Variablen V V 2 {S}, wobei S / V V 2 das Startsymbol von G ist und den Produktionen S S S 2 (*) zusammen mit allen Produktionen in R und R 2. Dann gilt L(G) = L L 2. In der Tat hat jeder Ableitungsbaum B der Grammatik G die Form S S S S 2 oder B B 2 wobei B i ein Ableitungsbaum der Grammatik G i für i =, 2 ist. Es gilt w B = W Bi L i. Also liegt ein Wort genau dann in L(G), wenn es entweder in L oder in L 2 liegt. 2. Erzeugung der Sprache L L 2 : Sei G dieselbe Grammatik wie in., nur wird (*) durch die einzige Produktion S S S 2 ersetzt. Die Ableitungsbäume von G haben die Form

55 2.5. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN 5 S S S 2 B B 2 wobei B i ein Ableitungsbaum der Grammatik G i für i =, 2 ist. Es gilt w B = w B w B2. Also liegt ein Wort genau dann in L(G), wenn es die Form w w 2, wobei w i L i für i =, 2 gilt, hat. Satz 2. Falls L eine kontextfreie Sprache ist, ist L auch kontextfrei. Beweis. Sei G = (Σ, V, S, P ) eine Grammatik für L. Wir erweitern sie zu einer Grammatik G = (Σ, V {S}, S, P ), wobei S eine neue Variable ist, indem wir neue Produktionen S S S, S S und S ε hinzufügen. Dann gilt: In der Tat: L(G) = L.. L L(G): Für jedes Wort w = w w 2... w n L, wobei die w i in L liegen, haben wir Ableitungsbäume B i für w i in der Grammatik G, aus denen der folgende Ableitungsbaum für w hergestellt wird: S S S S S... B S S B 2 S S B n Der Ableitungsbaum für ε ist klar. 2. L(G) L : Für jedes Wort w L(G) haben wir einen Ableitungsbaum B mit Wurzel S in der Grammatik G mit w = w B. Durch Induktion über die Tiefe i des Baumes B zeigen wir, dass w L : i = : Hier ist B der Baum S ε und w B = ε L. S ε

56 52 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN i i + : Der Ableitungsbaum B hat eine der folgenden Formen: entweder S S B wobei B ein Ableitungsbaum in der Grammatik G ist, dann gilt oder w B L L, S S S B B 2 wobei B, B 2 Ableitungsbäume der Grammatik G sind, dann gilt w = w B w B2. Die Bäume B, B 2 haben eine Tiefe i, also ergibt die Induktionsvoraussetzung w B, w B2 L. Daraus folgt w L. Korollar. Die Klasse aller kontextfreien Sprachen enthält alle regulären Sprachen und ist unter den Operationen, und abgeschlossen. Bemerkung. Leider ist diese Klasse nicht unter Durchschnitt abgeschlossen. Um das zu zeigen, müssen wir Mittel zur Verfügung haben, um zu beweisen, dass eine Sprache nicht kontextfrei ist. Für reguläre Sprachen war das Pumping-Lemma solch ein Mittel (siehe.8). Auch für kontextfreie Sprachen gilt ein, hier ein bisschen komplizierterer, Satz desselben Stils. Bevor wir ihn aber beweisen, wollen wir noch eine Eigenschaft der kontextfreien Sprachen erwähnen: Satz 3. (ohne Beweis) Falls L eine kontextfreie Sprache und L 2 eine reguläre Sprache ist, so ist L L 2 kontextfrei. Bemerkung 2. In einem Ableitungsbaum B können wir einen beliebigen Knoten p auswählen und durch B den Baum aller Nachfolger von p bezeichnen: S p B Dann ist B ein A-Baum. Falls x das Wort aller Blätter von B ist, die vor den Blättern von B stehen, und y das Wort aller Blätter nach den Blättern von B : S p x B y w B gilt w B = xw B y.

57 2.5. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN 53 Beispiel. In dem Baum B: S X Y X X wählen wir den Knoten y mit der Markierung Y. Dann ist B : Y X X Hier ist x =, w B = und y = ε. Sei A die Variable, die den Knoten p markiert. Dann ist B ein verallgemeinerter Ableitungsbaum mit A an der Wurzel. Falls B ein beliebiger verallgemeinerter Ableitungsbaum mit derselben Markierung der Wurzel ist, können wir B durch B ersetzen und bekommen einen neuen Ableitungsbaum S A x y B w B der das Wort xw B y erzeugt. In dem oberen Beispiel sei B : Y Z dann ergibt die Ersetzung von B durch B im Ableitungsbaum S X Y Z Diese Überlegungen werden im Beweis des folgenden Pumping-Lemmas verwendet: Pumping-Lemma für kontextfreie Sprachen: Für jede kontextfreie Sprache L existiert eine Zahl n, so dass jedes Wort w in L mit der Länge w n eine Zerlegung w = uvxyz, mit u, v, x, y, z Σ und den folgenden Eigenschaften hat:. v ε oder y ε, 2. vxy n, 3. uv m xy m z liegt in L für alle m =,, 2,....

58 54 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Beweis. Wir haben eine Grammatik G mit L = L(G) und bezeichnen mit i = die Anzahl aller Variablen von G und mit k = die maximale Länge der rechten Seite einer Produktion von G. Wir beweisen, dass die Zahl n = k i+ die gewünschte Konstante ist. Sei w ein Wort, das eine Länge größer gleich n hat. Wir wählen einen Ableitungsbaum B für w mit der kleinsten Anzahl an Knoten. Nach Satz 2 in Abschnitt 2.3 wissen wir, dass B die Tiefe größer als i haben muss. Es existiert also in B ein Pfad der Länge i + in B. Jeder seiner i + Knoten, die keine Blätter sind, wird also mit einer Variablen markiert. Das ergibt i + Markierungen, obwohl es nur i Variablen gibt. Es müssen sich also Markierungen wiederholen. Wir können also zwei Knoten p und q aus B wählen, so dass. q ein Nachfolger von p ist, 2. p und q dieselbe Markierung A haben und 3. p die größte Tiefe unter Knoten mit. und 2. besitzt. Wir bezeichnen den Unterbaum von B, den alle Nachfolger von p bilden, als B. Man beachte, dass die Tiefe von B höchstens i + ist, weil der längste Pfad in B diese Länge hat (gäbe es einen längeren Pfad könnte man ein p mit größerer Tiefe in B wählen!). Dann hat B die folgende Form: B p q u z w B Das Wort w = w B hat also die Form w = uw z, wobei w = w B das Wort aller Blätter von B, u das Wort aller Blätter von B, die links von B stehen und z das Wort aller Blätter von B, die rechts von B stehen ist. Eine analoge Situation gilt für B selbst: sei B der Unterbaum aller Nachfolger von q. Dann hat B die folgende Form: p B q v y x B Das Wort w hat also die Form w = vxy, wobei w B = x. Hier gilt v ε oder y ε, denn falls v = y = ε, d.h., falls jeder Vorgänger von q im Baum B nur einen Sohn hat, können wir einen kleineren Ableitungsbaum für w finden (aber B ist der kleinste!): Es genügt, in B den Unterbaum B durch B zu ersetzen. Da der Baum B höchstens die Tiefe i + hat, gilt nach Satz 2 in Abschnitt 2.3 außerdem vxy = w k i+ = n.

59 2.5. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN 55 Der Baum B sieht jetzt wie folgt aus: B p q u z v y B x B Da die Knoten p und q dieselbe Markierung tragen, können wir einen neuen Ableitungsbaum erstellen, indem wir B durch eine Kopie des Baumes B ersetzen: B p p u z q v y B v y B x B Da B keine Variablen in den Blättern hat, gilt dasselbe für den letzten Baum. Das zeigt, dass das Wort uvvxyyz zu L(G) = L gehört. Diesen Prozess können wir wiederholen: im letzten Baum ersetzen wir B durch B und erhalten uv 3 xy 3 z L, usw. Letztendlich können wir direkt B im Baum B durch B ersetzen und bekommen einen Ableitungsbaum für uxz. Beispiel 2. Die Sprache L = {a k b k c k ; k =, 2, 3,... } ist nicht kontextfrei. Wir zeigen, dass keine Konstante n das Pumping-Lemma für L erfüllt. Wir wählen w = a n b n c n. Falls das Pumping-Lemma für L gilt, haben wir also eine Zerlegung a n b n c n = uvxyz, so dass v ε oder y ε und uv 2 xy 2 z L. Wir zeigen, dass das nicht möglich ist.. Falls y nur aus einem Buchstaben besteht, muss v zwei Buchstaben (also a und b) enthalten, denn sonst wären die drei Buchstaben nicht in gleicher Anzahl in uv 2 xy 2 z enthalten. Dann findet man aber in uv 2 xy 2 z ein b vor einem a, also gilt uv 2 xy 2 z L. 2. Falls v nur aus einem Buchstaben besteht, können wir für y analog zu. argumentieren. 3. Falls v sowie y mehrere Buchstaben enthalten, findet man in uv 2 xy 2 z wieder ein b vor einem a. Beispiel 3. Zwei kontextfreie Sprachen, deren Durchschnitt nicht kontextfrei ist. Sei

60 56 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN L = {a n b n c k ; n, k =, 2, 3,... } die kontextfreie Sprache aus Beispiel.d in Abschnitt 2.4, Analog zeigt man, dass die Sprache L 2 = {a k b n c n ; n, k =, 2, 3,... } kontextfrei ist. Aber L L 2 = {a n b n c n ; n =, 2, 3,... } ist nicht kontextfrei, wie wir oben gesehen haben. Korollar 2. Kontextfreie Sprachen sind nicht unter der Komplementbildung abgeschlossen, d.h., es gibt kontextfreie Sprachen L Σ, so dass L = Σ L nicht kontextfrei ist. In der Tat folgt aus der DeMorganschen Regel L L 2 = L + L 2, dass eine Klasse von Sprachen, die unter + und Komplementbildung abgeschlossen ist, auch unter Durchschnitt abgeschlossen sein muss. 2.6 Nullierbare Variablen In diesem Abschnitt zeigen wir, wie man Produktionen des Typs A ε loswerden kann. Erst zeigen wir einen einfachen Algorithmus, der entscheidet, ob eine Grammatik das leere Wort erzeugt. Definition. In einer kontextfreien Grammatik heißt eine Variable A nullierbar, falls aus ihr ε abgeleitet werden kann, d.h. falls A ε. Beobachtung. Für eine kontextfreie Grammatik G gilt: ε liegt in L(G) genau dann, wenn das Startsymbol nullierbar ist. Berechnung der Menge V aller nullierbaren Variablen erfolgt durch die folgende Rekursion: Anfang: V = Rekursiver Schritt: V := V {A V ; es gibt eine Produktion A B B 2... B n mit B, B 2,..., B n V }. Also liegen nach dem ersten Durchgang in V alle Variablen A, für die es eine Produktion A ε gibt. Nach dem zweiten Schritt alle Variablen, für die es eine Produktion A B B 2... B n mit Produktionen B ε,..., B n ε gibt, usw. Nach dem letzten Durchgang hat V die folgende Eigenschaft: Für jede Produktion A B B 2... B n mit B, B 2,..., B n V gilt A V. Es ist leich zu sehen, dass jede durch diese rekursive Prozedur in V gelegte Variable nullierbar ist. Umgekehrt, sei A nullierbar, und sei n die Länge der Ableitung von ε aus A. Dann liegt A nach dem n-ten Durchgang der Prozedur oben in V. Dies ist klar für n = ; für größere n benutzen wir Induktion: Sei A B... B n die erste Produktion, die die Ableitung A ε benutzt. Dann haben wir kürzere Ableitungen für B,..., B n, d.h. diese Variablen liegen in V nach der Induktionsvoraussetzung. Die obige Eigenschaft von V beweist A V. Satz. Jede kontextfreie Sprache L, die ε nicht enthält, hat eine kontextfreie Grammatik ohne Produktionen A ε. In der Tat zeigen wir einen Algorithmus, der für jede kontextfreie Grammatik G, für die ε L(G) gilt, eine kontextfreie Grammatik G erzeugt mit L(G) = L(G) so dass G keine Produktionen A ε hat.

61 2.6. NULLIERBARE VARIABLEN 57 Beweis. Sei G die Grammatik, die aus G dadurch entsteht, dass neue Produktionen hinzugefügt werden: für jede Produktion B w w 2... w i Aw i+... w n, wobei A nullierbar ist, fügen wir die Produktion B w w 2... w i w i+... w n hinzu. Diese Prozedur wird solange wiederholt, bis keine neue Produktionen entstehen. Das ändert bestimmt nicht die akzeptierte Sprache, d.h. L(G) = L(G ). Jetzt bezeichnen wir durch G die Grammatik, die wir erhalten, wenn wir aus G alle Produktionen der Form A ε entfernen. Es ist klar, dass L(G) L(G ). Zeigen wir L(G ) = L(G). Damit ist der Satz bewiesen. Für jedes Wort w in L(G ) wählen wir den kleinsten Ableitungsbaum B. Wir beweisen, dass kein Blatt von B mit ε markiert ist. Dann ist B ein Ableitungsbaum der Grammatik G, also w L(G). Falls aber ein Blatt t mit ε markiert wäre, könnten wir einen kleineren Ableitungsbaum finden: sei t der Vater von t und t sein Großvater (aufpassen: t hat einen Großvater, d.h. t ist nicht die Wurzel. Dann hätte B die Form S ε Dann wäre aber w = ε, was der Voraussetzung ε L(G ) wiederspräche.) Sei X die Markierung des Großvaters t und w,..., w n die Markierungen seiner Söhne. Einer davon, der i-te, ist wohl t. Da sein Sohn t mit ε markiert ist, wird t mit einer nullierbaren Variablen A markiert: BAUM B S t X w... w i A w i+... w n t ε Aufgrung der Konstruktion von G ist dann auch B w... w i w i+... w n eine Produktion, die den folgenden kleineren Ableitungsbaum B ergibt: BAUM B S X w... w i w i+... w n Das ist der gesuchte Widerspruch. Bemerkung. Für Grammatiken G, die das leere Wort erzeugen (also mit S nullierbar), gibt es einen ähnlichen Satz: Wir können eine Grammatik G mit L(G) = L(G) erzeugen, die die Produktion

62 58 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S ε, aber keine andere Produktion der Form A ε (A S) enthält. Der Beweis ist fast derselbe. 2.7 Chomsky-Normalform Wir zeigen jetzt, dass jede kontextfreie Grammatik so modifiziert werden kann, dass sie (ohne die erzeugte Sprache zu ändern) nur Produktionen der Form S ε, A a oder A BC hat, wobei A, B, C nichtterminale Symbole sind und a ein Terminalsymbol ist. Der erste Typ, S ε, ist nur für die Erzeugung des leeren Wortes nötig. Wir werden uns erst auf kontextfreie Sprachen ohne ε konzentrieren und daher nur Produktionen A a oder A BC benutzen. Falls ε in der Sprache liegt, schreiben wir dann immer noch S ε am Ende als eine der Produktionen. Definition. Chomsky-Normalform Eine kontextfreie Grammatik ist in Chomsky-Normalform, falls sie nur Produktionen der Form A BC (A, B, C Variablen) A a (A Variable, a Terminalsymbol) oder S ε hat. Beispiel. Die Sprache () wird von G = ({, }, {S, A}, S, P ) mit den Produktionen P : S A A A ε erzeugt. Das ist keine Normalform-Grammatik, jedoch kann man eine Normalform- Grammatik, die diese Sprache erzeugt, finden, wie wir noch zeigen werden. Zuerst wollen wir aber einen wichtigen Begriff der Graphentheorie einführen: Bemerkung. TOPOLOGISCHES SORTIEREN Gegeben sei ein gerichteter Graph G = (V, E), eine Sortierung seiner Knoten ist eine bijektive Abbildung ord : V {, 2,..., n}. Sie heißt topologisch, falls für jede Kante (v, w) in E gilt ord(v) < ord(w). Z.B. hat von den folgenden Graphen G und G 2 G G 2 der Graph G 2 keine topologische Sortierung, da er ein Dreieck enthält es ist klar, dass nur azyklische Graphen topologische sortiert werden können. Der Graph G hat die folgenden topologischen Sortierungen: Jeder azyklische Graph hat eine topologische Sortierung: man findet einen Knoten x ohne Vorgänger (x kann gefunden werden, wenn wir mit einem beliebigen Knoten

63 2.7. CHOMSKY-NORMALFORM 59 starten und uns solange wie möglich in Gegenrichtung der Pfeile bewegen kein Knoten wird wiederholt besucht, also steht am Ende ein Knoten ohne Vorgänger). Man setzt ord(x) = und entfernt x aus dem Graphen. Jetzt wird der Prozess mit der Bewertung ord = 2 wiederholt, usw. Genauer: wir haben den folgenden Algorithmus für topologisches Sortieren. Wir bezeichnen mit i = Anzahl aller schon sortierten Knoten und W = Menge aller noch nicht sortierten Knoten. Initialisierung: i := und W := V Rekursiver Schritt: while ein Knoten x W ohne Vorgänger in W existiert do i := i + ; ord(x) = i; W := W {x} od Ende: Falls n = i, ist der Graph azyklisch und ord ist seine topologische Sortierung. Falls n > i, ist der Graph nicht azyklisch. Normalisierungsalgorithmus: Für jede kontextfreie Grammatik G mit ε / L(G) konstruieren wir eine Grammatik in Chomsky-Normalform, die dieselbe Sprache erzeugt. Wir illustrieren die einzelnen Schritte jeweils anhand der Grammatik aus Beispiel in Abschnitt 2.7. Schritt : Alle Produktionen bekommen die Form A w, wobei w entweder ein Wort aus Variablen oder ein einziges Terminalsymbol ist. Man ersetzt jedes Terminalsymbol a durch eine neue Variable D a und fügt die Produktion D a a zu P hinzu. Beispiel Schritt : Die obige Grammatik (Beispiel in Abschnitt 2.7) wird durch die Grammatik G = ({, }, {S, A, D, D }, S, R ) mit den Produktionen R ersetzt: S D A A D D A ε D D Schritt 2: Alle Produktionen A w, bei denen w länger als zwei ist, werden durch Produktionen des Typs A BC ersetzt. Statt A B B 2... B m schreibt man A B C C B 2 C 2 C 2 B 3 C 3. C m 3 B m 2 C m 2 C m 2 B m B m wobei C,..., C m 2 neue Variablen sind. Beispiel Schritt 2: In der obigen Grammatik G ersetzen wir A D D A durch A D C C D A. Schritt 3: Die Produktionen A ε werden entfernt, siehe Abschnitt 2.6. Beispiel Schritt 3: Für die Grammatik aus Schritt 2, also die Grammatik mit den Produktionen

64 6 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S D A A D C ε C D A D D gilt V = {A}, so dass die Modifikation die Produktionen S D A D A D C C D A D D D hat. Schritt 4: Alle Produktionen A B (A, B Variablen) werden ersetzt. Sei H der gerichtete Graph, dessen Knoten die Variablen und dessen Kanten genau die unerwünschten Produktionen A B unserer Grammatik sind.. Die Produktionen A A werden ignoriert und alle Kreise des Graphen H entfernt. Sei A A 2... A n A 3 ein Kreis der Länge n. Wir entfernen A 2,..., A n aus der Liste aller Variablen und ersetzen A i durch A in jeder Produktion der Grammatik (für i = 2,..., n). Diesen Prozess wiederholen wir solange, bis kein Kreis übrigbleibt. Falls S eine der Variablen des Kreises ist, wählen wir immer S = A. 2. In der modifizierten Grammatik ist der Graph H azyklisch, und wir können seine Knoten, d.h. alle (übriggebliebenen) Variablen, topologisch sortieren: V = {A, A 2,..., A m }. Wir entfernen alle Produktionen A i A j systematisch nach dem Index i = m, m,..., mit dem folgenden rekursiven Prozess: i = m : Keine Produktion A m A j existiert. i i : Nachdem alle Produktionen A m A j, A m A j,..., A i A j entfernt wurden, ersetzen wir jede Produktion A i A j durch A i w für alle Wörter w, für die A j w eine Produktion ist. Beispiel Schritt 4: Die nach Schritt 3 erhaltene Grammatik definiert den Graphen S D C Er ist azyklisch und kann z. B. wie folgt topologisch sortiert werden: 2 3 S D C Wir ersetzen also S D durch S und C D durch C :

65 2.7. CHOMSKY-NORMALFORM 6 S D A A D C C D A D D Bemerkung 2. Dieser 4-Schritt-Algorithmus berechnet die Chomsky-Normalform für alle kontextfreien Grammatiken, die ε nicht enthalten. Für allgemeine kontextfreie Grammatiken G stellen wir zuerst fest, ob S nullierbar ist. Falls ja, werden die 4 Schritte oben um den folgenden Schritt ergänzt: Schritt 5: Die Produktion S ε wird hinzugefügt. Beispiel 2. Für die folgende Grammatik G = ({a, b}, {S, A, B}, S, P ) mit den Produktionen S A aa A B bb B S as bs ε finden wir die Chomsky-Normalform. Schritt : neue Variablen D a, D b und Produktionen S A D a A A B D b B B S D a S D b S ε D a a D b b Schritt 2: entfällt. Schritt 3: Die Menge V wird in drei rekursiven Schritten berechnet: V :=, {B}, {A, B}, {S, A, B}. Also: ε L(G). Neue Produktionen: S A D a A D a A B D b B D b B S D a S D b S D a D b D a a D b b Schritt 4: Der Graph aller Variablen sieht wie folgt aus: S A B D a D b Wir entfernen den Kreis S A B S, indem wir die Variablen A und B löschen und die Produktionen modifizieren (statt A und B wird S verwendet): S S D a S D a S S D b S D b S S D a S D b S D a D b D a a D b b Die Produktion S S wird ignoriert. Die anderen formen den folgenden Graphen:

66 62 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN D a S D b Die Produktion S D a wird also durch S a, S D b durch S b ersetzt: S D a S a D b S b D a a D b b Schritt 5: Da S nullierbar ist, müssen wir noch S ε einfügen. Wir bekommen die Chomsky-Normalform: S D a S a D b S b ε D a a D b b Beispiel 3. Wir wollen die Grammatik G = ({, }, {A, B, C, X, Y, Z, S, T }, S, P ) mit den Produktionen S A B C T S A BT T X T Y T Z B CT C AT T ε X T A AT Y Z T Y Z in die Chomsky-Normalform bringen. Die einzelnen Schritte werden folgendermaßen durchgeführt. Schritt : neue Variablen D und D werden eingeführt und die letzten beiden Zeilen werden durch die folgenden Produktionen ersetzt: Y D D Z T Y D D D D Z D D Schritt 2: neue Variable E wird eingeführt und die Produktion (aus Schritt ) Z D D Z wird durch Z D E E D Z ersetzt. Schritt 3: V = {T }, also wird die Produktion T ε der ursprünglichen Grammatik entfernt, und T darf auf den rechten Seiten verschwinden. Nach diesem Schritt haben wir also die folgenden Produktionen: S A B C T S S A BT B T X X T Y Y T Z Z B CT C C AT A X T A AT A Y D D Z T Y Y D D D E D D E D Z Die Regel S S wird nun entfernt. (Andere überflüssige Regeln, z.b., S T S,

67 2.8. ALGORITHMEN FÜR FORMALE SPRACHEN 63 entfernen wir hier nicht, um den allgemeinen Algorithmus zu illustrieren.) Schritt 4: Der Graph H sieht für die letzte Grammatik wie folgt aus: X A B D D S Z Y C E T Wir entfernen die Kreise S S (einfach weglassen), A X A (X wird gestrichen und durch A ersetzt) und A B C A (B, C werden gestrichen und durch A ersetzt): S A T S A AT A T A T Y Y T Z Z Y D D Z T Y Y D D D E D D E D Z Der neue Graph H hat nur einen Zyklus: A A. Den dürfen wir einfach weglassen und erhalten einen azyklischen Graphen, der z.b. wie folgt topologisch sortiert werden kann: A D D S Z Y E T Wir entfernen erst die Produktion Z Y und ersetzen sie durch Z D D, also haben wir jetzt für Z die folgenden Produktionen: Z T Y D D D E D D. Daraufhin werden die Produktionen A Z und A Y entfernt und durch die folgenden zusätzlichen Produktionen A T Y D D D E D D ersetzt. Insgesamt haben wir damit für A die Produktionen A AT T A T Y D D T Z D D D E. Als letztes ersetzen wir S A durch die zusätzlichen Produktionen S AT T A T Y D D T Z D D D E. Somit erhalten wir die Chomsky-Form unserer Grammatik S AT T A T Y D D T Z D D D E T S A AT T A T Y D D T Z D D D E Y D D Z T Y D D D E D D D D E D Z 2.8 Algorithmen für formale Sprachen. Reguläre Sprachen Gibt es einen Algorithmus, der für eine beliebige reguläre Sprache L und ein beliebiges Wort w entscheidet, ob w in L liegt? Das heißt: der Algorithmus hat zwei Eingaben: L (geeignet codiert) und w. Und die Ausgabe ist JA/NEIN.

68 64 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Nehmen wir an, dass die Codierung der regulären Sprachen L durch eine Beschreibung eines DEA, der L akzeptiert, dargestellt wird. Es gibt den folgenden Algorithmus, der für jeden DEA M und jedes Wort w = s... s n entscheidet, ob M das Wort w akzeptiert: Für n = ist die Antwort JA, genau wenn der Initialzustand q final ist. Für n wird die Maschine M mit dem Eingabewort w simuliert. Unser Algorithmus berechnet also q = δ(q, s ) q 2 = δ(q, s 2 ). q n = δ(q n, s n ), und die Antwort ist genau dann JA, wenn q n final ist. 2. Kontextfreie Sprachen Die Frage, ob für eine beliebige kontextfreie Sprache L ein gegebenes Wort w zu L gehört kann von einem effizienten Algorithmus entschieden werden, der Cocke- Younger-Kasami (CYK) Algorithmus heißt. Wir nehmen an, dass die Codierung von kontextfreien Sprachen durch eine Grammatik in Chomsky-Normalform geschieht. Die Entscheidung, ob ein gegebenes Wort w (Eingabe) in L liegt, ist trivial für w = ε: Die Antwort ist JA genau dann, wenn S ε eine Produktion von G ist. Für nichtleere Wörter benutzen wir die Technik der dynamischen Programmierung. Zuerst verallgemeinern wir die Anfrage, ob w in L liegt, d.h., ob S w gilt, wie folgt: gegeben Variable A V und nichtleeres Wort w Σ entscheide, ob A w. Die Idee ist, dass wir für jedes Wort w = s... s n den Teil s i s i+... s i+j der Länge j, der in s i beginnt, mit w i,j bezeichnen und wir die Frage gilt A w i,j? für alle i =,..., n und j =,..., n i entscheiden. Da w = w,n, wird dies unsere Aufgabe lösen. Wir entscheiden A w i,j mit Induktion über j. Der Fall j = bedeutet, dass das Terminalsymbol s i von A ableitbar ist. Da unsere Grammatik die Chomsky-Normalform hat, ist die Antwort JA, genau wenn A s i eine Produktion ist. Sei j > und sei A w i,k für alle i und k j entschieden. In der Ableitung A w i,j bezeichnen wir mit A BC die erste angewendete Produktion: A B C s i s i+... s i+k s i+k... s i+j Dann gilt: (*) B w i,k und C w i+k,j k für ein k =,..., j. Umgekehrt folgt aus (*), dass A w i,j gilt. Um den CYK-Algorithmus genau zu beschreiben, bezeichnen wir V i,j = {A V ; A w i,j } für alle i =,..., n und j =,..., n i +.

69 2.9. KELLERAUTOMATEN 65 CYK-Algorithmus Eingabe: Eine kontextfreie Grammatik G = (Σ, V, S, P ) in Chomsky-Normalform und ein Wort w = s s 2... s n über Σ. Erster Schritt: Für alle i =,..., n setzt man V i, = {A V ; A s i ist eine Produktion} Rekursiver Schritt: Für alle i =,..., n und j = 2,..., n setzt man V i,j = {A V ; es gibt k =,..., j und B V i,k, C V i+k,j k so, dass A BC eine Produktion ist} Ausgabe: JA, falls S in V,n liegt, NEIN sonst. Beispiel. Sei G = ({a, b}, {S, A, B, C}, R, S) die Grammatik mit den folgenden Produktionen: S AB BC A BA a B CC b C AB a Für das Wort baaba wird der CYK-Algorithmus die folgenden Mengen V i,j berechnen: i j B A, C A, C B A, C 2 S, A B S, C S, A 3 B B 4 S, A, C 5 S, A, C Da S in V,5 liegt, gehört baaba zur Sprache L(G). 2.9 Kellerautomaten Es gibt kontextfreie Sprachen, die nicht regulär sind, also von keinem endlichen Automaten akzeptiert werden können. Wir brauchen also stärkere Maschinen für kontextfreie Sprachen. Nehmen wir das Beispiel der Sprache L aller Palindrome (Beispiel 3 in Abschnitt 2.): um zu verifizieren, dass die Eingabe a a 2... a n, die ein read-only Kopf liest, ein Palindrom ist, müssen wir uns im Laufe der Bearbeitung wenigstens an die erste Hälfte des Eingabewortes erinnern (um sie mit der anderen Hälfte vergleichen zu können). Das schafft ein endlicher Automat nicht, denn dazu brauchen wir einen potenziell unendlichen Speicher. Falls wir jetzt aber zu dem Automaten einen externen Speicher hinzufügen, in dem die Eingabe gespeichert werden kann, ist es möglich, Sprachen wie die aller Palindrome zu akzeptieren. Der externe Speicher wird die Form eines Kellers (oder Stack, also last-in-first-out Speichers) haben. Das bedeutet, dass in jedem Schritt das erste Symbol aus dem Keller gelesen und weggeworfen wird (pop-operation) und ein oder mehrere neue Symbole gespeichert werden (push-operation). Wir zeigen, dass jede kontextfreie Sprache von einem endlichen Automaten mit externem Keller akzeptiert werden kann und umgekehrt, solche Automaten akzeptieren gerade die kontextfreien Sprachen. Leider müssen wir hier von Anfang an mit nichtdeterministischen Automaten arbeiten, denn in diesem Berechnungsmodell gilt nicht, dass jeder nichtdeterministische Automat von einem deterministischen Automaten ersetzt werden kann. Wir arbeiten hier mit zwei Alphabeten:

70 66 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Σ das Alphabet der Eingabesymbole K das Alphabet der Kellersymbole. Der Inhalt des Kellers wird von n Zeichen k,..., k n geformt. Dies wird als ein Wort k k 2... k n K beschrieben (wegen ε K kann der Keller auch leer sein). Die Übergangsfunktion δ hat hier, statt zwei Variablen q (Zustand) und s (Eingabe), drei Variablen: die dritte, k K, ist der erste Buchstabe des Kellerwortes. Aufgrund des Tripels (q, s, k) Q Σ K wird entschieden werden, welcher der neue Zustand q Q wird und welches Wort w K im Keller gespeichert werden soll; das schreiben wir in der Form (q, s, k) (q, w). Also soll δ eine Untermenge von (Q Σ K) (Q K ) sein. Aber da wir auch spontane Übergänge (ohne Eingabe, vergleiche mit Automaten, Absatz.3) erlauben wollen, also Produktionen der Form (q, #, k) (q, w), ist δ eine Untermenge von (Q (Σ {#}) K) (Q K ). Definition. Ein Kellerautomat (englisch: pushdown automaton) P ist ein 7-Tupel P = (Q, Σ, K, δ, q, k, F ) wobei Q eine endliche Menge, die Zustandsmenge, ist, Σ und K zwei Alphabete (Eingabe- und Kelleralphabet) sind, δ eine endliche Untermenge von (Q (Σ {#}) K) (Q K ) ist, deren Elemente mit (q, s, k) (q, w) bezeichnet werden und Übergangsregeln heißen, q Q der Initialzustand ist, F Q die Menge aller Finalzustände ist und k K das Startsymbol ist. Bemerkung. Wie arbeitet ein Kellerautomat? Am Anfang hat er den Zustand q und im Keller steht der Buchstabe k. Jetzt werden die folgenden Schritte durchgeführt: Erster Schritt: ist entweder spontan, d.h., der Zustand q geht in den Zustand q über und der Kellerinhalt wird von k zu w verändert, falls (q, #, k ) (q, w ) eine der Übergangsregeln ist. Oder der erste Schritt ist nicht spontan: q geht nach q über und der Kellerinhalt ändert sich zu w, falls (q, s, k ) (q, w ) eine der Übergangsregeln ist. Im zweiten Fall wird s von der Eingabe entfernt, und s 2 wird als nächstes Eingabesymbol gelesen. Zweiter Schritt: dieser tritt nur dann ein, wenn der Keller nach dem ersten Schritt nicht leer ist. Sei k das top-element des Kellers. Wir gehen von dem Zustand q zu q 2 über und ändern den Kellerinhalt von w zu w 2 entweder spontan: (q, #, k ) (q 2, w 2 ) oder nicht spontan: (q, s i, k ) (q 2, w 2 ), wobei i = oder i = 2 (je nachdem, ob s im Schritt entfernt wurde oder nicht). Im zweiten Fall wird s i von der Eingabe entfernt, usw. Formal: Definition. Eine Konfiguration eines Kellerautomaten ist ein Tripel (q, s... s n, k... k m ) das den momentanen Zustand q, die (restliche) momentane Eingabe s... s n Σ und den momentanen Kellerinhalt k... k m K beschreibt. Die Folgekonfigurationen einer Konfiguration (q, s... s n, k k 2... k m ) sind alle Konfigurationen (q, s 2... s n, wk 2... k m ), wobei

71 2.9. KELLERAUTOMATEN 67 (q, s, k ) (q, w) eine Regel ist, sowie alle Konfigurationen (q, s... s n, wk 2... k m ), wobei (q, #, k ) (q, w) eine Regel ist. Wir schreiben C C falls C eine Folgekonfiguration der Konfiguration C ist. Wie oben, bezeichnet die transitive und reflexive Hülle von. Konfigurationen (q, s... s n, k ) heißen initial. Ein Wort w = s... s n Σ wird von dem Kellerautomaten P akzeptiert, falls von der Initialkonfiguration (q, w, k ) eine Konfiguration mit einem finalen Zustand q F und leerem Keller (sowie leere restliche Eingabe) erreicht werden kann, also falls (q, w, k ) (q, ε, ε) für ein q F. Die Sprache aller von P akzeptierten Wörter ist durch L(P ) bezeichnet. Also L(P ) = {w; w Σ und es gibt q F mit (q, w, k ) (q, ε, ε)}. Beispiel. Für die Sprache L = { n n ; n =, 2, 3,...} wollen wir einen Kellerautomaten konstruieren. Wir brauchen zwei Zustände, von denen q initial und q final ist. Wir speichern erst die Nullen: (q,, k ) (q, ) (q,, ) (q, ) und falls eine Eins kommt, wird vom Top des Kellers eine Null entfernt und der Zustand in q geändert: (q,, ) (q, ε) (q,, ) (q, ε) Das heißt, wir arbeiten mit dem folgenden Kellerautomaten: P = ({q, q }, {, }, {, k }δ, q, k, {q }), wobei δ durch die vier obigen Regeln definiert ist. Jedes Wort n n wird akzeptiert, denn wir haben die folgende Berechnung: (q, n n, k ) (q, n n, ) (q, n 2 n, ). (q, n, n ) (q, n, n ) (q, n, n ) (q, n 2, n 2 ). (q,, ) (q, ε, ε) Umgekehrt, falls P ein Wort w akzeptiert, ist w = ε, oder w muss mit einer anfangen, da es keinen Übergang (q,, k )?) gibt. Sei n die Zahl aller Nullen am Anfang. Falls keine kommt, kann P den finalen Zustand q nicht erreichen, also w = n u, und die Berechnung muss am Anfang wie folgt verlaufen: (q, n u, k ) (q, n u, ). (q, u, n ) (q, u, n )

72 68 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Weiterhin können wir nur den Übergang (q,, ) (q, ε) benutzen. Da wir also wissen, dass unsere Rechnung erfolgreich ist (P den Keller leert), muss u = n und w = n n gelten. Das beweist, dass L(P ) = { n n ; n N}. Beispiel 2. Wir konstruieren einen Kellerautomaten für die Sprache L {a, b, c} aller Wörter, die die Form wcw R haben, wobei w {a, b} gilt, und w R das Spiegelwort von w ist. Beispiele sind abacaba L und abcba L. Wir brauchen nur zwei Zustände: im initialen Zustand q bleibt der Automat, solange er nur a oder b liest, und er speichert die Eingabe im Keller. (Aufpassen!: auch das top-element des Kellers muss gespeichert werden, sonst wäre es durch pop verlorengegangen.) Daraus ergeben sich die Übergangsregeln (q, a, k) (q, ak) (q, b, k) (q, bk) (k = a, b, k ) Falls c gelesen wird, geht der Zustand für alle k = a, b, k in den finalen Zustand q über, ohne den Keller zu verändern: (q, c, k) (q, k) (k = a, b, k ) Der Zustand q überprüft, ob die Eingabe mit dem top-element des Kellers übereinstimmt. Falls ja, bleiben wir in q (und entfernen einfach das erste Symbol aus dem Keller): (q, a, a) (q, ε) (q, b, b) (q, ε). Falls nein, definieren wir keine neue Übergangsregel und damit wird die Berechnung ohne Erfolg beendet. Am Ende akzeptieren wir ein Wort genau dann, wenn wir im Zustand q das Symbol k im Keller lesen. Also wird der folgende spontane Übergang nötig sein: (q, #, k ) (q, ε), q final Wir definieren jetzt den Kellerautomaten P formal: P = (Q, Σ, K, δ, q, k, F ) mit Q = {q, q } Σ = {a, b, c} K = {a, b, k } F = {q }, und δ wird durch die obigen Regeln bestimmt. Beweisen wir, dass L(P ) = L ist.. Jedes Wort wcw R wird akzeptiert. In der Tat, falls w = s... s n, haben wir die folgende Berechnung: (q, s... s n cw R, k ) (q, s 2... s n cw R, s k ) (q, s 3... s n cw R, s 2 s k ) (q, cw R, s n... s k ) (q, w R, s n... s k ) (q, s n... s, s n... s k ) (q, s n 2... s, s n 2... s k ) (q, ε, k ) (q, ε, ε) Da q final ist, wird w akzeptiert.

73 2.9. KELLERAUTOMATEN Falls ein Wort u akzeptiert wird, hat es die Form u = wcw R. In der Tat, die Finalkonfiguration (q, ε, ε) kann nur von (q, ε, k ) erreicht werden. Also gilt (q, u, k ) (q, ε, k ). Die Berechnung muss also den Zustand q in q ändern das bedeutet aber, dass das Wort u genau einmal das Symbol c enthält. Das heißt, dass u die Form u = wcw für zwei Wörter w und w über {a, b} hat. In der ersten Etappe der Berechnung von u haben wir, solange der Automat im Initialzustand bleibt, für w = s... s n : (q, s... s n cw, k ) (q, s 2... s n cw, s k ) (q, s 3... s n cw, s 2 s k ) (q, cw, s n... s k ) Jetzt muss die Regel (q, c, s n ) (q, s n ) benutzt werden, und wir bekommen die folgenden Folgekonfigurationen (wobei w = t... t m ): (q, ct... t m, s n... s k ) (q, t... t m, s n... s k ) (q, t 2... t m, s n... s k ) falls t = s n (q, t 3... t m, s n 2... s k ) falls t 2 = s n und so weiter. Die gewünschte Konfiguration (q, ε, k ) kann nur dann erreicht werden, wenn n = m und t = s n, t 2 = s n, t n = s. Das wollten wir beweisen: w = s... s n cs n... s. Beispiel 3. Jeder endliche, nichtdeterministische Automat M kann als Kellerautomat, der nie auf den Keller zugreift, aufgefasst werden. Genauer: es genügt, die Übergangsregeln (q, s) q von M in die Form (q, s, k ) (q, k ) zu übersetzen und die spontanen Übergänge (q, #, k ) (q, ε) für alle finalen Zustände hinzuzufügen. Bemerkung 2. In den vorigen Beispielen hatten wir schon eine kontextfreie Grammatik, und wir konstruierten einen zusätzlichen Kellerautomaten. Es gibt aber viele Beispiele, bei denen es auf den ersten Blick nicht klar ist, was für eine Grammatik hier zu definieren wäre, aber die Konstruktion eines Kellerautomaten ist intuitiv klar. Beispiel 4. Die Sprache L aller Wörter in {a, b} mit derselben Anzahl von a s und b s. Der Kellerautomat P speichert am Anfang das gelesene Symbol a oder b zum Startsymbol k hinzu und ändert den Zustand zu q : (q, a, k ) (q, ak ) (q, b, k ) (q, bk ). Danach speichert P entweder eine Reihe von a s (falls bisher mehr a s als b s gelesen wurden), und in diesem Fall führt jedes gelesene b zur Pop-Operation eines a:. (q, a, a) (q, aa) 2. (q, b, a) (q, ε) oder umgekehrt, P speichert eine Reihe von b s (falls mehr b s als a s gelesen wurden): 3. (q, b, b) (q, bb) 4. (q, a, b) (q, ε) Falls im Kellertop k steht, kann P spontan in den Haltezustand q 2 F übergehen: (q, #, k ) (q 2, ε).

74 7 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Genauer: der Kellerautomat P = ({q, q, q 2 }, {a, b}, {k }, δ, q, k, {q }) mit den oben definierten Übergängen akzeptiert L. 2. Kellerautomaten und kontextfreie Sprachen Wir zeigen jetzt, dass jede kontextfreie Sprache von einem Kellerautomaten akzeptiert werden kann. Umgekehrt gilt, dass jede von einem Kellerautomaten akzeptierte Sprache kontextfrei ist. Also gilt zwischen kontextfreien Sprachen und Kellerautomaten dieselbe Beziehung wie zwischen regulären Sprachen und endlichen (nichtdeterministischen) Automaten. Konstruktion eines Kellerautomaten Für jede kontextfreie Grammatik G = (Σ, V, S, P ) definieren wir einen Kellerautomaten P G mit einem einzigen Zustand q (der initial sowie final ist), dem Eingabealphabet Σ und dem Kelleralphabet Σ V, wobei S das Kellerstartsymbol ist. Die Übergangsregeln sind wie folgt:. (q, x, x) (q, ε) für alle x Σ, (also wird eine pop-operation in dem Falle durchgeführt, dass die Eingabe mit dem Top-Element des Kellers übereinstimmt) und 2. (q, #, A) (q, w) für alle Ableitungsregeln A w der Grammatik G (also erfolgt eine spontane Ersetzung des Top-Elements des Kellers durch ein Wort nach den Produktionen der Grammatik). Also P G = ({q}, Σ, Σ V, δ, q, S, {q}), wobei δ von den Übergangsregeln. und 2. geformt wird. Beispiel. Für die Grammatik G = ({a, b, c}, {S}, S, P ) mit P : S asa bsb c (die die Sprache aller Wörter wcw R mit w {a, b} erzeugt) haben wir den Kellerautomaten P = ({q}, {a, b, c}, {a, b, c, S}, δ, q, S, {q}) mit den Übergangsregeln. (q, x, x) (q, ε) für x = a, b, c 2. (q, #, S) (q, xsx) für x = a, b 3. (q, #, S) (q, c) Für das Wort abcba haben wir den Ableitungsbaum S a S a b S b c

75 2.. KELLERAUTOMATEN UND KONTEXTFREIE SPRACHEN 7 dem die folgende Berechnung der Initialkonfiguration (q, abcba, S) entspricht: ÜBERGANG ÜBERGANSREGEL (q, abcba, S) (q, abcba, asa) (q, #, S) (q, asa) (q, bcba, Sa) (q, a, a) (q, ε) (q, bcba, bsba) (q, #, S) (q, bsb) (q, cba, Sba) (q, b, b) (q, ε) (q, cba, cba) (q, #, S) (q, c) (q, ba, ba) (q, c, c) (q, ε) (q, a, a) (q, b, b) (q, ε) (q, ε, ε) (q, a, a) (q, ε) Bemerkung. Ein Baum wird depth-first durchsucht, falls wir alle Knoten wie folgt besuchen:. Der erste besuchte Knoten ist die Wurzel. 2. Falls der besuchte Knoten kein Blatt ist, ist der nächste besuchte Knoten sein erster Sohn. 3. Falls der besuchte Knoten x ein Blatt ist und noch nicht alle Knoten besucht wurden, gehen wir von x in Richtung Wurzel, bis wir den ersten Knoten y antreffen, der einen noch nicht besuchten Sohn hat. Wir besuchen als nächstes den ersten noch nicht besuchten Sohn von y. Der Baum B wird wie angedeutet depth-first durchsucht: BAUM B DEPTH-FIRST-DURCHSUCHUNG Satz. Für jede kontextfreie Grammatik G akzeptiert der oben konstruierte Kellerautomat P G die Sprache L(G). Beweis.. Jedes Wort w in L(G) wird von P G akzeptiert. Falls nämlich B ein Ableitungsbaum für w ist, können wir eine Berechnung, die w akzeptiert, wie folgt beschreiben: Der Ableitungsbaum wird depth-first durchsucht. Jeder Schritt dieser Durchsuchung entspricht einem Schritt der Berechnung, wobei im Kellertop immer die Markierung des momentanen Knotens gespeichert wird. In jedem Knoten, der kein Blatt ist und der einer Produktion A a... a n entspricht, ändert sich die Konfiguration von P G spontan, entsprechend der Übergangsregel (q, #, A) (q, a... a n ). Zum Beispiel, am Anfang

76 72 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S a a 2... a n }{{} w ändert P G die Konfiguration wie folgt (q, w, S) (q, w, a a 2... a n ), und die Durchsuchung des Ableitungsbaumes geht zum ganz links stehenden Sohn der Wurzel über. (Im Top des Kellers steht also die Markierung des momentanen Knotens!) In jedem Blatt markiert mit a benutzen wir die Übergangsregel (q, a, a) (q, ε). Nachdem der ganze Baum durchsucht wurde, erhalten wir die akzeptierende Konfiguration (q, ε, ε). 2. Umgekehrt, falls w akzeptiert wird, konstruieren wir einen Ableitungsbaum für w. Die Konstruktion folgt eine akzeptierende Berechnung von w. Der Baum wird Schritt für Schritt depth-first konstruiert; in jedem Berechnungsschritt erzeugen wir einen neuen Knoten des Baumes und markieren ihn mit dem Top-Element des Kellers. Der erste Schritt muss also darin bestehen, dass die Wurzel erzeugt und mit S markiert wird. Weitere Schritte: (a) Falls die Berechnung aufgrund der spontanen Übergangsregel (q, #, A) (q, a... a n ) weiter geht, erzeugen wir n neue Söhne des momentan besuchten Knotens und markieren sie mit a,..., a n. Da der Baum depthfirst untersucht wird, gehen wir zum ganz links stehenden Sohn über (der, wie gewünscht, mit dem Top-Element a des Kellers markiert wird). (b) Falls die Übergangsregel (q, a, a) (q, ε) benutzt wurde, bleibt der momentan besuchte Knoten ein Blatt, und wir gehen (depth-first) zum nächsten Knoten über. Beispiel 2. (Konstruktion eines Ableitungsbaumes) Der Automat P G aus Beispiel in Abschnitt 2. akzeptiert das Wort abbcbba wie folgt:. (q, abbcbba, S) (q, abbcbba, asa) 2. (q, bbcbba, Sa) 3. (q, bbcbba, bsba) 4. (q, bcbba, Sba) 5. (q, bcbba, bsbba) 6. (q, cbba, Sbba) 7. (q, cbba, cbba) 8. (q, bba, bba) 9. (q, ba, ba). (q, a, a). (q, ε, ε). Der Baum wird wie folgt konstruiert:

77 2.. KELLERAUTOMATEN UND KONTEXTFREIE SPRACHEN S S a S a S a S a b S b S a S a b S b S a S a b S b S a S a b S b b S b S a S a b S b b S b S a S a b S b b S b c und in den letzten Schritten werden die Blätter an der rechten Seite besucht. Bemerkung 2. In dem letzten Beweis konstruierten wir einen Kellerautomaten, der nur einen Zustand hat. Das ist im Vergleich mit endlichen Automaten (und deren Zustandsminimierung) überraschend. Eigentlich gilt aber: Jeder Kellerautomat P kann durch einen Kellerautomaten P mit nur einem Zustand simuliert werden. (Die Idee der Simulation ist, dass der Automat P die folgenden Kellersymbole (q, k, q ) Q Γ Q hat und, falls P im Zustand q das Topsymbol k im Keller liest und den Zustand zu q ändert, entspricht dies dem Symbol (q, k, q ) im Top des Kellers von P.) Wir führen hier den Beweis dieses Simulationssatzes nicht durch. Satz 2. Eine Sprache ist genau dann kontextfrei, wenn sie von einem Kellerautomaten akzeptiert wird. Beweis. Jede kontextfreie Sprache wird, nach Satz in Abschnitt 2., von einem Kellerautomaten akzeptiert. Umgekehrt beweisen wir für jeden Kellerautomaten P, dass die Sprache L(P ) kontextfrei ist. Wir nehmen an, dass P nur einen Zustand hat (siehe vorige Bemerkung). Die Übergangsregeln von P werden als Produktionen einer Grammatik G wie folgt übersetzt:. statt (q, x, k) (q, k... k n ) schreibt man k xk... k n und 2. statt (q, #, k) (q, k... k n ) schreibt man k k... k n. Genauer: wir formen die kontextfreie Grammatik G = (Σ, Γ, k, P ), deren Variablen die Kellersymbole von P sind und deren Produktionen die obige Form. und 2. haben. Der Beweis, dass L(G) = L(P ) folgt analog zum Beweis von Satz in Abschnitt 2.:

78 74 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Falls ein Wort w von G erzeugt wird, d.h., falls wir einen Ableitungsbaum für w haben, können wir den Ableitungsbaum depth-first durchsuchen, und wir bekommen eine akzeptierende Berechnung für den Kellerautomaten P : die beginnt mit der Initialkonfiguration (q, w, k ) und geht mit den Übergangsregeln weiter, die den benutzten Produktionen im Ableitungsbaum genau entsprechen. Umgekehrt, falls ein Wort w von P akzeptiert wird, konstruieren wir einen Ableitungsbaum für w dadurch, dass wir depth-first neue Knoten erzeugen, die den Übergangsregeln der Berechnung entsprechen. Bemerkung 3. Automaten P G, wie oben konstruiert (genauer: deterministische Kellerautomaten, die P G modifizieren), werden im Compilerbau bei der Top-Down- Syntaxanalyse von Programmen benutzt.

THEORETISCHE INFORMATIK I

THEORETISCHE INFORMATIK I THEORETICHE INFORMATIK I Vorlesungsskript Jiří Adámek Institut für Theoretische Informatik Technische Universität Braunschweig Juni 23 Inhaltsverzeichnis Endliche Automaten. Mathematische Grundbegriffe.......................

Mehr

THEORETISCHE INFORMATIK

THEORETISCHE INFORMATIK THEORETISCHE INFORMATIK Vorlesungsskript Jiří Adámek Institut für Theoretische Informatik Technische Universität Braunschweig Januar 2014 Inhaltsverzeichnis 1 Endliche Automaten 1 1.1 Mathematische Grundbegriffe.......................

Mehr

DisMod-Repetitorium Tag 4

DisMod-Repetitorium Tag 4 DisMod-Repetitorium Tag 4 Endliche Automaten, Reguläre Sprachen und Kontextfreie Grammatiken 22. März 2018 1 Endliche Automaten Definition DFA Auswertungen Äquivalenzrelationen Verschmelzungsrelation und

Mehr

Informatik III - WS07/08

Informatik III - WS07/08 Informatik III - WS07/08 Kapitel 5 1 Informatik III - WS07/08 Prof. Dr. Dorothea Wagner [email protected] Kapitel 5 : Grammatiken und die Chomsky-Hierarchie Informatik III - WS07/08 Kapitel 5 2 Definition

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 30.04.2013 Grenzen regulärer Sprachen Wie beweist man, dass eine Sprache nicht regulär

Mehr

5.2 Endliche Automaten

5.2 Endliche Automaten 114 5.2 Endliche Automaten Endliche Automaten sind Turingmaschinen, die nur endlichen Speicher besitzen. Wie wir bereits im Zusammenhang mit Turingmaschinen gesehen haben, kann endlicher Speicher durch

Mehr

THEORETISCHE INFORMATIK

THEORETISCHE INFORMATIK THEORETISCHE INFORMATIK Vorlesungsskript Jiří Adámek Institut für Theoretische Informatik Technische Universität Braunschweig April 2006 Inhaltsverzeichnis 1 Endliche Automaten 1 1.1 Mathematische Grundbegriffe......................

Mehr

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme

FORMALE SYSTEME. 8. Vorlesung: Minimale Automaten. TU Dresden, 6. November Markus Krötzsch Lehrstuhl Wissensbasierte Systeme FORMALE SYSTEME 8. Vorlesung: Minimale Automaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme TU Dresden, 6. November 2017 Rückblick Markus Krötzsch, 6. November 2017 Formale Systeme Folie 2 von 26

Mehr

Berechenbarkeitstheorie 1. Vorlesung

Berechenbarkeitstheorie 1. Vorlesung Berechenbarkeitstheorie Dr. Institut für Mathematische Logik und Grundlagenforschung WWU Münster WS 15/16 Alle Folien unter Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz. Zentrale Themen

Mehr

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

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 17/18 Ausgabe 10. Januar 2018 Abgabe 23. Januar 2018, 11:00 Uhr (im

Mehr

Die Nerode-Relation und der Index einer Sprache L

Die Nerode-Relation und der Index einer Sprache L Die Nerode-Relation und der Index einer Sprache L Eine zweite zentrale Idee: Sei A ein vollständiger DFA für die Sprache L. Repäsentiere einen beliebigen Zustand p von A durch die Worte in Σ, die zu p

Mehr

Ogden s Lemma: Der Beweis (1/5)

Ogden s Lemma: Der Beweis (1/5) Ogden s Lemma: Der Beweis (1/5) Wir betrachten zuerst die Rahmenbedingungen : Laut dem auf der vorhergehenden Folie zitierten Satz gibt es zur kontextfreien Sprache L eine Grammatik G = (Σ, V, S, P) in

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Dr. Werner Meixner, Dr. Alexander Krauss Sommersemester 2010 Lösungsblatt 11 15. Juli 2010 Einführung in die Theoretische

Mehr

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung Theoretische Informatik und Logik Übungsblatt (26S) en Aufgabe. Sei L = {w#w r w {, } }. Geben Sie eine deterministische Turingmaschine M an, welche die Sprache L akzeptiert. Wählen Sie mindestens einen

Mehr

Das Halteproblem für Turingmaschinen

Das Halteproblem für Turingmaschinen Das Halteproblem für Turingmaschinen Das Halteproblem für Turingmaschinen ist definiert als die Sprache H := { T w : T ist eine TM, die bei Eingabe w {0, 1} hält }. Behauptung: H {0, 1} ist nicht entscheidbar.

Mehr

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung Informatik III Christian Schindelhauer Wintersemester 2006/07 13. Vorlesung 07.12.2006 1 Überblick: Die Church- Turing-These Turing-Maschinen 1-Band Turing-Maschine Mehrband-Turing-Maschinen Nichtdeterministische

Mehr

Formale Sprachen und endliche Automaten

Formale Sprachen und endliche Automaten Formale Sprachen und endliche Automaten Formale Sprachen Definition: 1 (Alphabet) Ein Alphabet Σ ist eine endliche, nichtleere Menge von Zeichen oder Symbolen. Ein Wort über dem Alphabet Σ ist eine endliche

Mehr

Die mathematische Seite

Die mathematische Seite Kellerautomaten In der ersten Vorlesung haben wir den endlichen Automaten kennengelernt. Mit diesem werden wir uns in der zweiten Vorlesung noch etwas eingängiger beschäftigen und bspw. Ansätze zur Konstruktion

Mehr

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

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, Reguläre Sprachen Reguläre Sprachen (Typ-3-Sprachen) haben große Bedeutung in Textverarbeitung und Programmierung (z.b. lexikalische Analyse) besitzen für viele Entscheidungsprobleme effiziente Algorithmen

Mehr

Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen

Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen Hoffmann (HAW Hamburg) Automatentheorie und formale Sprachen 18.4. 2012 176 Automatentheorie und formale Sprachen VL 5 Reguläre und nichtreguläre Sprachen Kathrin Hoffmann 18. Aptil 2012 Hoffmann (HAW

Mehr

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier

Automaten und Formale Sprachen SoSe 2007 in Trier. Henning Fernau Universität Trier Automaten und Formale Sprachen SoSe 2007 in Trier Henning Fernau Universität Trier [email protected] 1 Automaten und Formale Sprachen Gesamtübersicht Organisatorisches Einführung Endliche Automaten und

Mehr

Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis:

Falls H die Eingabe verwirft, so wissen wir, dass M bei Eingabe w nicht hält. M hält im verwerfenden Haltezustand. Beweis: 1 Unentscheidbarkeit 2 Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Wintersemester 2014/15 #include char *s="include

Mehr

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

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2003/04 ILKD Prof. Dr. D. Wagner 14. April 2004 2. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004 Hier Aufkleber

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Übung am 3..2 INSTITUT FÜR THEORETISCHE KIT 7..2 Universität des Andrea Landes Schumm Baden-Württemberg - Theoretische und Grundlagen der Informatik INSTITUT FÜR

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Rekursiv aufzählbare Sprachen

Rekursiv aufzählbare Sprachen Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben

Mehr

Typ-0-Sprachen und Turingmaschinen

Typ-0-Sprachen und Turingmaschinen Typ-0-Sprachen und Turingmaschinen Jean Vancoppenolle Universität Potsdam Einführung in formale Sprachen und Automaten Dr. Thomas Hanneforth (Präsentation aus Foliensätzen von Dr. Thomas Hanneforth und

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 18. Januar 2018 INSTITUT FÜR THEORETISCHE 0 18.01.2018 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität

Mehr

Diskrete Mathematik. Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl

Diskrete Mathematik. Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl OLC mputational gic Diskrete Mathematik Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl Fakultät für Mathematik, Informatik und Physik @ UIBK Sommersemester 2011 GM (MIP) Diskrete Mathematik

Mehr

2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005

2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2004/05 ILKD Prof. Dr. D. Wagner 5. April 2005 2. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Lösung! Beachten

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 20. November 2014 INSTITUT FÜR THEORETISCHE 0 KIT 20.11.2014 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 04.06.2013 An den Transitionen sieht man zunächst, dass nur die folgenden Zustandsübergänge

Mehr

Klausur zur Vorlesung Grundbegriffe der Informatik 14. September 2015

Klausur zur Vorlesung Grundbegriffe der Informatik 14. September 2015 Klausur zur Vorlesung Grundbegriffe der Informatik 14. September 2015 Klausurnummer Nachname: Vorname: Matr.-Nr.: Diese Klausur ist mein 1. Versuch 2. Versuch in GBI Email-Adr.: nur falls 2. Versuch Aufgabe

Mehr

Homomorphismen. Defnition: Σ und Γ seien zwei endliche Alphabete, und h sei eine Abbildung h : Σ Γ. Wir definieren die folgenden Sprachen:

Homomorphismen. Defnition: Σ und Γ seien zwei endliche Alphabete, und h sei eine Abbildung h : Σ Γ. Wir definieren die folgenden Sprachen: Homomorphismen Σ und Γ seien zwei endliche Alphabete, und h sei eine Abbildung h : Σ Γ. Wir definieren die folgenden Sprachen: h(l) := {h(u) : u L} Γ, für jede Sprache L Σ, h 1 (M) := {u Σ : h(u) M} Σ,

Mehr

Klausur zur Vorlesung Grundbegriffe der Informatik 5. März 2014

Klausur zur Vorlesung Grundbegriffe der Informatik 5. März 2014 Klausur zur Vorlesung Grundbegriffe der Informatik 5. März 2014 Klausurnummer Nachname: Vorname: Matr.-Nr.: Aufgabe 1 2 3 4 5 6 7 max. Punkte 6 8 4 7 5 6 8 tats. Punkte Gesamtpunktzahl: Note: Punkte Aufgabe

Mehr

Nachklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2012/13

Nachklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2012/13 Institut für Kryptographie und Sicherheit Prof. Dr. Jörn Müller-Quade Nachklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2012/13 Vorname Nachname Matrikelnummer Hinweise Für

Mehr

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012

Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2011/2012 Hier Aufkleber mit Name und Matrikelnr. anbringen

Mehr

Entscheidungsprobleme

Entscheidungsprobleme Entscheidungsprobleme übliche Formulierung gegeben: Eingabe x aus einer Grundmenge U Frage: Hat x eine bestimmte Eigenschaft P? Beispiel: gegeben: Frage: n N Ist n eine Primzahl? Formalisierung: Grundmenge

Mehr

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004 Lösung zur Klausur Grundlagen der Theoretischen Informatik im WiSe 2003/2004 1. Geben Sie einen deterministischen endlichen Automaten an, der die Sprache aller Wörter über dem Alphabet {0, 1} akzeptiert,

Mehr

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}}

c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} c) {abcabc} d) {abcbc, abc, a} c) {aa, ab, ba, bb} d) {{aa}, {ab}, {ba}, {bb}} 2 Endliche Automaten Fragen 1. Was ergibt sich bei {a, bc} {de, fg}? a) {abc, defg} b) {abcde, abcfg} c) {abcde, abcfg, bcade, bcafg} d) {ade, afg, bcde, bcfg} 2. Was ergibt sich bei {abc, a} {bc, λ}?

Mehr

Automaten und formale Sprachen Klausurvorbereitung

Automaten und formale Sprachen Klausurvorbereitung Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen

Mehr

Das Pumping-Lemma Formulierung

Das Pumping-Lemma Formulierung Das Pumping-Lemma Formulierung Sei L reguläre Sprache. Dann gibt es ein n N mit: jedes Wort w L mit w n kann zerlegt werden in w = xyz, so dass gilt: 1. xy n 2. y 1 3. für alle k 0 ist xy k z L. 59 / 162

Mehr

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen, Entscheidbarkeit, P 239/ 333 Einführung in die NP-Vollständigkeitstheorie

Mehr

Übungsblatt 1. Lorenz Leutgeb. 30. März 2015

Übungsblatt 1. Lorenz Leutgeb. 30. März 2015 Übungsblatt Lorenz Leutgeb 30. März 205 Aufgabe. Annahmen ohne Einschränkungen: P Σ und P Γ. Per Definitionem der Reduktion: P P 2 f : Σ Γ wobei f total und berechenbar, genau so, dass: w Σ : w P f(w)

Mehr

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

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung! Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 23/4 ILKD Prof. Dr. D. Wagner 2. Februar 24. Klausur zur Vorlesung Informatik III Wintersemester 23/24 Mit Lösung! Beachten Sie:

Mehr

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

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 6 Vorlesung Theoretische Grundlagen der Informatik im WS 18/19 Ausgabe 8. Januar 2019 Abgabe 22. Januar 2019, 11:00 Uhr (im

Mehr

Formale Systeme. Büchi-Automaten. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK

Formale Systeme. Büchi-Automaten. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK Formale Systeme Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State of Baden-Württemberg and National Large-scale Research Center of the Helmholtz

Mehr

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p.

Turing Maschine. Thorsten Timmer. SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke. Turing Maschine SS 2005 p. Thorsten Timmer SS 2005 Proseminar Beschreibungskomplexität bei Prof. D. Wotschke Turing Maschine SS 2005 p. 1/35 Inhalt Einführung Formale Definition Berechenbare Sprachen und Funktionen Berechnung ganzzahliger

Mehr

10 Kellerautomaten. Kellerautomaten

10 Kellerautomaten. Kellerautomaten 10 Kellerautomaten Bisher hatten wir kontextfreie Sprachen nur mit Hilfe von Grammatiken charakterisiert. Wir haben gesehen, dass endliche Automaten nicht in der Lage sind, alle kontextfreien Sprachen

Mehr

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice Holger Arnold Dieser Text befasst sich mit der Frage, unter welchen Bedingungen das Problem, zu bestimmen, ob die

Mehr

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

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018 2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2017/2018 Hier Aufkleber mit Name und Matrikelnummer anbringen Vorname: Nachname: Matrikelnummer: Beachten Sie: Bringen Sie

Mehr

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken

Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken 1 / 15 Endliche Automaten, reguläre Ausdrücke, rechtslineare Grammatiken Prof. Dr. Hans Kleine Büning FG Wissensbasierte Systeme WS 08/09 2 / 15 Deterministischer endlicher Automat (DEA) Definition 1:

Mehr

2 2 Reguläre Sprachen. 2.2 Endliche Automaten. Übersicht

2 2 Reguläre Sprachen. 2.2 Endliche Automaten. Übersicht Formale Systeme, Automaten, Prozesse Übersicht 2 2. Reguläre Ausdrücke 2.3 Nichtdeterministische endliche Automaten 2.4 Die Potenzmengenkonstruktion 2.5 NFAs mit ɛ-übergängen 2.6 Minimale DFAs und der

Mehr

Theoretische Informatik II

Theoretische Informatik II Theoretische Informatik II Einheit 4.2 Modelle für Typ-0 & Typ-1 Sprachen 1. Nichtdeterministische Turingmaschinen 2. Äquivalenz zu Typ-0 Sprachen 3. Linear beschränkte Automaten und Typ-1 Sprachen Maschinenmodelle

Mehr

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

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 12 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2003/04 ILKD Prof. Dr. D. Wagner 20. Februar 2004 1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004 Hier Aufkleber

Mehr

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat

Frank Heitmann 2/47. 1 Ein PDA beginnt im Startzustand z 0 und mit im Keller. 2 Ist der Automat Formale Grundlagen der Informatik 1 Kapitel 5 Über reguläre Sprachen hinaus und (Teil 2) Frank Heitmann [email protected] 21. April 2015 Der Kellerautomat - Formal Definition (Kellerautomat

Mehr

1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005

1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 2004/05 ILKD Prof. Dr. D. Wagner 24. Februar 2005 1. Klausur zur Vorlesung Informatik III Wintersemester 2004/2005 Aufkleber Beachten

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 4.3 Eigenschaften von L 0 /L 1 -Sprachen 1. Abschlußeigenschaften 2. Prüfen von Eigenschaften 3. Grenzen der Sprachklassen Sprachklassen Semi-entscheidbare Sprache Sprache,

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Turingmaschinen und rekursiv aufzählbare Sprachen (V) 16.07.2015 Viorica Sofronie-Stokkermans e-mail: [email protected] 1 Übersicht 1. Motivation 2. Terminologie

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 16.11.2010 INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Endliche Automaten. Endliche Automaten J. Blömer 1/23

Endliche Automaten. Endliche Automaten J. Blömer 1/23 Endliche Automaten Endliche Automaten sind ein Kalkül zur Spezifikation von realen oder abstrakten Maschinen regieren auf äußere Ereignisse (=Eingaben) ändern ihren inneren Zustand produzieren gegebenenfalls

Mehr

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

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch TU Dresden, 17. Oktober 2016 Rückblick Markus Krötzsch, 17. Oktober 2016 Formale Systeme Folie 2 von 31 Wiederholung Mit Grammatiken können

Mehr

Reguläre Sprachen und endliche Automaten

Reguläre Sprachen und endliche Automaten Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented

Mehr

2.2 Nichtdeterministische endliche Automaten

2.2 Nichtdeterministische endliche Automaten 2 Endliche Automaten arbeiten und hier kann dann ggf. auch wieder auf die Konstruktion verwiesen werden. Fragen 1. Wie viele Informationen kann man in einem DFA speichern? a) beliebig viele b) endlich

Mehr

FORMALE SYSTEME. Der Satz von Myhill und Nerode. Automaten verkleinern mit Quotientenbildung. Verschiedene Äquivalenzrelationen

FORMALE SYSTEME. Der Satz von Myhill und Nerode. Automaten verkleinern mit Quotientenbildung. Verschiedene Äquivalenzrelationen Automaten verkleinern mit Quotientenbildung Wir betrachten DFAs mit totaler Übergangsfunktion. FORMALE SYSTEME 9. Vorlesung: Minimale Automaten (2) Markus Krötzsch TU Dresden, 9. November 207 C 0 A 0 [A]

Mehr

Automaten und Formale Sprachen SoSe 2013 in Trier

Automaten und Formale Sprachen SoSe 2013 in Trier Automaten und Formale Sprachen SoSe 2013 in Trier Henning Fernau Universität Trier [email protected] 2. Juni 2013 1 Automaten und Formale Sprachen Gesamtübersicht Organisatorisches Einführung Endliche

Mehr

Übungsaufgaben zu Formalen Sprachen und Automaten

Übungsaufgaben zu Formalen Sprachen und Automaten Universität Freiburg PD Dr. A. Jakoby Sommer 27 Übungen zum Repetitorium Informatik III Übungsaufgaben zu Formalen Sprachen und Automaten. Untersuchen Sie das folgende Spiel: A B x x 2 x 3 C D Eine Murmel

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2015 29.04.2015 Viorica Sofronie-Stokkermans e-mail: [email protected] 1 Bis jetzt 1. Motivation 2. Terminologie 3. Endliche Automaten und reguläre

Mehr

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer. Proseminar TI: Kellerautomaten Vortrag: 10.11.2015 Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer. 1 Motivation Wir kennen bereits die Chomsky-Hierarchie. Sie klassiziert formale

Mehr

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Theoretische Informatik für Wirtschaftsinformatik und Lehramt Theoretische Informatik für Wirtschaftsinformatik und Lehramt Entscheidungsprobleme Priv.-Doz. Dr. Stefan Milius [email protected] Theoretische Informatik Friedrich-Alexander Universität Erlangen-Nürnberg

Mehr

Musterlösung Informatik-III-Nachklausur

Musterlösung Informatik-III-Nachklausur Musterlösung Informatik-III-Nachklausur Aufgabe 1 (2+2+4+4 Punkte) (a) L = (0 1) 0(0 1) 11(0 1) 0(0 1) (b) Der Automat ist durch folgendes Übergangsdiagramm gegeben: 0, 1 0, 1 0, 1 0, 1 0 s q 1 1 0 0 q

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Rolf Socher ISBN 3-446-22987-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22987-6 sowie im Buchhandel Einführung.. 13 2 Endliche

Mehr

Unentscheidbare Probleme bei formalen Sprachen

Unentscheidbare Probleme bei formalen Sprachen Unentscheidbare Probleme bei formalen Sprachen Maximilian Zagler 22.01.2008 Freie Universität Berlin, Institut für Informatik Proseminar Theoretische Informatik WS 07/08 Dozent: Prof. Dr. Helmut Alt 1

Mehr

Automaten und Formale Sprachen SoSe 2013 in Trier

Automaten und Formale Sprachen SoSe 2013 in Trier Automaten und Formale Sprachen SoSe 2013 in Trier Henning Fernau Universität Trier [email protected] 2. Juni 2013 1 Automaten und Formale Sprachen Gesamtübersicht Organisatorisches Einführung Endliche

Mehr

Software Engineering Ergänzung zur Vorlesung

Software Engineering Ergänzung zur Vorlesung Ergänzung zur Vorlesung Prof. Dr. Markus Müller-Olm WS 2008 2009 2.6.1 Endliche und reguläre Sprachen Endliche und reguläre Sprache: fundamental in vielen Bereichen der Informatik: theorie Formale Sprachen

Mehr

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

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln, Theorie der Informatik 9. März 24 7. Reguläre Sprachen I Theorie der Informatik 7. Reguläre Sprachen I Malte Helmert Gabriele Röger Universität Basel 9. März 24 7. Reguläre Grammatiken 7.2 DFAs 7.3 NFAs

Mehr

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen Dr. Sebastian Bab WiSe 12/13 Theoretische Grundlagen der Informatik für TI Termin: VL 15 + 16 vom 17.12.2012 und 20.12.2012 Deterministische und nichtdeterministische Turing-Maschinen, Typ1- und Typ0-Sprachen

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 11. Kontextsensitive und Typ-0-Sprachen Malte Helmert Gabriele Röger Universität Basel 7. April 2014 Kontextsensitive und allgemeine Grammatiken Wiederholung: (kontextsensitive)

Mehr

Zusammenfassung der letzten LVA. Endliche Automaten mit Epsilon-Übergängen. Inhalte der Lehrveranstaltung (cont d)

Zusammenfassung der letzten LVA. Endliche Automaten mit Epsilon-Übergängen. Inhalte der Lehrveranstaltung (cont d) Zusammenfassung der letzten LVA Ein nichtdeterministischer endlicher Automat (NEA) ist ein 5-Tupel (Q, Σ, δ, S, F), sodass Q eine endliche Menge von Zustände Σ eine endliche Menge, das Eingabealphabet;

Mehr

Grenzen der Regularität

Grenzen der Regularität Grenzen der Regularität Um die Mächtigkeit von endlichen Automaten zu verstehen, muss man auch ihre Grenzen kennen. Sei z.b. B = {0 n 1 n n 0} Gibt es einen DEA für B? Es sieht so aus, als müsste sich

Mehr

1.Klausur Diskrete Mathematik Seite 1 von 22

1.Klausur Diskrete Mathematik Seite 1 von 22 1.Klausur Diskrete Mathematik Seite 1 von 22 1. Welche der folgenden Aussagen zum Halteproblem ist falsch? A. Für jeden nichtdeterministischen Automaten N kann entschieden werden, ob N die Eingabe akzeptiert,

Mehr

Musterlösung Informatik-III-Klausur

Musterlösung Informatik-III-Klausur Musterlösung Informatik-III-Klausur Aufgabe 1 (1+4+3+4 Punkte) (a) 01010 wird nicht akzeptiert: s q 0 q 1 q 2 f q 2 10101 wird akzeptiert: s q 2 q 2 f q 2 f (b) ε: {s, q 0, q 1, q 2 }, {f} 0: {s, q 0,

Mehr

11.1 Kontextsensitive und allgemeine Grammatiken

11.1 Kontextsensitive und allgemeine Grammatiken Theorie der Informatik 7. April 2014 11. Kontextsensitive und Typ-0-Sprachen Theorie der Informatik 11. Kontextsensitive und Typ-0-Sprachen 11.1 Kontextsensitive und allgemeine Grammatiken Malte Helmert

Mehr

Lösungsmenge L I = {x R 3x + 5 = 9} = L II = {x R 3x = 4} = L III = { }

Lösungsmenge L I = {x R 3x + 5 = 9} = L II = {x R 3x = 4} = L III = { } Zur Einleitung: Lineare Gleichungssysteme Wir untersuchen zunächst mit Methoden, die Sie vermutlich aus der Schule kennen, explizit einige kleine lineare Gleichungssysteme. Das Gleichungssystem I wird

Mehr

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 19.

FORMALE SYSTEME. Wiederholung. Beispiel: NFA. Wiederholung: NFA. 4. Vorlesung: Nichtdeterministische Endliche Automaten. TU Dresden, 19. Wiederholung FORMALE SYSTEME 4. Vorlesung: Nichtdeterministische Endliche Automaten Markus Krötzsch Professur für Wissensbasierte Systeme Grammatiken können Sprachen beschreiben und sie grob in Typen unterteilen

Mehr