THEORETISCHE INFORMATIK I

THEORETISCHE INFORMATIK I Vorlesungsskript Jiˇr´ı Ad´amek Institut fu ¨r Theoretische Informatik Technische Universit¨at Braunschweig Juni 2013 ...
Author: Mina Schmitt
11 downloads 1 Views 803KB Size
THEORETISCHE INFORMATIK I

Vorlesungsskript

Jiˇr´ı Ad´amek

Institut fu ¨r Theoretische Informatik Technische Universit¨at Braunschweig

Juni 2013

Inhaltsverzeichnis 1 Endliche Automaten

1

1.1

Mathematische Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . .

2

1.2

Definition der endlichen Automaten . . . . . . . . . . . . . . . . . . .

5

1.3

Nichtdeterministische Automaten . . . . . . . . . . . . . . . . . . . . .

10

1.4

Regul¨ are Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

1.5

21

1.6

Ableitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¨ Aquivalente Zust¨ ande . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7

Konstruktion eines Quotient-DEA . . . . . . . . . . . . . . . . . . . .

25

1.8

Minimierung von Automaten . . . . . . . . . . . . . . . . . . . . . . . . ¨ Nerode-Aquivalenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

1.10 Beweise der Regularit¨ at . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

1.11 Moore- und Mealy-Automaten . . . . . . . . . . . . . . . . . . . . . . .

34

1.9

2 Kontextfreie Sprachen und Kellerautomaten

23

28

37

2.1

Die Idee einer formalen Grammatik . . . . . . . . . . . . . . . . . . . .

37

2.2

Kontextfreie Grammatik . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.3

Anwendungen von kontextfreien Grammatiken . . . . . . . . . . . . .

42

2.4

Ableitungsb¨ aume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

2.5

Kontextfreie und regul¨ are Sprachen . . . . . . . . . . . . . . . . . . . .

49

2.6

Eigenschaften kontextfreier Sprachen . . . . . . . . . . . . . . . . . . .

54

2.7

Nullierbare Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

2.8

Chomsky-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

2.9

Algorithmen f¨ ur formale Sprachen . . . . . . . . . . . . . . . . . . . . .

69

2.10 Kellerautomaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

2.11 Kellerautomaten und kontextfreie Sprachen . . . . . . . . . . . . . . .

75

3 Turingmaschinen

79

3.1

Definition einer Turingmaschine . . . . . . . . . . . . . . . . . . . . . .

79

3.2

Modifikationen von Turingmaschinen . . . . . . . . . . . . . . . . . . .

85

3.2.1

TM mit mehreren finalen Zust¨anden . . . . . . . . . . . . . . .

85

3.2.2

TM mit zus¨ atzlichem Ged¨achtnis . . . . . . . . . . . . . . . . .

86

i

ii

INHALTSVERZEICHNIS 3.2.3

TM mit erweitertem Bandalphabet . . . . . . . . . . . . . . .

87

3.2.4

TM mit mehrspurigem Band . . . . . . . . . . . . . . . . . . .

88

3.2.5

TM mit mehreren B¨andern . . . . . . . . . . . . . . . . . . . .

89

3.3

Nichtdeterministische Turingmaschinen . . . . . . . . . . . . . . . . .

92

3.4

Rekursiv aufz¨ ahlbare Sprachen . . . . . . . . . . . . . . . . . . . . . . .

96

3.5

Rekursive Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

4 Church-Turing-These, rekursive Funktionen und Grammatiken

101

4.1

Berechenbare Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.2

Primitive Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

4.3

µ-rekursive Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

4.4

Grammatiken und Turingmaschinen . . . . . . . . . . . . . . . . . . . 110

4.5

Universelle Turingmaschine . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.6

Das Halteproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

4.7

Ein Rechner als Turing-Maschine . . . . . . . . . . . . . . . . . . . . . 122

5 Unentscheidbare Probleme

125

5.1

Das Akzeptanzproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

5.2

Akzeptanz des leeren Wortes . . . . . . . . . . . . . . . . . . . . . . . . 126

5.3

Ist eine TM ein Algorithmus? . . . . . . . . . . . . . . . . . . . . . . . 127

5.4

Das Problem von “hello world” Programmen . . . . . . . . . . . . . . 128

5.5

Satz von Rice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

5.6

Minimierung von Turingmaschinen . . . . . . . . . . . . . . . . . . . . 131

6 Komplexit¨ at von Algorithmen

133

6.1

Beispiele effizienter Algorithmen . . . . . . . . . . . . . . . . . . . . . . 134

6.2

Komplexit¨ atsklasse P . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

6.3

Berechnungsprobleme und Reduzierbarkeit . . . . . . . . . . . . . . . 144

6.4

Robustheit der Klasse P . . . . . . . . . . . . . . . . . . . . . . . . . . 149 6.4.1

TM mit zus¨ atzlichem Ged¨achtnis . . . . . . . . . . . . . . . . . 150

6.4.2

TM mit mehrspurigem Band . . . . . . . . . . . . . . . . . . . 150

6.4.3

Mehr-Band TM . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

6.4.4

RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

6.5

Geometrische Algorithmen und reelle RAM . . . . . . . . . . . . . . . 152

6.6

Komplexit¨ atsklasse N P . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6.7

N P-Vollst¨ andigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

6.8

Weitere N P-vollst¨ andige Probleme . . . . . . . . . . . . . . . . . . . . 170

6.9

Komplexit¨ atsklasse coN P . . . . . . . . . . . . . . . . . . . . . . . . . 174

6.10 Komplexit¨ at von Optimierungsproblemen . . . . . . . . . . . . . . . . 176 6.11 Approximation von Optimierungsproblemen . . . . . . . . . . . . . . 181 6.12 Raumkomplexit¨ at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Kapitel 1

Endliche Automaten kapEA

In diesem Kapitel wird das einfachste Maschinenmodell eingef¨ uhrt, 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¨ortern, die u ¨ber einem Alphabet Σ gebildet werden, z. B. u ber dem bin¨ a ren Alphabet Σ = {0, 1}. Sie ¨ repr¨ asentieren f¨ ur uns alle Entscheidungsprobleme. Beispiel: Hat ein gegebener Graph G eine Clique von 14 Elementen? Das ist ein Entscheidungsproblem: die Antwort auf jede Eingabe, die einen Graphen codiert, ist JA oder NEIN. Es gibt verschiedene Codierungsm¨oglichkeiten f¨ ur Graphen u ¨ber dem Alphabet {0, 1} (z. B. als Liste aller Knoten und Kanten oder als Adjazenzmatrix zwischen Knoten und Kanten), aber f¨ ur jede feste Codierung c l¨ aß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 14 Elementen } . Wir fragen dann, ob ein gegebenes Wort zu der Sprache L geh¨ort. Diese einfache Formulierung erm¨oglicht es, dass wir uns weiterhin mit formalen Sprachen anstatt Entscheidungsproblemen besch¨aftigen k¨onnen. So m¨ ussen wir nicht mehr die verschiedenen Codierungen der Eingaben diskutieren, sondern k¨onnen 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 14 Elementen. Was hier erwartet wird, ist eine Funktion f , die jedem bin¨aren Wort w = c(G), wobei G ein Graph mit einer Clique von 14 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¨ahnte 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¨ ur einige Anwendungen noch hinreichenden, endlichen Automa1

2

KAPITEL 1. ENDLICHE AUTOMATEN

ten. Ihre Theorie ist klarer als die der komplizierteren Maschinen, die wir sp¨ater einf¨ uhren. Vorher geben wir noch kurz einige Grundbegriffe an, die im ganzen Skript eine wichtige Rolle spielen.

1.1

Mathematische Grundbegriffe

(a) Mengen Eine Menge kann durch eine Aufz¨ahlung 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¨ ur unendliche Mengen gibt es nur die zweite Variante. Wichtiges Beispiel: ˆ N bezeichnet die Menge aller nat¨ urlichen Zahlen.

In diesem Skript ist 0 eine nat¨ urliche Zahl, also ˆ N = {0, 1, 2, ...}.

Eine Teilmenge einer Menge A ist eine Menge B mit der Eigenschaft, dass x ∈ B Ô⇒ x ∈ A. Notation: B ⊆ A. Wir benutzen die u ur die Mengenoperationen: ¨bliche Notation f¨ A∪B

Vereinigung,

A∩B

Durchschnitt,

A−B

Komplement, A − B = {x; x ∈ A und x ∉ B},

A×B

Kartesisches Produkt, A × B = {(x, y); x ∈ A und y ∈ B}.

1.1. 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¨ ur alle a ∈ A gilt, und transitiv , falls aus aRb und bRc folgt

aRc

(a, b, c ∈ A)

F¨ ur jede Relation R auf der Menge A bezeichnen wir mit R∗ die kleinste reflexive und transitive Relation, die R enth¨alt, die sogenannte reflexive transitive H¨ ulle von R. Also gilt f¨ ur zwei Elemente a, b aus A: aR∗ b genau wenn a=b oder es gibt

a = c1 , c2 , . . . , cn = b in A

mit ci Rci+1

f¨ ur i = 1, . . . , n − 1

Eine Funktion f ∶A→B ist eine Relation f ⊆ A × B mit der Eigenschaft, dass es f¨ ur jedes Element a ∈ A genau ein Element b ∈ B gibt, mit dem a in Relation steht; das bezeichnen wir wie u ¨blich mit f (a) = b. A heißt der Urbildbereich oder Definitionsbereich und B der Wertebereich der Funktion f . Ein schw¨ acherer Begriff ist der einer partiellen Funktion f ∶ A ⇀ B: das ist eine Relation, die f¨ ur jedes Element a ∈ A h¨ochstens 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 1. Die Nachfolgerfunktion ist eine (totale) Funktion suc: N → N. Die Vorg¨ angerfunktion ist dagegen eine partielle Funktion pred: N → N, die durch pred(n) = n − 1

f¨ ur alle n ≥ 1

definiert ist (und pred(0) ist nicht definiert). Funktionen zweier Variablen lassen sich als (¨ ubliche) 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.

4

KAPITEL 1. ENDLICHE AUTOMATEN

(c) Wo ¨rter Eine nichtleere endliche Menge heißt auch Alphabet und ihre Elemente werden auch Buchstaben genannt. Beispiel: das bin¨are Alphabet ist die Menge mit zwei Buchstaben, 0 und 1. Falls Σ ein Alphabet ist und n eine nat¨ urliche Zahl, so wird ein geordnetes n-Tupel von Elementen aus Σ als Wort der L¨ange n u ¨ber dem Alphabet Σ bezeichnet. Wir schreiben die W¨ orter, etwas informell, ohne Kommas oder Klammern einfach als ˆ a f¨ ur a ∈ Σ (W¨ orter der L¨ange 1) ˆ ab f¨ ur a, b ∈ Σ (W¨ orter der L¨ange 2)

usw. Der Fall n = 0 entspricht dem leeren Wort, das mit ˆ ε

bezeichnet wird. F¨ ur die L¨ ange eines Wortes w schreiben wir ∣w∣, z. B. ∣ε∣ = 0, ∣ab∣ = 2 usw. Die Menge aller (endlichen!) W¨orter u ¨ber dem Alphabet Σ bezeichnen wir mit Σ∗ . Beispiel: f¨ ur das bin¨ are Alphabet Σ = {0, 1} gilt Σ∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }. Die Konkatenation zweier W¨orter u = a1 a2 . . . an und v = b1 b2 . . . bm ist das Wort uv = a1 a2 . . . an b1 b2 . . . bm (ohne L¨ ucke“ geschrieben, denn L¨ ucke“ 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¨ alt. Das vermeidet Unklarheiten des Typs, ob εε die Konkatenation zweier leerer W¨ orter ist (also εε = ε), oder ein Wort der L¨ange 2 – die zweite Variante schließen wir hier aus. Dar¨ uberhinaus nehmen wir an, dass f¨ ur zwei Elemente a ≠ b des Alphabets, b kein Wort mit Pr¨ afix a ist. Also ist beispielsweise {0, 1, 13} kein Alphabet w¨ahrend {0, 1, 24} eines ist.

(d) Formale Sprachen Eine formale Sprache ist eine Menge von W¨ortern. Genauer: eine formale Sprache u ¨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¨ aren Codierungen der Graphen, die eine Clique mit 14 Elementen haben, ist eine formale Sprache L ⊆ {0, 1}∗ .

1.2. DEFINITION DER ENDLICHEN AUTOMATEN

5

(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 ?● _  cm ●

a●

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: b ?● _

1

0 0

a●

 cm ● 1

bezeichnet den obigen Graphen mit der Markierung f ∶ V → {0, 1} mit dem Wert 0 f¨ ur (a, b) und (b, c) und dem Wert 1 f¨ ur (b, c) und (c, c).

1.2

Definition der endlichen Automaten

sectDEA

Reale Rechner bestehen aus einem Prozessor, der sich in einem von endlich vielen Zust¨ anden 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¨oglich ist, k¨onnen wir die Zust¨ande des Speichers auch als globale Zust¨ ande des Rechners betrachten. Dann hat der Rechner also nur endlich viele Zust¨ ande. 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¨ anden unterscheiden: die finalen Zust¨ande (Antwort JA) und die nicht finalen (Antwort NEIN).

Mathematisch l¨ aßt sich solch eine einfache Maschine dadurch beschreiben, dass wir f¨ ur jedes Paar (q, s) q - Zustand, s - Eingabesymbol den n¨ achsten Zustand δ(q, s) bestimmen. Sei also Q die Menge aller Zust¨ande und Σ das Eingabealphabet. Dann ¨ beschreibt die Ubergangsfunktion δ ∶Q×Σ→Q

6

KAPITEL 1. ENDLICHE AUTOMATEN

die Arbeitsweise der Maschine. Wir gehen davon aus, dass die Bearbeitung der Eingabe immer in demselben (initialen) Zustand beginnt. Das f¨ uhrt zur folgenden Definition: Definition. Ein deterministischer endlicher Automat (DEA) ist ein F¨ unftupel A = (Q, Σ, δ, q0 , F ), wobei Q

eine endliche Zustandsmenge,

Σ

ein Eingabealphabet, ¨ die Ubergangsfunktion,

δ ∶Q×Σ→Q q0 ∈ Q

der Initialzustand

F ⊆Q

die Menge aller akzeptierender (oder finaler) Zust¨ande

und

ist Notation. Statt δ(q, s) = q ′ schreibt man auch q

s

/ q′

oder (q, s) → q ′ . Wir benutzen auch kennzeichnen:



/ , um den Initialzustand und die finalen Zust¨ande zu 

/ q

Initialzustand

q bspDEA

Finaler Zustand

Beispiel 1. Sei A = ({q0 , q1 , q2 }, {0, 1}, δ, q0 , {q2 }) ¨ der Automat, dessen Ubergangsfunktion δ wie folgt definiert ist: (q0 , 0) → q0 (q0 , 1) → q1 (q1 , 0) → q2 (q1 , 1) → q1 (q2 , 0) → q1 (q2 , 1) → q0

Diesen Automaten kann man durch den folgenden markierten Graphen repr¨asentieren: 0



/ q0

1



> / q1

1

`

0 1

q2 ~

0



1.2. DEFINITION DER ENDLICHEN AUTOMATEN

7

Das Wort 0110 wird akzeptiert, denn der Initialzustand q0 wird dadurch in einen finalen Zustand u uhrt. ¨berf¨ 0

1

1

0

q0 Ð → q0 Ð → q1 Ð → q1 Ð → q2 ∈ F. Das Wort 001100 wird nicht akzeptiert. Definition. 1. Eine Konfiguration eines DEA A = (Q, Σ, δ, q0 , F ) ist ein Paar (q, w), wobei q ein Zustand und w ein Wort u ¨ber Σ ist (der momentane Zustand und der noch nicht gelesene Teil des Eingabewortes). Konfigurationen (q0 , w) heißen Initialkonfigurationen und Konfigurationen (q, ε) heißen Finalkonfigurationen. 2. F¨ ur jede Konfiguration (q, w) mit w = s1 s2 . . . sn heißt die Konfiguration (q ′ , w′ )

mit

q ′ = δ(q, s1 )

und w′ = s2 . . . sn

die Folgekonfiguration, und wir bezeichnen dies mit dem Symbol (q, w) ⊢ (q ′ , w′ ). K¨ urzer: (q, s1 s2 . . . sn ) ⊢ (δ(q, s1 ), s2 . . . sn ). bspDEA0110

Beispiel 1 (Fortsetzung) Der Automat aus Beispiel 1 berechnet das Wort 0110 durch die folgende Reihe von Konfigurationen: (q0 , 0110) ⊢ (q0 , 110) ⊢ (q1 , 10) ⊢ (q1 , 0) ⊢ (q2 , ε) Bemerkung 1. Das kartesische Produkt Q × Σ∗ ist also die Menge aller m¨oglichen Konfigurationen und ⊢ (Folgekonfiguration) ist eine Relation auf dieser Menge. Wir bezeichnen durch ⊢∗ die reflexive und transitive H¨ ulle dieser Relation. F¨ ur zwei Konfigurationen (q, w) und (q ′ , w′ ) aus Q × Σ∗ gilt demzufolge (q, w) ⊢∗ (q ′ , w′ ), wenn eine Berechnung, die in der Konfiguration (q, w) anf¨angt, endet in der Konfiguration (q ′ , w′ ). Dies gilt genau dann, wenn entweder (q, w) = (q ′ , w′ ) ist oder Konfigurationen (q1 , w1 ), . . . , (qn , wn ) existieren, so dass (q, w) = (q1 , w1 ), (q ′ , w′ ) = (qn , wn ) und (q1 , w1 ) ⊢ (q2 , w2 ) ⊢ . . . ⊢ (qn , wn ) gilt. Die Liste der Konfigurationen (qi , wi ),

i = 1, . . . , n

heißt Berechnung von (q ′ , w′ ) aus (q, w). Definition. Ein DEA A = (Q, Σ, δ, q0 , F ) akzeptiert ein Wort w u ¨ber Σ∗ , falls die Initialkonfiguration (q0 , w) zu einer Berechnung mit Endkonfiguration (q, ε) f¨ uhrt, wobei q ein finaler Zustand ist. Das heißt, falls es einen Zustand q ∈ F gibt mit (q0 , w) ⊢∗ (q, ε). Die Sprache aller W¨ orter, die A akzeptiert, wird mit L(A) bezeichnet und heißt die von A akzeptierte Sprache. Kurz: L(A) = {w ∈ Σ∗ ; es gibt q ∈ F mit (q0 , w) ⊢∗ (q, ε)}

8

KAPITEL 1. ENDLICHE AUTOMATEN

Beispiel 2. Ist eine Zahl gerade? Dies ist die Sprache aller W¨orter in Σ = {0, 1, . . . , 9}, die folgende Eigenschaften erf¨ ullen: (a) die letzte Ziffer ist 0, 2, 4, 6, 8 (b) wenn die erste Ziffer 0 ist, dann ist die Wortl¨ange 1 0,1,...,9

0



/ q0

>

0,1,...,9

q1



/ q3 O

2,4,6,8

1,3,5,7,9

/ q2

2,4,6,8

$

1,3,5,7,9

q4



Das Wort 123 wird wie folgt berechnet (q0 , 123) ⊢ (q4 , 23) ⊢ (q3 , 3) ⊢ (q4 , ε) und nicht akzeptiert, weil der letzte Zustand in Q-F liegt. B:fuenf

Beispiel 3. Die Sprache aller Primzahlen wird von keinem endlichen Automaten akzeptiert. (Beweis sp¨ ater, siehe Beispiel ?? in Abschnitt 1.10)

B:sechs

Beispiel 4. Die Sprache L ⊆ {0, 1}∗ aller W¨orter mit einer geraden Anzahl von 0’en und einer geraden Anzahl von 1’en wird von dem Automaten 

/ q0 o O 0

1

q1

1

0

 q2 o

/ 0

1

/  q3

O 0

1

akzeptiert. Definition. Eine Sprache heißt regul¨ ar , falls es einen DEA gibt, der sie akzeptiert. bspRegTriv bspNichtReg

Beispiel 5. Σ∗ , ∅ und die Menge aller geraden Zahlen sind regul¨ar. ¨ Beispiel 6 (Eine nicht regul¨are Sprache). Uber dem Alphabet {∣} definieren wir L = {02 , 12 , 22 , . . . }. Wir zeigen, dass jeder Automat A mit L ⊆ L(A) auch W¨orter außerhalb L akzeptiert, also L ≠ L(A). Sei n die Anzahl der Zust¨ande von A. Da n2 von A akzeptiert wird, gibt es einen Weg durch A“, der nach n2 Schritten in einem finalen Zustand ” endet: q0 − initial q1 = δ(q0 , ∣) q2 = δ(q1 , ∣) ⋮ qn2 = δ(qn2 −1 , ∣)

− final.

1.2. DEFINITION DER ENDLICHEN AUTOMATEN

9

Die Zust¨ ande qi , i = 0, . . . , n, sind nicht alle verschieden, da A nur n Zust¨ande hat und hier n+1 Indizes auftreten. Daher existieren i und k mit 0 < k ≤ n und qi = qi+k : 

/ q0

/ q1

/ ...

/5 qi

/ qi+k+1

/ ...

/ qn2  /

 qi+1

qi+k−1 \ ... t

Weil A das Wort n2 = i + k + (n2 − i − k) akzeptiert, folgt, dass auch n2 + k = i + 2k + (n2 − i − k) von A akzeptiert wird. (In beiden F¨allen wird derselbe Weg durch A zur¨ uckgelegt, im zweiten Fall wird der Zyklus qi , . . . , qi+k−1 , qi zweimal durchlaufen.) Es gilt aber: n2 < n2 + k, da k > 0, und (n + 1)2 > n2 + n ≥ n + k, da k ≤ n. Also liegt n2 + k zwischen n2 und (n + 1)2 und kann kein Wort der Sprache L sein. Beobachtung. Sei A ein DEA mit Eingabealphabet Σ. beobOneStepAbl

1. F¨ ur jedes Wort u u ¨ber Σ gilt: aus (q, w) ⊢ (q ′ , w′ )

folgt (q, wu) ⊢ (q ′ , w′ u).

In der Tat, f¨ ur w = s1 s2 . . . sn haben wir q ′ = δ(q, s1 )

und w′ = s2 . . . sn .

Sei u = t1 . . . tm , dann gilt also q ′ = δ(q, s1 )

und w′ u = s2 . . . sn t1 . . . tm .

Das sagt genau, dass (q, wu) ⊢ (q ′ , w′ u), weil wu = s1 . . . sn t1 . . . tm . 2. Es gilt ebenfalls f¨ ur jedes Wort u, dass aus

(q, w) ⊢∗ (q ′ , w′ )

folgt (q, wu) ⊢∗ (q ′ , w′ u).

Dies ist nur eine wiederholte Anwendung von 1. ¨ Notation. Die Ubergangsfunktion δ ∶ Q × Σ → Q k¨onnen wir von Buchstaben aus Σ auf Worte aus Σ∗ erweitern: wir definieren δ ∗ ∶ Q × Σ∗ → Q einem Paar (q, w) durch Induktionin der L¨ ange n des Wortes w wie folgt: n = 0: δ ∗ (q, ε) = q (keine Eingabe ⇒ keine Bewegung) n + 1: hier w = vs und v hat l¨ ange n, deswegen ist δ ∗ (q, v) = q¯ schon definiert. Wir ∗ setzen δ (q, vs) = δ(¯ q , s) Diese Funktion δ ∗ weist jeder Konfiguration (q, w) den Endzustand der Berechnung des Eingabewertes w zu. Jetzt k¨ onnen wir die Sprache L(A) noch k¨ urzer definieren: es besteht aus allen Worten w mit δ ∗ (q0 , w) ∈ F.

10

1.3

KAPITEL 1. ENDLICHE AUTOMATEN

Nichtdeterministische Automaten

sectNEA

Nichtdeterministische Automaten sind wie endliche Automaten definiert, nur hat ¨ die Ubergangsfunktion δ(q, s) mehrere M¨oglichkeiten. Kurz: δ ist keine Funktion, sondern eine Relation zwischen Q × Σ und Q: Beispiel 1. Lexikale Analyse von Positionen. Nehmen wir alle bin¨aren W¨orter, die auf Position 2 von rechts eine 1 haben. Daf¨ ur haben wir den Automat 0,1



/ q0



/ q1

1

0,1

/ q2

Der ist aber nicht deterministisch: aus q0 kann Eingabe 1 zu q0 oder q1 f¨ uhren usw. Analog f¨ ur L(n) = alle bin¨ aren W¨orter mit 1 auf Position n von rechts. Der Automat 0,1



/ q0



/ q1

1

/ q2

0,1

0,1

/...

0,1

/ qn

hat n + 1 Zust¨ ande und akzeptiert die erw¨ unschte Sprache. Es gibt auch DEA’s daf¨ ur, aber diese sind sehr kompliziert – und sehr groß: L(n) braucht mindestens 2n Zust¨ ande, siehe Beispiel 2 in 1.8. Beispiel 2. Textsuche. Eine h¨aufig ben¨otigte Aufgabe im Internet ist die Untersuchung von Dokumenten auf gewisse W¨orter (sogenannte Schl¨ usselw¨orter). Dies wird mit NEAs durchgef¨ uhrt. Nehmen wir an, dass nur ein Schl¨ usselwort a1 . . . ak im Alphabet Σ (= ASCII-Zeichen, zum Beispiel) gegeben wird. Hier ist unser Automat: Σ



/

/

a1

/

a2

/...

ak

/

Bei mehreren Schl¨ usselw¨ ortern ist der NEA analog. Konkret f¨ ur Schl¨ usselw¨orter: web und ebay: Σ

 /



/

w

e

e



b

/

/

b

/

a

/

y

/

Definition. Ein nichtdeterministischer endlicher Automat (NEA) ist ein Quintupel A = (Q, Σ, δ, q0 , F ), wobei Q, Σ und F ⊆ Q endliche Mengen sind, δ ⊆ (Q × Σ) × Q eine Relation ist und q0 ∈ Q. bspNEA

Beispiel 3. 1



/ q0 0

q1 0

0

 U



1

/ q2 1

U

1.3. NICHTDETERMINISTISCHE AUTOMATEN

11

Das ist der nichtdeterministische Automat mit Σ = {0, 1}, Zust¨anden q0 (initial), q1 ¨ und q2 (final) und den angedeuteten Uberg¨ angen. Bemerkung 1. 1. Wir verwenden dieselbe Notation wie im deterministischen Fall. Speziell schreiben wir q

s

/ q′

oder (q, s) → q ′

¨ statt (q, s)δq ′ . Hier k¨ onnen jedoch zwei verschiedene Ubergangsregeln (q, s) → ′ q dieselbe linke Seite haben (und umgekehrt muß f¨ ur 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¨ ur jede Konfiguration (q, w) mit w = s1 s2 . . . sn gibt es im allgemeinen mehrere Folgekonfigurationen: alle Konfigurationen (q ′ , w′ ), wobei (q, s1 ) → q ′ und w′ = s2 . . . sn . Wir benutzen wieder das Symbol ⊢, also (q, s1 s2 . . . sn ) ⊢ (q ′ , s2 . . . sn )

f¨ ur alle

q ′ ∈ Q mit (q, s1 ) → q ′ .

Die reflexive und transitive H¨ ulle dieser Relation wird wieder mit ⊢∗ bezeichnet. 3. Wichtige Frage: wann wird ein Wort akzeptiert? Jedes Eingabewort w hat nat¨ urlich verschiedene Berechnungen. Falls wenigstens eine Berechnung in einem finalen Zustand endet, sagen wir, dass der NEA das Wort w akzeptiert: Definition. F¨ ur einen NEA A wird ein Wort w u ¨ber Σ akzeptiert, falls es einen finalen Zustand q mit (q0 , w) ⊢∗ (q, ε) gibt. Die Menge L(A) aller akzeptierten W¨ orter heißt die von A akzeptierte Sprache. bspNEAakzeptiert

Beispiel 1 (Fortsetzung) Der nichtdeterministische Automat aus Beispiel 3 akzeptiert die Sprache L aller W¨ orter, die entweder 1. genau eine 0 enthalten, oder 2. die Form 1i 0j 1k mit i ≥ 0, j > 0, k > 0 haben. Kann diese Sprache von einem deterministischen Automaten mit nur drei Zust¨anden akzeptiert werden? NEIN (Beweis sp¨ater, siehe 1.9, Beispiel 4) Mit 23 = 8 Zust¨ anden geht es: Notation. F¨ ur jede Menge Q bezeichnet PQ (die Potenzmenge von Q) die Menge aller Untermengen von Q. Beispiel: P{0, 1} = {∅, {0}, {1}, {0, 1}}. Konstruktion. Sei A ein NEA. Wir k¨onnen einen DEA A′ mit derselben Sprache konstruieren: L(A) = L(A′ ). Die Idee ist, dass jede Gruppe M von Zust¨anden von A (das heißt, jede Untermenge M ⊆ Q) als ein einziger Zustand des neuen Automaten betrachtet wird. Dann ¨ ergibt die nichtdeterministische Ubergangsrelation δ die folgende deterministische ¨ Ubergangsfunktion δ ′ : f¨ ur jeden Zustand von A′ , das heißt jede Menge M ⊆ Q und jedes Eingabesymbol s ∈ Σ, bezeichnen wir durch δ ′ (M, s)

12

KAPITEL 1. ENDLICHE AUTOMATEN

die Menge aller Zust¨ ande q , f¨ ur die gilt (q, s) → q (in δ), wobei q in M liegt. K¨ urzer: defdeltastrich

δ ′ (M, s) = {q ∈ Q; es gibt q ∈ M mit (q, s)δq}.

(1)

Also ist A′ der folgende deterministische Automat A′ = (PQ , Σ, δ ′ , {q0 }, F ′ ), wobei δ ′ durch (1) (f¨ ur alle M ∈ 2Q und s ∈ Σ) definiert ist, {q0 } der Initialzustand ′ ist und F genau die Zust¨ ande von A′ enth¨alt, in denen wenigstens ein Finalzustand von A liegt: F ′ = {M ; M ⊆ Q und M ∩ F ≠ ∅}. Beispiel 1 (Fortsetzung) Der DEA, der Beispiel 1 darstellt, hat 8 = 23 Zust¨ande: {q0 , q1 , q2 } 0

1



/ 0} {q O

0

0

1

{q0 , q1 }

x / {q1 , q2 }

0

1

1

1



/ q2 o 8

0

1

& {q0 , q2 }

1



/ 1} {q

 ∅ U

0,1

satzPotenzKonstr

Satz 1. Die Automaten A und A′ akzeptieren dieselbe Sprache. Beweis. F¨ ur jedes Wort s1 . . . sn u ¨ber Σ bezeichnen wir durch M0 , M1 , . . . , Mn die Zust¨ ande der Berechnung des Wortes im Automat A′ ∶ M0 = {q0 } und Mi+1 = δ ′ (Mi , si+1 ). Wir beweisen, dass

potenzkonstrbew

(2)

ein Zustand q von A genau dann in Mn liegt, wenn eine Berechnung von s1 . . . sn durch A existiert, die in q endet.

Damit wird bewiesen, dass, falls s1 . . . sn in L(A′ ) liegt (falls also Mn ∈ F ′ einen finalen Zustand von A enth¨ alt), eine Berechnung durch A existiert, die in einem finalen Zustand endet – also akzeptiert auch A das Wort s1 . . . sn . 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 Mn – das beweist, dass Mn ∈ F ′ , also akzeptiert A′ das Wort s1 . . . sn . Der Beweis von (2) erfolgt durch Induktion u ¨ber die L¨ange n des gegebenen Wortes: Hier ist Mn = {q0 } und eine Berechnung von ε durch A endet immer in n=0∶ q0 . n → n + 1 ∶ Da Mn+1 = δ ′ (Mn , sn+1 ), sagt uns (1), dass Mn+1 einen Zustand q genau dann enth¨ alt, wenn es einen Zustand q in Mn gibt mit (q, sn+1 )δq. Bei der Induktionsvoraussetzung sind diese Zust¨ande q genau die, die in A durch eine Berechnung von s1 . . . sn erreicht werden k¨onnen. Hier folgt (2) also aus der Beobachtung, dass die Berechnung von s1 . . . sn sn+1 einen Zustand q genau dann erreicht, wenn es einen Zustand q gibt, der durch die Berechnung von s1 . . . sn erreicht werden kann und (q, sn+1 )δq erf¨ ullt. Bemerkung 2. Bei vielen Anwendungen ist es m¨oglich, einen viel kleineren DEA zu konstruieren indem wir uns auf die Zust¨andem die vom Initialzustand durch ein Eingabewort erreichbar sind, beschr¨anken.

1.3. NICHTDETERMINISTISCHE AUTOMATEN

13

Definition. Ein Zustand q eines DEA A = (Q, Σ, δ, q0 , F ) ist erreichbar , falls es ein Wort w in Σ∗ mit (q0 , w) ⊢∗ (q, ε) gibt. Der folgende DEA Ar = (Qr , Σ, δ r , q0 , F ∩ Qr ) wobei Qr die Menge aller erreichbaren Zust¨ande von A ist und δ r die Restriktion von δ ist, heißt der erreichbare Teil von A. Falls A = Ar ist, also jeder Zustand von A erreichbar ist, heißt A ein erreichbarer Automat. bemErreichbarAbg

Bemerkung 3. Falls q erreichbar ist, ist auch der Zustand q ′ = δ(q, s) (f¨ ur jedes s ∈ Σ) erreichbar, denn aus (q0 , w) ⊢∗ (q, ε)

folgt (q0 , ws) ⊢∗ (q, s) ⊢ (q ′ , ε).

Wir erhalten also eine Funktion δ r ∶ Qr × Σ → Qr als Restriktion von δ ∶ Q × Σ → Q. bemErreichbarEqiv

Bemerkung 4. Es gilt: A und Ar sind ¨aquivalent, d.h. sie akzeptieren dieselbe Sprache. Es ist n¨ amlich leicht zu sehen, dass (q0 , w) ⊢∗ (q, ε) in A genau dann gilt, wenn es auch in Ar gilt.

Beispiel 1 (Fortsetzung) Die obere Konstruktion des DEA mit 8 Zust¨anden ist nicht erreichbar: die Zust¨ ande {q0 , q1 } und {q0 , q1 , q2 } k¨onnen weggelassen werden. Beispiel 4. Im Automat A 0

>

0





q1

/ q0

`

0

q3

1

 ~ q2

1

1

U

0,1

ist der Zustand q3 nicht erreichbar. Alle anderen Zust¨ande sind aber erreichbar, deswegen ist Ar der folgende Automat 0

0



/ q0

>

q1



1 1

 q2 0,1

U

14

KAPITEL 1. ENDLICHE AUTOMATEN

Beispiel 5. F¨ ur den NEA >

1

>

q1

0

q3

/ q4

1



/ q0 1 0

q2

/ q5

1

q6 konstruieren wir einen ¨ aquivalenten DEA als den erreichbaren Teil der obigen Konstruktion: 1 /  / {q0 } {q1 , q2 }

0

O ` z {q3 , q6 } 0,1

0,1

  x 8∅

1

0

 {q4 , q5 } 0,1

Dieser hat also 5 (und nicht 27 = 128) Zust¨ande. ¨ Bemerkung 5. F¨ ur manche Anwendungen ist es geschickt, auch spontane Uberg¨ ange, ¨ d.h. Uberg¨ ange ohne Eingabe, zu erlauben. Dazu benutzen wir ε als ein Spezialsym¨ bol, das keine Eingabe“ bezeichnet. Jetzt k¨onnen wir den spontanen Ubergang von ” ¨ q nach q ′ im selben Stil wie die anderen Uberg¨ ange (q, s) → q ′ bezeichnen, n¨amlich als q ε / q′ oder (q, ε) → q ′ . ¨ Genauer: die Ubergangsrelation δ ⊆ (Q × Σ) × Q wird jetzt durch eine Relation ¨ ¨ δ ⊆ (Q × (Σ ∪ {ε})) × Q ersetzt. Die spontanen Uberg¨ ange heißen auch ε-Uberg¨ ange und die entsprechenden Maschinen ε-NEAs: Definition. Ein nichtdeterministischer endlicher Automat mit spontanen ¨ Uberg¨ angen (ε-NEA) ist ein Quintupel A = (Q, Σ, δ, q0 , F ), wobei Q, Σ und F ⊆ Q endliche Mengen sind, δ ⊆ (Q × (Σ ∪ {ε})) × Q eine Relation ist und q0 ∈ Q. Bemerkung 6. F¨ ur jeden ε-NEA definieren wir, wie zuvor, eine Konfiguration als ein Paar (q, w) in Q × Σ∗ . Die Folgekonfigurationen einer Konfiguration (q, w) sind 1. wie bisher: alle Konfigurationen (q ′ , s2 . . . sn ), wobei w = s1 s2 . . . sn und (q, s1 ) → q′ , und 2. alle Konfigurationen (q ′ , w), wobei (q, ε) → q ′ – also alle Konfigurationen, die ¨ durch spontane Uberg¨ ange den Zustand ¨andern, ohne das restliche Eingabewort zu beeinflussen.

1.3. NICHTDETERMINISTISCHE AUTOMATEN

15

Kurz: ⊢ ist die kleinste Relation auf die Menge Q × Σ∗ aller Konfigurationen mit (q, s1 s2 . . . sn ) ⊢ (q ′ , s2 . . . sn )

falls (q, s1 ) → q ′

(q, s1 s2 . . . sn ) ⊢ (q ′ , s1 s2 . . . sn )

falls (q, ε) → q ′

und

Die Bedeutung von ⊢∗ ist wie oben, ein Wort w u ¨ber Σ wird akzeptiert, falls es einen finalen Zustand q gibt mit (q0 , w) ⊢∗ (q, ε). NEAS0u1s

Beispiel 6. Der folgende NEAS 

/ q0

0

ε

/ q1 O ε

q2



1

akzeptiert das leere Wort, denn es gibt die folgende Berechnung (q0 , ε) ⊢ (q2 , ε) ⊢ (q1 , ε). Auch 01 wird aufgrund der Berechnung (q0 , 01) ⊢ (q1 , 1) ⊢ (q2 , ε) ⊢ (q1 , ε) akzeptiert. Bemerkung 7. Speziell gilt (q, s) ⊢∗ (q ′ , ε)

f¨ ur s ∈ Σ und q, q ′ ∈ Q

¨ genau dann wenn es eine Berechnung mit genau einem nichtspontanen Ubergang wie folgt gibt: q

ε

/ q1

ε

/ q2

/...

ε

/ qi

s

/ qi+1

ε

/ qi+2

/...

ε

/ q′

Definition. Zwei Automaten A und A′ (DEA, NEA, oder ε-NEAs) heißen ¨ aquivalent, falls sie dieselbe Sprache akzeptieren, das heißt, L(A) = L(A′ ). Konstruktion. F¨ ur jeden NEAS A = (Q, Σ, δ, q0 , F ) konstruieren wir einen ¨aquivalenten ε-NEA: wir lassen Q und q0 unver¨andert und definieren ¯ q0 , F ) A = (Q, Σ, δ, wie folgt: ¯ ′ (q, s)δq und

genau wenn in A gilt (q, s) ⊢∗ (q ′ , ε)

⎧ ⎪ falls A das leere Wort nicht akzeptiert ⎪F F =⎨ ⎪ F ∪ {q0 } falls A das leere Wort akzeptiert ⎪ ⎩

F¨ ur den NEAS aus Beispiel 6 bekommen wir damit den folgenden NEA: 

/ q0 0,1

I

1

q2

~o

1 1

1

/ I q1 1

16

KAPITEL 1. ENDLICHE AUTOMATEN

Wir beweisen jetzt, dass f¨ ur jedes Wort w u ¨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 q0 final in A ist, also akzeptiert auch A das leere Wort. Falls w = s1 s2 . . . sn , n > 0, bedeutet das, dass es einen finalen Zustand q ∈ F gibt und eine Berechnung in A der Form BerInA

(3)



/ q0

ε

/...

ε

/

s1

/

/... /

ε

ε

/

sn

/

ε

/

ε

/...

/ q

Bezeichnen wir mit qi den Zustand, den A nach der Eingabe si erreicht (i = 1, . . . , n), dann gilt in A: (q0 , s1 ) → q1 (q1 , s2 ) → q2 ⋮ (qn−1 , sn ) → qn ,

sogar (qn−1 , sn ) → q

Also haben wir eine Berechnung in A BerInAs



(4)

/ q0

/ q1

s1

s2

/...

sn

/ q

und da q ∈ F , ist das Wort s1 s2 . . . sn von A akzeptiert. (b) Sei w ein Wort, das A akzeptiert. Falls w = ε, bedeutet das, dass q0 ∈ F . Also entweder q0 ∈ F (dann akzeptiert A nat¨ urlich ε) oder q0 ∈ F − F und A akzeptiert ε aufgrund der Definition von F . Falls w = s1 s2 . . . sn , n > 0, 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 = s1 s2 . . . sn . Falls q ∈ F − F , gilt: q = q0 , und A akzeptiert ε. Das letzte bedeutet, dass es einen Finalzustand q1 ∈ F gibt mit der folgenden Berechnung: 

/ q0

ε

/

ε

/...

ε

/ q1

Diese Berechnung kann, da q = q0 , an die von (3) angekn¨ upft werden, und wir sehen, dass (q0 , s1 . . . sn , ) ⊢∗ (q1 , ε). Daraus folgt, dass A das Wort s1 s2 . . . sn akzeptiert.

1.4

Regul¨ are Sprachen

sectReg

Wir wollen jetzt die regul¨ aren Sprachen (siehe Abschnitt 1.2) charakterisieren. Notation. Wir verwenden die folgenden Operationen f¨ ur Sprachen L ⊆ Σ∗ : 1. Vereinigung L1 ∪ L2 – ist die Sprache aller W¨orter, die in L1 oder L2 liegen. 2. Konkatenation L1 ⋅ L2 (oder nur L1 L2 ) ist die Sprache aller W¨ orter w1 w2 mit w1 ∈ L1 , w2 ∈ L2 . Falls L1 = L2 = L, schreiben wir L2 statt L ⋅ L (analog L3 usw.).

¨ 1.4. REGULARE SPRACHEN

17

3. Iteration (oder Kleenescher Stern) L∗ = {ε} ∪ L ∪ (L ⋅ L) ∪ (L ⋅ L ⋅ L) ∪ . . . ist die Sprache aller W¨ orter w1 w2 . . . wn mit w1 , . . . , wn ∈ L (n ∈ N) (inklusive ε f¨ ur den Fall n = 0); wir benutzen auch L+ f¨ ur die Sprache aller W¨ orter w1 w2 . . . wn mit w1 , . . . , wn ∈ L und n ≥ 1. 4. Komplement L = Σ∗ − L. Beispiel 1. F¨ ur L1 = {00} und L2 = {1, 101} gilt L1 ∪ L2 = {00, 1, 101} L1 ⋅ L2 = {001, 00101} L∗1 = {ε, 00, 0000, . . . }. satzRegAbgPlusCat

Satz 1. Falls L1 und L2 regul¨ are Sprachen sind, sind auch die Sprachen L1 ∪ L2 und L1 ⋅ L2 regul¨ ar. Beweis. F¨ ur Li (i = 1, 2) gibt es nach Definition einen DEA Ai = (Qi , Σ, δi , q0i , Fi ), der Li akzeptiert. Wir k¨ onnen ohne Beschr¨ankung der Allgemeinheit annehmen, dass die Zustandsmengen Q1 und Q2 disjunkt sind. 1. Regularit¨ at von L1 ∪ L2 : die folgende parallele Komposition“ von A1 und A2 : ” : ● q01

F1

$ ● q02

F2

ε



/ q0 ε

akzeptiert die Sprache L(A1 ) ∪ L(A2 ) = L1 + L2 . Formal ist dies der NEAS A = (Q1 ∪ Q2 ∪ {q0 }, Σ, δ, q0 , F1 ∪ F2 ), ¨ wobei q0 ∉ Q1 ∪ Q2 und δ durch die folgenden Ubergangsregeln definiert wird: E:fuenf

(1)

(q, s) → δi (q, s)

f¨ ur alle q ∈ Qi , i = 1, 2, s ∈ Σ

und (q0 , #) → q10 ,

(q0 , #) → q20 .

2. Regularit¨ at von L1 ⋅ L2 : die folgende serielle Komposition“ von A1 und A2 : ” 

ε

/ ● q01

F1

ε

,/2 ● q 02

F2

ε

akzeptiert die Sprache L(A1 ) ⋅ L(A2 ) = L1 ⋅ L2 . Formal ist dies der NEAS A = (Q1 ∪ Q2 , Σ, δ, q01 , F2 ), wobei δ durch (1) und (q, #) → q02 f¨ ur alle q ∈ F1 definiert wird.

18 kor:finiteregular

KAPITEL 1. ENDLICHE AUTOMATEN

Folgerung 1. Jede endliche Sprache ist regul¨ar. Beweis. F¨ ur L = {w1 , . . . , wn } gilt: L ist die Vereinigung der Sprachen Li = {wi }, und Li ist die Konkatenation der Sprachen Lij = {sj }, falls wi = s1 . . . sk oder Li = {ε}. Die Sprache {sj } bzw. {ε} sind regul¨ar (konstruieren Sie einen Automaten, der nur sj bzw. nur ε akzeptiert). Daher ist L regul¨ar.

satzRegAbgStar

Satz 2. Falls L eine regul¨ are Sprache ist, sind auch L∗ und L+ regul¨ ar. Beweis. Der folgende Feedback“ eines L akzeptierenden Automaten A = (Q, Σ, δ, q0 , F ): ”   /F ● q 0 F ε

akzeptiert die Sprache L+ . Formal definieren wir den NEAS A′ = (Q, Σ, δ ′ , q0 , F ), ¨ ¨ wobei δ ′ die urspr¨ ungliche Ubergangsfunktion mit den zus¨atzlichen spontanen Uberg¨ angen (q, ε) → q0

f¨ ur alle q ∈ F

ist. Es gilt L(A ) = L(A) = L . ′

+

+

Der Fall L∗ = L+ ∪ {ε} folgt aus Satz 1 und Korollar 1. l00p11s

Beispiel 2. Die Sprache L aller W¨orter in {0, 1}∗ , in denen jeder Buchstabe wiederholt wird, d. h. L = ({11} ∪ {00})∗ , wird von dem folgenden Automaten akzeptiert: f¨ ur 11 haben wir  /● 1 /● 1 / ● analog f¨ ur {00}. Die parallele Komposition dieser Automaten: @●

1

/●

1

/ ●

ε



/● ε





0

/●

0

/ ●

akzeptiert die Sprache {11} ∪ {00}. Jetzt machen wir den Feedback mit q0 final: ε

@●

1

/●

1

/ ●

ε



/ ●  S / ε



● ε

Dieser Automat akzeptiert die Sprache L.

0

/●

0

/ ●

¨ 1.4. REGULARE SPRACHEN

19

Notation. Die triviale Sprache {s} wird einfach mit s bezeichnet. Also ist z. B. 1 die Sprache, die nur das Wort 1 enth¨alt. Die Sprache aus Beispiel 2 hat also jetzt die Notation L = (11 + 00)∗ . Definition. Ein regul¨ arer Ausdruck u ¨ber einem Alphabet Σ = {s1 , . . . , sn } ist ein Ausdruck mit den Operationen +, ⋅, ∗ , die auf Buchstaben s1 , . . . , sn und auf die Symbole ε und ∅ angewendet werden. Genauer: die regul¨aren Ausdr¨ ucke r werden durch BNF wie folgt definiert: r ∶∶= s1 ∣ . . . ∣ sn ∣ ε ∣ ∅ ∣ (r + r) ∣ (rr) ∣ (r∗ ) Jeder regul¨ are Ausdruck repr¨ asentiert eine Sprache: si

repr¨ asentiert {si }, die Sprache, die nur das Wort si enth¨alt

ε

repr¨ asentiert {ε}, die Sprache, die nur das leere Wort enth¨alt



repr¨ asentiert ∅ (kein Wort)

L1 + L2

repr¨ asentiert die Vereinigung

L1 L2

repr¨ asentiert die Konkatenation

L∗

repr¨ asentiert die Iteration

(L)

repr¨ asentiert dasselbe wie L.

Beispiel 3. Die Sprache aller W¨orter, die entweder mit 11 beginnen oder enden, wird durch 11(0 + 1)∗ + (0 + 1)∗ 11 repr¨asentiert. Beispiel 4. F¨ ur jede endliche Sprache L = {s1 s2 . . . sn , t1 t2 . . . tm , . . . , u1 u2 . . . uk } gibt es einen regul¨ aren Ausdruck, der L repr¨asentiert: s1 s2 . . . sn + t1 t2 . . . tm + ⋅ ⋅ ⋅ + u1 u2 . . . uk . Folgerung 2. Jede Sprache, die durch einen regul¨aren Ausdruck repr¨asentiert wird, ist regul¨ ar. Beweis. Die trivialen F¨ alle si , ε und ∅ repr¨asentieren regul¨are Sprachen – siehe Beispiel 5 in Abschnitt 1.2. F¨ ur kompliziertere regul¨are Ausdr¨ ucke wissen wir schon aus den S¨ atzen 1 und 2, dass die Operationen +, ⋅, ∗ die Regularit¨at erhalten. Satz 3 (Kleenescher Satz). Eine Sprache ist genau dann regul¨ ar, wenn sie durch einen regul¨ aren Ausdruck repr¨ asentiert werden kann. Beweis. Aufgrund der vorigen Folgerung m¨ ussen wir nur beweisen, dass sich f¨ ur jeden Automaten A ein regul¨ arer Ausdruck finden l¨aßt, der L(A) repr¨asentiert. Seien q0 (initial), q1 , . . . , qn alle Zust¨ande von A. Wir bezeichnen mit Lij die Sprache aller W¨ orter, die qi nach qj u uhren, also ¨berf¨ w ∈ Lij ⇐⇒ (qi , w) ⊢∗ (qj , ε). Wenn wir einen regul¨ aren Ausdruck f¨ ur jede Sprache Lij finden, sind wir fertig, da falls qji , qj2 , . . . qjm alle finalen Zust¨ande sind, gilt L(A) = L0j1 ∪ L0j2 ∪ ⋅ ⋅ ⋅ ∪ L0jm . Um einen regul¨ aren Ausdruck f¨ ur Lij zu finden, f¨ uhren wir noch eine Verfeinerung“ ” dieser Sprache ein: wir bezeichnen mit Lkij

(k = 0, . . . , n + 1)

20

KAPITEL 1. ENDLICHE AUTOMATEN

¨ die Sprache aller W¨ orter w ∈ Lij , die f¨ ur den Ubergang von qi nach qj keinen der Zust¨ ande qk , . . . , qn als innere“ Zust¨ande brauchen. Genauer: setzen wir, f¨ ur jedes ” Wort w = s1 , . . . , sm in Lij , q (1) = δ(qi , s1 ) q (2) = δ(q (1) , s2 ) ⋮ q

(m)

= δ(q (m−1) , sm )

Dann gilt q (m) = qj , und die Zust¨ande q (1) , . . . , q (m−1) sind innere Zust¨ande des ¨ Uberganges von qi zu qj . Dann definieren wir Lkij wie folgt: w ∈ Lkij ⇐⇒ alle Zust¨ ande q (1) , . . . , q (m−1) liegen in der Menge {q0 , . . . , qk−1 } Es ist klar, dass Lij = Ln+1 ij . Es gen¨ ugt also zu zeigen, dass jede Sprache Lkij (f¨ ur beliebige i, j und k) durch einen regul¨ aren Ausdruck repr¨ asentiert werden kann. Das beweisen wir durch Induktion u ¨ber k: Ein Wort w liegt genau dann in L0ij , wenn alle Zust¨ande q (1) , . . . , q (m−1) k=0∶ in der leeren Menge liegen, d. h., sie existieren nicht. Das bedeutet, dass entweder w = ε und qi = qj , oder w = s und δ(qi , s) = qj . Ein regul¨arer Ausdruck f¨ ur L0ij existiert, da diese Sprache endlich ist. ur jedes Wort w in Lk+1 bezeichnen wir mit s die Zahl aller Indizes k → k + 1 ∶ F¨ ij r = 1, 2, . . . , m − 1 mit q (r) = qk . Falls s = 0 ist, liegt w in Lkij . Falls s > 0, k¨ onnen wir das Wort so in s W¨orter w = w1 w2 . . . ws zerlegen, dass die Berechnung des ersten Teils w1 den Zustand qi zum ersten Mal nach qk u uhrt (also liegt w1 in Lkik ), die Berechnung von w2 von der ersten ¨berf¨ zur zweiten Begegnung“ mit qk f¨ uhrt (also liegt w2 in Lkkk ), analog ” w3 , . . . , ws−1 und ws u uhrt den Zustand qk beim letzten Auftreten ¨berf¨ nach qj (also liegt ws in Lkkj ). Es folgt, dass entweder w ∈ Lkij oder w ∈ Lkik ⋅ (Lkkk )∗ ⋅ Lkkj . Umgekehrt ist es leicht zu sehen, dass alle W¨orter aus Lkik ⋅ (Lkkk )∗ ⋅ Lkkj in Lk+1 liegen. Es gilt also ij rekLijk

k k k ∗ k Lk+1 ij = Lij ∪ Lik ⋅ (Lkk ) ⋅ Lkj .

(*)

Das ergibt einen regul¨aren Ausdruck f¨ ur Lk+1 aufgrund von regul¨aren ij k Ausdr¨ ucken f¨ ur Lij (Induktionsvoraussetzung). Beispiel 5. Wir beschreiben einen regul¨aren Ausdruck f¨ ur die Sprache, die der folgende Automat akzeptiert: 

/ q0 o U b

a

/

q1

b

U

a

Wir suchen L(A) = L201 .

1.5. ABLEITUNGEN

21

Erst berechnen wir L0ij L000 = ε + b L001 = a L010 = b L011 = ε + a Dann L1ij = L0ij + L0i0 (L000 )∗ L0oj L100 = L000 + L000 (L000 )0 L100 = ε + b + (ε + b)(ε + b)∗ (ε + b) = ε + b) L101 = L001 + L000 (L000 )∗ L001 = a + (ε + b)(ε + b)∗ a = a + (ε + b)+ a = b∗ a L110 = L010 + L010 (L000 )∗ L000 = b + b(ε + b)∗ (ε + b) = b∗ L111 = L011 + L010 (L000 )∗ L001 = ε + a + b(ε + b)∗ a = ε + b∗ a Zuletzt L201 : L201 = L101 + L101 (L111 )∗ L111 = b∗ a + b∗ a(ε + b∗ a)∗ (ε + b∗ a) = b∗ a(ε + (ε + b∗ a)+ ) = b∗ a(ε + b∗ a)∗ = (a + b)∗ a

1.5

Ableitungen

sectABL

Hier charakterisieren wir regul¨ are Sprachen als genau die, die nur endliche Ableitungen haben. Dies erm¨ oglicht uns ein einfaches Beispiel einer nicht regul¨aren Sprache zu zeigen. Die Ableitungen k¨ onnen f¨ ur eine Konstruktion von DEAs benutzt werden. Im n¨ achsten Abschnitt zeigen wir, dass diese Konstruktion optimal ist. Definition. Gegeben sei eine Sprache L ⊆ Σ∗ und ein Wort w ∈ Σ∗ . Die Ableitung w−1 L ist die Sprache aller W¨ orter u mit wu ∈ L. Bemerkung 1. L selbst ist eine Ableitung: man setze w = ε. Beispiel 1. (1) Die Sprache L ⊆ {0, 1}∗ aller W¨orter von gerader L¨ange hat die Ableitung 0−1 L von allen W¨ ortern ungerader L¨ange. Es ist leicht zu sehen, dass alle Ableitungen von L gleich L oder 0−1 L sind. (2) Die Sprache L = {0n 1n ; n ∈ N} hat die Ableitungen 0−1 = {0n−1 1n ; n ≥ 1} 00−1 = {0n−2 1n ; n ≥ 2} ⋮ die alle voneinander verschieden sind. Lemma 1. (wv)−1 L = v −1 (w−1 L). Beweis. Die rechte Seite besteht aus genau den W¨ortern u mit vu ∈ w−1 L, d.h. mit wvu ∈ L.

22

KAPITEL 1. ENDLICHE AUTOMATEN

Konstruktion. Wenn eine Sprache L nur endlich viele Ableitungen besitzt, definieren wir den Brzozowsky DEA f¨ ur L wie folgt: (a) Zust¨ ande sind alle Ableitungen von L. (b) Der Initialzustand ist L. (c) Eine Ableitung w−1 L ist akzeptierend g.d.w. w ∈ L. a / −1 ¨ (d) Die Uberg¨ ange sind f¨ ur jedes a ∈ Σ durch K a K definiert. (D.h., wenn K = w−1 L, dann ist der Folgezustand a−1 (w−1 K) = (aw)−1 K.)

Beispiel 1 (Fortsetzung) zozowsky DEA

Die Sprache aller W¨orter gerader L¨ange hat den Br

/ L o

0,1

/

0−1 L

0,1

Beobachtung. Der Brzozowsky DEA akzeptiert L. In der tat, jedes Wort w ∈ Σ∗ mit w = aa . . . an hat die folgende Berechnung (siehe Lemma oben): 

/ L

a1

/ a−1 L 1

a2

/ a1 a−1 L 2

a3

/ ...

an

/ w−1 L

Das Wort wird akzeptiert d.d.w. der zustand w−1 akzeptiert ist, d.h., w ∈ L Satz 1. Eine Sprache ist regul¨ ar, g.d.w. sie nur endlich viele Ableitungen besitzt. Beweis. Wenn L endlich viele Ableitungen besitzt, ist sie durch einen Brzozowsky DEA akzeptiert und deswegen regul¨ar. Umgekehrt, wenn L ⊆ Σ∗ regul¨ar ist, gibt es einen DEA, A, der mit n Zust¨anden L akzeptiert. Wir beweisen, dass L h¨ochstens n Ableitungen besitzt. F¨ ur jedes Wort w ∈ Σ∗ bezeichnen wir durch qw den Zustand von A, den wir vom Initialzustand durch die Eingabe w erreichen. Es gen¨ ugt zu beweisen, dass zwei W¨orter w und v die selbe Ableitung ergeben, wenn sie qw = qv erf¨ ullen: qw = qv ⇒ w−1 L = v −1 L In der Tat, ein Wort u liegt in w−1 L genau dann, wenn die Berechnung q0

/ ...

/ qw

/ ...

/ qwu

´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ w

u

in einem akzeptierenden Zustand qwu endet. Das bedeutet, dass der DEA, den wir aus A bekommen, wenn der Initialzustand zu qw ge¨andert wird, w akzeptiert. Das selbe gilt f¨ ur u ∈ v −1 L. Deswegen folgt w−1 L = v −1 L aus qw = qv . Beispiel 2 (Fortsetzung) Die Sprache {0n 1n ; n ∈ N} ist nicht regul¨ar, denn sie hat unendlich viele Ableitungen.

¨ ¨ 1.6. AQUIVALENTE ZUSTANDE

1.6

23

¨ Aquivalente Zust¨ ande

Wir zeigen, wie zu jedem erreichbaren DEA ein minimaler DEA f¨ ur die selbe Sprache konstruiert werden kann. Dieser minimale Automat ist durch die Anzahl seiner Zust¨ ande v¨ ollig bestimmt. Wir haben durch L(A) die Sprache, die ein DEA akzeptiert, indem er im Initialzustand q0 anf¨ angt, bezeichnet: ein Wort w ∈ Σ∗ liegt in L(A) g.d.w. δ ∗ (q0 , w) ein akzeptierender Zustand ist (siehe Notation in 1.2). Nehmen wir an, dass wir statt q0 einen anderen Zustand q ∈ Q gew¨ahlt haben. Dann bezeichnen wir durch A(q) den so ge¨ anderten Automat. Seine Sprache L(A(q)) besteht aus allen W¨ortern w mit dem Zustand δ ∗ (q, w) akzeptierend. Definition. Zwei Zust¨ ande q und r eines DEAs heißen ¨ aquivalent wenn sie die selbe Sprache akzeptieren, d.h., LA(q) = LA(r) Notation. q ≈A r

(oder nur q ≈ r wenn A klar ist).

Beispiel 1. Im DEA ?

q1

a



/ q0

b b

O

a

>

b

 q3

q2 k

a,b

a

sind q1 und q3 ¨ aquivalent. In der Tat, beide Zust¨ande akzeptieren a(a + b)∗ Die Zust¨ ande q0 und q1 sind nicht ¨ aquivalent: q1 akzeptiert a, q0 nicht. Satz 1. Wenn die Zust¨ ande q und r ¨ aquivalent sind und nach Eingabe a ∈ Σ bekommen wir die zust¨ ande q ′ und r′ , sind auch diese ¨ aquivalent. Kurz: q ≈ r ⇒ δ(q, a) ≈ δ(r, a) Beweis. Der Zustand q ′ akzeptiert ein Wort w: w

³¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ·¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹µ q

a

/ q′

/ ...

/ q ′′

g.d.w. die Berechnung in einem akzeptierenden Zustand q ′′ = δ ∗ (q ′ , w) endet. Das Wort aw wird im Zustand q mit demselben Ergebnis berechnet: δ ∗ (q, aw) = δ ∗ (q ′ , w) = q ′′ . Deswegen gilt: L(A(q)) = aL(A(q ′ )). Analog L(A(r)) = aL(A(r′ )) Da L(A(q ′ )) = L(A(r′ )), folgt daraus L(A(q)) = L(A(r)).

24

KAPITEL 1. ENDLICHE AUTOMATEN

¨ Algorithmus 2. f¨ ur die Aquivalenz ≈. Wir formen eine tabelle in der jedes zugeordnete Paar von Zust¨ anden qi ≠ qj einmal vorkommt q0 q1 q2 ⋮ qn q0

q1

...

qn−1

Dann kreuzen wir nicht-¨ aquivalente Paare an. Dies geschieht rekursiv bis kein neues nicht-¨ aquivalentes Paar vorkommt, dann ist ≈ durch die ungekreuzten Paare charakterisiert. Erster Schritt Kreuze jedes Paar von Zust¨anden an, wobei ein akzeptierend und der andere nicht-akzeptierend ist. Rekursiver Schritt Nimm ein ungekreuztes paar (qi , qj ) und versuche eine Eingabe a ∈ Σ zu finden, f¨ ur die das Paar δ(qi , a) und δ(qj , a) angekreuzt wird. Dann kreuze (qi , qj ) an. Beispiel 2. Im Oberen DEA ergibt Schritt 1 q1 q2 q3

× ×

×

q0

q1

× q2

¨ Im Schritt 2 ergibt Eingabe a neue nicht-Aquivalenzen“: q0 ≈/ q1 und q0 ≈/ q3 : ” q1 q2 q3

× × × q0

× × q2

q1

Hier endet der Algorithmus und ergibt q1 ≈ q3 und sonst nur qi ≈ qj . Beispiel 3. Der DEA 1

0

{ A

/ B

0

1 0

1

E c

1

 / F

0 1

1

/ C o ? _

ergibt

D

1

  1 / G o H U 0 A 0

0

0

1.7. KONSTRUKTION EINES QUOTIENT-DEA B C D E F G H

× × × × × × A

25

× × × × ×

× × × × × × × × × × × × × × B C D E F G

Nur A ≈ E, H ≈ B und F ≈ D bleiben u ¨brig. Satz 3. Der Algorithmus ist korrekt: nach endlich vielen Schritten endet er und dann gilt: ein Paar von zust¨ anden ist ¨ aquivalent g.d.w. er nicht angekreuzt ist. Beweis. Ein Automat von n Zust¨anden hat nur (n2 ) verschiedene Paare und nach so vielen Schritten endet der Algorithmus. Wir beweisen, dass (a) jedes angekreuzte Paar (qi , qj ) erf¨ ullt qi ≈/ qj und (b) jedes nicht angekreuzte erf¨ ullt qi ≈ qj . (a) Induktion in der Zahl k des Schrittes, wo das Paar angekreuzt wurde. Induktionsanfang: k = 0. Wenn qi akzeptierend ist und qj nicht, ist es klar, dass qi ≈/ qj gilt. Induktionsschritt: in Schritt k wird (qi , qj ) nur dann angekreuzt, wenn es ein in Schritt k − 1 angekreuztes Paar (qi′ , qj′ ) gibt mit qi′ = δ(qi , a) und qj′ = δ(qj , a) f¨ ur eine Eingabe a ∈ Σ. Nach Induktionsvorraussetzung gilt qi′ ≈/ qj′ . Aus Satz 1 folgt qi ≈/ qj . (b) Diese Aussage k¨ onnen wir so formulieren: wenn qi ≈/ qj , dann wird (qi , qj ) angekreuzt. nehmen wir ein Wort w, das Zeuge von qi ≈/ qj ist. D.h., δ ∗ (qi , w) ist akzeptierend und δ ∗ (qj , w) nicht (oder umgekehrt). Wir beweisen, dass das Paar angekreuzt wird, per Induktion in der L¨ange von k und w. Induktionsanfang: k = 0. D.h., w = ε und wir sehen, dass qi akzeptierend ist und εj nicht. Das Paar wird im ersten chritt angekreuzt. Induktionsschritt: w = av mit ∣v∣ = k − 1. Setzen wir qi′ = δ ∗ (qi , a) und qj′ = δ ∗ (qj , a). Dann gilt: δ ∗ (qi′ , v) = δ ∗ (qi , w) ist akzeptierend und δ ∗ (qj , v) = δ ∗ (qj , w) nicht: v ³¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ·¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹µ qi

a

/ q′ i

/ ...

qj

a

/ qj′

/ ...

/ /

´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ v

Da ∣v∣ = k − 1, besagt die Induktionsvorraussetzung, dass (qi′ , qj′ ) angekreuzt wurde. Wenn dies im Schritt l passiert, wird (qi , qj ) im Schnitt l + 1 angekreuzt.

1.7

Konstruktion eines Quotient-DEA

¨ Gegeben sei ein DEA. Wir berechnen die Aquivalenzrelation ≈ und bekommen einen ¯ neuen DEA A.

26

KAPITEL 1. ENDLICHE AUTOMATEN

¨ Zust¨ ande: Aquivalenzklassen [q] von Zust¨anden von A, d.h. [q] ⊆ Q ist die menge aller zu q a quivalenten Zust¨ a nde. ¨ a

¨ Uberg¨ ange: [q]

/ [r] g.d.w.

q

a

/ s

in A mit r ≈ s.

Initialzustand: [q0 ] Akzeptierende Zust¨ ande: [q] mit q ∈ F . Beispiel 3 (Fortsetzung): 1

o =G

1

)

D, F

1



/ A, E

0

v

0 0

g

/ B, H

1

0

 / C

U

1

Satz 1. Der Quotient-DEA A¯ akzeptiert die selbe Sprache wie A. ¨ Beweis. Erstens, die Definition der Uberg¨ ange ist korrekt auf Grund von Satz 1: wenn die Klasse [q] durch einen anderen Zustand q ′ dargestellt wird, d.h., q ≈ q ′ , a / ′ ′ ¨ dann haben wir einen Ubergang q′ s in A von dem wir wissen, dass s ≈ s . Mit anderen Worten [r] = [s] = [s′ ]. Und wenn q ein akzeptierender zustand in A′ ist, sind alle zust¨ ande in [q] akzeptierend. Wir beweisen f¨ ur jedes Wort w = a1 . . . an , dass w von A akzeptiert wird, g.d.w. A¯ es akzeptiert. Sei a1 / q1 a2 / . . . an / qn q0 ¯ dass w die folgende die Berechnung von w in A. Dann folgt aus der Definition von A, Berechnung hat: a1 / [q1 ] a2 / . . . an / [qn ] [q0 ] Dann akzeptiert A das Wort g.d.w. qn akzeptierend in A ist, dies ist dazu ¨aquivalent, dass [qn ] ein akzeptierender Zustand von A¯ ist, d.h., A¯ das Wort akzeptiert.

1.8

Minimierung von Automaten

sectMin

Definition. Ein DEA heißt minimal wenn er (a) erreichbar ist und (b) paarweise nicht-¨ aquivalente Zust¨ande hat. Bemerkung 1. Bedingung (a) sagt, dass der DEA nicht durch wegwerfen von Zust¨ anden minimiert werden kann. Bedingung (b) sagt, dass keine Minimierung durch Identifikation von Zust¨ anden m¨oglich ist. Zusammen bedeuten sie, wie wir unten beweisen, dass die Anzahl der zust¨ande minimal ist.

1.8. MINIMIERUNG VON AUTOMATEN

27

Beispiel 1. Der Brzozowsky DEA ist minimal. In der Tat, jeder zustand w−1 L wobei w = a1 . . . an ist vom Initialzustand q0 erreichbar: siehe Beobachtung in 1.5. Und f¨ ur beliebige Zust¨ ande w−1 L ≠ v −1 L gibt es ein Wort u mit wu ∈ L und vu ∈/ L (oder umgekehrt) und dann f¨ uhrt die Eingabe u den Zustand zum akzeptierenden Zustand (wu)−1 L, w¨ ahrend sie den Zustand v −1 L zum nicht-akzeptierenden Zustand (vu)−1 L f¨ uhrt. Deswegen sind die Zust¨ande w−1 L und v −1 L nicht a¨quivalent. Bemerkung 2. Die folgenden DEAs 

/ q

0 0 1

  s

/ r ? h



1

/ q0

/ q1 > k

0 0 1

0,1



~ q2

1

0,1

sind, bis auf Umbenennung der Zust¨ande, gleich. Im allgemeinen, gegeben DEAs A = (Q, Σ, δ, q0 , F ) und A′ = (Q′ , Σ, δ ′ , q0′ , F ′ ) mit dem selben Eingangsalphabet Σ, sagen wir, dass sie bis auf Umbenennung der Zust¨ ande gleich sind, wenn es eine Bijektion (d.h. invertierbare Funktion) b ∶ Q → Q′ zwischen den Zust¨ anden gibt, sodass ¨ q (a) f¨ ur jeden Ubergang

/ r

a

¨ in A gibt es den Ubergang q′

a

/ r′ in A′ ,

wobei q ′ = b(q) und r′ = b(r), (b) b(q0 ) = q0′ und (c) q ist ein akzeptierender Zustand in A g.d.w. b(g) ein akzeptierender Zustand in A′ ist. Satz 1. Jeder minimale DEA ist bis auf Umbenennung der Zust¨ ande gleich dem Brzozowsky DEA. Beweis. Gegeben sei ein minimaler DEA A = (Q, Σ, δ, q0 , F ) mit Sprache L = L(A). F¨ ur jedes Wort w ∈ Σ∗ bezeichnen wir durch qw den Zustand, den A bei Eingabe w erreicht. Wenn wir den Initialzustand von A zu qw ¨andern, bekommen wir einen DEA A(qw), der w−1 L akzeptiert: ein Wort u wird vom neuen DEA akzeptiert q0

/...

/ qw

/...

/ q

´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¶ ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¶ w

u

g.d.w. der Zustand q final ist, d.h., wenn wu ∈ L. Deswegen wenn qw = qv f¨ ur zwei Worte gilt, sehen wir, dass w−1 L = v −1 L. Umgekehrt, wenn w−1 L = v −1 L, sind die Zust¨ ande qw und qv gleich, denn A ist minimal und qw ≈ qv . In der Tat, A(qw ) akzeptiert w−1 L, die selbe Sprache wie A(q, v). Deswegen haben wir eine Funktion b, die jedem Zustand w−1 L des Brzozowsky DEA den Zustand b(w−1 L)0qw ¨ von A zuordnet. Ein Ubergang w−1 L

a

/ (wa)−1 L

28

KAPITEL 1. ENDLICHE AUTOMATEN

¨ in Brzozowsky’s DEA entspricht einem Ubergang qw

a

/ q wobei w = wwa

in A. Der Initialzustand L wird zu b(L) = qε = q0 u uhrt: q0 ist durch das leere ¨berf¨ Wort erreichbar. Und ein Zustand w−1 L ist akzeptierend g.d.w. w ∈ L, und dies bedeutet genau, dass qw akzeptierend in A ist. Folgerung 3. (Minimal = Zustand-minimal). Sei A ein minimaler DEA, der L akzeptiert und n Zust¨ ande hat. Jeder L akzeptierender DEA hat wenigstens n Zust¨ ande. Und wenn er genau n Zust¨ande hat, ist er gleich A bis auf Umbenennung der Zust¨ ande. Beweis. In der Tat, nach dem vorigen Satz ist n die Anzahl aller Ableitungen. Sei A0 ein DEA, der L akzeptiert. Der Zustand qw der ein A0 mit Eingabe w akzeptiert erf¨ ullt: A0 (qw) akzeptiert w−1 L. Deswegen aus w−1 L ≠ v −1 L folgt, dass A0 wenigstens n Zust¨ande hat. Wenn A0 genau n Zust¨ ande hat, folgt daraus, dass er Zustand-minimal ist. Deswegen ist er erreichbar (denn der erreichbare Teil kann nicht kleiner sein) und hat nichtaquivalente Zust¨ ande (denn der Quotient kann nicht kleiner sein). Dann ist A0 ¨ minimal. Deswegen sind A, A0 und Brzozowsky DEA alle gleich bis Umbenennung der Zust¨ ande. Beispiel 2. Die Sprache L(n) = (a + b)∗ b(a + b)n f¨ ur die wir in 1.3, Beispiel ?? einen NEA mit n + 1 Zust¨ande gesehen haben, braucht wenigstens 2n Zust¨ ande wenn DEAs benutzt werden. Dies folgt daraus, dass die Ableitungen w−1 L wobei w alle 2n W¨orter der L¨ange n sind, paarweise verschieden sind. In der Tat, gegeben zwei solche W¨orter w ≠ v, unterscheiden sie sich auf Stelle i = 1, . . . , n. Sagen wir wi = a und vi = b. Das Wort wai−1 hat b auf Stelle n von links, d.h., es liegt in L(n) , so dass ai−1 ∈ v −1 L. Aber wai−1 liegt in L(n) nicht, ai−1 ∈/ w−1 L. Deswegen w−1 L ≠ v −1 L. Beispiel 3. Nichtdeterministische Automaten haben nicht die Eigenschaft, dass der minimale Automat durch seine Anzahl von Zust¨anden eindeutig bestimmt wird. Z.B. die NEAS 0,1

 /

0,1



0

/

und

 /



0

o

/

0,1

akzeptieren beide die Sprache aller W¨orter mit dem letzten Symbol 0. Und sie sind ¨ sicher minimal. Aber ihre Ubergangsstrukturen sind ganz unterschiedlich.

1.9

¨ Nerode-Aquivalenz

sectNerode

Den Minimierungsprozeß aus Abschnitt 1.8 k¨onnen wir auch auf unendliche Auto” maten“ mit Zust¨ anden qw f¨ ur w ∈ Σ∗ (siehe Beispiel ?? in 1.8) anwenden: hier sind Zust¨ ande qw1 und qw2 ¨ aquivalent, falls f¨ ur jedes Wort w gilt: qw1 w ist genau dann final, wenn qw2 w final ist; d. h., w1 w liegt genau dann in L, wenn w2 w in L liegt. Das ist die Intuition, die zu folgender Definition f¨ uhrt:

¨ 1.9. NERODE-AQUIVALENZ

29

¨ Definition. Sei L ⊆ Σ∗ eine formale Sprache. Die Nerode-Aquivalenzrelation ¨ von L ist die Aquivalenzrelation ≈ auf der Menge Σ∗ , in der zwei W¨orter w1 und w2 genau dann a ur jedes Wort w ∈ Σ∗ gilt ¨quivalent sind, wenn f¨ w1 w ∈ L ⇐⇒ w2 w ∈ L. Bemerkung 1. Falls w1 ≈ w2 ist, gilt entweder, dass w1 , w2 beide in L liegen, oder beide nicht in L liegen. (In der Definition setze man w = ε.) Beispiel 1. F¨ ur die Sprache L = (11 + 00)∗ ⊆ {0, 1}∗ gilt: 1. Die W¨ orter aus L sind alle ¨aquivalent zu ε, denn aus w1 ∈ L folgt w1 w ∈ L genau dann, wenn w ∈ L. 2. Alle W¨ orter der Form w1 1, mit w1 ∈ L, sind ¨aquivalent zu 1, denn es gilt w1 1w ∈ L genau dann, wenn 1w ∈ L. Analog sind alle W¨ orter der Form w1 0, mit w1 ∈ L, sind ¨aquivalent zu 0. 3. Die W¨ orter, die mit 01 oder 10 beginnen sind alle ¨aquivalent, denn f¨ ur zwei solche W¨ orter w1 , w2 gilt w1 w ∉ L und w2 w ∉ L. Allgemeiner: alle W¨orter ausser (1), (2) sind ¨ aquivalent. Die Menge {0, 1}∗ /≈ ¨ aller Aquivalenzklassen hat also vier Elemente: [ε] = L [1] = L1 [0] = L0 [10] = alle anderen W¨orter. ¨ Falls die Nerode-Aquivalenzrelation endlich viele Klassen hat, ist L regul¨ar. Wir zeigen, wie man einen (minimalen) Automaten f¨ ur L konstruiert: ∗ ¨ Minimale Realisierung einer Sprache L ⊆ Σ , deren Nerode-Aquivalenzrelation n Klassen hat. Die minimale Realisierung der Sprache L ist der DEA AL = (Σ∗/≈, Σ, δ, [ε], F ), ¨ ¨ dessen Zust¨ ande die Aquivalenzklassen [w] von W¨ortern w aus Σ∗ sind, die Ubergangsregeln sind uebergangsregeln

(*)

([w], s) → [ws] f¨ ur w ∈ Σ∗ , s ∈ Σ

und ein Zustand [w] ist genau dann final, wenn w ∈ L. Beispiel 2. F¨ ur L = (11+00)∗ hat der oben konstruierte Automat AL die Zust¨ande ¨ [ε], [1], [0], [10], wobei [ε] sowohl initial als auch final ist. Die Ubergangsregeln sind durch ≈ bestimmt, z. B. ([0], 0) → [ε] und ([0], 1) → [10],

30

KAPITEL 1. ENDLICHE AUTOMATEN

denn 00 ≈ ε und 01 ≈ 10. Hier ist die minimale Realisierung von L: 

? / [ε] _



0

[0]



/ 1

0

1



1

  [10] U

[1]

0

0,1

Bis auf eine Umbenennung der Zust¨ande ist das derselbe Automat wie der in Abschnitt 1.8, Beispiel ??. Lemma 1. Die oben definierte minimale Realisierung AL akzeptiert in der Tat die gegebene Sprache L und ist minimal. Beweis.

1. Wir beweisen, dass AL die Sprache L akzeptiert. Es gilt: ([v], w) ⊢∗ ([vw], ε)

f¨ ur alle W¨orter v, w in Σ∗ .

Das beweisen wir durch Induktion u ¨ber die L¨ange n des Wortes w = s1 . . . sn : ([v], ε) ⊢∗ ([vε], ε) denn vε = v. n=0∶ n → n + 1 ∶ Aus ([v], s1 . . . sn ) ⊢∗ ([vs1 . . . sn ], ε) (Induktionsvoraussetzung) folgt nach der Definition von ⊢∗ und δ (siehe (*) oben) ([v], s1 . . . sn sn+1 ) ⊢∗ ([vs1 . . . sn ], sn+1 ) ⊢ ([vs1 . . . sn sn+1 ], ε). Angewendet auf den Initialzustand [ε] ergibt dies w ∈ L(A) ⇐⇒ [εw] ∈ F ⇐⇒ w ∈ L, also L(A) = L. 2. AL ist bestimmt erreichbar, da ([ε], w) ⊢∗ ([w], ε). Falls zwei Zust¨ ande [w1 ], [w2 ] ¨aquivalent sind, d. h., falls f¨ ur jedes Wort w gilt [w1 w] ∈ F ⇐⇒ [w2 w] ∈ F, sind w1 und w2 offensichtlich Nerode-¨aquivalent, also gilt [w1 ] = [w2 ]. Deswegen ist AL minimal. ¨ Satz 1. Eine Sprache ist genau dann regul¨ ar, wenn die Nerode-Aquivalenzrelation ¨ endlich viele Aquivalenzklassen hat. Beweis. Die obige minimale Realisation beweist, dass die Bedingung hinreichend ist. Um zu beweisen, dass sie auch notwendig ist, sei L ⊆ Σ∗ regul¨ar, d.h. es gibt einen DEA A = (Q, Σ, δ, q0 , F ) mit L = L(A). Falls A n Zust¨ande hat, zeigen wir, ¨ dass die Nerode-Aquivalenzrelation h¨ochstens n Klassen hat. Dazu gen¨ ugt es zu beweisen, dass zwei W¨ orter w1 , w2 u ¨ber Σ∗ Nerode-¨aquivalent sind, falls die Zust¨ande ¨ qi mit (q0 , wi ) ⊢∗ qi f¨ ur i = 1, 2 gleich sind: es folgt dann, dass verschiedene Aquivalenzklassen zu verschiedenen Zust¨anden von A f¨ uhren. Sei q1 = q2 . Nach Beobachtung im Abschnitt 1.2 gilt f¨ ur jedes Wort w u ¨ber Σ : (q0 , wi w) ⊢∗ (qi , w) Also gilt w1 w ∈ L genau dann, wenn w2 w ∈ L.

¨ 1.10. BEWEISE DER REGULARITAT

31

Beispiel 3. Die Sprache L(n) aller bin¨aren W¨orter mit einer 1 auf der Stelle n von rechts (siehe Beispiel ?? in 1.3) kann durch keinen DEA mit weniger als 2n Zust¨ anden akzeptiert werden. Wir beweisen n¨amlich, dass alle 2n W¨orter der L¨ange n paarweise nicht Nerode-¨ aquivalent sind. In der Tat, falls w ≠ v zwei W¨ orter der L¨ange n sind, gibt es eine Stelle i (= 1, . . . , n) in der sich w und v unterscheiden, sagen wir, w hat eine 1 auf Stelle i und v eine 0. Das Wort w0i−1 hat eine 1 auf Stelle (i − 1) + (n − i + 1) = n von rechts und geh¨ort deshalb zu L(n) , w¨ ahrend v0i−1 eine 0 an der Stelle n von rechts hat und darum nicht zu L(n) geh¨ort. Das beweist, dass v ≈/ w. bspNEAmin4

Beispiel 4. Die Sprache L = 1∗ 01∗ + 1∗ 0+ 1+ aus Beispiel 1.3 in Abschnitt1.3 hat ¨ wenigstens 4 Aquivalenzklassen: die W¨orter ε, 0, 1, und 10 sind paarweise nicht¨aquivalent. Deswegen kann L von keinem DEA mit 3 Zust¨anden akzeptiert werden.

1.10

Beweise der Regularit¨ at

sectRegBew

Wenn wir beweisen wollen, dass eine Sprache regul¨ar ist, k¨onnen wir verschiedene Methoden kombinieren: 1. regul¨ are Ausdr¨ ucke beschreiben regul¨are Sprachen, 2. endliche Automaten (auch nichtdeterministische) akzeptieren regul¨are Sprachen, 3. die Anzahl von Ableitungen ist endlich Zusammensetzung

4. Zusammensetzung aus einfacheren regul¨aren Sprachen. Zu 4 wissen wir, dass die Operationen +, ⋅, ∗ aus regul¨aren Sprachen wieder regul¨are Sprachen erzeugen. Wir zeigen jetzt zwei weitere Eigenschaften dieses Typs:

satzRegAbgKompl

Satz 1. Falls L ⊆ Σ∗ eine regul¨ are Sprache ist, ist auch ihr Komplement L = Σ∗ − L regul¨ ar. Beweis. Sei M ein DEA, der L akzeptiert. Sei M derselbe Automat, bei dem nur die Mengen F (aller finalen Zust¨ande) und Q − F (aller nicht finalen Zust¨ande) vertauscht sind: M = (Q, Σ, δ, q0 , F ) Ô⇒ M = (Q, Σ, δ, q0 , Q − F ). Dann akzeptiert M ein Wort genau dann, wenn M das Wort nicht akzeptiert, also L(M ) = Σ∗ − L(M ). Korollar 1. Der Durchschnitt zweier regul¨ arer Sprachen ist regul¨ ar. Beweis. Dies folgt aus den bekannten de Morganschen Regeln: Falls L1 , L2 ⊆ Σ∗ regul¨ ar sind, so sind auch Σ∗ − L1 und Σ∗ − L2 regul¨ar, deswegen ist L = (Σ∗ − L1 ) + (Σ∗ − L2 ) = Σ∗ − (L1 ∩ L2 )

32

KAPITEL 1. ENDLICHE AUTOMATEN

regul¨ ar und aus Satz 1 folgt dann, dass auch L1 ∩ L2 regul¨ ar ist. Korollar 2. F¨ ur jede regul¨ are Sprache L ⊆ Σ∗ ist auch die Sprache L+ regul¨ ar. Beweis. Falls ε ∈ L, ist L+ = L∗ regul¨ar, nach Satz 2 in Abschnitt 1.4 L+ = L∗ ∩ (Σ∗ − {ε}) und da L∗ regul¨ ar ist (siehe 1.4) und Σ∗ −{ε}, als Komplement der regul¨aren Sprache {ε}, regul¨ ar ist, ist auch L+ regul¨ar. Beispiel 1. Sei L die Sprache aller W¨orter u ¨ber dem Alphabet Σ = {0, 1, . . . , 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¨ ar ist, beobachten wir, dass ausser 0 kein Wort in L mit dem Buchstaben 0 beginnt, also ist L eine Untermenge der regul¨aren Sprache L1 = 0 + (1 + 2 + ⋅ ⋅ ⋅ + 9)(0 + 1 + 2 ⋅ ⋅ ⋅ + 9)∗ aller W¨ orter, 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 = L1 ∩ L2 ∩ L3 , wobei L2 die Sprache aller W¨orter, die mit einer geraden Zahl enden, ist: L2 = (0 + 1 + 2 ⋅ ⋅ ⋅ + 9)∗ (0 + 2 + 4 + 6 + 8), und L3 die Sprache aller W¨ orter ist, bei denen die Summe aller Ziffern durch 3 teilbar ist. Es bleibt zu zeigen, dass L3 regul¨ar ist. Wir untersuchen die Nerode¨ Aquivalenz von L3 : falls W¨ orter w1 , w2 u ¨ber {0, 1, . . . , 9} zwei Zahlen repr¨asentieren, die modulo 3 kongruent sind, sind sie Nerode-¨aquivalent, denn w1 u ist genau dann durch 3 teilbar, wenn w2 u durch 3 teilbar ist. Jedes Wort ist also Nerode-¨aquivalent ¨ zu ε, 1, 2 oder 3. Die Nerode-Aquivalenz hat 4 Klassen, deswegen ist L3 regul¨ar. Beispiel217

Beispiel 2. Ist die Sprache L ⊆ {a, b}∗ aller W¨orter, deren L¨ange ungerade ist und die eine gerade Zahl an a’s beinhalten, regul¨ar? Wir sprechen also von der Sprache L = L1 ∩ L2 , wobei L1 die Sprache aller W¨ orter ungerader L¨ange und L2 die Sprache der W¨orter mit gerader Anzahl von a’s ist. Es gilt: die Menge L1 aller W¨orter gerader L¨ange ist regul¨ ar: L1 = (aa + ab + ba + bb)∗ . Also ist L1 auch regul¨ ar. Die Sprache L2 ist regul¨ar, denn sie wird von dem folgenden Automaten akzeptiert: b

 /

b



a

o

/



a

Bemerkung 1. In Beispiel 6 aus 1.2 haben wir eine Sprache gezeigt, die nicht regul¨ ar ist. Jetzt wollen wir ein Kriterium formulieren, das uns oft erlaubt, die Nichtregularit¨ at zu beweisen.

¨ 1.10. BEWEISE DER REGULARITAT

33

Satz 2 (Pumping-Lemma f¨ ur regul¨are Sprachen). Falls L ⊆ Σ∗ eine regul¨ are Sprache ist, dann besitzt sie eine Konstante n ≥ 1, so dass f¨ ur jedes Wort w aus L der L¨ ange ∣w∣ ≥ n eine Zerlegung w = xyz

mit x, y, z ∈ Σ∗

existiert, f¨ ur die gilt 1. y ≠ ε und ∣xy∣ ≤ n und 2. das aufgepumpte“ Wort xy k z liegt in L f¨ ur jedes k = 0, 1, 2, . . . ” Beweis. Sei M ein DEA, der L akzeptiert, und sei n die Anzahl seiner Zust¨ande. F¨ ur jedes Wort w ∈ L, das mindestens n Buchstaben hat, m¨ ussen sich in der Berechnung von w Zust¨ ande wiederholen. Das heißt, falls w = s1 s2 . . . sp (p ≥ n) bezeichnen wir mit q0 , . . . , qp die Zust¨ande von M in der Berechnung von w: q0 ist der initiale Zustand und q1 = δ(q0 , s1 ), . . . , qp = δ(qp−1 , sp ). Dann k¨ onnen die Zust¨ ande q0 , . . . , qp nicht alle voneinander verschieden sein, da wir nur n Zust¨ ande zur Verf¨ ugung haben und p + 1 > n. Wir betrachten die erste Wiederholung eines Zustandes in der Folge q0 , . . . , qp , d. h. es seien k und i die kleinstm¨ oglichen Indices mit qi = qi+k , q0

/ q1

f¨ ur i = 1, . . . , n und k ≥ 1.

/ ...

/5 qi

/ qi+k+1

/ ...

/ qp

 qi+1

qi+k−1 \ ... t Wir setzen x = s1 s2 . . . si y = si+1 si+2 . . . si+k

z = si+k+1 si+k+2 . . . sn Da k ≥ 1, gilt y ≠ ε. Da k und i die erste Wiederholung darstellen, also so klein wie m¨ oglich gew¨ ahlt wurden, gilt ferner k +i ≤ n und somit ∣xy∣ ≤ n. Die Berechnung von w = xyz endet im Zustand qp , der final sein muß, weil w akzeptiert wird. Aber auch die Berechnung von xyyz endet im Zustand qp : nachdem xy berechnet worden ist, befindet sich der Automat M im Zustand qi+k = qi , und von diesem Zustand f¨ uhrt ihn das Wort yz nach qp . Deswegen wird auch xyyz akzeptiert. Analoges gilt f¨ ur xy r z, falls r > 0. Und xz wird auch akzeptiert: hierbei wird der Kreis qi , . . . , qi+k−1 ausgelassen.

34

KAPITEL 1. ENDLICHE AUTOMATEN

Beispiel 3. Ist die Sprache L = {01, 0011, 000111, . . . } = {0n 1n ; n = 1, 2, 3, . . . } regul¨ ar? Nein, denn sonst h¨ atten wir ein Wort xyz, y ≠ ε, so dass xy m z ∈ L f¨ ur alle m ≥ 0. Aber aus xyz ∈ L, y ≠ ε, folgt xyyz ∉ L. Falls n¨amlich y nur aus 0’en besteht, hat xyyz mehr 0’en als 1’en, analog falls y nur aus 1’en besteht. Aber falls y 0’en sowie 1’en beinhaltet, hat xyyz eine 1 vor einer 0, also wieder xyyz ∉ L. Bemerkung 2. Das Pumping-Lemma wird oft f¨ ur Beweise, dass eine Sprache L nicht regul¨ ar ist, benutzt. Dazu m¨ ussen wir die Aussagen des Pumping-Lemma negieren (wobei die Negation von es existiert X“ ist f¨ ur alle . . . nicht X“ und ” ” umgekehrt). D.h., f¨ ur jede Zahl n m¨ ussen wir ein Wort w in L finden mit L¨ange ∣w∣ ≥ n so dass das folgende gilt: f¨ ur jede Zerlegung w = xyz mit y ≠ ε und ∣xy∣ ≤ n existiert ein k ≥ 0 mit xy k z ∈/ L. Beispiel 4. Ist die Sprache L = {0n 1k 0m ; n, k, m = 0, 1, 2, . . . } regul¨ ar? Bestimmt! Sie ist doch repr¨asentiert durch 0∗ 1∗ 0∗ . Bemerkung 3. Was k¨ onnen wir u ¨ber eine Sprache L sagen, wenn es uns nicht gelingt durch Pumping-Lemma zu beweisen, dass L nicht regul¨ar ist? K¨onnen wir ¨ dann behaupten, dass L regul¨ ar ist? NEIN! Pumping Lemma ist keine Aquivalenz, nur eine Eigenschaft aller regul¨aren Sprachen. Das illustriert das n¨achste Beispiel 5. Die Sprache L aller W¨orter ai bj ck wobei i, j, k = 0, 1, 2, 3 . . . und es gilt wenn i = 1 dann j = k ist nicht regul¨ ar. Trotzdem hat jedes Wort w ≠ ε von L eine Zerlegung w = xyz mit y ≠ ε und ∣xy∣ ≤ 2 so dass alle W¨ orter xy k z in L liegen. (a) Die Zerlegung. W¨ ahle x = ε und y = aa. Das klappt f¨ ur alle ai bj ck mit i ≥ 2. F¨ ur i = 1 w¨ ahle y = a und f¨ ur i = 0 w¨ahle y = b (wenn j ≠ 0) oder y = c (sonst). (b) Die Nichtregularit¨ at von L. Die Sprache L1 aller W¨orter abj cj ist nicht regul¨ar: dies ist analog zum Beispiel 3. Es gilt L1 = L ∩ ab∗ c∗ . Das beweist, dass L nicht regul¨ ar ist, denn der Durchschnitt regul¨arer Sprachen ist regul¨ar.

1.11

Moore- und Mealy-Automaten

sectMooreMealy

Endliche Automaten k¨ onnen auch f¨ ur die Berechnung von Funktionen (statt des Akzeptierens von Sprachen) verwendet werden. Anstelle der Menge F der finalen Zust¨ ande brauchen wir hier eine Abbildung λ, die den Zust¨anden Ausgaben zuordnet. Die Ausgabe h¨ angt entweder nur vom Zustand ab (Moore-Automaten) oder vom Zustand und von der Eingabe (Mealy-Automaten).

1.11. MOORE- UND MEALY-AUTOMATEN

35

Definition. Ein Moore-Automat ist ein Sechs-Tupel A = (Q, Σ, δ, q0 , Γ, λ), wobei Q, Σ, δ ∶ Q × Σ → Q und q0 ∈ Q dieselbe Bedeutung wie f¨ ur 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 = s1 ⋯sn das entsprechende Ausgabewort β(w) = y0 y1 ⋯yn der Berechnung von w 

/ q0 /y0

s1

/ q1 /y1

s2

/...

sn

/ qn /yn

zuordnet. Also falls die qi induktiv durch qi = δ(qi−1 , si ) definiert werden, gilt yi = λ(qi ), i = 0, . . . , n. Es gilt speziell, dass β(ε) = λ(q0 ). bsp:moore

Beispiel 1. Wir konstruieren einen Moore-Automaten, der zu jedem bin¨aren Wort w das Wort zuordnet, dass mit einem a beginnt und dann jede 0 durch b und jede 1 durch c ersetzt: 0



/ q0 /a

/ q1 /b ?

0 0

1

  q2 /c R

1

1

Definition. Ein Mealy-Automat ist ein Sechs-Tupel A = (Q, Σ, δ, q0 , Γ, λ), wobei Q, Σ, δ ∶ Q × Σ → Q und q0 ∈ Q dieselbe Bedeutung wie f¨ ur 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 = s1 ⋯sn das entsprechende Ausgabewort β(w) = y1 ⋯yn der Berechnung von w  / q0 s1 /y1 / q1 s2 /y2 / . . . sn /yn / qn zuordnet, und β(ε) = ε. bsp:mealy

Beispiel 2. Ein Mealy-Automat, der f¨ ur bin¨are Zahlen die Kongruenzklasse modulo 8 berechnet (d. h., eine Bin¨ arzahl wird Wort u ¨ber { 0, 1 } mit dem niederwertigsten Bit zuerst eingegeben; die Ausgaben sind die drei ersten Bits des Wortes gefolgt von 0en) ist der folgende: 0/0



1/0

/ q0

0/0 1/1

/ q1

0/0 1/1

/ q2

0/0 1/1

/ q3



36

KAPITEL 1. ENDLICHE AUTOMATEN

Bemerkung 1. Moore- und Mealy-Automaten realisieren fast“ dieselbe Ausga” befunktionen. Genauer: (i) Zu jedem Moore-Automaten A gibt es einen Mealy-Automaten B mit βA (w) = cβB (w) , wobei c = λA (q0 ). Wir ersetzen / q ′ /j

s

q/i durch

s/j

q

/ q′

Beispiel: der Automat in Beispiel 1 ergibt: 0/b



0/b

/ q0

/ q1 ?



0/b 1/c

  q2 R

1/c

1/c

(ii) Zu jedem Mealy-Automaten A gibt es einen Moore-Automaten B mit βB (w) = cβA (w) f¨ ur ein c ∈ Γ. Wir formen die neue Zustandsmenge: Q × Γ. Wir w¨ahlen c ∈ Γ. Dann ersetzen wir s/i / q′ q durch s

⟨q, j⟩

/ ⟨q ′ , i⟩

f¨ ur alle j ∈ Γ,

wobei λA (⟨q, j⟩) = j gilt, und als Initialzustand ⟨q0 , c⟩ gew¨ahlt wird. Beispiel: Der Automat aus Beispiel 2 ergibt mit c = 0 den folgenden Automaten:



0,1

/ ⟨q0 , 0⟩

0

1 0

⟨q0 , 1⟩

1

/ ⟨q1 , 0⟩ ?  / ⟨q1 , 1⟩

0

1 0

1

/ ⟨q2 , 0⟩ ?  / ⟨q2 , 1⟩

0

1 0

 / ⟨q3 , 0⟩ ? O 0,1

1

 / ⟨q3 , 1⟩

Kapitel 2

Kontextfreie Sprachen und Kellerautomaten 2.1

sectBspAltZweiEinsEins bspAltZweiEinsEins

sectBspAltZweiEinsZwei

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¨ ur sind die regul¨aren Ausdr¨ ucke besser als die endlichen Automaten geeignet. Das illustrieren wir informell durch einige Beispiele, bevor wir die formale Definition pr¨ asentieren. Beispiel 1. Betrachten wir die Sprache L, die durch den regul¨aren Ausdruck a(a∗ + b∗ )b definiert wird. Dieser Ausdruck erzeugt“ die W¨orter der Sprache L, indem er sagt: ” 1. 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¨onnen 1., 2., ” 3. kompakt durch die folgenden drei Ersetzungsregeln ausdr¨ ucken. Zuerst hat jedes Wort die Form aT b, wobei T der Rumpf“ aus a∗ + b∗ ist: ” 1. S → aT b. Das Symbol →“ soll kann sein“ gelesen werden; hier also S (String) ” ” kann a(Rumpf)b sein. Jetzt m¨ ussen wir den Rumpf durch geeignete Regeln erzeugen. Zuerst f¨ uhren wir eine Variable A f¨ ur String aus a’s“ ein; diese ” wird durch die folgenden Regeln 2. A → ε ∣ aA Analog f¨ ur

( A kann entweder ε oder von der Form aA sein“) bestimmt. ”

3. B → ε ∣ bB und letztlich 4. T → A ∣ B ( der Rumpf kann entweder A oder B sein“). ” 37

38 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN bspAltZweiEinsZwei

Beispiel 2. Die Sprache aller W¨orter 0n 1n (n = 1, 2, 3, . . . ) l¨asst sich durch die folgenden Regeln S → 01 ∣ 0S1 erzeugen. In dieser Sprache gilt: ein Wort S kann (nur) 01 oder von der Form 0(Wort)1 sein.

sectBspAltZweiEinsDrei bspAltZweiEinsDrei

Beispiel 3. Die Sprache aller Palindrome, d.h. aller W¨orter im Alphabet Σ = {a, b, . . . , z}, die r¨ uckw¨ arts genauso gelesen werden wie vorw¨arts, l¨asst 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¨orter geschrieben werden (z.B. a, b in Beispiel 1 in Abschnitt 2.1) und Hilfssymbolen“ oder Variablen (z.B. S, T, A, B in Beispiel ” 1in Abschnitt 2.1). 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¨ ur die W¨orter u ¨ber dem terminalen Alphabet, die aus dem Startsymbol S ableitbar (durch eine oder mehrere Anwendungen der Regeln) sind. Notation. Ersetzungsregeln A → w1 , . . . , A → wn mit derselben linken Seite werden kompakter als A → w1 ∣ w2 ∣ . . . ∣ wn 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 Regeln) heißen und in der Form A → a1 a2 . . . an mit A ∈ V und a1 . . . an ∈ (Σ ∪ V )∗ dargestellt werden. Bemerkung 1. Die Anwendung der Produktion A → a1 a2 . . . an auf ein Wort w bedeutet, dass im Wort w der Buchstabe A durch das Wort u = a1 a2 . . . an ersetzt wird. (Das ist nur m¨ oglich, falls w den Buchstaben A enth¨alt. Falls w den Buchstaben an verschiedenen Stellen enth¨alt, sind verschiedene Ergebnisse einer Anwendung der Produktion auf w m¨oglich.) Formal: Sei w = w′ Aw′′ ein Wort, wobei w′ , w′′ ∈ (Σ ∪ V )∗ W¨orter sind. Das Ergebnis der Anwendung der Produktion A → u auf w ist das Wort w′ uw′′ . Falls n = 0, 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¨alt das Symbol ε.

2.2. KONTEXTFREIE GRAMMATIK

39

Notation. 1. Mit ⇒ bezeichnen wir die Anwendung einer einzelnen Produktion; also schreiben wir f¨ ur W¨ orter w, v ∈ (Σ ∪ V )∗ w ⇒ v, falls es eine Produktion A → u der Grammatik und W¨orter w′ , w′′ ∈ (Σ ∪ V )∗ gibt, so dass w = w′ Aw′′ und v = w′ uw′′ .

2. Mit ⇒∗ bezeichnen wir die reflexive und transitive H¨ ulle 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¨orter w1 , . . . , wn mit w ⇒ w1 ⇒ w2 ⇒ . . . ⇒ wn ⇒ 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¨ ucksichtigung des Kontextes von A angewendet wird – deshalb spricht man von kontextfreien Grammatiken. Definition. F¨ ur jede kontextfreie Grammatik G heißt die Menge aller W¨orter u ¨ber dem Terminalalphabet Σ, die aus dem Startsymbol ableitbar sind, die von G erzeugte Sprache L(G). K¨ urzer: L(G) = {w ∈ Σ∗ ; S ⇒∗ w}. Beispiel 1. Palindrome. Hier nehmen wir die Sprache L ⊆ {0, 1}∗ aller Worte w deren Umkehrung wR das gleiche Wort ist: w = wR . Z.B. ε, 0 und 1 sind Palindrome. Jedes andere Palindrom hat die Form 0S0 oder 1S1 (wobei S ein Palindrom ist). Das k¨ onnen wir durch folgende Liste von Regeln (oder Produktionen ausdr¨ ucken: S→ε S→0 S→1 S → 0P 0 S → 1P 1

Hier ist P eine Variable, die Palindrome darstellt. Beispiel 2. Arithmetische Ausdr¨ ucke. Wir wollen Ausdr¨ ucke, die die Operationen + und ∗ auf Bezeichner (oder Identifier, kurz I) anwenden. Als Bezeichner benutzen wir W¨ orter u ¨ber {a, b, 0, 1} die mit a oder b anfangen. hier brauchen wir zwei Variablen: E f¨ ur Ausdruck (expression) und I f¨ ur Bezeichner (identifier) mit den

40 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Regeln E→I E →E+E E →E∗E I →a I →b I → Ia I → Ib I → I0 I → I1

Aufpassen, dies gen¨ ugt nicht z.B. f¨ ur (a+ a0) ∗ (b1 + b0), wir brauchen noch E → (E) Notation. Alle Regeln mit der selben Variablen auf der linken Seite werden zusammengefasst und durch ∣ getrennt. Die obere Liste hat dann die Form E → I∣E ∗ E∣E + E∣(E) I → a∣b∣Ia∣Ib∣I0∣I1 sectBspAltZweiZweiEins bspAltZweiZweiEins

Beispiel 3. Die Sprache L = {0n 1n ; n = 1, 2, 3, . . . } wird von der folgenden Grammatik G erzeugt wird: G = ({0, 1}, {S}, S, P), wobei P die folgenden Produktionen sind: S → 01 ∣ 0S1 Das beweisen wir jetzt formal. Beweis. (von L = L(G)) 1. Wir zeigen zuerst, dass jedes Wort 0n 1n ableitbar ist, das heißt, dass L ⊆ L(G) gilt: wir wenden (n − 1)-mal die Produktion A → 0S1 an und bekommen S ⇒ 0S1 ⇒ 00S11 ⇒ . . . ⇒ 0n−1 S1n−1 . Jetzt wird die Produktion S → 01 angewendet: S ⇒∗ 0n−1 S1n−1 ⇒ 0n 1n . 2. Demn¨ achst zeigen wir, dass L(G) ⊆ L gilt. Wir beweisen eine etwas allgemeinere Aussage (die auch W¨orter mit Variablen betrifft). Jedes Wort w ∈ {0, 1, S}∗ , das aus S ableitbar ist, hat die Form w = 0n 1n oder w = 0n S1n . Das beweisen wir durch Induktion u ¨ber der L¨ange k der Ableitung S ⇒∗ w: w = S ist hier von der zweiten Form (mit n = 0). k=0∶ k → k + 1 ∶ Falls w′ das vorletzte Wort der Ableitung von w ist, so gilt: S ⇒∗ w′ ⇒ w, und f¨ ur w′ haben wir eine Ableitung der L¨ange k. Nach der Induktionsvoraussetzung gilt also entweder w′ = 0n 1n (das ist aber nicht m¨oglich, denn es gilt w′ ⇒ w und auf 0n 1n kann man keine Produktion anwenden) oder w′ = 0n S1n . Die beiden Produktionen unserer Grammatik ergeben dann w = 0n+1 1n+1 oder w = 0n+1 S1n+1 .

2.2. KONTEXTFREIE GRAMMATIK

41

sectBspAltZweiZweiZwei bspAltZweiZweiZwei

Beispiel 4. Hier wollen wir ein Beispiel, das in die Richtung nat¨ urlicher“ Sprachen ” geht, vorf¨ uhren. Wir verwenden die folgenden Variablen: S − Startsymbol (oder Satz“) ” (SBS) − Substantiv (ADJ) − Adjektiv (VRB) − Verb (PHR) − Phrase mit den folgenden Produktionen: 1. 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¨ ur Terminalsymbole: (SBS) → Apfel“ ∣ Karl“ ” ” (ADJ) → groß“ ∣ gr¨ un“ ” ” (VRB) → isst“ ” Genauer: wir betrachten die Grammatik G = (Σ, V, S, P ), wobei Σ = { Apfel“, Karl“, groß“, gr¨ un“, isst“}, ” ” ” ” ” V = {S, (SBS), (ADJ), (VRB), (PHR)} und P aus den oben genannten Produktionen 1. bis 3. besteht.

sectBspAltZweiZweiDrei bspAltZweiZweiDrei

Einige Beispiele der S¨ atze, die die Grammatik erzeugt: Karl“ isst“ Apfel“ ” ” ” groß“ Karl“ isst“ gr¨ un“ Apfel“. ” ” ” ” ” Da unsere Grammatik kontextfrei ist, erhalten wir leider auch S¨atze, die dem intuitiven Kontext nicht entsprechen, wie z.B. gr¨ un“ Karl“ isst“ gr¨ un“ Karl“. ” ” ” ” ” Beispiel 5. Regul¨ are Ausdr¨ ucke. Erinnern wir uns an die Definition eines regul¨aren Ausdrucks r, sagen wir, u ¨ber {0, 1}: r ∶∶= 0 ∣ 1 ∣ ε ∣ ∅ ∣ r + r ∣ r ⋅ r ∣ r* ∣ (r) Das ist fast eine kontextfreie Grammatik f¨ ur regul¨are Ausdr¨ ucke mit Startsymbol r. Wir m¨ ussen aber die folgenden Details modifizieren: 1. Die ersten vier regul¨ aren Ausdr¨ ucke werden selbstverst¨andlich 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¨ asentiert. ” 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: Σ = {0, 1, epsilon, ∅, (, ), +, ⋅, ∗}, die einzige Variable r das Startsymbol ist und P die folgende Menge von Produktionen ist: r → 0 ∣ 1 ∣ epsilon ∣ ∅ ∣ r + r ∣ r ⋅ r ∣ r∗ ∣ (r)

42 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Es ist klar, dass (mit den obigen Modifikationen) die Sprache L(G) nur regul¨are Ausdr¨ ucke u alt. Umgekehrt gilt, dass jeder regul¨are Ausdruck ein ¨ber {0, 1} enth¨ Wort in L(G) ist, denn die Menge aller regul¨aren Ausdr¨ ucke ist (laut Definition) die kleinste Menge, in der 0, 1, epsilon und ∅ enthalten sind, und dass f¨ ur Elemente r1 , r2 dieser Menge auch r1 + r2 , r1 ⋅ r2 , r1 ∗ und (r) Elemente sind – und L(G) erf¨ ullt dies alles. Zum Beispiel ist die Sprache aller W¨orter, die mit 11 anfangen und, falls noch etwas kommt, die Form 1101n 0 haben, durch den regul¨aren Ausdruck 11(01*0 + ε) repr¨ asentiert, oder, modifiziert: 1 ⋅ 1 ⋅ (0 ⋅ 1 ∗ ⋅0+epsilon). Daf¨ ur 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) ⇒ 1 ⋅ r ⋅ (r ⋅ r∗ ⋅ r + r) ⇒ 1 ⋅ 1 ⋅ (r ⋅ r∗ ⋅ r + r) ⇒ 1 ⋅ 1 ⋅ (0 ⋅ r∗ ⋅ r + r) ⇒ 1 ⋅ 1 ⋅ (0 ⋅ 1∗ ⋅ r + r) ⇒ 1 ⋅ 1 ⋅ (0 ⋅ 1∗ ⋅ 0 + r) ⇒ 1 ⋅ 1 ⋅ (0 ⋅ 1∗ ⋅ 0 + epsilon) Bemerkung 3. F¨ ur jede kontextfreie Grammatik gilt: 1. Aus u ⇒ u′ folgt vuw ⇒ vu′ w (f¨ ur beliebige W¨orter u, u′ , v und w u ¨ber Σ ∪ V ). In der Tat haben wir u = u1 Au1 und u′ = u1 zu1 , wobei A → z eine Produktion unserer Grammatik ist. Es gilt vuw = (vu1 )A(u2 w) und vu′ w = (vu1 )z(u2 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 u1 ⇒∗ u′1 und u2 ⇒∗ u′2 folgt u1 u2 ⇒∗ u′1 u′2 . In der Tat gilt u1 u2 ⇒∗ u′1 u2 (wir k¨ onnen 2. mit v = ε und w = u2 anwenden) und u1 u2 ⇒∗ u′1 u′2 (wir k¨ onnen 2. mit v = u′ und w = ε anwenden).

2.3

Anwendungen von kontextfreien Grammatiken

1. Parser. Grammatiken werden zur Beschreibung von Programmiersprachen angewendet. Wo eine regul¨ are Sprache vorhanden ist, z.B., bei Beschreibung der Bezeichners als lex-Eingabe, k¨ onnen DEAs angewendet werden. Beispiel 1. Bezeichner, die alphanumerisch sind und mit einem Buchstaben anfangen m¨ ussen. In Programmiersprache C: [A − Z, a − z][A − Z, a − z, 0 − 9]∗

2.3. ANWENDUNGEN VON KONTEXTFREIEN GRAMMATIKEN

43

dies entspricht dem DEA  / A−Z,a−z

state

/ k

A−z,a−z,0−9



stateERROR Aber viele Aspekte der Programmiersprachen sind zu komplex f¨ ur eine regul¨are Sprache. Z.B. die richtige Klammerung, wobei die Struktur der rechten Klammern korrekt zu der den linken Klammern passt. Schon die Sprache L = {(), (()), ((())), . . .} aller solcher Ausdr¨ ucke OHNE andere Symbole ist nicht regul¨ar! (Erinnern wir uns an den Beweis f¨ ur an bn , n ∈ N.) Aber sie ist kontextfrei: Beispiel 2. Die Grammatik mit Produktionen S → (T ) T → (T )∣ε erzeugt die obere Sprache. Befehl YACC in unix-Systemen erzeugt die Syntaxb¨aume aus einer kontextfreien Grammatik. Die Notation von Produktionen, die Aktionen heißen, ist ¨ahnlich, nur → wird durch ∶ ersetzt. Eine Aktion wird ausgef¨ uhrt, sobald ein Knoten des Syntaxbaumes erzeugt wird, der dieser Aktion entspricht. Terminalsymbole werden durch halbe Ausf¨ uhrungszeichen bezeichnet. Beispiel 3. Quellcode Exp ∶ Id ∣ Exp ′ +′ Exp ∣ Exp ′ ∗′ Exp ∣ ′ (′ Exp ′ )′ Id ∶ ′ a′ ∣ ′ b′ ∣ I ′ a′ ∣ I ′ b′ ∣ I ′ 0′ ∣ I ′ 1′ HTML Dokumente Hier ein Beispiel, dass Text als eine Kette von Zeichen Char definiert (inkl. leeres Zeichen). Und Dokument Doc als entweder leer oder folgen von Elementen. Wobei Element ist entweder Text oder zusammengeh¨orige Tags, die ein Dokument einschließen ( und ) oder nur einleiten (). Die letzte M¨ oglichkeit von Tag ist List wobei List eine Liste von Listitem ist, die die Form LIDoc haben: Char → a∣A∣ . . . ∣z∣Z

44 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Text → ε∣ Char Text Doc → ε∣ Element Doc Element → Text ∣ Doc ∣ Doc ∣ List List → ε∣ Listitem List Listitem → Doc

2.4

Ableitungsb¨ aume

Eine M¨ oglichkeit, um Ableitungen anschaulicher zu machen, ist das Benutzen des Ableitungsbaumes (parsing tree), wobei dir Produktion A → a1 . . . an durch den Baum A a1 sectBspAltZweiDreiEins bspAltZweiDreiEins

a2

...

an−1

an

repr¨ asentiert wird. Bevor wir diese Idee formalisieren, zeigen wir zwei Beispiele informell. Beispiel 1. In der Grammatik f¨ ur die Sprache 0n 1n (Beispiel 2 in Abschnitt 2.1) wird die Ableitung von 000111 wie folgt repr¨asentiert: S

0

S

1

0

S

1

0 1 Hier sehen wir, dass der Baum mit Symbolen aus Σ ∪ V markiert wird, die Bl¨atter terminale Symbole und die inneren Knoten Variablen tragen. F¨ ur jeden inneren Knoten formen alle Markierungen der S¨ohne entweder 01 oder 0S1, was den beiden Produktionen S → 01 und S → 0S1 entspricht. sectBspAltZweiDreiZwei bspAltZweiDreiZwei

Beispiel 2. Die Sprache aa(aa + bb)∗ aller W¨ orter, 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 :

¨ 2.4. ABLEITUNGSBAUME

45

S → aaT T → ε ∣ aaT ∣ bbT. Hier ist ein Ableitungsbaum f¨ ur die Ableitung von aaaabb: S

a

a

T

a

a

T

b

b

T

ε Daran sehen wir, dass das Symbol ε (das aufgrund der Produktion T → ε aufgetaucht ist) einfach ignoriert werden soll. Bemerkung 1. 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¨ ur 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 = z0 , z1 , . . . , zn = y, so dass (zi−1 , zi ) f¨ ur i = 1, . . . , n eine Kante ist.) Sei ein solcher Pfad f¨ ur einen Knoten x wie folgt gegeben: w = z0 , z1 , . . . , zn = x. Dann heißt der Knoten zn−1 der Vater von x. Umgekehrt heißt x Sohn des Vaters zn−1 . Jeder Knoten außer w hat also genau einen Vater. Knoten, die keine S¨ohne haben, heißen Bl¨ atter . Ein geordneter Baum besteht aus folgenden zwei Komponenten: 1. einem Baum B und 2. einer linearen Ordnung aller S¨ohne von x, f¨ ur jeden Knoten x, der kein Blatt ist. Falls y und z zwei S¨ ohne von x sind, sagen wir, dass y links von z steht, falls in der Ordnung aller S¨ ohne 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¨ aume k¨ onnen k¨ urzer rekursiv definiert werden: 1. Die Wurzel allein mit einer Marke a ∈ M ist ein Baum: a 2. Falls B¨ aume B1 , . . . , Bn (n ≥ 1) und eine Marke a ∈ M f¨ ur die Wurzel gegeben sind, so ist auch a B1 B2 . . . Bn ein Baum.

46 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN 3. Jeden Baum kann man durch endlich viele Anwendungen von 1. und 2. repr¨ asentieren. Die Tiefe eines Baumes ist die maximale L¨ange 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¨ ohne von links nach rechts mit a1 , . . . , an markiert werden, ist A → a1 . . . an eine Produktion in P . Bemerkung 2. Es gilt: ˆ F¨ ur jeden Ableitungsbaum B lesen wir die Markierungen aller Bl¨atter von links nach rechts, nur Bl¨atter mit Markierung ε werden ignoriert. Das ergibt ein Wort in (Σ ∪ V )∗ , das wir mit wB bezeichnen und dass die Front des Baumes B heisst. ˆ Falls alle Bl¨ atter von B mit ε markiert sind, gilt wB = ε. sectBspAltZweiDreiDrei bspAltZweiDreiDrei

Beispiel 3. In der Grammatik G aus Beispiel 2 in Abschnitt 2.4 sind die folgenden B¨ aume Beispiele f¨ ur Ableitungsb¨aume: S

S

a

S

a

a

T

a

T

b

b

T

ε S

a

a

T

a

a

T

b

b

T

ε Bemerkung 3. Wir wollen jetzt zeigen, dass f¨ ur jede kontextfreie Grammatik G gilt: Ein Wort w liegt in L(G) ⇔ w hat einen Ableitungsbaum mit Wurzel S und w ∈ Σ∗ . Wir m¨ ussen betonen, dass es im allgemeinen mehrere Ableitungsb¨aume f¨ ur ein Wort w ∈ L(G) gibt, z.B. hat das Wort abc in einer Grammatik mit den Produktionen

¨ 2.4. ABLEITUNGSBAUME

47

S → aS ∣ ab ∣ Sc ∣ bc die folgenden Ableitungsb¨aume: S

S

c

S

a

S

a c b b Konstruktion eines Ableitungsbaumes: Sei w ein Wort u ¨ber Σ, das aus S ableitbar ist. Wir konstruieren einen Ableitungsbaum B mit w = wB wie folgt. Gegeben eine Ableitung S ⇒ w1 ⇒ w2 ⇒ . . . ⇒ wn−1 ⇒ wn = w. Wir konstruieren B¨ aume B1 , . . . , Bn , so dass die Bl¨atter von Bi das Wort wi formen; der Baum Bn ist dann ein Ableitungsbaum f¨ ur w. ˆ Baum B1 : Sei w1 = a1 . . . ap , dann ist S → a1 . . . ap eine Produktion unserer Grammatik. Wir setzen: B1 : S

a1 a2 . . . ap Falls n = 1, das heißt S ⇒ w, ist dies ein Ableitungsbaum f¨ ur w. ˆ Baum B2 : Sei A → b1 . . . bq eine Produktion unserer Grammatik, deren Anwendung die Ableitung w1 ⇒ w2 ergibt: w1 = a1 . . . ai−1 Aai+1 . . . ap (das heißt A = ai ) und w2 = a1 . . . ai−1 b1 . . . bq ai+1 . . . ap Wir setzen B2 : S

a1 . . . ai−1 ai ai+1 . . . ap b1 b2 . . . bq Und so weiter.

ectSatzAltZweiDreiEins satzAltZweiDreiEins

Satz 1. F¨ ur jede kontextfreie Grammatik G ist L(G) genau die Sprache aller W¨ orter u ¨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¨ ur jeden Ableitungsbaum B mit Wurzel X gilt X ⇒ ∗ wB . Falls B keine Variablen in den Bl¨attern hat, folgt wB ∈ Σ∗ . Falls nun außerdem X = S gilt, haben wir also wB ∈ L(G). Wir benutzen Induktion u ¨ber die Tiefe k des Baumes B. Hier besteht der Baum B aus der Wurzel allein, also gilt wB = X und k=0∶ deswegen X ⇒∗ wB . k → k + 1 ∶ Seien a1 , . . . , an die Markierungen aller S¨ohne der Wurzel (von links nach rechts).

48 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN X a1

a2

B1

B2

...

an

Bn

Mit Bi bezeichnen wir den Baum aller Nachfolger des i-ten Sohns, f¨ ur i = 1, . . . , n. Dann ist Bi ein Baum mit Wurzel ai der Tiefe ≤ k. Die Induktionsvoraussetzung ergibt also ai ⇒∗ wBi f¨ ur i = 1, . . . , n. Aus der ersten Bemerkung in 2.2 sehen wir, dass dann a1 a2 . . . an ⇒∗ wB1 a2 . . . an ⇒∗ wB1 wB2 a3 . . . an ⇒∗ wB1 wB2 . . . wBn . Ferner ist X → a1 . . . an eine Produktion unserer Grammatik, weswegen gilt X ⇒∗ a1 . . . an ⇒∗ wB1 wB2 . . . wBn . Aus der Konstruktion der B¨aume B1 , . . . , Bn sehen wir, dass das Wort wB gleich dem Wort wB1 wB2 . . . wBn ist. Das beweist also X ⇒∗ w. sectBspAltZweiDreiVier bspAltZweiDreiVier

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 1. bis 3. haben: 1. 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

3. COM = if BEXP then COM else COM, wobei BEXP ein Boolescher Ausdruck ist. F¨ ur AEXP erlauben wir nur Variablen x, y, Konstanten 0, 1, 2 und Operationen +, ∗. F¨ ur Boolesche Ausdr¨ ucke sind nur Konstanten true, false oder eine Gleichung zweier algebraischer Ausdr¨ ucke mit den u ¨blichen Operationen and, not erlaubt. Unsere Grammatik G hat also die folgenden terminalen Symbole: Σ = {x, y, 0, 1, 2, +, ∗, true, false, =, ∶ , ; , and, not, if, then, else} 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 ∣ 0 ∣ 1 ∣ 2 ∣ + AEXP AEXP ∣ ∗ AEXP AEXP BEXP → true ∣ false ∣ AEXP = AEXP ∣ and BEXP BEXP ∣ not BEXP Zum Beispiel das Programm x ∶= 1; if x = y then y ∶= + xy else y ∶= 0 hat den Ableitungsbaum

¨ 2.5. KONTEXTFREIE UND REGULARE SPRACHEN

49

COM ;

COM x

COM if BEXP then COM else COM

∶= AEXP 1

AEXP = AEXP x

y

y

y

∶= AEXP + AEXP AEXP x

∶= AEXP 0

y

ectSatzAltZweiDreiZwei satzAltZweiDreiZwei

Satz 2. F¨ ur eine kontextfreie Grammatik G bezeichnen wir die maximale L¨ ange der rechten Seite einer Produktion mit k. Dann hat jedes Wort in L(G) mit einem Ableitungsbaum der Tiefe i h¨ ochstens die L¨ ange k i . Beweis. F¨ ur jeden Ableitungsbaum B beweisen wir, dass das Wort wB , das die Bl¨ atter von B bilden (wenn ε wie u ¨blich ignoriert wird), h¨ochstens die L¨ange k i hat. Der Beweis ist durch Induktion u uhren. ¨ber die Tiefe i des Baumes B durchzuf¨ Induktionsanfang i = 0: Ein Baum der Tiefe 0 besteht nur aus der Wurzel und somit gilt: wB hat eine L¨ ange ≤ 1 = k 0 . Induktionsschritt: Jeder Baum der Tiefe i + 1 > 0 hat die Form A B1 B2 . . . Bn wobei B1 , . . . , Bn (n ≥ 1) B¨ aume sind, deren Tiefe h¨ochstens i ist. Nach der Induktionsvoraussetzung gilt: die L¨ange des Wortes wBj f¨ ur j = 1, . . . , n ist h¨ochstens k j . Seien a1 , . . . , an die Markierungen aller S¨ohne von A (d.h. aller Wurzeln von B1 , . . . , Bn ). 1. Falls a1 , . . . , an in Σ ∪ V liegen, gilt wB = wB1 wB2 . . . wBn (Konkatenation), und die L¨ ange von wB ist also h¨ochstens k i +k i +⋅ ⋅ ⋅+k i = nk i . Da A → a1 , . . . , an eine Produktion in P ist, gilt (nach Definition von k) n ≤ k, also nk i ≤ k i+1 . 2. Falls sich ε unter den a′k s befindet, gilt n = 1 und wB = ε: A ε Die L¨ ange von wB ist 0 ≤ k i+1 .

2.5

Kontextfreie und regul¨ are 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.

sectBspAltZweiVierEins bspAltZweiVierEins

Beispiel 1. Kontextfreie Sprachen:

50 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN a. Die Sprache aller regul¨ aren Ausdr¨ ucke ist kontextfrei – siehe Beispiel 5 in Abschnitt 2.2. b. Die (nichtregul¨ are) Sprache L = {0n 1n ; n = 1, 2, 3, . . . } ist kontextfrei – siehe Beispiel 3 in Abschnitt 2.2. c. Die Sprache L = {an bn cn ; n = 1, 2, 3, . . . } ist nicht kontextfrei, wie wir in Abschnitt 2.5 beweisen werden. d. Im Gegensatz zu c. ist die Sprache L = {an bn ck ; n, k = 1, 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: (a) Jedes Wort an bn ck (n ≥ 1, k ≥ 1) ist ableitbar: S c

S c

S c

S c

T a

T

b

a

T

b

a

T

b

a

T

b

a

9 ⎤⎣ k-mal ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ;

9 ⎤⎣ (n − 1)-mal ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ⎣ ;

b

(b) Jedes ableitbare Wort aus {a, b, c}∗ hat die Form an bn ck . Allgemeiner: jedes von S ableitbare Wort aus {a, b, c, T }∗ hat entweder die Form an bn ck oder an T bn ck . Das folgt aus der Form der Ableitungsb¨aume und kann leicht durch Induktion u ¨ber die Tiefe des Baumes bewiesen werden. sectSatzAltZweiVierEins satzAltZweiVierEins

Satz 1. Jede regul¨ are Sprache ist kontextfrei. Bemerkung 1. F¨ ur jede regul¨are Sprache werden wir in der Tat eine Grammatik finden, deren Produktionen die Form A → ε oder A → bB (A, B ∈ V, b ∈ Σ) haben. Beweis. F¨ ur jede regul¨ are Sprache L gibt es einen endlichen Automaten M = (Q, Σ, δ, q0 , F ), der L akzeptiert. Wir definieren eine Grammatik G, deren Variablen die Zust¨ande

¨ 2.5. KONTEXTFREIE UND REGULARE SPRACHEN

51

von M sind, wie folgt: G = (Σ, Q, q0 , P) mit den folgenden Produktionen P: A→ε f¨ ur jeden finalen Zustand A und s / ¨ B A → sB f¨ ur jeden Ubergang A Wir beweisen, dass L = L(G) gilt. 1. Zuerst zeigen wir, dass jedes akzeptierte Wort w = s1 . . . sn in der Grammatik G ableitbar ist; also folgt L ⊆ L(G). Aus den Zust¨anden der Berechnung von s1 . . . sn : s1 / q1 s2 / . . . sn / qn q0 erhalten wir den Ableitungsbaum f¨ ur w: q0 q1

s1

q2

s2

qn−1

s3 sn

qn ε

ohne Variablen in den Bl¨ attern. 2. Jetzt zeigen wir, dass jedes ableitbare Wort w = s1 . . . sn von M akzeptiert wird, d.h. L(G) ⊆ L: ein Ableitungsbaum ohne Variablen in den Bl¨attern muss n¨ amlich die obige Form haben, dann folgt aus qi = δ(qi−1 , si ), dass δ ∗ (q0 , w) = qn ∈ F . Definition. Eine regul¨ are Grammatik ist eine kontextfreie Grammatik, deren Produktionen die Form A → b1 b2 . . . bn oder A → b1 b2 . . . bn B haben, wobei A, B Variablen sind und b1 . . . bn ein (m¨oglicherweise leeres) Wort aus terminalen Symbolen ist.

sectKorAltZweiVierEins korAltZweiVierEins

Korollar 1. Jede regul¨ are Sprache kann durch eine regul¨ are Grammatik erzeugt werden. Bemerkung 2. Wir haben im Satz 1 in Abschnitt 2.5 scheinbar etwas mehr bewiesen: nicht nur, dass regul¨ are Sprachen mit Hilfe der Produktionen A → b1 . . . bn oder A → b1 . . . bn B erzeugbar sind, sondern auch, dass uns die einfacheren Produktionen A → ε oder A → bB gen¨ ugen. Dies ist allerdings nicht allgemeiner, denn jede regul¨are 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: 1. Jede Produktion A → b1 b2 . . . bn mit n ≥ 1 kann man durch die folgenden Produktionen ersetzen:

52 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN A B1

→ b1 B1 → b2 B2 ⋮ Bn−2 → bn−1 Bn−1 Bn−1 → bn Bn Bn → ε (wobei B1 , . . . , Bn neue Variablen sind, die sich paarweise unterscheiden). In der Tat, die Produktion wird dann durch A b1 b2

. . . bn A B1

b1

Bn−1

b2

Bn

bn

ε ersetzt. (Und kein anderer Ableitungsbaum kann mit den neuen Variablen konstruiert werden.) Also gilt L(G) = L(G′ ). 2. Analog ersetzt man A b1 b2 durch

. . . bn B A B1

b1

Bn−1

b2 bn

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. sectBspAltZweiVierZwei bspAltZweiVierZwei

Beispiel 2. Die folgende Grammatik G = ({0, 1}, {S, A, B}, S, P ) mit den Produktionen P : S → 01A ∣ 0A ∣ 0B B → 1 ∣ 1B A→ε ist regul¨ ar. Sie kann durch die Grammatik G′ = ({0, 1}, {S, A, B, C, D}, S, R′ ) ersetzt werden, deren Produktionen R′ die folgenden sind:

¨ 2.5. KONTEXTFREIE UND REGULARE SPRACHEN

53

S → 0C ∣ 0A ∣ 0B C → 1A B → 1D ∣ 1B D→ε A →ε

ectSatzAltZweiVierZwei satzAltZweiVierZwei

Satz 2. Jede regul¨ are Grammatik erzeugt eine regul¨ are Sprache. Beweis. Wie aus der obigen Bemerkung folgt, gen¨ ugt es zu zeigen, dass jede regul¨ are Grammatik G = (Σ, V, S, P ), deren Produktionen eine der Formen A → ε, A → bB, oder A → B haben, eine regul¨ are Sprache erzeugt. Wir konstruieren einen NEAS wie folgt: M = (V, Σ, δ, S, F ), also sind Zust¨ ande die Variablen von G, mit S als Initialzustand. Die finale Zust¨ande ¨ sind gerade die Variablen, bei denen A → ε eine Produktion in P ist. Die Uberg¨ ange sind durch die Produktionenn der Grammatik bestimmt: S A → 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 Wort w = s1 . . . sn akzeptiert, haben wir eine Berechnung (1)  / S # / A1 # / . . . s1 / Ai1 # / . . . sn / Ain # / . . . # / Ak im Automaten M , und wir haben einen Ableitungsbaum ohne Variablen Bl¨ attern, der diese Berechnung kopiert: (2) S

M das / in den

A1 Ai1 −1 s1

Ai1 Ai2 −1 s2

Ai 2 Ain −1 sn

Ai n Ak

sectKorAltZweiVierZwei korAltZweiVierZwei

ε Umgekehrt wird jedes Wort w mit einem Ableitungsbaum B ohne Variablen in den Bl¨ attern von M akzeptiert: der Ableitungsbaum kann n¨amlich nur die Form (2) wie oben haben, und daraus k¨ onnen wir eine Berechnung (1) des Wortes durch M ableiten. Korollar 2. Eine Sprache ist genau dann regul¨ ar, wenn sie von einer regul¨ aren Grammatik erzeugt werden kann.

54 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN sectBspAltZweiVierDrei bspAltZweiVierDrei

Beispiel 3. Die Grammatik G′ aus Beispiel 2 in Abschnitt 2.5 ergibt den folgenden nichtdeterministischen Automaten, der L(G′ ) akzeptiert: 7C

0



/S

0

0

 Bf

1

'  A 

1

1

 D _  sectBspAltZweiVierVier bspAltZweiVierVier

Beispiel 4. Die folgende Grammatik G = ({0, 1}, {S, T }, S, P ) mit den Produktionen S → 1 ∣ 11 S → T 0S0S11 ist nicht regul¨ ar. Sie erzeugt jedoch eine regul¨are Sprache: L(G) = 1 + 11. Bemerkung 3. Jeder innere Knoten p eines Syntaxbaumes mit Markierung X ergibt einen Unterbaum (mit Wurzel-Markierung X) der selbst ein Syntaxbaum ist: Y

p

X

u

w v

Das Ergebnis des urspr¨ unglichen Baumes ist uvw wobei (a) v ist das Ergebnis des Unterbaumes (b) u ist die Markierung der Bl¨atter links von p und w ist die Markierung der Knoten rechts von p. Das Wort kontextfrei“ hat mit der oberen Struktur der W¨orter zu tun: ein Wort ” v erscheint im Wort uvw im Kontext, der vom Pr¨afix u und Suffix w besteht. Da / . . . , X variabel, haben, ist die Anwendung vom alle Produktionen die Form X Kontext eines Wortes abh¨ angig. I Kontrast, die Regel xa → ba erlaubt X durch b nur im Kontext (Suffix f¨ angt mit a an) zu ersetzen.

2.6

Eigenschaften kontextfreier Sprachen

sectSatzAltZweiFuenfEins satzAltZweiFuenfEins

Satz 1. F¨ ur zwei kontextfreie Sprachen L1 und L2 sind auch die Sprachen L1 ∪ L2 und L1 L2 kontextfrei.

2.6. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN

55

Beweis. Wir haben eine Grammatik Gi = (Σi , Vi , Si , Ri ) f¨ ur die Sprache Li (i = 1, 2), und ohne Beschr¨ ankung der Allgemeinheit k¨onnen wir voraussetzen, dass V1 ∩ V2 = ∅. 1. Erzeugung der Sprache L1 ∪L2 : sei G die Grammatik mit terminalen Symbolen Σ1 ∪ Σ2 , Variablen V1 ∪ V2 ∪ {S}, wobei S ∉ V1 ∪ V2 das Startsymbol von G ist und den Produktionen S → S1 ∣ S2 (*) zusammen mit allen Produktionen in R1 und R2 . Dann gilt L(G) = L1 ∪ L2 . In der Tat hat jeder Ableitungsbaum B der Grammatik G die Form S S1

S oder

B1

S2 B2

wobei Bi ein Ableitungsbaum der Grammatik Gi f¨ ur i = 1, 2 ist. Es gilt wB = WBi ∈ Li . Also liegt ein Wort genau dann in L(G), wenn es entweder in L1 oder in L2 liegt. 2. Erzeugung der Sprache L1 L2 : Sei G dieselbe Grammatik wie in 1., nur wird (*) durch die einzige Produktion S → S1 S2 ersetzt. Die Ableitungsb¨ aume von G haben die Form S S1

S2

B1

B2

wobei Bi ein Ableitungsbaum der Grammatik Gi f¨ ur i = 1, 2 ist. Es gilt wB = wB1 wB2 . Also liegt ein Wort genau dann in L(G), wenn es die Form w1 w2 , wobei wi ∈ Li f¨ ur i = 1, 2 gilt, hat.

ctSatzAltZweiFuenfZwei satzAltZweiFuenfZwei

Satz 2. Falls L eine kontextfreie Sprache ist, ist L∗ auch kontextfrei. Beweis. Sei G = (Σ, V, S, P ) eine Grammatik f¨ ur 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¨ ugen. Dann gilt: L(G) = L∗ . In der Tat: 1. L∗ ⊆ L(G): F¨ ur jedes Wort w = w1 w2 . . . wn ∈ L∗ , wobei die wi in L liegen, haben wir Ableitungsb¨ aume Bi f¨ ur wi in der Grammatik G, aus denen der folgende Ableitungsbaum f¨ ur w hergestellt wird:

56 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S S

S

S B1

...

S S

S

B2

S

S ε

S Bn Der Ableitungsbaum f¨ ur ε ist klar.

2. L(G) ⊆ L∗ : F¨ ur jedes Wort w ∈ L(G) haben wir einen Ableitungsbaum B mit Wurzel S in der Grammatik G mit w = wB . Durch Induktion u ¨ber die Tiefe i des Baumes B zeigen wir, dass w ∈ L∗ : Hier ist B der Baum i=1∶ S ε und wB = ε ∈ L∗ . i → i + 1 ∶ Der Ableitungsbaum B hat eine der folgenden Formen: entweder S S B wobei B ein Ableitungsbaum in der Grammatik G ist, dann gilt wB ∈ L ⊆ L∗ , oder S S

S

B1

B2

wobei B1 , B2 Ableitungsb¨aume der Grammatik G sind, dann gilt w = wB1 wB2 . Die B¨aume B1 , B2 haben eine Tiefe ≤ i, also ergibt die Induktionsvoraussetzung wB1 , wB2 ∈ L∗ . Daraus folgt w ∈ L∗ . sectKorAltZweiFuenfEins korAltZweiFuenfEins

Korollar 1. Die Klasse aller kontextfreien Sprachen enth¨ alt alle regul¨ aren Sprachen und ist unter den Operationen ∪, ⋅ und ∗ abgeschlossen. Bemerkung 1. Leider ist diese Klasse nicht unter Durchschnitt abgeschlossen. Um das zu zeigen, m¨ ussen wir Mittel zur Verf¨ ugung haben, um zu beweisen, dass eine Sprache nicht kontextfrei ist. F¨ ur regul¨are Sprachen war das Pumping-Lemma

2.6. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN

57

solch ein Mittel (siehe 1.8). Auch f¨ ur 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¨ahnen:

ctSatzAltZweiFuenfDrei satzAltZweiFuenfDrei

Satz 3. (ohne Beweis) Falls L1 eine kontextfreie Sprache und L2 eine regul¨ are Sprache ist, so ist L1 ∩ L2 kontextfrei. Bemerkung 2. In einem Ableitungsbaum B k¨onnen wir einen beliebigen Knoten p ausw¨ ahlen 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¨atter von B ist, die vor den Bl¨ attern von B ′ stehen, und y das Wort aller Bl¨atter nach den Bl¨attern von B ′ : S p x B′ y wB ′ gilt wB = xwB ′ y.

58 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN sectBspAltZweiFuenfNull bspAltZweiFuenfNull

Beispiel 1. In dem Baum B: S X

Y

0

1

X

X

0 1 0 w¨ ahlen wir den Knoten y mit der Markierung Y . Dann ist B′: Y X

1

X

0 1 0 Hier ist x = 01, wB ′ = 0101 und y = ε.

1

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¨onnen wir B ′ durch B ′′ ersetzen und bekommen einen neuen Ableitungsbaum S A x B ′′ y wB ′′ der das Wort xwB ′′ y erzeugt. In dem oberen Beispiel sei B ′′ : Y Z 0 0 0 dann ergibt die Ersetzung von B ′ durch B ′′ im Ableitungsbaum S X 0

Y 1

Z

0 0 0 ¨ Diese Uberlegungen werden im Beweis des folgenden Pumping-Lemmas verwendet: Pumping-Lemma f¨ ur kontextfreie Sprachen: F¨ ur jede kontextfreie Sprache L existiert eine Zahl n, so dass jedes Wort w in L mit der L¨ange ∣w∣ ≥ n eine Zerlegung w = uvxyz, mit u, v, x, y, z ∈ Σ∗ und den folgenden Eigenschaften hat: 1. v ≠ ε oder y ≠ ε, 2. ∣vxy∣ ≤ n,

2.6. EIGENSCHAFTEN KONTEXTFREIER SPRACHEN

59

3. uv r xy r z liegt in L f¨ ur alle r = 0, 1, 2, . . .. 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¨ ange der rechten Seite einer Produktion von G. Wir beweisen, dass die Zahl n = k i+1 die gew¨ unschte Konstante ist. Sei w ein Wort aus L, das eine L¨ ange gr¨oßer gleich n hat. Wir w¨ahlen einen Ableitungsbaum B f¨ ur w mit der kleinsten Anzahl an Knoten. Nach Satz 2 in Abschnitt 2.4 wissen wir, dass B die Tiefe gr¨oßer als i haben muss. Es existiert also in B ein Pfad der L¨ ange i + 1 in B. Jeder seiner i + 1 Knoten, die keine Bl¨atter sind, wird also mit einer Variablen markiert. Das ergibt i + 1 Markierungen, obwohl es nur i Variablen gibt. Es m¨ ussen sich also Markierungen wiederholen. Wir k¨onnen also zwei Knoten p und q aus B w¨ ahlen, so dass 1. q ein Nachfolger von p ist, 2. p und q dieselbe Markierung A haben und 3. p die gr¨ oßte Tiefe unter Knoten mit 1. 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¨ochstens i + 1 ist, weil der l¨angste Pfad in B ′ diese L¨ ange hat (g¨ abe es einen l¨angeren Pfad k¨onnte man ein p mit gr¨oßerer Tiefe in B w¨ ahlen!). Dann hat B die folgende Form: B

p



q



u

z

B w Das Wort w = wB hat also die Form w = uw′ z, wobei w′ = wB ′ das Wort aller Bl¨atter von B ′ , u das Wort aller Bl¨atter von B, die links von B ′ stehen und z das Wort aller Bl¨atter von B, die rechts von B ′ stehen ist. Eine analoge Situation gilt f¨ ur B ′ selbst: sei B ′′ der Unterbaum aller Nachfolger ′ von q. Dann hat B die folgende Form: ● p B′ ′





v

q y

x B ′′ Das Wort w′ hat also die Form w′ = vxy, wobei wB ′′ = x. Hier gilt v ≠ ε oder y ≠ ε, denn falls v = y = ε, d.h., falls jeder Vorg¨anger von q im Baum B ′ nur einen Sohn hat, k¨ onnen wir einen kleineren Ableitungsbaum f¨ ur w finden (aber B ist der kleinste!): Es gen¨ ugt, in B den Unterbaum B ′ durch B ′′ zu ersetzen.

60 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Da der Baum B ′ h¨ ochstens die Tiefe i + 1 hat, gilt nach Satz 2 in Abschnitt 2.4 außerdem ∣vxy∣ = ∣w′ ∣ ≤ k i+1 = n. Der Baum B sieht jetzt wie folgt aus: B



p



q

u

z y

v

B



x B ′′ Da die Knoten p und q dieselbe Markierung tragen, k¨onnen wir einen neuen Ableitungsbaum erstellen, indem wir B ′′ durch eine Kopie des Baumes B ′ ersetzen: B



p



p



q

u v v

z y

B

y

B′



x B ′′ Da B keine Variablen in den Bl¨attern hat, gilt dasselbe f¨ ur den letzten Baum. Das zeigt, dass das Wort uvvxyyz zu L(G) = L geh¨ort. Diesen Prozess k¨onnen wir wiederholen: im letzten Baum ersetzen wir B ′′ durch B ′ und erhalten uv 3 xy 3 z ∈ L, usw. Letztendlich k¨ onnen wir direkt B ′ im Baum B durch B ′′ ersetzen und bekommen einen Ableitungsbaum f¨ ur uxz. Beispiel 2. Die Sprache L = {ak ; k = 0, 1, 4, 9 . . .} aller W¨orter u ¨ber {a} von quadratischer L¨ ange ist nicht kontextfrei. In der Tat, gegeben sei n wie im Pumping-Lemma, setzen wir w = an

2

und beweisen, dass keine Zuerlegung w = avxyz die Eigenschaften besitzen kann. Sei p = ∣y∣ + ∣v∣ (p > 0 da y ≠ ε oder v ≠ ε). Aus ∣vxy∣ ≤ n folgt p ≤ n. Das Wort xv 2 xy 2 z ∈ L hat die L¨ ange n2 + p und dies muss ein Quadrat sein. Das ist ein Widerspruch, denn n2 < n2 + p < (n + 1)2 Die erste Ungleichung folgt aus p > 0 und die zweite besagt, dass p < 2n + 1, was aus p ≤ n folgt. sectBspAltZweiFuenfEins bspAltZweiFuenfEins

Beispiel 3. Die Sprache L = {ak bk ck ; k = 1, 2, 3, . . . }

2.7. NULLIERBARE VARIABLEN

61

ist nicht kontextfrei. Wir zeigen, dass keine Konstante n das Pumping-Lemma f¨ ur L erf¨ ullt. Wir w¨ ahlen w = an bn cn . Falls das Pumping-Lemma f¨ ur L gilt, haben wir also eine Zerlegung an bn cn = uvxyz, so dass v ≠ ε oder y ≠ ε und uv 2 xy 2 z ∈ L. Wir zeigen, dass das nicht m¨ oglich ist. 1. Falls y nur aus einem Buchstaben besteht, muss v zwei Buchstaben (also a und b) enthalten, denn sonst w¨aren 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¨onnen wir f¨ ur y analog zu 1. argumentieren. 3. Falls v sowie y mehrere Buchstaben enthalten, findet man in uv 2 xy 2 z wieder ein b vor einem a.

ectBspAltZweiFuenfZwei bspAltZweiFuenfZwei

Beispiel 4. Zwei kontextfreie Sprachen, deren Durchschnitt nicht kontextfrei ist. Sei L1 = {an bn ck ; n, k = 1, 2, 3, . . . } die kontextfreie Sprache aus Beispiel 1.d in Abschnitt 2.5, Analog zeigt man, dass die Sprache L2 = {ak bn cn ; n, k = 1, 2, 3, . . . } kontextfrei ist. Aber L1 ∩ L2 = {an bn cn ; n = 1, 2, 3, . . . } ist nicht kontextfrei, wie wir oben gesehen haben.

ectKorAltZweiFuenfDrei korAltZweiFuenfDrei

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 L1 ∩ L2 = L1 + L2 , dass eine Klasse von Sprachen, die unter + und Komplementbildung abgeschlossen ist, auch unter Durchschnitt abgeschlossen sein muss.

2.7

Nullierbare Variablen

ctNullierbareVariablen

sectDfNullierbar dfNullierbar

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¨ ur eine kontextfreie Grammatik G gilt: ε liegt in L(G) genau dann, wenn das Startsymbol nullierbar ist. Berechnung der Menge V0 aller nullierbaren Variablen erfolgt durch die folgende Rekursion:

GrammatikOhneANachEpsilon

GrammatikOhneANachEpsilon

62 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Anfang: V0 = ∅ Rekursiver Schritt: V0 ∶= V0 ∪ {A ∈ V ; es gibt eine Produktion A → B1 B2 . . . Bn mit B1 , B2 , . . . , Bn ∈ V0 }. Also liegen nach dem ersten Durchgang in V0 alle Variablen A, f¨ ur die es eine Produktion A → ε gibt. Nach dem zweiten Schritt alle Variablen, f¨ ur die es eine Produktion A → B1 B2 . . . Bn mit Produktionen B1 → ε, . . . , Bn → ε gibt, usw. Nach dem letzten Durchgang hat V0 die folgende Eigenschaft: F¨ ur jede Produktion A → B1 B2 . . . Bn mit B1 , B2 , . . . , Bn ∈ V0 gilt A ∈ V0 . Es ist leich zu sehen, dass jede durch diese rekursive Prozedur in V0 gelegte Variable nullierbar ist. Umgekehrt, sei A nullierbar, und sei n die L¨ange der Ableitung von ε aus A. Dann liegt A nach dem n-ten Durchgang der Prozedur oben in V0 . Dies ist klar f¨ ur n = 1; f¨ ur gr¨ oßere n benutzen wir Induktion: Sei A → B1 . . . Bn die erste Produktion, die die Ableitung A ⇒∗ ε benutzt. Dann haben wir k¨ urzere Ableitungen f¨ ur B1 , . . . , Bn , d.h. diese Variablen liegen in V0 nach der Induktionsvoraussetzung. Die obige Eigenschaft von V0 beweist A ∈ V0 . Satz 1. Jede kontextfreie Sprache L, die ε nicht enth¨ alt, hat eine kontextfreie Grammatik ohne Produktionen A → ε.

In der Tat zeigen wir einen Algorithmus, der f¨ ur jede kontextfreie Grammatik G, f¨ ur die ε ∈/ L(G) gilt, eine kontextfreie Grammatik G erzeugt mit L(G) = L(G) so dass G keine Produktionen A → ε hat. Beweis. Sei G′ die Grammatik, die aus G dadurch entsteht, dass neue Produktionen hinzugef¨ ugt werden: f¨ ur jede Produktion B → w1 w2 . . . wi−1 Awi+1 . . . wn , wobei A nullierbar ist, f¨ ugen wir die Produktion B → w1 w2 . . . wi−1 wi+1 . . . wn hinzu. Diese Prozedur wird solange wiederholt, bis keine neue Produktionen entstehen. Das ¨ andert 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¨ ur jedes Wort w in L(G′ ) w¨ ahlen 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¨are, k¨onnten 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¨atte B die Form S ε Dann w¨ are aber w = ε, was der Voraussetzung ε ∈/ L(G′ ) wiederspr¨ache.) Sei X die Markierung des Großvaters t′′ und w1 , . . . , wn die Markierungen seiner S¨ ohne. 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

2.8. CHOMSKY-NORMALFORM

63 S

X

w1

t′′

. . . wi−1 A wi+1 . . . wn

t ε Aufgrung der Konstruktion von G′ ist dann auch B → w1 . . . wi−1 wi+1 . . . wn eine Produktion, die den folgenden kleineren Ableitungsbaum B ergibt: BAUM B S

X

w1 . . . wi−1 wi+1 . . . wn Das ist der gesuchte Widerspruch. Bemerkung 1. F¨ ur Grammatiken G, die das leere Wort erzeugen (also mit S nullierbar), gibt es einen ¨ ahnlichen Satz: Wir k¨onnen eine Grammatik G mit L(G) = L(G) erzeugen, die die Produktion S → ε, aber keine andere Produktion der Form A → ε (A ≠ S) enth¨alt. Der Beweis ist fast derselbe.

2.8

Chomsky-Normalform

sec:CNF

ectDfChomskyNormalform dfChomskyNormalform

ectBspAltZweiSechsEins bspAltZweiSechsEins

Wir zeigen jetzt, dass jede kontextfreie Grammatik so modifiziert werden kann, dass sie (ohne die erzeugte Sprache zu a¨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¨ ur die Erzeugung des leeren Wortes n¨otig. 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 1. Die Sprache 0(10)∗ wird von G = ({0, 1}, {S, A}, S, P ) mit den Produktionen P :

64 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN S → 0A A → 10A ∣ ε erzeugt. Das ist keine Normalform-Grammatik, jedoch kann man eine NormalformGrammatik, die diese Sprache erzeugt, finden, wie wir noch zeigen werden. Zuerst wollen wir aber einen wichtigen Begriff der Graphentheorie einf¨ uhren: Bemerkung 1. TOPOLOGISCHES SORTIEREN Gegeben sei ein gerichteter Graph G = (V, E), eine Sortierung seiner Knoten ist eine bijektive Abbildung ord ∶ V → {1, 2, . . . , n}. Sie heißt topologisch, falls f¨ ur jede Kante (v, w) in E gilt ord(v) < ord(w). Z.B. hat von den folgenden Graphen G1 und G2 ●?M ● ●? ● ●



●



●

● G1 G2 der Graph G2 keine topologische Sortierung, da er ein Dreieck enth¨alt – es ist klar, dass nur azyklische Graphen topologische sortiert werden k¨onnen. Der Graph G1 hat die folgenden topologischen Sortierungen: 3 1 2 3 ●? ● ●? ●

1



●

4

2



●

4

● ● 5 5 Jeder azyklische Graph hat eine topologische Sortierung: man findet einen Knoten x ohne Vorg¨ anger (x kann gefunden werden, wenn wir mit einem beliebigen Knoten starten und uns solange wie m¨oglich in Gegenrichtung der Pfeile bewegen – kein Knoten wird wiederholt besucht, also steht am Ende ein Knoten ohne Vorg¨anger). Man setzt ord(x) = 1 und entfernt x aus dem Graphen. Jetzt wird der Prozess mit der Bewertung ord = 2 wiederholt, usw.

Genauer: wir haben den folgenden Algorithmus f¨ ur topologisches Sortieren. Wir bezeichnen mit i = Anzahl aller schon sortierten Knoten und W = Menge aller noch nicht sortierten Knoten. Initialisierung: i ∶= 0 und W ∶= V Rekursiver Schritt: while ein Knoten x ∈ W ohne Vorg¨anger in W existiert do i ∶= i + 1; 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¨ ur 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 1 in Abschnitt 2.8. Schritt 1: Alle Produktionen bekommen die Form A → w, wobei w entweder ein Wort aus Variablen oder ein einziges Terminalsymbol ist. Man ersetzt jedes Termi-

2.8. CHOMSKY-NORMALFORM

65

nalsymbol a durch eine neue Variable Da und f¨ ugt die Produktion Da → a zu P hinzu. Beispiel 1 – Schritt 1: Die obige Grammatik (Beispiel 1 in Abschnitt 2.8) wird durch die Grammatik G′ = ({0, 1}, {S, A, D0 , D1 }, S, R′ ) mit den Produktionen R′ ersetzt: S → D0 A A → D1 D0 A ∣ ε D0 → 0 D1 → 1 Schritt 2: Alle Produktionen A → w, bei denen w l¨anger als zwei ist, werden durch Produktionen des Typs A → BC ersetzt. Statt A → B1 B2 . . . Bm schreibt man A → B1 C 1 C1 → B2 C 2 C2 → B3 C 3 ⋮ Cm−3 → Bm−2 Cm−2 Cm−2 → Bm−1 Bm wobei C1 , . . . , Cm−2 neue Variablen sind. Beispiel 1 – Schritt 2: In der obigen Grammatik G′ ersetzen wir A → D1 D0 A durch A → D1 C C → D0 A. Schritt 3: Die Produktionen A → ε werden entfernt, siehe Abschnitt 2.7. Beispiel 1 – Schritt 3: F¨ ur die Grammatik aus Schritt 2, also die Grammatik mit S → D0 A A → D1 C ∣ ε C → D0 A den Produktionen D0 → 0 D1 → 1 gilt V0 = {A}, so dass die Modifikation die Produktionen S → D0 A ∣ D0 A → D1 C C → D0 A ∣ D0 D0 → 0 D1 → 1 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 un” erw¨ unschten“ Produktionen A → B unserer Grammatik sind. 1. Die Produktionen A → A werden ignoriert und alle Kreise des Graphen H entfernt. Sei 7 A1 ' AnR A2 ... o A3 ein Kreis der L¨ ange n. Wir entfernen A2 , . . . , An aus der Liste aller Variablen und ersetzen Ai durch A1 in jeder Produktion der Grammatik (f¨ ur i = 2, . . . , n). Diesen Prozess wiederholen wir solange, bis kein Kreis u ¨brigbleibt. Falls S eine der Variablen des Kreises ist, w¨ahlen wir immer S = A1 . 2. In der modifizierten Grammatik ist der Graph H azyklisch, und wir k¨onnen seine Knoten, d.h. alle (¨ ubriggebliebenen) Variablen, topologisch sortieren:

66 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN V = {A1 , A2 , . . . , Am }. Wir entfernen alle Produktionen Ai → Aj systematisch nach dem Index i = m, m − 1, . . . , 1 mit dem folgenden rekursiven Prozess: Keine Produktion Am → Aj existiert. i=m∶ Nachdem alle Produktionen Am → Aj , Am−1 → Aj , . . . , Ai → Aj i→i−1∶ entfernt wurden, ersetzen wir jede Produktion Ai−1 → Aj durch Ai−1 → w f¨ ur alle W¨orter w, f¨ ur die Aj → w eine Produktion ist. Beispiel 1 – Schritt 4: Die nach Schritt 3 erhaltene Grammatik definiert den Graphen / ; D0 S

C Er ist azyklisch und kann z. B. wie folgt topologisch sortiert werden: 2 3 / ; D0 S 1 C Wir ersetzen also S → D0 durch S → 0 und C → D0 durch C → 0: S → D0 A ∣ 0 A → D1 C C → D0 A ∣ 0 D0 → 0 D1 → 1 Bemerkung 2. Dieser 4-Schritt-Algorithmus berechnet die Chomsky-Normalform f¨ ur alle kontextfreien Grammatiken, die ε nicht enthalten. F¨ ur allgemeine kontextfreie Grammatiken G stellen wir zuerst fest, ob S nullierbar ist. Falls ja, werden die 4 Schritte oben um den folgenden Schritt erg¨anzt: Schritt 5: Die Produktion S → ε wird hinzugef¨ ugt. Beispiel 2. F¨ ur 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 1: neue Variablen Da , Db und Produktionen S → A ∣ Da A A → B ∣ Db B B → S ∣ Da S ∣ Db S ∣ ε Da → a Db → b Schritt 2: entf¨ allt. Schritt 3: Die Menge V0 wird in drei rekursiven Schritten berechnet:

2.8. CHOMSKY-NORMALFORM

67

V0 ∶=∅, {B}, {A, B}, {S, A, B}. Also: ε ∈ L(G). Neue Produktionen: S → A ∣ Da A ∣ Da A → B ∣ Db B ∣ Db B → S ∣ Da S ∣ Db S ∣ Da ∣ Db Da → a Db → b Schritt 4: Der Graph aller Variablen sieht wie folgt aus: /A S_ B



    Da Db Wir entfernen den Kreis S → A → B → S, indem wir die Variablen A und B l¨oschen und die Produktionen modifizieren (statt A und B wird S verwendet): S → S ∣ Da S ∣ Da S → S ∣ Db S ∣ Db S → S ∣ Da S ∣ Db S ∣ Da ∣ Db Da → a Db → b Die Produktion S → S wird ignoriert. Die anderen formen den folgenden Graphen: S   Da Db Die Produktion S → Da wird also durch S → a, S → Db durch S → b ersetzt: S → Da S ∣ a ∣ Db S ∣ b Da → a Db → b Schritt 5: Da S nullierbar ist, m¨ ussen wir noch S → ε einf¨ ugen. Wir bekommen die Chomsky-Normalform: S → Da S ∣ a ∣ Db S ∣ b ∣ ε Da → a Db → b

ectBspAltZweiSechsZwei bspAltZweiSechsZwei

Beispiel 3. Wir wollen die Grammatik G = ({0, 1}, {A, B, C, X, Y, Z, S, T }, S, P ) mit den Produktionen S → A ∣ B ∣ C ∣ TS A → BT ∣ T X ∣ T Y ∣ T Z B → CT C → AT T →ε X → T A ∣ AT Y → 11 Z → T Y ∣ 01 ∣ 01Z in die Chomsky-Normalform bringen. Die einzelnen Schritte werden folgendermaßen durchgef¨ uhrt. Schritt 1: neue Variablen D0 und D1 werden eingef¨ uhrt und die letzten beiden Zeilen werden durch die folgenden Produktionen ersetzt:

68 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Y → D1 D1 Z → T Y ∣ D0 D1 ∣ D0 D1 Z D0 → 0 D1 → 1 Schritt 2: neue Variable E wird eingef¨ uhrt und die Produktion (aus Schritt 1) Z → D0 D1 Z wird durch Z → D0 E E → D1 Z ersetzt. Schritt 3: V0 = {T }, also wird die Produktion T → ε der urspr¨ unglichen Grammatik entfernt, und T darf auf den rechten Seiten verschwinden“. Nach diesem Schritt ” haben wir also die folgenden Produktionen: S → A ∣ B ∣ C ∣ TS ∣ 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 → D1 D1 Z → T Y ∣ Y ∣ D0 D1 ∣ D0 E D0 → 0 D1 → 1 E → D1 Z Die Regel S → S wird nun entfernt. (Andere u ussige Regeln, z.B., S → T S, ¨berfl¨ entfernen wir hier nicht, um den allgemeinen Algorithmus zu illustrieren.) Schritt 4: Der Graph H sieht f¨ ur die letzte Grammatik wie folgt aus: ) / ?B D0 D1 Xi A_ g ● ●  S ● ●    /Y Z 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 ∣ TS A → AT ∣ A ∣ T A ∣ T Y ∣ Y ∣ T Z ∣ Z Y → D1 D1 Z → T Y ∣ Y ∣ D0 D1 ∣ D0 E D0 → 0 D1 → 1 E → D1 Z Der neue Graph H hat nur einen Zyklus: A → A. Den d¨ urfen wir einfach weglassen und erhalten einen azyklischen Graphen, der z.B. wie folgt topologisch sortiert werden kann: 2 5 6 D0 D1 Ag ● ● 1 S ● ●   /Y Z E T 3 4 7 8 Wir entfernen erst die Produktion Z → Y und ersetzen sie durch Z → D1 D1 , also

¨ FORMALE SPRACHEN 2.9. ALGORITHMEN FUR

69

haben wir jetzt f¨ ur Z die folgenden Produktionen: Z → T Y ∣ D0 D1 ∣ D0 E ∣ D1 D1 . Daraufhin werden die Produktionen A → Z und A → Y entfernt und durch die folgenden zus¨ atzlichen Produktionen A → T Y ∣ D0 D1 ∣ D0 E ∣ D1 D1 ersetzt. Insgesamt haben wir damit f¨ ur A die Produktionen A → AT ∣ T A ∣ T Y ∣ D1 D1 ∣ T Z ∣ D0 D1 ∣ D0 E. Als letztes ersetzen wir S → A durch die zus¨atzlichen Produktionen S → AT ∣ T A ∣ T Y ∣ D1 D1 ∣ T Z ∣ D0 D1 ∣ D0 E. Somit erhalten wir die Chomsky-Form unserer Grammatik S → AT ∣ T A ∣ T Y ∣ D1 D1 ∣ T Z ∣ D0 D1 ∣ D0 E ∣ T S A → AT ∣ T A ∣ T Y ∣ D1 D1 ∣ T Z ∣ D0 D1 ∣ D0 E Y → D1 D1 Z → T Y ∣ D0 D1 ∣ D0 E ∣ D1 D1 D0 → 0 D1 → 1 E → D1 Z

2.9

Algorithmen fu ¨ r formale Sprachen

sectAlgoFormSprachen

1. Regul¨ are Sprachen Gibt es einen Algorithmus, der f¨ ur eine beliebige regul¨are 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. Nehmen wir an, dass die Codierung der regul¨aren Sprachen L durch eine Beschreibung eines DEA , der L akzeptiert, dargestellt wird. Es gibt den folgenden Algorithmus, der f¨ ur jeden DEA M und jedes Wort w = s1 . . . sn entscheidet, ob M das Wort w akzeptiert: F¨ ur n = 0 ist die Antwort JA, genau wenn der Initialzustand q0 final ist. F¨ ur n ≥ 1 wird die Maschine M mit dem Eingabewort w simuliert. Unser Algorithmus berechnet also q1 = δ(q0 , s1 ) q2 = δ(q1 , s2 ) ⋮ qn = δ(qn−1 , sn ), und die Antwort ist genau dann JA, wenn qn final ist. 2. Kontextfreie Sprachen Die Frage, ob f¨ ur eine beliebige kontextfreie Sprache L ein gegebenes Wort w zu L geh¨ ort kann von einem effizienten Algorithmus entschieden werden, der CockeYounger-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¨ ur w = ε: Die Antwort ist JA genau dann, wenn S → ε eine Produktion von G ist. F¨ ur nichtleere W¨ orter 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¨ ur jedes Wort w = s1 . . . sn den Teil si si+1 . . . si+j−1 der L¨ange j, der in si beginnt, mit wi,j bezeichnen und wir die Frage

70 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN gilt A ⇒∗ wi,j ? f¨ ur alle i = 1, . . . , n und j = 1, . . . , n − i entscheiden. Da w = w1,n , wird dies unsere Aufgabe l¨ osen. Wir entscheiden A ⇒∗ wi,j mit Induktion u ¨ber j. Der Fall j = 1 bedeutet, dass das Terminalsymbol si von A ableitbar ist. Da unsere Grammatik die Chomsky-Normalform hat, ist die Antwort JA, genau wenn A → si eine Produktion ist. Sei j > 1 und sei A ⇒∗ wi,k f¨ ur alle i und k ≤ j − 1 entschieden. In der Ableitung A ⇒∗ wi,j bezeichnen wir mit A → BC die erste angewendete Produktion: A B

C

si+k . . . si+j−1 si si+1 . . . si+k−1 Dann gilt: (*) B ⇒∗ wi,k und C ⇒∗ wi+k,j−k f¨ ur ein k = 1, . . . , j − 1. Umgekehrt folgt aus (*), dass A ⇒∗ wi,j gilt. Um den CYK-Algorithmus genau zu beschreiben, bezeichnen wir Vi,j = {A ∈ V ; A ⇒∗ wi,j } f¨ ur alle i = 1, . . . , n − 1 und j = 1, . . . , n − i + 1. CYK-Algorithmus Eingabe: Eine kontextfreie Grammatik G = (Σ, V, S, P ) in Chomsky-Normalform und ein Wort w = s1 s2 . . . sn u ¨ber Σ. Erster Schritt: F¨ ur alle i = 1, . . . , n setzt man Vi,1 = {A ∈ V ; A → si ist eine Produktion}

sectBspAltZweiSieben bspAltZweiSieben

Rekursiver Schritt: F¨ ur alle i = 1, . . . , n und j = 2, . . . , n setzt man Vi,j = {A ∈ V ; es gibt k = 1, . . . , j − 1 und B ∈ Vi,k , C ∈ Vi+k,j−k so, dass A → BC eine Produktion ist} Ausgabe: JA, falls S in V1,n liegt, NEIN sonst. Beispiel 1. 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¨ ur das Wort baaba wird der CYK-Algorithmus die folgenden Mengen Vi,j berechnen: i 1 2 3 4 5 j

1 2 3 4 5

B S, A ∅ ∅ S, A, C

A, C B B S, A, C

A, C S, C B

B S, A

A, C

Da S in V1,5 liegt, geh¨ ort baaba zur Sprache L(G).

2.10. KELLERAUTOMATEN

2.10

71

Kellerautomaten

Es gibt kontextfreie Sprachen, die nicht regul¨ar sind, also von keinem endlichen Automaten akzeptiert werden k¨ onnen. Wir brauchen also st¨arkere“ Maschinen f¨ ur ” kontextfreie Sprachen. Nehmen wir das Beispiel der Sprache L aller Palindrome (Beispiel 3 in Abschnitt 2.1): um zu verifizieren, dass die Eingabe a1 a2 . . . an , die ein read-only Kopf liest, ein Palindrom ist, m¨ ussen wir uns im Laufe der Bearbeitung wenigstens an die erste H¨ alfte des Eingabewortes erinnern (um sie mit der anderen H¨ alfte vergleichen zu k¨ onnen). 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¨ ugen, in dem die Eingabe gespeichert werden kann, ist es m¨ oglich, 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¨ ussen 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: Σ – das Alphabet der Eingabesymbole K – das Alphabet der Kellersymbole. Der Inhalt des Kellers wird von n Zeichen k1 , . . . , kn geformt. Dies wird als ein Wort k1 k2 . . . kn ∈ K ∗ beschrieben (wegen ε ∈ K ∗ kann der Keller auch leer sein). ¨ Die Ubergangsfunktion δ 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 s,k/w / q′ q Also soll δ eine Untermenge von (Q × Σ × K) × (Q × K ∗ ) sein. Aber da wir auch ¨ spontane Uberg¨ ange (ohne Eingabe, vergleiche mit Automaten, Absatz 1.3) erlauben wollen, also Produktionen der Form (q, #, k) → (q ′ , w), ist δ eine Untermenge von (Q × (Σ ∪ {#}) × K) × (Q × K ∗ ). Beispiel 1. Die Sprache 0n 1n (n = 1, 2, 3, . . .) wird von dem Kellerautomat akzeptiert, der (a) im Initialzustand q0 immer Eingabe 0 in den Keller speichert, wenn er k0 oder 1 sieht: q0

0,k0 /0k0 0,0/00

/ q0

(b) Eingabe 1 dazu f¨ uhrt, dass eine 0 aus dem keller entfernt wird und der Zustand zu q1 ge¨ andert wird: q0 und

1,0/ε

/ q1

und

q1

1,0/ε

/ q1

72 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN (c) Beim Kellertop k0 wird spontan k0 entfernt: #k0 /ε

q1

/ q1

Hier der ganze Kellerautomat:

0,k0 /0k0 0,0/00



/ q0



1,0/ε #,k0 /ε 1,0/ε

/ q1



Definition. Ein Kellerautomat (englisch: pushdown automaton) P ist ein 7-Tupel P = (Q, Σ, K, δ, q0 , k0 , 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 Ubergangsregeln heißen, q0 ∈ Q der Initialzustand ist, F ⊆ Q die Menge aller Finalzust¨ande ist und k0 ∈ K das Startsymbol ist. Bemerkung 1. Wie arbeitet ein Kellerautomat? Am Anfang hat er den Zustand q0 und im Keller steht der Buchstabe k0 . Jetzt werden die folgenden Schritte durchgef¨ uhrt: Erster Schritt: ist entweder spontan, d.h., der Zustand q0 geht in den Zustand q1 u ¨ber und der Kellerinhalt wird von k0 zu w1 ver¨andert, falls (q0 , #, k0 ) → (q1 , w1 ) ¨ eine der Ubergangsregeln ist. Oder der erste Schritt ist nicht spontan: q0 geht nach q1 u ber und der Kellerinhalt a¨ndert sich zu w1 , falls ¨ (q0 , s1 , k0 ) → (q1 , w1 ) mit s1 ∈ Σ ¨ eine der Ubergangsregeln ist. Im zweiten Fall wird s1 von der Eingabe entfernt, und s2 wird als n¨ achstes Eingabesymbol gelesen. Zweiter Schritt: dieser tritt nur dann ein, wenn der Keller nach dem ersten Schritt nicht leer ist. Sei k1 das top-Element des Kellers. Wir gehen von dem Zustand q1 zu q2 u ¨ber und a ¨ndern den Kellerinhalt von w1 zu w2 entweder spontan: (q1 , #, k1 ) → (q2 , w2 ) oder nicht spontan: (q1 , si , k1 ) → (q2 , w2 ), wobei i = 1 oder i = 2 (je nachdem, ob s1 im Schritt 1 entfernt wurde oder nicht). Im zweiten Fall wird si von der Eingabe entfernt, usw. Formal: Definition. Eine Konfiguration eines Kellerautomaten ist ein Tripel (q, s1 . . . sn , k1 . . . km ) in Q × Σ∗ × K ∗ das den momentanen Zustand q, die (restliche) momentane Eingabe s1 . . . sn ∈ Σ∗ und den momentanen Kellerinhalt k1 . . . km ∈ K ∗ beschreibt. Die Folgekonfigurationen einer Konfiguration (q, s1 . . . sn , k1 k2 . . . km ) sind alle Konfigurationen (q ′ , s2 . . . sn , wk2 . . . km ), wobei (q, s1 , k1 ) → (q ′ , w) eine Regel ist,

2.10. KELLERAUTOMATEN

73

sowie alle Konfigurationen (q ′ , s1 . . . sn , wk2 . . . km ), wobei (q, #, k1 ) → (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¨ ulle von ⊢. Definition. (a) Konfigurationen (q0 , s1 . . . sn , k0 ) heißen initial . Hier ist s1 . . . sn die (ganze) eingehend. (b) Konfiguration (q, ε, ε) wobei q∈ F heißen akzeptierend. D.h. der Keller ist leer (deswegen keine weitere Schritte m¨oglich), es gibt keinen Rest der Eingabe und der Zustand ist akzeptierend. (c) Ein Wort w = s1 . . . sn ∈ Σ∗ wird von dem Kellerautomaten P akzeptiert, falls wenigstens eine akzeptierende Berechnung von w m¨oglich ist. D.h., von der Initialkonfiguration (q0 , w, k0 ) eine akzeptierende Konfiguration erreicht werden kann: (q0 , w, k0 ) ⊢∗ (q, ε, ε) f¨ ur ein q ∈ F . Die Sprache aller von P akzeptierten W¨orter ist durch L(P ) bezeichnet. Kurz L(P ) = {w; w ∈ Σ∗ und es gibt q ∈ F mit (q0 , w, k0 ) ⊢∗ (q0 , ε, ε)}.

sectBspAltZweiAchtEins bspAltZweiAchtEins

Beispiel 1 (Fortsetzung) Der Kellerautomat akzeptiert alle W¨orter 0n 1n . Zum Beispiel die Berechnung von 0011 ist (q0 , 0011, k0 ) ⊢ (q0 , 011, 0k0 ) ⊢ (q0 , 11, 00k0 ) ⊢ (q0 , 1, 0k0 ) ⊢ (q0 , ε, k0 ) ⊢ (q1 , ε, ε) Umgekehrt, jedes akzeptierende Wort hat die Form 0n 1n . In der tat, wenn (q0 , w, k0 ) ⊢∗ (q1 , ε, ε) gilt, muss die vorletzte Konfiguration dieser Berechnung (q1 , ε, k0 ) sein. Die Anzahl n von Schritten der Berechnung in denen q0 als Zustand bleibt entspricht dem Anfang 0n von w. Dann kommt ε1 (und wird nicht verlassen werden). Da die vorletzte Konfiguration keine 0 im Speicher hat, m¨ ussen genau n Schritte passieren, d.h., w = 0n 1n . Beispiel 2. Palindrome u ¨ber {a, b} von gerader L¨ange. D.h., L besteht aus wwR ∗ mit w ∈ {a, b} . Der Automat bleibt im Zustand q0 und speichert einfach die Eingabe 

a,x/ax b,x/bx

/ q0

/ q0 wobei x = a, b oder k0

In der zweiten H¨ alfte“ vergleicht er Eingabe und Kellertop und wenn sie gleich ” sind, schmeißt er den Kellertop weg 

/ q0

a/a/ε b,b/ε

/ q0

74 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Wenn er am Ende k0 sieht, schmeißt er es spontan weg: 

/ q0 k

a,x/ax b,x/bx a,a/ε b,b/ε #,k0 /ε

Jedes Wort wwR wird akzeptiert. Beispiel (q0 , abba, k0 ) ⊢ (q0 , bba, ak0 ) ⊢ (q0 , ba, bak0 ) ⊢ (q0 , a, ak0 ) ⊢ (q0 , ε, k0 ) ⊢ (q0 , ε, ε) sectBspAltZweiAchtDrei bspAltZweiAchtDrei

sectBspAltZweiAchtVier bspAltZweiAchtVier

Beispiel 3. Jeder endliche, nichtdeterministische Automat M kann als Kellerautomat, der nie auf den Keller zugreift, aufgefasst werden. Genauer: es gen¨ ugt, die ¨ Ubergangsregeln (q, s) → q ′ von M in die Form (q, s, k0 ) → (q ′ , k0 ) ¨ zu u ange ¨bersetzen und die spontanen Uberg¨ (q, #, k0 ) → (q, ε) f¨ ur alle finalen Zust¨ ande hinzuzuf¨ ugen. Bemerkung 2. In den vorigen Beispielen hatten wir schon eine kontextfreie Grammatik, und wir konstruierten einen zus¨atzlichen Kellerautomaten. Es gibt aber viele Beispiele, bei denen es auf den ersten Blick nicht klar ist, was f¨ ur eine Grammatik hier zu definieren w¨ are, aber die Konstruktion eines Kellerautomaten ist intuitiv klar. Beispiel 4. Die Sprache L aller W¨orter 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 k0 hinzu und ¨ andert den Zustand zu q1 : (q0 , a, k0 ) → (q1 , ak0 ) (q0 , b, k0 ) → (q1 , bk0 ). Danach speichert P entweder eine Reihe von a’s (falls bisher mehr a’s als b’s gelesen wurden), und in diesem Fall f¨ uhrt jedes gelesene b zur Pop-Operation eines a: 1. (q1 , a, a) → (q1 , aa) 2. (q1 , b, a) → (q1 , ε) oder umgekehrt, P speichert eine Reihe von b’s (falls mehr b’s als a’s gelesen wurden): 3. (q1 , b, b) → (q1 , bb) 4. (q1 , a, b) → (q1 , ε) Falls im Kellertop k0 steht, kann P spontan in den Haltezustand q2 ∈ F u ¨bergehen: (q1 , #, k0 ) → (q2 , ε). Genauer: der folgende Kellerautomat akzeptiert L:

a,a/aa b,a/ε b,b/bb a,b/ε



/ q0

a,k0 /ak0 b,k0 /bk0

/ q1



#,k0 /ε

/ q2

2.11. KELLERAUTOMATEN UND KONTEXTFREIE SPRACHEN

2.11

75

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¨aren Sprachen und endlichen (nichtdeterministischen) Automaten. Konstruktion eines Kellerautomaten F¨ ur jede kontextfreie Grammatik G = (Σ, V, S, P ) definieren wir einen Kellerautomaten PG mit einem einzigen Zustand q (der initial sowie final ist), dem Eingabealphabet Σ und dem Kelleralphabet Σ ∪ V , wobei S das Kellerstartsymbol ist. Die ¨ Ubergangsregeln sind wie folgt: 1. (q, x, x) → (q, ε) f¨ ur alle x ∈ Σ, (also wird eine pop-Operation in dem Falle durchgef¨ uhrt, dass die Eingabe mit dem Top-Element des Kellers u bereinstimmt) und ¨ 2. (q, #, A) → (q, w) f¨ ur 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 PG = ({q}, Σ, Σ ∪ V, δ, q, S, {q}), ¨ wobei δ von den Ubergangsregeln 1. und 2. geformt wird. Beispiel 1. Die Grammatik f¨ ur Palindrome u ¨ber Σ = {a, b}: S → ε∣a∣b∣aSa∣bSb ergibt den Kellerautomaten S,#ε S,#/a ⋮ S,#/bSb a,a/ε b,b/ε



/ q0



Jedes Wort aus L(g) wird akzeptiert: wir formen einen Syntaxbaum und durchsuchen ihn mit Tiefensuche und bekommen eine Berechnung: Beispiel abbba

S

a

S

b

S

b

(q0 , abbba, S) ⊢ (q0 , abbba, aSa) ⊢ (q0 , bbba, Sa) ⊢ (q0 , bbba, bSba) ⊢ (q0 , bba, Sba) ⊢ (q0 , bba, bba) ⊢ (q0 , ba, ba) ⊢ (q0 , a, a) a ⊢ (q0 , ε, ε) b

76 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN Bemerkung 1. Ein Baum wird Tiefensuche durchsucht, falls wir alle Knoten wie folgt besuchen: 1. Der erste besuchte Knoten ist die Wurzel. 2. Falls der besuchte Knoten kein Blatt ist, ist der n¨achste 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¨achstes den ersten noch nicht besuchten Sohn von y. Der Baum B wird wie angedeutet depth-first durchsucht: BAUM B TIEFENSUCHE 1 2

11

3 4

6 5

7

8 9

sectSatzAltZweiNeunEins satzAltZweiNeunEins

10

Satz 1. F¨ ur jede kontextfreie Grammatik G akzeptiert der oben konstruierte Kellerautomat PG die Sprache L(G). Beweis. 1. Jedes Wort w in L(G) wird von PG akzeptiert. Falls n¨amlich B ein Ableitungsbaum f¨ ur w ist, k¨onnen 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 → a1 . . . an entspricht, ¨ andert sich die Konfiguration von PG spontan, entsprechend der ¨ Ubergangsregel (q, #, A) → (q, a1 . . . an ). Zum Beispiel, am Anfang S a1 a2 . . . an

´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¶ w andert PG die Konfiguration wie folgt ¨ (q, w, S) → (q, w, a1 a2 . . . an ), und die Durchsuchung des Ableitungsbaumes geht zum ganz links stehenden Sohn der Wurzel u ¨ber. (Im Top des Kellers steht also die Markierung des momentanen Knotens!) ¨ In jedem Blatt markiert mit a benutzen wir die Ubergangsregel (q, a, a) → (q, ε). Nachdem der ganze Baum durchsucht wurde, erhalten wir die akzeptierende Konfiguration (q, ε, ε).

2.11. KELLERAUTOMATEN UND KONTEXTFREIE SPRACHEN

77

2. Umgekehrt, falls w akzeptiert wird, konstruieren wir einen Ableitungsbaum f¨ ur w. Die Konstruktion folgt eine akzeptierende Berechnung von w. Der Baum wird Schritt f¨ ur 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 Ubergangsregel (q, #, A) → (q, a1 . . . an ) weiter geht, erzeugen wir n neue S¨ohne des momentan besuchten Knotens und markieren sie mit a1 , . . . , an . Da der Baum depthfirst untersucht wird, gehen wir zum ganz links stehenden Sohn u ¨ber (der, wie gew¨ unscht, mit dem Top-Element a1 des Kellers markiert wird). ¨ (b) Falls die Ubergangsregel (q, a, a) → (q, ε) benutzt wurde, bleibt der momentan besuchte Knoten ein Blatt, und wir gehen (depth-first) zum n¨ achsten Knoten u ¨ber. 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) u ¨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 andert, entspricht dies dem Symbol (q, k, q ′ ) im Top des und den Zustand zu q ′ ¨ ′ Kellers von P .) Wir f¨ uhren hier den Beweis dieses Simulationssatzes nicht durch.

ectSatzAltZweiNeunZwei satzAltZweiNeunZwei

Satz 2. Eine Sprache ist genau dann kontextfrei, wenn sie von einem Kellerautomaten akzeptiert wird. Beweis. Jede kontextfreie Sprache wird, nach Satz 1 in Abschnitt 2.11, von einem Kellerautomaten akzeptiert. Umgekehrt beweisen wir f¨ ur jeden Kellerautomaten P , dass die Sprache L(P ) kontextfrei ist. Wir nehmen an, dass P nur einen Zustand hat (siehe vorige Bemerkung). ¨ Die Ubergangsregeln von P werden als Produktionen einer Grammatik G wie folgt u ¨bersetzt: 1. statt (q, x, k) → (q, k1 . . . kn ) schreibt man k → xk1 . . . kn und 2. statt (q, #, k) → (q, k1 . . . kn ) schreibt man k → k1 . . . kn . Genauer: wir formen die kontextfreie Grammatik G = (Σ, Γ, k0 , P ), deren Variablen die Kellersymbole von P sind und deren Produktionen die obige Form 1. und 2. haben. Der Beweis, dass L(G) = L(P ) folgt analog zum Beweis von Satz 1 in Abschnitt 2.11: Falls ein Wort w von G erzeugt wird, d.h., falls wir einen Ableitungsbaum f¨ ur w haben, k¨ onnen wir den Ableitungsbaum depth-first durchsuchen, und wir bekommen eine akzeptierende Berechnung f¨ ur den Kellerautomaten P : die beginnt mit

78 KAPITEL 2. KONTEXTFREIE SPRACHEN UND KELLERAUTOMATEN ¨ der Initialkonfiguration (q, w, k0 ) und geht mit den Ubergangsregeln weiter, die den benutzten Produktionen im Ableitungsbaum genau entsprechen. Umgekehrt, falls ein Wort w von P akzeptiert wird, konstruieren wir einen Ableitungsbaum f¨ ur w dadurch, dass wir depth-first neue Knoten erzeugen, die den ¨ Ubergangsregeln der Berechnung entsprechen. Bemerkung 3. Automaten PG , wie oben konstruiert (genauer: deterministische Kellerautomaten, die PG modifizieren), werden im Compilerbau bei der Top-DownSyntaxanalyse von Programmen benutzt.