Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und...

113
Automaten und Formale Sprachen Skript zur Vorlesung WS 2010/11 Teil 2 (Kap. 4+5) Lesender: Prof. D. Kuske Autor: Prof. M. Dietzfelbinger Fassung vom 24.11.2010 Technische Universit¨ at Ilmenau Fakult¨ at f¨ ur Informatik und Automatisierung Fachgebiet Komplexit¨ atsheorie und Effiziente Algorithmen

Transcript of Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und...

Page 1: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Automaten und Formale Sprachen

Skript zur Vorlesung

WS 2010/11

Teil 2 (Kap. 4+5)

Lesender: Prof. D. Kuske

Autor: Prof. M. Dietzfelbinger

Fassung vom 24.11.2010

Technische Universitat Ilmenau

Fakultat fur Informatik und Automatisierung

Fachgebiet Komplexitatsheorie und Effiziente Algorithmen

Page 2: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

i

Page 3: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Inhaltsverzeichnis

0 Vorbemerkungen 2

0.1 Einleitung und Uberblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

0.2 Zur Arbeitstechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

0.3 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1 Grundbegriffe 9

1.1 Alphabete und Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Endliche Automaten und regulare Sprachen 18

2.1 Deterministische endliche Automaten . . . . . . . . . . . . . . . . . . . . . 18

2.1.1 Endliche Automaten mit Ausgabe . . . . . . . . . . . . . . . . . . . 30

2.2 Nichtdeterministische endliche Automaten . . . . . . . . . . . . . . . . . . 31

2.3 Regulare Ausdrucke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.4 Das Pumping-Lemma fur regulare Sprachen . . . . . . . . . . . . . . . . . 60

2.5 Abschlusseigenschaften fur regulare Sprachen . . . . . . . . . . . . . . . . . 63

2.6 Entscheidbarkeitsfragen fur regulare Sprachen . . . . . . . . . . . . . . . . 68

2.7 Die Minimierung deterministischer endlicher Automaten . . . . . . . . . . 71

2.7.1 Unerreichbare Zustande . . . . . . . . . . . . . . . . . . . . . . . . 71

2.7.2 Aquivalente und nicht-aquivalente Zustande . . . . . . . . . . . . . 74

2.7.3 Minimalautomaten . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3 Grammatiken und die Chomsky-Hierarchie 87

3.1 Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

3.2 Rechtslineare Grammatiken und regulare Sprachen . . . . . . . . . . . . . 99

3.2.1 Rechtslineare Grammatiken . . . . . . . . . . . . . . . . . . . . . . 99

3.2.2 Aquivalenz zu regularen Sprachen . . . . . . . . . . . . . . . . . . . 100

ii

Page 4: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

3.2.3 Linkslineare Grammatiken . . . . . . . . . . . . . . . . . . . . . . . 102

4 Kontextfreie Grammatiken und kontextfreie Sprachen 105

4.1 Beispiele und Ableitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4.2 Ableitungsbaume, Linksableitungen, Rechtsableitungen . . . . . . . . . . . 111

4.3 Die Chomsky-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.3.1 Separierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

4.3.2 Verkurzung rechter Seiten . . . . . . . . . . . . . . . . . . . . . . . 127

4.3.3 Bearbeitung von ε-Produktionen . . . . . . . . . . . . . . . . . . . 129

4.3.4 Elimination von Kettenregeln . . . . . . . . . . . . . . . . . . . . . 137

4.4 Das Pumping-Lemma fur kontextfreie Sprachen . . . . . . . . . . . . . . . 141

4.5 Der Cocke-Younger-Kasami-Algorithmus . . . . . . . . . . . . . . . . . . . 157

4.6 Abschlusseigenschaften kontextfreier Sprachen I . . . . . . . . . . . . . . . 162

5 Kellerautomaten 167

5.1 Nichtdeterministische Kellerautomaten . . . . . . . . . . . . . . . . . . . . 167

5.2 Top-Down-Parsing, LL-Parsing . . . . . . . . . . . . . . . . . . . . . . . . 180

5.3 Bottom-Up-Parsing, LR-Parsing . . . . . . . . . . . . . . . . . . . . . . . . 191

5.4 Akzeptierungsmodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

5.5 Kellerautomaten und Grammatiken . . . . . . . . . . . . . . . . . . . . . . 198

5.6 Abschlusseigenschaften II . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

5.7 Deterministische Kellerautomaten und ihre Sprachen . . . . . . . . . . . . 202

5.8 Entscheidungsfragen fur kontextfreie Sprachen . . . . . . . . . . . . . . . . 209

A 214

A.1 Zahldarstellungen und Abzahlungen . . . . . . . . . . . . . . . . . . . . . . 214

A.1.1 Die b-are Zahldarstellung . . . . . . . . . . . . . . . . . . . . . . . 214

A.1.2 Die b-adische Zahldarstellung . . . . . . . . . . . . . . . . . . . . . 218

A.2 Induktive Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

A.2.1 Beispiel: Aussagenlogische Formeln . . . . . . . . . . . . . . . . . . 222

A.2.2 Beispiel: Korrekte Klammerausdrucke . . . . . . . . . . . . . . . . . 225

A.2.3 Induktive Definitionen: Formaler Rahmen . . . . . . . . . . . . . . 228

1

Page 5: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Kapitel 4

Kontextfreie Grammatiken undkontextfreie Sprachen

In diesem Kapitel untersuchen wir die im vorigen Kapitel definierte Sprachklasse L2 ge-nauer. Diese Klasse (und besonders noch engere Teilklassen davon) spielt eine zentraleRolle bei der Spezifikation von Programmiersprachen und der Konstruktion von Compi-lern fur Programmiersprachen.

4.1 Beispiele und Ableitungen

Wir wiederholen Definition 3.1.10: Eine kontextfreie Grammatik G besteht aus derMenge V der (syntaktischen) Variablen , einem Terminalzeichen-Alphabet Σ, ei-nem Startsymbol S ∈ V und der Menge P der Produktionen , wobei jede Produktionin P die Form

A→ X1 · · ·Xr, A ∈ V, X1, . . . , Xr ∈ V ∪ Σ

hat. (Elemente von V ∪ Σ bezeichnen wir mit X,Y, Z,Xi, Yi, Zi, usw.)

Man erinnere sich auch an die Konvention, statt

A→ β1 , A→ β2 , . . . , A→ βs

kurzA→ β1 | β2 | · · · | βs

zu schreiben.

Wir haben schon mehrere Beispiele fur kontextfreie Grammatiken gesehen:

(a) Beispiel 3.1.1 sollte arithmetische Ausdrucke mit den vier Grundoperationen, Klam-merung und der Prioritatsregel

”Punkt vor Strich“ beschreiben.

105

Page 6: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

(b) Bei Beispiel 3.1.11 sollte, so wurde behauptet, mit den drei Produktionen

S → ε | SS | 0S1

die Menge kKA der korrekten Klammerausdrucke beschrieben werden. (Diese Spra-che wird in Definition A.2.4 im Anhang definiert.)

(c) In Beispiel 3.1.12 sollten die beiden Produktionen

S → ε | 0S1

die Sprache {0n1n | n ≥ 0} beschreiben.

Wir erinnern uns weiter an den Ableitungs-Kalkul. (Siehe Definition 3.1.3(c).) Wenn

α = Y1 · · ·Ys A Z1 · · ·Zt

(mit Y1, . . . , Ys, Z1, . . . , Zt ∈ V ∪ Σ), und A → X1 · · ·Xr eine Produktion in P ist, dannkann man aus α in einem Schritt

α′ = Y1 · · ·Ys X1 · · ·Xr Z1 · · ·Zt

ableiten ; man schreibt α⇒ α′.

Dann betrachtet man Ketten von Ableitungsschritten und schreibt α∗⇒ α′, wenn es eine

Folgeα = α0 ⇒ α1 ⇒ · · · ⇒ αt , t ≥ 0 ,

von Ableitungsschritten gibt. Die Worter α ∈ (V ∪ Σ)∗, die man auf diese Weise aus Serzeugen kann, heißen Satzformen in G. D. h.:

α ∈ (V ∪ Σ)∗ ist Satzform in G⇔ es existiert eine Folge S = α0 ⇒ α1 ⇒ · · · ⇒ αt = α, mit t ≥ 0.

Satzformen in Beispiel 3.1.1 sind z. B. die”Zwischenworter“, die in der in diesem Beispiel

angegebenen Ableitung auftreten, also

〈expr〉 , 〈term〉 , 〈term〉 / 〈factor〉 , 〈term〉 / (〈expr〉) , 〈term〉 / (〈expr〉 - 〈term〉) ,〈factor〉 / (〈expr〉 - 〈term〉) , num / (〈expr〉 - 〈term〉)

und so weiter. Keine Satzformen sind

(〈expr〉 / 〈expr〉)(〈term〉 / 〈expr〉) und -〈term〉 .

In Beispiel 3.1.11 sind z. B. die folgenden Worter Satzformen (prufen!):

S , 0S1 , 01 , SS , 0S1S , 01S , 01SS , 01S0S1 ,

010S1S , 0101S , 0101 , 01S01 , 0100S110S1 , 0100110S1 , 01001101 .

106

Page 7: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Keine Satzformen sind1S0 , S0S , 0S0S1,

und so weiter.

Sehr nutzlich fur den Nachweis, dass etwas keine Satzform ist, ist der Umstand, dass mandas Konzept der Satzformen auch als induktive Definition fassen kann, vgl. Anhang A.2:

(i) S ist Satzform in G;(ii) wenn α = Y1 · · ·YsAZ1 · · ·Zt Satzform in G ist und A → X1 · · ·Xr eine Pro-duktion in P ,dann ist auch α′ = Y1 · · ·YsX1 · · ·Xr Z1 · · ·Zt eine Satzform in G.(iii) Nichts sonst ist Satzform in G.

Die Aquivalenz der beiden Formulierungen ist nicht schwer nachzuweisen. (Der Leser isteingeladen, dies als Ubung zu beweisen.) Wir benutzen diejenige der beiden Formulierun-gen, die bequemer ist.

”Induktion uber den Aufbau von Satzformen“ ist oft hilfreich, um

nachzuweisen, dass alle Satzformen eine bestimmte Eigenschaft haben. In Beispiel 3.1.1kann man z. B. mit einer solchen Induktion leicht zeigen, dass keine Satzform mit

”-“

beginnt. Daher kann - 〈term〉 keine Satzform sein. Mit derselben Methode kann man be-weisen, dass in keiner Satzform eines der Worter )〈expr〉 , )〈term〉 , )〈factor〉 oder )( alsTeilwort vorkommen kann. Daher kann (〈expr〉 / 〈expr〉)(〈term〉 / 〈expr〉) keine Satzformsein.

Unter den Satzformen zu einer Grammatik G interessieren uns besonders diejenigen, diekeine Variable enthalten. In Beispiel 3.1.11 sind dies z. B. 01, 0101 und 01001101. DieMenge

L(G) = {w ∈ Σ∗ | w ist Satzform von G}ist die von G erzeugte Sprache. Also:

w ist in L(G) ⇔w ∈ Σ∗ und es gibt eine Ableitung S = α0 ⇒ α1 ⇒ · · · ⇒ αt = w.

Achtung: Wenn die Grammatik G mehr als eine Variable benutzt, hat die Menge L(G)normalerweise keine einfache induktive Definition.

4.1.1 Beispiel Sei G = (V,Σ, S, P ), wo V = {S},Σ = {0, 1}, undP enthalt die Produktionen S → 0S0, S → 1S1, S → 0, S → 1, S → ε, oder kurzer:

S → 0S0 | 1S1 | 0 | 1 | ε.

107

Page 8: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Ableitungen in der Grammatik G sehen beispielsweise so aus:

S ⇒ ε ; S ⇒ 0S0⇒ 01S10⇒ 01110 ; S ⇒ 1S1⇒ 11S11⇒ 110S011⇒ 110011 .

4.1.2 Proposition Fur die Grammatik G aus Beispiel 4.1.1 gilt

L(G) = {w ∈ {0, 1}∗ | w = wR}.

D. h.: L(G) ist die Sprache der Spiegelworter (”Palindrome“) uber {0, 1}.

Ein Palindrom sieht von vorne und hinten gelesen gleich aus. Palindrome uber dem 26-buchstabigen lateinischen Alphabet sind zum Beispiel

ara, elle, hannah, reliefpfeiler, sinnlosolnnis, ε .

(Wie sieht eine kontextfreie Grammatik fur die Menge der Palindrome uber {a, . . . , z}aus? Wie die fur die Palindrome uber einem beliebigen vorgegebenen Alphabet Σ?)

Beweis von Proposition 4.1.2:

(Dieser Beweis ist als (Ubungs-)Beispiel dafur zu verstehen, wie man das intuitiv Nahe-liegende formal exakt fassen kann.)

”⊆“: (Typisch: Durch Induktion uber den Aufbau der Satzformen beweist man eine Eigen-

schaft aller Satzformen. Diese wird dann benutzt, um eine Eigenschaft aller ableitbarenWorter w ∈ Σ∗ zu zeigen.)

Behauptung : Ist α eine Satzform in G, so gilt entweder

(I) α = wSwR fur ein w ∈ Σ∗ oder

(II) α = w ∈ Σ∗ mit w = wR.

(Aus dieser Behauptung folgt sofort, dass jedes in G ableitbare Wort w ∈ Σ∗ die Eigen-schaft w = wR hat.)

I.A.: α = S: S = εSεR, also Format (I).

I.V.: Die Behauptung gilt fur α.

I.S.: Sei α′ aus der Satzform α durch einen Ableitungsschritt gewonnen. Dann muss αmindestens eine Variable enthalten, also gilt nach der I.V.: α = wSwR fur ein w ∈ Σ∗.Nun gibt es drei Falle.

1. Fall : Es wird die Produktion S → ε angewendet, um von α nach α′ zu kommen. Dannist α′ = wwR, und es gilt (wwR)R = (wR)RwR = wwR. Also gilt (II) fur α′.

108

Page 9: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

2. Fall : Es wird eine Produktion S → a, a ∈ {0, 1} angewendet, um von α nach α′ zukommen. Dann ist α′ = wawR, und es gilt (wawR)R = (wR)RaRwR = wawR. Also gilt(II) fur α′.

3. Fall : Es wird eine Produktion S → aSa, a ∈ {0, 1}, angewendet, um von α nach α′ zukommen. Dann ist α′ = waSawR, und es gilt (waSawR)R = (wR)RaSawR = waSawR.Also gilt (I) fur α′.

In jedem Fall hat auch α′ Format (I) oder (II).

”⊇“: (Typisch: Durch Induktion uber die Wortlange zeigt man, dass gewisse Worter uber

Σ Satzformen darstellen, also in L(G) liegen.)

Durch Induktion uber die Wortlange |w| zeigen wir:

(+) Ist w = wR, so ist w ∈ L(G), fur alle w ∈ Σ∗.

I.A.: w = ε, 0, oder 1. Dann gilt w ∈ L(G), weil S ⇒ ε, S ⇒ 0, S ⇒ 1 Ableitungen sind.

I.V.: k ≥ 2, und fur alle w′ mit |w′| < k gilt (+).

I.S.: Sei w ein Palindrom mit |w| = k. Weil |w| ≥ 2, ist w = aw′a fur ein a ∈ {0, 1} undein w′ ∈ Σ∗. Offenbar gilt w′ = (w′)R und |w′| < k. Nach I.V. ist also w′ eine Satzform inG. Das heißt: Es existiert eine Ableitung

S ⇒ α1 ⇒ · · · ⇒ αr ⇒ w′

fur w′, mit r ≥ 0. Damit ist

S ⇒ aSa⇒ aα1a⇒ · · · ⇒ aαra = aw′a

Ableitung fur aw′a, also w = aw′a ∈ L(G).

Damit ist Proposition 4.1.2 bewiesen. �

Wir bemerken, dass nach einer Ubungsaufgabe die Sprache {w ∈ Σ∗ | w = wR} nichtregular ist. Also sehen wir hier nochmals, dass L3 6= L2 ist.

Nun wollen wir mit derselben Methode nachweisen, dass die Grammatik G = (V,Σ, S, P )aus Beispiel 3.1.11, mit V = {S},Σ = {0, 1}, und Produktionen S → ε | SS | 0S1, dieMenge kKA der korrekten Klammerausdrucke erzeugt, siehe Definition A.2.4.

Als Vorbereitung notieren wir eine nichtrekursive Charakterisierung der Elemente vonkKA: Ein 0-1-Wort w ist ein korrekter Klammerausdruck genau dann wenn w ebensoviele Nullen wie Einsen hat und wenn beim Lesen von w von links nach rechts es niemalsvorkommt, dass man mehr Einsen als Nullen gesehen hat. Formal:

4.1.3 Proposition Ein Wort w ∈ {0, 1}∗ ist in kKA genau dann wenn

(∗) |w|0 = |w|1 und fur jedes Prafix u von w gilt |u|0 ≥ |u|1.

109

Page 10: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis : Siehe Satze A.2.5, A.2.6, A.2.7 in Anhang A.2. �

4.1.4 Proposition Fur die Grammatik G aus Beispiel 3.1.11 gilt:

kKA = L(G).

Beweis :”⊆“: Wir zeigen durch Induktion uber die Struktur von kKA, dass alle Elemente

w von kKA in L(G) sind, d. h., eine Ableitung haben.

(i) Ist w = ε, so ist S ⇒ ε eine Ableitung von w. Also ist w ∈ L(G).

(ii) Ist w = 0u1v, mit u, v ∈ kKA, so gibt es nach I.V. Ableitungen

S = α0 ⇒ · · · ⇒ αt = u , , S = β0 ⇒ · · · ⇒ βs = v.

Diese konnen wir mit den Anfangsschritten S ⇒ SS ⇒ 0S1S kombinieren, um eineAbleitung

S ⇒ SS ⇒ 0S1S = 0α01β0 ⇒ · · · ⇒ 0αt1β0 ⇒ · · · ⇒ 0αt1βs = 0u1v = w

fur w zu erhalten. Also ist w ∈ L(G).

(Ubung: Man benutze diese Strategie, um fur das Wort 010010101011 eine Ableitung inG zu finden.)

”⊇“: Wir beweisen die folgende Hilfsbehauptung (HB) uber Satzformen α in G:

(HBα) |α|0 = |α|1 und jedes Prafix γ von α erfullt |γ|0 ≥ |γ|1.

Der Beweis erfolgt durch Induktion uber den Aufbau von Satzformen.

I.A.: Wenn α = S, so ist (HBα) erfullt, weil S keine Nullen oder Einsen enthalt.

I.V.: α = β S ζ erfullt (HBα).

I.S.: Betrachte die Satzformen, die aus α in einem Schritt erzeugt werden konnen, indemman auf das S zwischen β und ζ eine Produktion anwendet. Es gibt zwei Falle:

1. Fall : α′ = β SS ζ. (HBα′) folgt unmittelbar aus (HBα), da sich an der Verteilung vonNullen und Einsen nichts andert.

2. Fall : α′ = β 0S1 ζ. Hier erhoht sich die Gesamtzahl von Nullen und Einsen um jeweils1, also folgt |α′|0 = |α′|1 aus der I.V. Nun betrachten wir Prafixe: Fur ein Prafix γ′ vonα′ gibt es verschiedene Moglichkeiten. Wenn γ′ Prafix von β ist, besagt die I.V. direkt,dass |γ′|0 ≥ |γ′|1. Weil nach I.V. |β|0 ≥ |β|1, folgt auch |β0|0 ≥ |β0|1, |β0S|0 ≥ |β0S|1und |β0S1|0 ≥ |β0S1|1. Schließlich konnte γ′ = β0S1ζ ′ fur ein Prafix ζ ′ von ζ sein. Dannliefert die I.V., dass |βζ ′|0 ≥ |βζ ′|1 gilt; daraus folgt sofort |β0S1ζ ′|0 ≥ |β0S1ζ ′|1, weilsich auf beiden Seiten die Anzahl der Nullen und Einsen um 1 erhoht.

Nach dem Prinzip der Induktion uber den Aufbau von der Satzformen in G folgt, dass(HBα) fur alle Satzformen in G gilt. Da jedes Wort w ∈ L(G) (auch) Satzform ist, erfulltjedes w ∈ L(G) Bedingung (∗) in Proposition 4.1.3, ist also in kKA. �

110

Page 11: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

4.2 Ableitungsbaume, Linksableitungen, Rechtsablei-

tungen

Wir haben bislang Ableitungen als Folgen S ⇒ α1 ⇒ · · · ⇒ αr in (V ∪ Σ)∗ dargestellt.Im Fall der kontextfreien Grammatiken bietet es sich jedoch an, Ableitungen als Baumedarzustellen. Diese

”Syntaxbaume“ oder

”Ableitungsbaume“ sind wichtiges Hilfmittel

und Zwischenergebnis bei der Analyse von Programmtexten durch einen Compiler.

4.2.1 Beispiel Wir betrachten wieder die Grammatik G mit Produktionen

S → ε | SS | 0S1

aus Beispiel 3.1.11. Folgendes ist eine Ableitung in dieser Grammatik:

S ⇒ SS ⇒ SSS ⇒ S0S1S ⇒ S01S ⇒ 0S101S ⇒ 0S101S ⇒ 0101S ⇒ 0101 .

(In jedem Schritt haben wir die Kopie von S, auf die eine Produktion angewandt wird,

1

:6 T :

7

_S

_S

_S

_S

_S

_S

_S

T :2

T :

T

T0:

T :3

T :4

T :5

S

S S

S

S

S S

0 1

S

S

S

S

1

S0 1

ε

ε

0 1

ε

ε

0 1S

S

S S

S

S0 1

S0 1

ε

ε ε

S

S

S

S

S

S

S

S S

S

S0 1

S

S

S S

S0

Abbildung 4.1: Schrittweiser Aufbau eines Ableitungsbaums

unterstrichen.) Aus einer solchen Ableitung α0 ⇒ · · · ⇒ αt bauen wir schrittweise Baume

111

Page 12: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

T0, . . . , Tt, wie folgt. Baum T0 ist ein Knoten, der mit S beschriftet ist. Nach Abarbeitender Ableitungsschritte α0 ⇒ · · · ⇒ αs, s ≤ t, haben wir einen Baum Ts, an dessenBlattern, von links nach rechts gelesen, die Buchstaben der Satzform αs stehen. Im Schrittαs ⇒ αs+1 wird eine der Produktionen S → ε, S → SS, S → 0S1 auf eine der Variablenangewendet, die in einem Blatt steht. An dieses Blatt hangen wir einen, zwei oder drei neueKnoten, die mit ε oder den Buchstaben in der rechten Seite der benutzten Produktionbeschriftet werden. Wenn s = t, sind wir fertig, und Tt ist

”der Ableitungsbaum“ zu

α0 ⇒ · · · ⇒ αt. Aus der Beispielableitung ergibt sich die in Abb. 4.1 dargestellte Folgevon Ableitungsbaumen. Aus der Ableitung

S ⇒ SS ⇒ SSS ⇒ 0S1SS ⇒ 0S1S ⇒ 01S ⇒ 010S1⇒ 0101

fur dasselbe Terminalzeichenwort erhalten wir am Ende denselben Baum wie in Abb. 4.1.(Der Leser/die Leserin ist eingeladen, die entsprechende Folge aufzuzeichnen und sichzu uberzeugen, dass eigentlich dieselben Ableitungsschritte vorgenommen werden, nur ineiner anderen Reihenfolge.)

Dagegen ergibt die Ableitung

S ⇒ SS ⇒ SSS ⇒ SS ⇒ 0S1S ⇒ 01S ⇒ 010S1⇒ 0101 ,

die dasselbe Wort erzeugt, den in Abb. 4.2 dargestellten Baum, der eine andere Strukturhat.

S

S

ε

S0 1

S

ε

S

S0 1

ε

S

Abbildung 4.2: Ein zweiter Ableitungsbaum fur 0101

Als weiteres Beispiel betrachten wir Ableitungsbaume zur Grammatik aus Beispiel 3.1.1.In den Abbildungen haben wir die Knoten, die syntaktischen Variablen entsprechen, ein-fach durch den Namen der Variablen dargestellt; nur Terminalzeichen sind als Kreis dar-gestellt. Abbildung 4.3 zeigt einen Ableitungsbaum fur das Wort

(num -num *num /num ) /num +num *num /num -num

112

Page 13: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

<factor>

num

+

num

/

*

num

)(

/

num

num

num

num

num

/

*

num

<expr>

<term>

<term>

<term>

<expr>

<expr>

<term>

<term>

<term> <expr>

<expr><term>

<term>

<term>

<term>

<factor>

<factor>

<factor>

<factor>

<factor>

<factor>

<factor>

<factor>

<factor>

Abbildung 4.3: Ableitungsbaum fur(num -num *num /num ) /num +num *num /num -num

Abbildung 4.4 einen fur num -num -num -num *num. In Abbildung 4.5 sieht maneinen Ableitungsbaum, in dem manche Blatter mit Variablen beschriftet sind, der alsoeine Satzform liefert und noch weiter ausgebaut werden konnte.

Wir definieren nun formal, was Ableitungsbaume sein sollen.

4.2.2 Definition Sei G = (V,Σ, S, P ) eine kontextfreie Grammatik.

(a) Ein Ableitungsbaum (auch: Syntaxbaum) T ist ein gerichteter, geordneter1 Baummit Wurzel, dessen Knoten mit je einem Buchstaben aus V ∪ Σ oder mit ε beschriftetsind, wobei folgendes gilt:

(I) Die Wurzel ist mit S beschriftet,

(II) Ist v ein Knoten, der mit a ∈ Σ oder mit ε beschriftet ist, so ist v ein Blatt, hat alsokeine Nachfolgerknoten.

1Ein Baum heißt geordnet, wenn die unmittelbaren Nachfolgerknoten eines Knotens eine Reihenfolge

”von links nach rechts“ haben.

113

Page 14: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

<factor>

num

<term>

<factor>

num

<term>

<factor>

num

<term>

<factor>

num

*

num

<expr>

<expr>

<expr>

<term>

<term>

<expr>

<factor>

Abbildung 4.4: Ableitungsbaum fur num -num -num -num *num

(III) Ist v ein Knoten, der mit A ∈ V beschriftet ist, und ist v kein Blatt, so gilt:

(i) die Nachfolgerknoten v1, . . . , vr von v sind mit X1, . . . , Xr ∈ Σ ∪ V beschriftet, undA→ X1 · · ·Xr ist Produktion in P

oder

(ii) v hat genau einen Nachfolger v′, der mit ε beschriftet ist, und A→ ε ist Produktionin P .

(b) Ist T ein Ableitungsbaum, so bezeichnen wir mit α(T ) das Wort uber V ∪Σ, das sichbeim Lesen der Blatter von T von links nach rechts ergibt.(Das Wort α(T ) heißt das

”Ergebnis“ oder

”Resultat“ von T (engl. yield), manchmal

auch das”Blattwort“ von T .)

In den Baumen in Abb. 4.1 sind die Worter α(T0), . . . , α(T7) einfach die Satzformen in derzugrunde liegenden Ableitung. Im Baum in Abb. 4.2 ist α(T ) = 0101. Bei der Bestimmungvon α(T ) werden ε’s naturlich einfach verschluckt. Im Extremfall sind alle Blatter von T

114

Page 15: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

<factor>

+

/

*

/

num

num

<expr>

<term>

<term>

<term>

<expr>

<term>

<term>

<term> <expr><factor>

<factor> <factor>

<factor>

Abbildung 4.5: Ableitungsbaum fur eine Satzform

mit ε beschriftet; dann ist α(T ) = ε. Ein Beispiel fur diese Situation ist fur die Grammatikaus Beispiel 4.2.1 in Abb. 4.6 angegeben.

S

ε

S

S S S

S S

ε ε

ε ε

S

S

Abbildung 4.6: Ein Ableitungsbaum fur ε

Wenn X ∈ V ∪ Σ beliebig ist, ist ein X-Ableitungsbaum genauso definiert wie inDefinition 4.2.2, außer dass man verlangt, dass die Beschriftung der Wurzel X ist. ZumBeispiel ist in Abb. 4.3 der linke Unterbaum der Wurzel ein 〈term〉-Ableitungsbaum T ′

mit Ergebnis α(T ′) = (num -num *num /num ) /num.

X-Ableitungsbaume werden schematisch so gezeichnet:

115

Page 16: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

X

α( )

T

T

Wir halten fest, dass Ableitungsbaume tatsachlich dasselbe leisten wie Ableitungsfolgen.

4.2.3 Lemma Sei G kontextfreie Grammatik. Dann sind fur X ∈ V ∪ Σ und α ∈(V ∪ Σ)∗ die folgenden beiden Aussagen aquivalent:

(i) X∗⇒ α;

(ii) α = α(T ) fur einen X-Ableitungsbaum T .

Insbesondere gilt: α ist Satzform von G genau dann wenn es einen (S-)AbleitungsbaumT mit α(T ) = α gibt; und

w ∈ L(G) ⇔ w ∈ Σ∗ und es gibt einen Ableitungsbaum T mit α(T ) = w.

Beweis”(i) ⇒ (ii)“: Sei X = α0 ⇒ · · · ⇒ αr = α Ableitung in G. Wir formulieren

die in 4.2.1 angewandte induktive Methode, aus einer Ableitung schrittweise einen Baumzu konstruieren, allgemein. Die Wurzel ist ein Knoten, der mit X = α0 beschriftet ist.Sei nun 0 ≤ s < r. Als Induktionsvoraussetzung nehmen wir an, wir hatten schon einenX-Ableitungsbaum Ts fur αs = X1 · · ·Xt, d. h. X1, . . . , Xt sind die von ε verschiedenenEintrage an den Blattern von Ts. Es gibt dann t′ ∈ {1, . . . , t} und Y1 · · ·Yu derart, dassXt′ → Y1 · · ·Yu eine Produktion ist und

αs = X1 · · ·Xt′ · · ·Xt ⇒ X1 · · ·Xt′−1Y1 · · ·YuXt′+1 · · ·Xt = αs+1

der nachste Ableitungsschritt ist. Der Knoten zu Xt′ in Ts erhalt u Nachfolgerknoten,die mit Y1, . . . , Yu beschriftet werden. Offenbar ist der resultierende Baum Ts+1 wiederein X-Ableitungsbaum, und α(Ts+1) = αs+1. Ist u = 0, erhalt der Knoten zu Xt′ einenNachfolger mit Markierung ε. Das Konstruktionsschema ist in Abb. 4.7 wiedergegeben.

116

Page 17: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

X

tXt’

Y Y1 u

Ts : Ts +1:X

X1 tXX t’ X1 X... ...

...

... ...

......

Abbildung 4.7: Konstruktion eines Ableitungsbaumes, ein Schritt

Nach r Schritten ergibt sich ein Baum Tr mit α(Tr) = αr = α.

”(ii) ⇒ (i)“: Es sei ein X-Ableitungsbaum T gegeben. Durch Induktion nach der Tiefe k

von T zeigen wir, dass X∗⇒ α(T ) gilt.

k = 0: Hat T nur einen Knoten, die Wurzel, so ist α(T ) = X, und X0⇒ X ist Ableitung.

k > 0: Ist T ein Baum, der nicht nur aus der Wurzel besteht, so muss die Wurzelbeschrif-tung X eine Variable A ∈ V sein. Falls die Wurzel nur einen, mit ε beschrifteten, Nachfol-ger besitzt, ist α(T ) = ε; dann muss aber A→ ε Produktion sein, also A⇒ ε Ableitung.Sonst hat die Wurzel r ≥ 1 Nachfolger v1, . . . , vr, die mit X1, . . . , Xr ∈ V ∪ Σ beschriftetsind. Der i-te Unterbaum Ti (mit Wurzel vi) ist Xi-Ableitungsbaum, fur 1 ≤ i ≤ r, jeweilsmit Tiefe kleiner als k. Nach Induktionsvoraussetzung gilt

Xi∗⇒ α(Ti) , fur 1 ≤ i ≤ r .

Durch Zusammensetzen dieser r Ableitungen erhalten wir die Ableitung

X ⇒ X1X2 · · ·Xr∗⇒ α(T1)X2 · · ·Xr

∗⇒ α(T1)α(T2)X3 · · ·Xr∗⇒ · · ·

∗⇒ α(T1) · · ·α(Tr) = α(T ) .

Beispiel: Wir wollen aus dem Baum

S

S0 1

S0 1

ε

S

S

ε

S0 1

S

ε

S

117

Page 18: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

zu der Grammatik aus 4.2.1 eine Ableitung bauen. Zuerst behandeln wir den linken Un-terbaum und finden (notfalls durch Anwenden derselben Prozedur auf diesen Unterbaum)die Ableitungsfolge

S ⇒ SS ⇒ S ⇒ 0S1⇒ 01.

Der rechte Unterbaum liefert die Ableitungsfolge

S ⇒ 0S1⇒ 00S11⇒ 0011.

Diese beiden Ableitungen werden”hintereinandergesetzt“ an den Startschritt S ⇒ SS

angefugt – mit der ersten Ableitung wird das erste”S“ bearbeitet, mit der zweiten das

zweite. Dies liefert:

S ⇒ SS ⇒ SSS ⇒ SS ⇒ 0S1S ⇒ 01S ⇒ 010S1⇒ 0100S11⇒ 010011.

Folgende Beobachtung ist fur spater wichtig: Ableitungsschritte, die zum rechten Unter-baum gehoren, werden erst durchgefuhrt, wenn der linke Unterbaum komplett abgearbei-tet ist. Dies fuhrt dazu, dass immer die am weitesten links stehende Variable bearbeitetwird.

Der Ableitungsbaum T enthalt vollstandige Information daruber, durch welche Ablei-tungsschritte die Satzform α(T ) abgeleitet wird, also auch noch jede Menge Strukturin-formation. Einzig von der Reihenfolge der Anwendung der Produktionen wird abgesehen.Deshalb heißen Ableitungsbaume auch Syntaxbaume oder Strukturbaume – sie geben uberdie

”Struktur“ oder den

”Satzbau“ des Wortes α(T ) bezuglich der Grammatik G Aus-

kunft. Diese Eindeutigkeit der verwendeten Produktionen ist bei Ableitungsfolgen nichtunbedingt gegeben; z. B. konnen zur Folge S ⇒ SS ⇒ SSS in der Grammatik vonBeispiel 4.2.1 die beiden verschiedenen Baume

SS

S

SS

SS

S

S

S

gehoren. Daher zieht man meist Ableitungsbaume als Darstellung fur Ableitungen vor.Oft ist es jedoch nutzlich, eindimensionale (zeigerfreie) Notationen fur Ableitungsbaumezu haben. Diesem Zweck dienen Linksableitungen (bzw. Rechtsableitungen).

4.2.4 Definition Eine Ableitung S = α0 ⇒ α1 ⇒ · · · ⇒ αr = w ∈ Σ∗

(NB: w besteht aus Terminalzeichen) ist eine Linksableitung , wenn fur 0 ≤ s < rbeim Ubergang von αs zu αs+1 auf die am weitesten links stehende Variable in αs eineProduktion angewendet wird.

Mit anderen Worten: In einer Linksableitung gilt fur jeden Ableitungsschritt

Y1 · · ·Ys A Z1 · · ·Zt ⇒ Y1 · · ·Ys X1 · · ·Xr Z1 · · ·Zt,

118

Page 19: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

dass Y1, . . . , Ys ∈ Σ sind.

Rechtsableitungen werden analog definiert: Produktionen werden immer auf die amweitesten rechts stehende Variable angewendet.

Beispiel: (Zu Grammatik aus Beispiel 4.2.1 )

S ⇒ SS ⇒ 0S1S ⇒ 00S11S ⇒ 0011S ⇒ 00110S1⇒ 001101

ist Linksableitung,

S ⇒ SS ⇒ S0S1⇒ S01⇒ 0S101⇒ 00S1101⇒ 001101

ist Rechtsableitung. Die Ableitung

S ⇒ SS ⇒ SSS ⇒ S0S1S ⇒ 0S1S ⇒ 0S10S1⇒ 010S1⇒ 0101

ist weder Links- noch Rechtsableitung.

Wenn man weiß, dass eine Ableitung eine Linksableitung (bzw. eine Rechtsableitung) ist,erubrigt es sich, in αs die Variable zu markieren, auf die eine Produktion angewendet wird– es ist immer die am weitesten links (bzw. rechts) stehende.

4.2.5 Proposition SeiG kontextfreie Grammatik, w ∈ Σ∗. Dann gilt: Ableitungsbaumeund Linksableitungen fur w entsprechen einander eineindeutig.

Die entsprechende Aussage gilt fur Ableitungsbaume und Rechtsableitungen.

Beispiel: Das Wort 010101 besitzt in der Grammatik aus 4.2.1 die beiden Linksableitungen

S ⇒ SS ⇒ 0S1S ⇒ 01S ⇒ 01SS ⇒ 010S1S ⇒ 0101S ⇒ 01010S1⇒ 010101,

S ⇒ SS ⇒ SSS ⇒ 0S1SS ⇒ 01SS ⇒ 010S1S ⇒ 0101S ⇒ 01010S1⇒ 010101,

entsprechend den beiden in Abb. 4.8 angegebenen Ableitungsbaumen. (Man suche dieentsprechenden Rechtsableitungen!)

S

S

S0 1

ε

S

S

S

S0 1

ε

S

S0 1

ε

S

S0 1

ε

S

S

S0 1

ε

S

S0 1

ε

Abbildung 4.8: Zwei verschiedene Ableitungsbaume fur das Wort 010101

119

Page 20: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis von Proposition 4.2.5: Sei w ∈ L(G) fest.

Wenn eine beliebige Linksableitung LA fur w ∈ Σ∗ gegeben ist, so konnen wir wie im Be-weisteil

”(i) ⇒ (ii)“ von Lemma 4.2.3 daraus einen Ableitungsbaum TLA fur w erzeugen.

Sind zwei verschiedene Linksableitungen LA1 und LA2 fur w gegeben, so fuhren diese zuzwei verschiedenen Ableitungsbaumen TLA1

und TLA2. (Man betrachte den ersten Ablei-

tungsschritt, in dem sich LA1 und LA2 unterscheiden. Dabei mussen auf dieselbe Variablean derselben Position verschiedene Produktionen angewendet werden; dies schlagt sichdirekt in einem Unterschied in den Syntaxbaumen nieder.) Die Abbildung Φ: LA 7→ TLA

ist also injektiv.

Wenn man nun einen beliebigen Ableitungsbaum T fur w gegeben hat, so liefert dieKonstruktion aus Lemma 4.2.3

”(ii) ⇒ (i)“ eine Linksableitung LA(T ) fur w, und es gilt

TLA(T ) = T . Damit ist die Abbildung Φ auch surjektiv; sie stellt also eine Bijektion dar.�

Um diesen Beweis zu illustrieren, wende man die Konstruktionen aus 4.2.3 auf das nachBemerkung 4.2.5 angegebene Beispiel an.

4.2.6 Definition (a) Eine kontextfreie Grammatik G heißt mehrdeutig , wenn es einWort w ∈ L(G) gibt, das (mindestens) zwei verschiedene Ableitungsbaume besitzt. Sieheißt eindeutig , wenn jedes Wort w ∈ L(G) genau einen Ableitungsbaum besitzt.

(b) Eine Sprache L ∈ L2 heißt inharent mehrdeutig , wenn jede kontextfreie GrammatikG mit L = L(G) mehrdeutig ist.

Es ist fur die Syntaxanalyse (Konstruktion eines Ableitungs- oder Syntaxbaumes zueinem vorgelegten Wort w ∈ L(G)), wie sie z. B. in Compilern geleistet wird, sehr wich-tig, dass jedes Wort w ∈ L(G) nur einen Syntaxbaum, also auch nur eine Linksableitungbesitzt. Beim Entwurf von Programmiersprachen ist es also wichtig, eine eindeutige Gram-matik fur die Sprache zu haben. Insbesondere ist es ungunstig, wenn die Programmier-sprache selbst inharent mehrdeutig ist.

4.2.7 Beispiel (a) Die Grammatik aus Beispiel 4.2.1 fur kKA ist mehrdeutig, wie wiran den in Abb. 4.1 und 4.2 dargestellten verschiedenen Ableitungsbaumen fur das Wort0101 erkennen konnen. Dennoch ist die Sprache kKA nicht inharent mehrdeutig, da sieauch eine eindeutige Grammatik besitzt.

Wir behaupten namlich, und beweisen gleich, dass folgendes eine eindeutige Grammatikfur die Sprache kKA ist: G = ({S}, {0, 1}, S, P ), wo P die Produktionen S → ε , S →0S1S enthalt. (Man baue Ableitungsbaume in dieser Grammatik fur einige Worter w ∈kKA!)

(b) Ohne Beweis bemerken wir, dass die Sprache

L := {anbncm | n,m ∈ N} ∪ {ambncn | n,m ∈ N}

120

Page 21: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

eine inharent mehrdeutige kontextfreie Sprache ist. Die Aussage L ∈ L2 ist dabei nichtschwer zu zeigen. Folgendes ist eine naheliegende Grammatik fur L:

G = ({S,A,B}, {a, b, c}, S, P ),wobei P die folgenden Produktionen enthalt:

S → AD | ECA → aA | εD → bDc | εC → cC | εE → aEb | ε .

Zum Beispiel gibt es fur das Wort aabbcc die beiden folgenden verschiedenen Linksablei-tungen, anhand derer man auch die Idee hinter der Grammatik studieren kann:

S ⇒ AD ⇒ aAD ⇒ aaAD ⇒ aaD ⇒ aabDc⇒ aabbDcc⇒ aabbcc ;

S ⇒ EC ⇒ aEbC ⇒ aaEbbC ⇒ aabbC ⇒ aabbcC ⇒ aabbccC ⇒ aabbcc .

Der Nachweis der inharenten Mehrdeutigkeit ist aufwendiger und wird hier ausgelassen.Intuitiv benotigt jede Grammatik G′ mit L(G′) = L fur die beiden Teile der Spracheunabhangige

”Abteilungen“; die Worter anbncn fur große n mussen Ableitungen in beiden

”Abteilungen“ besitzen, die dann notwendig verschieden sind.

4.2.8 Proposition Es sei G = ({S}, {0, 1}, S, P ) mit P = {S → ε, S → 0S1S}. Danngilt:

(a) L(G) = kKA,

(b) G ist eindeutig.

Beweis : (a)

”⊆“: Durch Induktion uber die Lange t einer Ableitungsfolge

S = α0 ⇒ α1 ⇒ · · · ⇒ αt

beweist man, dass jede Satzform in der Grammatik G die Hilfsbehauptung (HBα) aus demBeweis von Prop. 4.1.4 erfullt. Das geht praktisch genau so wie dort vorgefuhrt. Darausfolgt dann, dass jedes w ∈ L(G) die Eigenschaft (∗) aus Prop. 4.1.3 hat, also ein korrekterKlammerausdruck ist.

”⊇“: Wir beweisen durch Induktion uber den Aufbau von korrekten Klammerausdrucken,

dass jeder korrekte Klammerausdruck w eine Ableitung in G besitzt.

I.A.: Wenn w = ε, ist S ⇒ ε eine Ableitung.I.S.: Nun sei w 6= ε ein korrekter Klammerausdruck. Nach der Definition ist w = 0w′1w′′

121

Page 22: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

fur korrekte Klammerausdrucke w′ und w′′. Nach I.V. gibt es Ableitungsfolgen S∗⇒ w′

und S∗⇒ w′′. Wenn wir diese Folgen mit dem Ableitungsschritt S ⇒ 0S1S kombinieren,

erhalten wir eine Ableitung

S ⇒ 0S1S∗⇒ 0w′1S

∗⇒ 0w′1w′′ = w,

wie gewunscht.

(b) Wir zeigen durch Induktion uber |w|, dass jedes Wort w ∈ L(G) genau eine Links-ableitung hat.

I.A.: Wenn w = ε, ist S ⇒ ε die einzige Ableitung fur w.I.V.: Es sei k ≥ 1, und fur jedes w′ ∈ L(G) gebe es genau eine Linksableitung. I.S.: Nunsei w ∈ L(G), w 6= ε, mit einer Linksableitung

S = α0 ⇒ 0S1S = α1 ⇒ · · · ⇒ αt = 0w′1w′′ = w.

Man denkt sich die 0 und die 1 in α1 = 0S1S permanent markiert (unterstrichen). Die-se Terminalzeichen werden ja nach dem ersten Ableitungsschritt nie mehr verandert.Da wir es mit einer Linksableitung von w zu tun haben, werden in einem ersten Teilα0 ⇒ · · · ⇒ αs der Ableitung Produktionen nur auf Variable zwischen 0 und 1 angewen-det, und αs = 0w′1S. Da man aus S nur Worter in L(G) erzeugen kann, ist w′ ∈ L(G)und der Teil der Ableitung α1 ⇒ · · · ⇒ αs, der sich zwischen 0 und 1 abspielt, bil-det eine Linksableitung fur w′. Nun ist |w′| < |w|, und daher ist nach der I.V. dieseAbleitung eindeutig bestimmt; daher sind α1, . . . , αs eindeutig bestimmt. Genauso argu-mentiert man, dass sich im zweiten Teil der Ableitung αs ⇒ · · · ⇒ αt im Teil rechts von1 eine Linksableitung fur das Wort w′′ abspielen muss. Wieder wegen der Eindeutigkeitdieser Linksableitung (nach I.V.) kann es auch nur eine Moglichkeit fur diesen zweitenTeil der Ableitung geben. Schließlich bemerkt man, dass 0w′1 das kurzeste Prafix von wist, das gleich viele Nullen wie Einsen enthalt. Damit sind die Teilworter w′ und w′′ durchw, nicht durch die spezielle Ableitung α0 ⇒ 0S1S ⇒ · · · ⇒ αt = w, festgelegt. Also kannes fur w nur diese eine Linksableitung geben; das ist die Induktionsbehauptung. �

Wir bemerken noch (ohne formalen Beweis), dass die Grammatik fur arithmetische Aus-drucke aus Beispiel 3.1.1 eindeutig ist. In den Ubungen wird eine mehrdeutige Grammatikfur klammerfreie arithmetische Ausdrucke besprochen.

4.3 Die Chomsky-Normalform

Sowohl fur theoretische Zwecke als auch fur praktische Anwendungen ist es gunstig, kon-textfreie Grammatiken zu haben, deren Produktionen noch engere Anforderungen erfullenals die bloße Kontextfreiheit. In diesem Abschnitt geben wir eine solche Normalform anund besprechen einen Konstruktionsalgorithmus dafur. Anwendungen werden in spaterenAbschnitten angegeben.

122

Page 23: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

4.3.1 Definition Eine kontextfreie Grammatik G = (V,Σ, S, P ) ist in Chomsky-Normalform, falls

• entweder alle Produktionen von G die Form

A→ BC (A,B,C ∈ V ) oder A→ a (A ∈ V, a ∈ Σ)

haben

• oder alle Produktionen von G die Form

A→ BC oder A→ a oder S → ε

haben, und S nie auf der rechten Seite einer Produktion vorkommt.

4.3.2 Beispiel (a) Die Grammatik G = (V,Σ, S, P ) mit V = {S,R,A,B, F,H},Σ = {0, 1}, Startsymbol S und Produktionen

S → ε | AFR → AF

F → BR | RH | 1H → BR | 1A → 0

B → 1

erfullt die Anforderungen der Definition. Die Produktion S → ε kommt vor; S kommtnicht auf der rechten Seite irgendeiner Produktion vor.

Die einzige Moglichkeit, das Wort ε zu erzeugen, ist mit der 1-Schritt-Ableitung S ⇒ ε.An der Beispiel-Linksableitung

S ⇒ AF ⇒ 0F ⇒ 0RH ⇒ 0AFH ⇒ 00FH ⇒ 00BRH ⇒ 001RH ⇒ 001AFH ⇒0010FH ⇒ 00101H ⇒ 00101BR⇒ 001011R⇒ 001011AF ⇒ 0010110F ⇒ 00101101

fur ein Wort 6= ε erkennt man, dass in jedem Ableitungsschritt entweder die Zahl derZeichen um 1 steigt oder eine Variable in ein Terminalzeichen umgewandelt wird. Daraussieht man sofort, auch allgemein, dass die Zahl der Ableitungsschritte in einer Grammatikin Chomsky-Normalform fur ein Wort w mit n Buchstaben genau 2n − 1 betragt. EineSatzform besteht immer aus 0 oder mehr Terminalzeichen, gefolgt von 0 oder mehr Varia-blen. Der Ableitungsbaum, der der Beispiel-Linksableitung entspricht, sieht folgenderma-ßen aus: Wieder erkennt man schon am Beispiel, dass Ableitungsbaume fur n-buchstabigeWorter genau n Blatter haben, die mit Terminalzeichen beschriftet sind, und dass derTeil des Baums, dessen Knoten mit Variablen beschriftet sind, einen

”vollen“ Binarbaum

123

Page 24: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

1

0

0

0 1

1

0

1

F

A

A

B

A F

A F

R

R

S

B R

H

F

Abbildung 4.9: Ein Ableitungsbaum zu einer Grammatik in Chomsky-Normalform

mit n Blattern darstellt.2 Man weiß, dass solche Baume 2n− 1 Knoten haben (die genauden Ableitungsschritten entsprechen).

Wie im Beispiel gilt allgemein, dass Ableitungen und Ableitungsbaume in Grammatikenin Chomsky-Normalform sehr stark standardisiert und ubersichtlich sind.

(b) Die Grammatik G = (V,Σ, S, P ) mit V = {S,A,B, F,H}, Σ = {0, 1}, Startsymbol Sund Produktionen

S → AF

F → BS | SH | 1H → BS | 1A → 0

B → 1

erfullt ebenfalls die Anforderungen der Definition. Die Startvariable erscheint auf derrechten Seite von Produktionen, aber es gibt uberhaupt keine ε-Produktion.

2Ein Binarbaum heißt”voll“, wenn jeder Knoten, der kein Blatt ist, genau zwei Nachfolger hat.

124

Page 25: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Der Leser/die Leserin ist eingeladen, einige Ableitungen und Ableitungsbaume fur dieseGrammatik zu entwickeln und zu spekulieren, welche Sprache zu G gehort.

4.3.3 Definition Zwei Grammatiken G und G′ heißen aquivalent , wenn L(G) =L(G′) gilt.

Am Ende dieses Abschnitts werden wir folgenden Satz bewiesen haben:

4.3.4 Satz Jede kontextfreie Grammatik G kann in eine aquivalente Grammatik G′ inChomsky-Normalform umgebaut werden.

Hierfur gehen wir in vier Schritten vor:

1. Separieren der Terminalzeichen-Produktionen

2. Verkurzen der rechten Seiten

3. Elimination der ε-Produktionen A→ ε

4. Elimination von Kettenregeln A→ B

4.3.1 Separierung

Zunachst wollen wir Produktionen, die Terminalzeichen erzeugen, von solchen trennen,die Variable erzeugen. Es soll also niemals auf einer rechten Seite eine Mischung von Ter-minalzeichen und Variablen stehen; zudem sollen niemals Blocke von mehreren Terminal-zeichen erzeugt werden. Es gibt keinen Grund, sich fur diese Uberlegung auf kontextfreieGrammatiken zu beschranken.

4.3.5 Definition Eine Grammatik G = (V,Σ, S, P ) (im Sinn von Definition 3.1.2)heißt separiert , wenn Terminalzeichen nur in Produktionen der Form

A→ a (A ∈ V , a ∈ Σ)

vorkommen. (Alle anderen Produktionen haben die Form

X1 · · ·Xs → Y1 · · ·Yt,

mit s ≥ 1, t ≥ 0, X1, . . . , Xs, Y1, . . . , Yt Variable.)

4.3.6 Lemma Jede Grammatik G = (V,Σ, S, P ) kann in eine aquivalente separierteGrammatik G′ = (V ′,Σ, S, P ′) umgebaut werden.

125

Page 26: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis : Fur jedes a ∈ Σ wird eine neue Variable Da eingefuhrt. In allen Produktionen inP wird auf der linken und auf der rechten Seite a durch Da ersetzt. Weiterhin werden neueRegeln Da → a, fur a ∈ Σ, hinzugefugt. Offenbar gilt fur die resultierende Grammatik

G′ := (V ∪ {Da | a ∈ Σ},Σ, S, P ′),

dass L(G) = L(G′). �

4.3.7 Beispiel Wenn man die angegebene Konstruktion auf G = ({S}, {0, 1}, S, P )mit P = {S → ε | 0S1S} anwendet, braucht man zwei neue Variable, etwa A (als D0)und B (als D1). Die Produktionen der neuen Grammatik G′ sind dann:

S → ε | ASBSA → 0

B → 1

4.3.8 Beispiel Weiter wenden wir die Konstruktion aus Lemma 4.3.6 auf die Gram-matik aus Beispiel 3.1.1 an, die die folgenden Produktionen hat:

〈factor〉 → num | (〈expr〉)〈term〉 → 〈term〉 * 〈factor〉

| 〈term〉 / 〈factor〉| 〈factor〉

〈expr〉 → 〈expr〉 + 〈term〉| 〈expr〉 - 〈term〉| 〈term〉

Wir fuhren fur jedes Terminalzeichen eine neue Variable und eine Produktion ein, zumBeispiel wie folgt:

〈num〉 → num

〈likla〉 → (

〈rekla〉 → )

〈plus〉 → +

〈minus〉 → -

〈times〉 → *

〈over〉 → /

126

Page 27: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Die alten Produktionen sehen nach der Anderung wie folgt aus:

〈factor〉 → 〈num〉 | 〈likla〉〈expr〉〈rekla〉〈term〉 → 〈term〉 〈times〉 〈factor〉

| 〈term〉 〈over〉 〈factor〉| 〈factor〉

〈expr〉 → 〈expr〉 〈plus〉 〈term〉| 〈expr〉 〈minus〉 〈term〉| 〈term〉

4.3.2 Verkurzung rechter Seiten

Als nachsten Schritt mochten wir erreichen, dass unsere Grammatiken keine Produktionenmehr haben, bei denen auf der rechten Seite mehr als zwei Variable stehen. Das ist ganzleicht.

4.3.9 Lemma Jede separierte kontextfreie Grammatik G = (V,Σ, S, P ) kann in eineaquivalente separierte kontextfreie Grammatik G′ = (V ′,Σ, S, P ′) umgebaut werden, dienur noch Produktionen der folgenden Form hat:

• A→ ε,

• A→ a, mit A ∈ V , a ∈ Σ,

• A→ B, mit A,B ∈ V ,

• A→ BC, mit A,B,C ∈ V .

Beweis : Wir bearbeiten jede Produktion

A→ C1C2 · · · Cr

in P mit r ≥ 3 separat. Es werden r − 2 neue Variable Y2, . . . , Yr−1 (die nur fur dieseProduktion verwendet werden) zu V hinzugenommen; die folgenden Produktionen werdenzu P hinzugefugt:

A → C1 Y2

Y2 → C2 Y3

...

Yr−1 → Cr−1Cr.

Schließlich wird die Produktion A → C1C2 · · · Cr gestrichen. Die neue Variablenmengeheißt V ′; die neue Produktionenmenge P ′.

127

Page 28: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Es ist offensichtlich, dass in der neuen Grammatik G′ gilt:

A⇒ C1 Y2 ⇒ C1C2 Y3 ⇒ · · · ⇒ C1C2 · · · Yr−1 ⇒ C1C2 · · · Cr−1Cr.

Daher sind in G′ mindestens alle Worter von L(G) ableitbar. Umgekehrt kann man sichuberlegen, dass die neuen Variablen zu nichts anderem verwendet werden konnen, als ineiner Teilableitung oder in einem Teil des Ableitungsbaums A in C1 · · ·Cr zu transformie-ren. In der Notation der Ableitungsbaume sieht die Ubersetzung so aus: ersetze

A

1C

α 1

Cr

A

D2

r-1C Cr

Dr-1

1C

C2

...

...α r α 1

α

α α

2

r-1 r

durch

und umgekehrt. �

4.3.10 Beispiel Wenn wir mit der separierten Grammatik G = ({S,A,B}, {0, 1}, S, P )aus Beispiel 4.3.7 beginnen, die die Produktionen

S → ε | ASBSA → 0

B → 1

hat, benotigen wir zwei neue Variable, etwa F und H, und die neuen Produktionen

S → AF

F → SH

H → BS .

Die Produktion S → ASBS wird gestrichen.

128

Page 29: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

4.3.3 Bearbeitung von ε-Produktionen

Der erste ernsthafte Schritt in der Konstruktion der Chomsky-Normalform ist die Elimi-nation der ε-Regeln aus der Grammatik.

Hier gehen wir in zwei Teilschritten vor: Zunachst losen wir (fur eine beliebige kontextfreieGrammatik G) das Problem herauszufinden, aus welchen Variablen man das leere Wortableiten kann: wir bestimmen die Menge

Vε = {A ∈ V | A ∗⇒ ε} .

In einem zweiten Schritt bauen wir eine separierte GrammatikGmit kurzen rechten Seitenzu einer Grammatik G′ fur L(G)−{ε} um, so dass in G′ uberhaupt keine ε-Produktionenvorkommen.

Teilschritt 1: Ermittlung von Vε. Dies geschieht mit einem Markierungsalgorithmus.Eingabe ist eine kontextfreie Grammatik G = (V,Σ, S, P ).

Markierungsalgorithmus fur Vε

Auszufuhren auf einer Tabelle aller Produktionen in P

Runde 0: Markiere alle (Vorkommen von) A, wo A→ ε Produktion

Runde t: (t = 1, 2, . . .)

Wenn A→ C1C2 · · ·Cr Produktion, r ≥ 1, und C1, . . . , Cr sind alle markiert und A istunmarkiert

dann markiere (alle Vorkommen von) A .

Ausgabe: Menge der markierten Variablen .

4.3.11 Beispiel Die Liste der Produktionen konnte wie folgt aussehen:

S → BB

S → ABC

A → aA

A → a

B → bB

B → ε

C → SBT

T → A

T → BT

T → B

In Runde 0 wird B markiert (unterstrichen), und zwar alle neun Exemplare, die vor-kommen. In den Runden 1, 2 und 3 folgen S, T und C. Schließlich sieht die Tabelle so

129

Page 30: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

aus:

S → BB

S → ABC

A → aA

A → a

B → bB

B → ε

C → SBT

T → A

T → BT

T → B

Die Variable A kann nicht markiert werden, was der intuitiven Beobachtung entspricht,dass aus A das leere Wort nicht ableitbar ist. Fur diese Grammatik ergibt sich also Vε ={B,S, T, C}.

4.3.12 Proposition Fur das Resultat des Markierungsalgorithmus gilt:

(a) A wird markiert ⇔ A∗⇒ ε.

(b) A wird markiert ⇔ es gibt einen A-Ableitungsbaum T mit α(T ) = ε.

(c) ε ∈ L(G) ⇔ S wird markiert.

Beweis : Nach Lemma 4.2.3 sind (a) und (b) aquivalent. Weiter ist es klar, dass (c) aus(a) folgt. Es genugt also, (b) zu beweisen.

(b)”⇒“: Man zeigt durch eine einfache Induktion uber Markierungsschritte, dass es zu

jeder markierten Variablen A einen A-Ableitungsbaum TA,ε mit α(TA,ε) = ε gibt.

I.A.: Wenn A in Runde 0 markiert wird, gibt es die Produktion A → ε und daher denA-Ableitungsbaum

A

ε

I.S.: Nun betrachte eine Variable A, die in Runde t ≥ 1 markiert wird. Dies passiert, weiles eine Produktion A→ C1 · · ·Cr gibt, wobei die Variablen C1, . . . , Cr in fruheren Rundenmarkiert wurden. Nach der I.V. gibt es also fur jedes i, 1 ≤ i ≤ r, einen Ci-AbleitungsbaumTCi,ε mit Ergebnis α(TCi,ε) = ε. Diese Baume konnen wir wie in Abb. 4.10 angegeben zueinem A-Ableitungsbaum TA,ε zusammenbauen. Dies liefert die Induktionsbehauptung.

130

Page 31: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

:

1 εC ,r ε

C1 Cr

A,εA

εε

TT

T

C ,

Abbildung 4.10: Struktur eines A-Ableitungsbaums mit Ergebnis ε

(b)”⇐“:

Wir zeigen: Falls es einen A-Ableitungsbaum TA gibt, der Tiefe d hat und α(TA) = εerfullt, so wird A markiert.

(Man sollte sich uberlegen, dass dies keineswegs offensichtlich ist. Der Baum TA konnteim Prinzip sehr groß sein, und es ist nicht klar, wieso der Markierungsalgorithmus, derja hochstens |V | Runden ausfuhrt, feststellt, dass ε aus A ableitbar ist. Der Beweis zeigtaber, dass es in diesem Fall auch einen kleinen A-Ableitungsbaum mit Ergebnis ε gebenmuss, den der Algorithmus finden kann.)

Wir benutzen Induktion uber d.

I.A.: d = 1: Dann sieht TA wie folgt aus:

A

ε

Es muss also A→ ε Produktion in P sein; also wird A in Runde 0 markiert.

I.V.: d ≥ 2, und die Aussage stimmt fur d′ < d.

I.S.: Es sei d ≥ 2 und ein Baum TA der Tiefe d gegeben. Dann gibt es Variable C1, . . . ,Cr, r ≥ 1, und eine Produktion A→ C1 · · ·Cr derart, dass TA folgendermaßen aussieht:

131

Page 32: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

r

1 Cr

A

εε

TA

:

TT

C1

C

C

Die Unterbaume TC1, . . . , TCr

haben alle Tiefe kleiner als d, und jeder liefert als Ergebnisε. Nach I.V. werden also die Variablen C1, . . . , Cr alle markiert. Daraus folgt, nach derFormulierung des Algorithmus, und weil A → C1 · · ·Cr Produktion ist, dass auch dieVariableA irgendwann einmal markiert werden muss. Damit ist die Induktionsbehauptunggezeigt. �

Mit den vorangegangenen Uberlegungen konnen wir fur jede kontextfreie Grammatik Gdie Menge Vε ermitteln und auch feststellen, ob ε ∈ L(G) ist oder nicht.

Ausflug: Produktive und uberflussige Variable

Mit den eben fur Vε entwickelten Techniken lasst sich auch eine andere fundamentaleFrage uber eine gegebene kontextfreie Grammatik G losen, namlich ob L(G) = ∅ ist, oder

aquivalent, ob S∗⇒ w fur mindestens ein Wort w ∈ Σ∗ ist. Allgemeiner betrachtet man

folgende Eigenschaft von Variablen:

4.3.13 Definition Eine Variable A in einer kontextfreien Grammatik G = (V,Σ, S, P )

heißt produktiv , wenn es ein Terminalzeichenwort w mit A∗⇒ w gibt.

(Aquivalent: . . . wenn es einen A-Ableitungsbaum T mit α(T ) ∈ Σ∗ gibt.)

Die Menge der produktiven Variablen heißt Vprod.

Eine Variable A, die nicht produktiv ist, heißt uberflussig .

Man kann sich leicht uberlegen, dass eine uberflussige Variable in keinem Ableitungsbaumzur Grammatik G vorkommen kann, der als Ergebnis ein Terminalzeichenwort hat. Pro-duktionen, in denen solche Variablen vorkommen, konnen also weggelassen werden, ohnedie Sprache zu verandern. Die Sprache L(G) ist leer genau dann wenn S uberflussig ist.

Wenn G = (V,Σ, S, P ) gegeben ist, ermitteln wir die Menge der produktiven Variablendurch einen Markierungsalgorithmus, der dem fur Vε sehr ahnelt.

132

Page 33: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Markierungsalgorithmus fur Vprod

Auszufuhren auf einer Tabelle aller Produktionen in P

Runde 0: Markiere alle (Vorkommen von) A, wo A→ w Produktion fur ein w ∈ Σ∗

Runde t: (t = 1, 2, . . .)

Wenn A → X1X2 · · ·Xr Produktion, r ≥ 1, und X1X2 · · ·Xr sind markierte Variableoder Terminalzeichen, und A ist unmarkiert

dann markiere (alle Vorkommen von) A .

Ausgabe: Menge der markierten Variablen .

4.3.14 Proposition Fur das Resultat des Markierungsalgorithmus gilt:

(a) A wird markiert ⇔ A∗⇒ w fur ein w ∈ Σ∗.

(b) A wird markiert ⇔ es gibt einen A-Ableitungsbaum T mit α(T ) ∈ Σ∗.

(c) L(G) 6= ∅ ⇔ S wird markiert.

Der Beweis dieser Behauptung verlauft ganz genau so wie der fur Proposition 4.3.12.(Eine gute Ubung!)

4.3.15 Beispiel Betrachte folgende Produktionen:

S → ABC | ADC | AFA → aA | aB → bB

C → cC | εD → S | EabcE → AE | AaE | ACAF → FB | abB | FF

In Runde 0 werden die Variablen A und C markiert, wegen der Produktionen A→ a undC → ε. In Runde 1 wird E markiert (wegen der Produktion E → ACA), in Runde 2 D(wegen der Produktion D → Eabc) und in Runde 3 schließlich S (wegen der ProduktionS → ADC). Es ergibt sich die Tabelle

S → ABC | ADC | AFA → aA | aB → bB

C → cC | εD → S | EabcE → AE | AaE | ACAF → FB | abB | FF.

133

Page 34: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Keine weitere Variable kann mehr markiert werden. Als produktiv stellen sich also A,C, E, D und S heraus Weil S produktiv ist, erzeugt die Grammatik auch mindestensein Terminalzeichenwort. Als uberflussig ergeben sich B und F . (In diesem konkretenBeispiel ist auch intuitiv zu sehen, dass man die Variable B nie

”loswerden“ kann, auch

wenn man noch so viele Ableitungsschritte durchfuhrt, und dass sich dies dann auch aufF ubertragt.)

Dies beendet unsere kurze Diskussion von produktiven und uberflussigen Variablen. Wirkehren zuruck zur Konstruktion der Chomsky-Normalform, und hier konkret zur Elimi-nation von ε-Produktionen.

Teilschritt 2: Gegeben sei eine kontextfreie Grammatik G = (V,Σ, S, P ), in der es nurProduktionen der Form

• A→ ε,

• A→ a, mit A ∈ V , a ∈ Σ,

• A→ B, mit A,B ∈ V ,

• A→ BC, mit A,B,C ∈ V .

gibt. Auf diese Grammatik wenden wir den Markierungsalgorithmus fur ε-produzierendeVariable an, und erhalten Vε.

P ′ entsteht aus P durch folgende Anderungen:

• Wenn A→ BC Produktion und B ∈ Vε, fuge A→ C hinzu

• Wenn A→ BC Produktion und C ∈ Vε, fuge A→ B hinzu

• Streiche alle Produktionen A→ ε

4.3.16 Lemma Die Grammatik G′ = (V,Σ, S, P ′) erfullt L(G′) = L(G)− {ε}.

Bevor wir das Lemma beweisen, geben wir ein Beispiel an.

4.3.17 Beispiel In der GrammatikG = ({S,A,B, F,H}, {0, 1}, S, P ) aus Beispiel 4.3.10mit den Produktionen:

S → ε | AFF → SH

H → BS

A → 0

B → 1

134

Page 35: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

ergibt sich: Vε = {S}. Die folgenden Produktionen werden hinzugefugt:

F → H

H → B

die Produktion S → ε wird gestrichen. Damit ergibt sich als neue ProduktionenmengeP ′:

S → AF

F → H | SHH → B | BSA → 0

B → 1

Die Grammatik G′ = ({S,A,B, F,H}, {0, 1}, S, P ′) erzeugt L(G)−{ε}, das ist die Mengealler korrekten Klammerausdrucke ohne ε.

Beweis von Lemma 4.3.16: Wir mussen zeigen, dass man einen Ableitungsbaum fur w ∈Σ+ in G in einen in G′ umbauen kann und umgekehrt.

”⊇“: Gegeben ist ein Ableitungsbaum T fur das Wort w 6= ε in der alten GrammatikG. Wenn dieser Baum keine ε-Produktionen benutzt, sind wir fertig, weil dann T selbstein Baum fur die neue Grammatik G′ ist. Andernfalls suchen wir in T einen maximalenUnterbaum T0 mit α(T0) = ε.

”Maximal“ heißt hier, dass jeder Unterbaum, der T0 echt

T’

/

S

T

ε

T

B C

A

ε

BC

T :

=/

S

A

:T’

C

ε

C

=

Abbildung 4.11: Links: G-Baum, mit Produktion A → BC, der C-Unterbaum liefert ε.Rechts: entsprechender G′-Baum, mit Produktion A→ B, keine ε-Produktionen

enthalt, Ergebnis 6= ε hat. Es ist klar, dass T0 nicht der ganze Baum T ist (denn α(T ) 6= ε).Also hat die Wurzel von T0, die etwa mit B beschriftet ist, einen Vorganger (mit A

135

Page 36: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

beschriftet). Der Teilbaum unter dem A-Knoten kann nicht Ergebnis ε haben (da T0

maximal groß ist). Also hat der B-Knoten einen Bruder, etwa mit C beschriftet, und derUnterbaum unter dem C-Knoten liefert ein Ergebnis 6= ε. Dies liefert den ersten Baumin Abbildung 4.11.

Wir ersetzen die Produktion A→ BC im Baum T durch die Produktion A→ C aus derneuen GrammatikG′, ohne dass sich das Ergebnis des Baums andert. Diesen Schritt fuhrenwir gleichzeitig fur alle maximalen ε-erzeugenden Unterbaume aus. Dadurch andert sicheventuell auch der Baum TC unter dem C-Knoten in einen neuen Baum T ′C . Das Resultatist als zweiter Baum in Abb. 4.11 angegeben. Insgesamt erhalten wir einen Baum zurGrammatik G′ mit Ergebnis w.

”⊆“: Gegeben ist ein Ableitungsbaum T ′ fur das Wort w in der neuen GrammatikG′. Diese

benutzt Produktionen, die in G nicht vorkommen. Betrachte zum Beispiel die ProduktionA → C, die in P ′ ist, weil P die Produktion A → BC enthalt und B ∈ Vε ist. Dasbedeutet, dass es in G einen B-Ableitungsbaum TB,ε, gibt, der als Ergebnis ε liefert. Nunersetzen wir in T ′ einfach jedes Knotenpaar, das der Produktion A→ C entspricht, durcheine Unterstruktur fur die Produktion A → BC und hangen unter den B-Knoten denUnterbaum TB,ε. Diese Transformation ist in Abb. 4.12 skizziert.

ε

/=/

S

A

:T’

C

ε

CT

S

T

ε

T

B C

A

ε

C

T :

B,

=

Abbildung 4.12: Links: G′-Baum mit neuer Produktion A → C. Rechts: G-Baum furdasselbe Wort, mit Produktion A→ BC und B-Ableitungsbaum TB,ε mit Ergebnis ε

Durch eine solche Anderung andert sich das Ergebnis des Gesamtbaums nicht. Wenn wirdiesen Umbau fur alle in T ′ verwendeten neuen Produktionen durchfuhren, erhalten wireinen Ableitungsbaum fur w in der alten Grammatik G.

Damit ist Lemma 4.3.16 bewiesen. �

4.3.18 Lemma Jede separierte kontextfreie Grammatik G = (V,Σ, S, P ) mit Produk-

136

Page 37: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

tionen der FormA→ ε, A→ a, A→ B, A→ BC,

mit A,B,C ∈ V , a ∈ Σ, kann in eine aquivalente separierte kontextfreie GrammatikG′ = (V ′,Σ, S, P ′) umgebaut werden, die folgendes erfullt:

• entweder sind alle Produktionen von der Form A→ a, A→ B oder A→ BC,

• oder alle Produktionen sind von der Form A → a, A → B, A → BC oder S → εund S kommt nicht auf der rechten Seite einer Produktion vor.

Diese Grammatik G′ ist kontextsensitiv im Sinn von Definition 3.1.6(b).

Beweis : Sei L ∈ L2, also L = L(G) fur eine kontextfreie Grammatik G. Nach 4.3.9 und4.3.16 existiert eine kontextfreie Grammatik G1 = (V1,Σ, S, P1) mit L(G1) = L(G)−{ε},wobei P1 nur Produktionen der Form A→ a, A→ B und A→ BC hat. Demnach bestehtP1 nur aus kontextsensitiven Produktionen (Definition 3.1.6(a)).

1. Fall : ε 6∈ L. Dann ist L = L(G1), und wir konnen G′ = G1 wahlen.

2. Fall : ε ∈ L. Dann ist L = L(G′) fur die Grammatik

G′ = (V1 ∪ {S ′},Σ, S ′, P1 ∪ {S ′ → S, S ′ → ε}).

Diese erfullt die aufgefuhrten Anforderungen, ist also insbesondere kontextsensitiv. �

Wir notieren, dass wir mit Lemma 4.3.18 einen entscheidenden Schritt in Richtung Chomsky-Hierarchie getan haben. (Siehe hierzu die Bemerkungen zur Chomsky-Hierarchie am Endevon Abschnitt 3.2.)

4.3.19 Korollar Jede kontextfreie Sprache ist kontextsensitiv, in Zeichen:

L2 ⊆ L1

Beweis : Nach Lemma 4.3.9 kann jede kontextfreie Grammatik G in eine aquivalente kon-textsensitive Grammatik G′ umgebaut werden. �

4.3.4 Elimination von Kettenregeln

Mit der kontextsensitiven Form aus Lemma 4.3.18 sind wir noch immer nicht ganz zufrie-den. Wir wollen auch noch die

”Kettenregeln“, das sind Produktionen der Form A → B

fur A,B ∈ V , eliminieren.

Wir starten hierzu mit einer Grammatik G = (V,Σ, S, P ) mit Produktionen der Form wiein Lemma 4.3.18 fur G′ angegeben.

137

Page 38: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Zunachst konnen wir alle Produktionen der FormA→ A weglassen, da Ableitungsschritte,die diese Produktion benutzen, nichts andern. Die verbleibende Menge aller Kettenregelnin P nennen wir P1.

Die Idee fur das Weitere ist, Ableitungsfolgen der Form

A = A0 ⇒ A1 ⇒ · · · ⇒ At = B ⇒ CD

bzw.A = A0 ⇒ A1 ⇒ · · · ⇒ At = B ⇒ a

durch Hinzufugen von Produktionen A → CD bzw. A → a”kurzzuschließen“. Dadurch

entstehen naturlich keine Ableitungen fur Worter, die nicht schon vorher in L(G) waren.Nun werden alle Kettenregeln A → B weggelassen, und man muss sich uberlegen, dassdadurch die Menge der ableitbaren Worter nicht schrumpft.

4.3.20 Beispiel (a) Wir betrachten die Grammatik G = ({S,A,B, F,H}, {0, 1}, S, P )aus Beispiel 4.3.17 mit Produktionen:

S → AF

F → SH | HH → BS | BA → 0

B → 1

Hier gibt es die Ableitungsfolgen F ⇒ H ⇒ B ⇒ 1, F ⇒ H ⇒ BS und H ⇒ B ⇒ 1.Entsprechend fugen wir die neuen Produktionen

F → 1

F → BS

H → 1

hinzu. Die Kettenregeln F → H und H → B fallen weg. Dies liefert die folgende Listevon Produktionen:

S → AF

F → SH | BS | 1H → BS | 1A → 0

B → 1

Diese Grammatik in Chomsky-Normalform haben wir schon in Beispiel 4.3.2(b) gesehen.Aus dem Erzeugungsprozess folgt, dass sie die Klammersprache ohne ε erzeugt.

138

Page 39: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

(b) Weiter betrachten wir die Grammatik Gε = ({Sε, S, A,B, F,H}, {0, 1}, Sε, P ∪{Sε →ε | S}), die aus der Grammatik aus Beispiel 4.3.17 durch Hinzufugen eines speziellen neuenStartsymbols Sε hervorgeht. Wenn man hier alle Ketten uberbruckt und die Kettenregelnweglasst, ergibt sich die folgende Produktionenmenge fur die volle Klammersprache inChomsky-Normalform:

Sε → ε | AFS → AF

F → SH | BS | 1H → BS | 1A → 0

B → 1

Wenn wir hier S in R und dann Sε in S umbenennen, erhalten wir die Grammatik ausBeispiel 4.3.2(a).

Die formale Konstruktion besteht aus zwei Phasen.

Phase (a): Fur jedes A ∈ V ermittle die Menge

VA = {B ∈ V | A ∗⇒ B und A 6= B}.

Das heißt, B ∈ VA genau dann wenn

A = A0 ⇒ A1 ⇒ · · · ⇒ At = B

fur eine Variablenfolge A0, . . . , At, t ≥ 0, und A 6= B.

Algorithmisch gehen wir dazu folgendermaßen vor: Wir fassen V als Knotenmenge undE = P1 als Kantenmenge eines Graphen H = (V,E) auf. Nun ermitteln wir fur jedesA ∈ V durch Breitensuche die Menge VA = {B ∈ V | B ist von A aus erreichbar}. DerZeitaufwand hierfur ist O(|V | · (|V |+ |P1|)), also polynomiell.

Phase (b): Fur jede Kombination

A ∈ V, B ∈ VA, B → a in P

fugen wir die Produktion A→ a zu P hinzu; fur jede Kombination

A ∈ V, B ∈ VA, B → CD in P

fugen wir die Produktion A→ CD zu P hinzu. Alle Kettenregeln A→ B werden aus Pentfernt. Die neue Produktionenmenge heißt dann P ′; die neue Grammatik G′.

Man sieht sofort, dass in der neuen Grammatik G′ = (V,Σ, S, P ′) nicht mehr Worter ab-leitbar sind als in G. Umgekehrt kann man einen Ableitungsbaum T fur ein Wort w in derGrammatik G immer zu einem in der Grammatik G′ umbauen, indem man in T maximal

139

Page 40: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

lange Ketten von Knoten mit jeweils einem Nachfolger sucht, die dann TeilableitungenA = A0 ⇒ A1 ⇒ · · · ⇒ At = B ⇒ a bzw. . . . At = B ⇒ CD entsprechen, und diese Ket-ten durch die Unterstrukturen zur Grammatik G′ ersetzt, die den Teilableitungen A⇒ abzw. A⇒ CD entsprechen.

Wir ersetzen also

2

11

2

B

a

A

A

A

A

A

A

bzw.

C D

B

im Ableitungsbaum durch

C D a

A A

bzw.

und umgekehrt.

140

Page 41: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

4.4 Das Pumping-Lemma fur kontextfreie Sprachen

Wir benutzen die Chomsky-Normalform, um ein Pumping-Lemma ahnlich dem fur re-gulare Sprachen (Satz 2.4.1) zu beweisen. Dieses Lemma, das eine grundlegende Struktur-eigenschaft kontextfreier Sprachen formuliert, wird gewohnlich dafur benutzt (in ahnlicherWeise wie in Abschnitt 2.4 das fur regulare Sprachen), um nachzuweisen, dass gewisseSprachen nicht kontextfrei sind.

4.4.1 Satz (Pumping-Lemma fur kontextfreie Sprachen) Wenn L eine kontext-freie Sprache uber Σ ist, dann gibt es eine Zahl n ≥ 1, fur die folgendes gilt : Fur jedesz ∈ L mit |z| ≥ n gibt es Worter u, v, w, x, y ∈ Σ∗, derart dass :

(i) z = uvwxy,

(ii) |vwx| ≤ n,

(iii) |v|+ |x| ≥ 1,

(iv) ∀i ∈ N : uviwxiy ∈ L.

Beweis : Weil L kontextfrei ist, gibt es fur L eine Grammatik G = (V,Σ, S, P ) in Chomsky-Normalform (Definition 4.3.1 und Satz 4.3.4). – Wir definieren

n := 2|V |

und zeigen, dass diese Zahl die verlangten Eigenschaften hat.

Sei dazu z ∈ L = L(G) mit |z| ≥ n. Dann gibt es einen Ableitungsbaum T fur z in G. Weiln ≥ 1 ist und G in Chomsky-Normalform ist, kann in diesem Baum keine ε-Produktionbenutzt werden. Beispielsweise (Abb. 4.13) betrachte man nochmals den Ableitungsbaumaus Abb. 4.9 zur Grammatik aus Beispiel 4.3.2.

Da in der Grammatik G Terminalzeichen a ∈ Σ nur durch Produktionen A → a er-zeugt werden, hat T genau |z| viele Variablenknoten, die als Nachfolger ein (mit einemTerminalzeichen beschriftetes) Blatt haben; alle anderen Knoten haben genau zwei Nach-folger. Anders ausgedruckt: Der Variablenteil des Ableitungsbaumes bildet einen

”vollen

Binarbaum“.

Behauptung: Ein voller Binarbaum, in dem auf dem langsten Weg von der Wurzel zueinem Blatt genau d Knoten liegen, hat maximal 2d−1 viele Blatter.

(Dies beweist man durch Induktion uber d. I.A.: Wenn der langste Weg einen Knotenhat, besteht der Baum nur aus der Wurzel und hat 20 Blatter. I.S.: Sei nun d > 1. Imlinken Teilbaum hat der langste Weg maximal d− 1 Knoten, also hat der linke Teilbaumnach I.V. hochstens 2d−2 Blatter. Dasselbe gilt fur den rechten Teilbaum. Insgesamt gibtes also hochstens 2 · 2d−2 = 2d−1 Blatter.)

141

Page 42: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

1

0

0

0 1

1

0

1

F

A

A

B

A F

A F

R

R

S

B R

H

F

Abbildung 4.13: Ein Ableitungsbaum zu einer Chomsky-Normalform-Grammatik

Wir wahlen nun im Ableitungsbaum T fur z einen Wurzel-Blatt-Weg mit maximalerKnotenzahl; diese sei l. Nach der

”Behauptung“ gilt

2|V | = n ≤ |z| ≤ 2l−1,

also |V | < l. (Diese kleine Rechnung ist der Grund dafur, dass wir n = 2|V | gewahlthaben.)

142

Page 43: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

z

V

:TS

A

A

A

V

a

¦ |A

| |+1 Knoten

0

2

1

Abbildung 4.14: Ein maximal langer Weg in Ableitungsbaum T

Wir nennen die Variablen auf diesem Weg, vom Blatt her zahlend, A0, A1, . . . , Al−1. (SieheAbb. 4.14.) Nach dem Schubfachprinzip muss in der Folge A0, . . . , A|V | eine Variablewiederholt vorkommen. Wir konnen also i, j wahlen mit 0 ≤ i < j ≤ |V | und Ai = Aj.Die doppelt vorkommende Variable wird A genannt. Damit haben wir die in Abb. 4.15skizzierte Situation.

az

S

A

A

A

V

T :

<| |+1 Knoten

0

Abbildung 4.15: Eine Variablenwiederholung

143

Page 44: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Die beiden ausgewahlten Positionen in der Folge A0, . . . , A|V | bestimmen die Wurzeln vonzwei Unterbaumen T1 (Knoten zu Aj) und T2 (Knoten zu Ai) von T . Beide Knoten sindmit A beschriftet, siehe Abb. 4.16.

y

S

T

T

A

T

u v w x

A

:

:

:

2

1

Abbildung 4.16: Ineinander geschachtelte Teilbaume, beide Wurzeln mit A beschriftet

Die Teilbaume T1 und T2 teilen z = α(T ) in 5 Teile (von denen manche leer sein konnen):

u := der Inhalt der Blatter von T links von T1

v := der Inhalt der Blatter von T1 links von T2

w := α(T2)

x := der Inhalt der Blatter von T1 rechts von T2

y := der Inhalt der Blatter von T rechts von T1.

Im Beispielbaum aus Abb. 4.13 konnten diese Unterbaume und die zugehorigen Teilworterzum Beispiel aussehen wie in Abb. 4.17. Hier wiederholt sich die Variable F .

Folgende Eigenschaften der Teilworter liest man aus der Konstruktion ab.

(i) z = uvwxy.

(ii) |vwx| ≤ n.

Dies sieht man so: vwx = α(T1), also ist |vwx| gerade die Anzahl der Blatter in T1.Weil die zu A0, A1, . . . , A|V | gehorende Knotenfolge zu einem Weg maximaler Lange in Tgehort, hat der langste Weg in T1 hochstens |V | + 1 Variablenknoten. Nach der obigen

”Behauptung“ hat T1 hochstens 2|V | Blatter, also ist |vwx| ≤ 2|V | = n.

(iii) |v|+ |x| ≥ 1.

Dies gilt, weil nach der Konstruktion T2 echter Teilbaum von T1 ist, und weil es beiChomsky-Normalform-Grammatiken im Inneren eines Ableitungsbaumes nur Knoten von

144

Page 45: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Grad 2 und keine ε-Produktionen gibt. Also muss auf dem Weg von der Wurzel von T1 zurWurzel von T2 rechts oder links oder beidseitig von T2 ein nichtleeres Teilwort entstehen.

Es bleibt (iv) zu zeigen. Weil T1 und T2 im Wurzelknoten dieselbe Variable A als Inschrifthaben, kann man den Teil von T1, der nicht auch in T2 ist, beliebig oft, d.h., 0-mal, 1-mal,2-mal usw., zwischen den Baum T (ohne T1) und T2 einfugen und daraus stets einen legalenAbleitungsbaum zur Grammatik G erhalten. Diese Idee sieht man am besten anhand derin Abbildungen 4.18 und 4.19 wiedergegebenen Skizzen ein.

y

T A

S

u

T

w

2:

:

Abbildung 4.18: T2 anstelle von T1 eingehangt.

In Abb. 4.18 nimmt T2 die Stelle von T1 ein; das Resultat ist ein Ableitungsbaum furuv0wx0y. Daher ist uwy = uv0wx0y in L = L(G). In Abb. 4.19 wird der Teil von T1, dernicht auch in T2 ist, zweimal benutzt; es ergibt sich ein Ableitungsbaum fur uv2wx2w.Damit liegt auch dieses Wort in L = L(G).

145

Page 46: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

S

A

A

Au v

v w x

x y

T

T

T

T

1

:

:

:

:

1

2

Abbildung 4.19: Verdopplung eines Teils von T1

Es sollte zumindest anschaulich klar sein, dass man ebenso Ableitungsbaume fur uv3wx3y,uv4wx4y usw. konstruieren kann. – Also gilt

{uv0wx0y, uvwxy = z, uv2wx2y, uv3wx3y, . . . } ⊆ L,

wie in (iv) behauptet. �

4.4.2 Beispiel Aus der Grammatik in Beispiel 4.2.1 erhalt man durch Anwendungder Schritte

”Separierung“ und

”Verkurzung der rechten Seiten“ und durch Weglassen

der ε-Produktion eine Grammatik G = ({S,D,A,B}, {0, 1}, S, P ), wobei P die folgendenProduktionen enthalt:

S → SS | AD | AB ,

D → SB ,

A→ 0, B → 1 .

Diese Grammatik G ist in Chomsky-Normalform. Es ist klar, dass L(G) die Sprache derkorrekten Klammerausdrucke ohne ε ist. Betrachte z. B. den folgenden Ableitungsbaumfur z = 00101101 in dieser Grammatik:

146

Page 47: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

A

S

B

S

T

A T

A

B

S

B

S

A

S

B

1

2

S

D

0 1 0 1

1

0 0 1

Wir haben einen langsten Pfad markiert; auf ihm wiederholt sich die Variable S (doppeltumrandet). Auch die resultierenden Teilbaume T1 und T2 sind markiert. Man uberprufe,dass hier u = 0, v = 01, w = 01, x = ε und y = 101 gilt, und die Aussagen (i), (ii), (iii)aus 4.4.1!

Durch Herausschneiden und Verdoppeln des Baumteils”T1 ohne T2“ ergeben sich die

folgenden Ableitungsbaume:

B

S B

A B

T

A

S

A

0 1

S

D

S

1

0 0 1

2

147

Page 48: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

2

B

A B

T1

T1

BA

B

BA

S

A

S

S

ohne T

A

0

D

0 1

S

1

S

S

0 1

S

0 1

S

0 1

Zur Ubung erstelle man einen Ableitungsbaum fur uv3wx3y!

Genau wie im Fall des Pumping-Lemmas fur regulare Sprachen wollen wir das Pumping-Lemma 4.4.1 fur den Beweis nutzen, dass gewisse Sprachen nicht kontextfrei sind. Dabeigehen wir nach demselben Schema vor wie in Kapitel 2 (vor 2.4.2). L sei die Sprache,deren Nichtregularitat bewiesen werden soll.

Schema fur Nicht-Kontextfreiheits-Beweise:

[1] (Wortlich) Beweis indirekt. Annahme: L ist kontextfrei.

[2] (Wortlich) Dann gibt es ein n ≥ 1 mit den im Pumping-Lemma fur kontextfreieSprachen (PL-kfS, Satz 4.4.1) behaupteten Eigenschaften.

[3] (Problemspezifisch) Wir wahlen z ∈ L, mit |z| ≥ n.

(z muss man geschickt wahlen, so dass Schritt [5] ausfuhrbar ist.)

[4] (Wortlich) Gemaß (PL-kfS) gibt es u, v, w, x, y derart dass

(i) z = uvwxy; (ii) |vwx| ≤ n; (iii) |v|+ |x| ≥ 1 und

148

Page 49: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

(iv) uviwxiy ∈ L fur alle i ≥ 0.

[5] (Problemspezifisch) Zeige nun, dass man fur jede mogliche Position der Teilworteru, v, w, x, y in z ein i angeben kann, so dass uviwxiy /∈ L ist.

(Hierfur muss man oft mehrere Falle betrachten. Eventuell sind in verschiedenenFallen die benotigten i’s unterschiedlich.)

(Wortlich) Dies ist der gewunschte Widerspruch.

Wir wenden dieses Beweisschema auf einige Beispiele an. Nur im ersten Beispiel markierenwir die Teilschritte. Die behandelten Sprachen sind auch charakteristisch fur Sprachen,die nicht kontextfrei sind.

4.4.3 Behauptung Die Sprache

L1 = {ambmcm | m ≥ 1}

ist nicht kontextfrei.

Beweis : [1] Indirekt. Angenommen, L1 ware kontextfrei. [2] Dann gibt es ein n ≥ 1 mit denEigenschaften wie in (PL-kfS). [3] Wir wahlen z = anbncn ∈ L1. Offenbar ist |z| = 3n ≥ n.[4] Nach (PL-kfS) gibt es u, v, w, x, y ∈ Σ∗ derart dass

(i) anbncn = uvwxy,

(ii) |vwx| ≤ n,

(iii) |v|+ |x| ≥ 1,

(iv) ∀i ∈ N : uviwxiy ∈ L1.

[5] Das Teilwort vwx von z kann nicht sowohl a’s als auch c’s enthalten. (Sonst musstevwx mindestens n+ 2 Buchstaben haben, was (ii) widerspricht.)

1. Fall: vwx enthalt kein c. Dann betrachten wir uv0wx0y = uwy. Dieses Wort enthalt(immer noch) genau n c’s, aber die Zahl der a’s und b’s zusammen ist gleich 2n−|v|−|x| <2n (wegen (iii)). Also ist uv0wx0y 6∈ L1, im Widerspruch zu (iv).

2. Fall: vwx enthalt kein a. Dann betrachten wir uv0wx0y = uwy. Dieses Wort enthalt(immer noch) genau n a’s, aber die Zahl der b’s und c’s zusammen ist gleich 2n−|v|−|x| <2n (wegen (iii)). Also ist uv0wx0y 6∈ L1, im Widerspruch zu (iv).

(Hinweis : Der zweite Fall ist so ahnlich zum ersten, dass man hier normalerweise”analog“

schreiben wurde.) �

149

Page 50: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

4.4.4 Bemerkung

(a) Es ist unwichtig, ob das leere Wort in der Sprache enthalten ist oder nicht; allgemei-ner kann man immer eine endliche Anzahl von Wortern hinzufugen oder entfernen,ohne die Eigenschaft der Kontextfreiheit zu verandern. (Technisch werden wir dieserst weiter unten sehen, siehe Abschnitt 5.6.) Also sind auch die Sprachen

{ambmcm | m ≥ 0} und {ambmcm | m ≥ 5}

(und so weiter) nicht kontextfrei.

(b) Auch Sprachen wie

{amb2mcm | m ≥ 0} und {a4mbmc3m | m ≥ 1}

oder{0m10m10m | m ≥ 0} und {0m1m0m | m ≥ 0}

sind nicht kontextfrei, was sich mit leichten Variationen des Beweises fur Behaup-tung 4.4.3 zeigen lasst. (Siehe Ubung.)

(c) In Beispiel 3.1.9 haben wir eine monotone Grammatik fur {ambmcm | m ≥ 1}angegeben, also ist dies eine Chomsky-1-Sprache. Wenn wir das mit Korollar 4.3.19kombinieren, erhalten wir, dass

L2 ( L1

gilt. Dies beweist einen weiteren Teil unserer fruher aufgestellten Behauptung, dassdie Chomsky-Hierarchie eine echte Hierarchie ist.

4.4.5 Behauptung Die Sprache

L2 = {ambkcmdk | m, k ≥ 1}

ist nicht kontextfrei.

Beweis : Indirekt. Angenommen, L2 ware kontextfrei. Dann gibt es ein n ≥ 1 mit denEigenschaften wie in (PL-kfS). Wahle nun z = anbncndn ∈ L2. Offenbar ist |z| = 4n ≥ n.Nach (PL-kfS) gibt es u, v, w, x, y ∈ Σ∗ derart dass

(i) anbncndn = uvwxy,

(ii) |vwx| ≤ n,

(iii) |v|+ |x| ≥ 1,

(iv) ∀i ∈ N : uviwxiy ∈ L2.

150

Page 51: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Das Teilwort vwx von z kann nicht sowohl a’s als auch c’s enthalten, und auch nichtsowohl b’s als auch d’s. (Sonst musste vwx mindestens n + 2 Buchstaben haben, was(ii) widerspricht.) Also ist vwx entweder Teilwort von anbn oder Teilwort von bncn oderTeilwort von cndn.

1. Fall: vwx ist Teilwort von anbn. Dann ist im Wort uv0wx0y die Zahl der a’s und b’szusammen gleich 2n−|v|−|x| < 2n (wegen (iii)), aber die Zahl der c’s und d’s zusammmengleich 2n. Jedes Wort t ∈ L2 erfullt aber |t|a + |t|b = |t|c + |t|d. Also ist uv0wx0y 6∈ L2.Dies widerspricht (iv).

2. Fall: vwx ist Teilwort von bncn. Dann ist im Wort uv0wx0y die Zahl der b’s und c’szusammen gleich 2n−|v|−|x| < 2n (wegen (iii)), aber die Zahl der a’s und d’s zusammmengleich 2n. Jedes Wort t ∈ L2 erfullt aber |t|a + |t|d = |t|b + |t|c. Also ist uv0wx0y 6∈ L2.Dies widerspricht (iv).

3. Fall: vwx ist Teilwort von cndn. Hier erhalt man analog zum 1. Fall einen Widerspruch.�

4.4.6 Bemerkung

(a) Auch Sprachen wie

{amb2kc3md4k | m ≥ 0} und {ambmambm | m ≥ 0}

erweisen sich mit ahnlichen Beweisen als nicht kontextfrei. Man versuche, das Mu-ster zu erkennen: Kontextfreie Grammatiken konnen nicht beschreiben, dass in vierTeilwortern w1, w2, w3, w4 von w, die voneinander abgegrenzt sind, die Langenbe-ziehung

|w1| = |w3| und |w2| = |w4|gilt. Intuitiv gesagt liegt das daran, dass die Anordnung der Paare (w1, w3) und(w2, w4) einander entsprechender Teilworter nicht einer korrekten Klammerung ent-spricht.

(b) Im Gegensatz zu (a) bemerken wir, dass die Sprache

L′2 = {ambkckdm | m, k ≥ 1},

die auf den ersten Blick sehr ahnlich zu L2 aussieht, kontextfrei ist. (Man kanneine Grammatik mit Variablen S und A und Produktionen S → aSd | aAd undA → bAc | bc benutzen.) Es ist also kein Problem, mit einer kontextfreien Gram-matik zu spezifizieren, dass in vier Teilwortern w1, w2, w3, w4 von w, die voneinanderabgegrenzt sind, die Langenbeziehung

|w1| = |w4| und |w2| = |w3|

gilt. Hier sind die einander entsprechenden Teilwortpaare wie in korrekten Klam-merausdrucken angeordnet.

151

Page 52: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

(c) Auch L2 und die in (a) genannten Sprachen sind Chomsky-1-Sprachen. (Hier ohneBeweis.)

4.4.7 Behauptung Die Sprache

L3 = {w2w | w ∈ {0, 1}∗}

uber Σ = {0, 1, 2} ist nicht kontextfrei.

Beweis : Indirekt. Angenommen, L3 ware kontextfrei. Dann gibt es ein n ≥ 1 mit denEigenschaften wie in (PL-kfS). Wahle nun z = 0n1n20n1n ∈ L3. Offenbar ist |z| = 4n+1 >n. Nach (PL-kfS) gibt es u, v, w, x, y ∈ Σ∗ derart dass

(i) 0n1n20n1n = uvwxy,

(ii) |vwx| ≤ n,

(iii) |v|+ |x| ≥ 1,

(iv) ∀i ∈ N : uviwxiy ∈ L3.

1. Fall: v oder x enthalt die”2“ aus z. Dann enthalt uv0wx0y uberhaupt keine

”2“, ist

also nicht in L3.

2. Fall: Die”2“ liegt im Teilwort u. D. h.: vwx liegt in z komplett rechts von der

”2“.

Dann befinden sich in uv0wx0y rechts von der”2“ weniger Buchstaben als links von der

”2“, also ist uv0wx0y nicht in L3.

3. Fall: Die”2“ liegt im Teilwort y. Analog zum 2. Fall ist dann uv0wx0y nicht in L3.

4. Fall: Die”2“ liegt im Teilwort w. D. h.: v liegt komplett links von der

”2“ und x

liegt komplett rechts von der”2“. Nach (ii) gilt |vwx| ≤ n, also ist v ein Teilwort des

Einserblocks links von der”2“ und x ein Teilwort des Nullerblocks rechts von der

”2“.

Damit istuv0wx0y = 0n1n−|v|20n−|x|1n.

Nach (iii) sind nicht |x| und |v| beide 0. Daher ist uv0wx0y /∈ L3.

In allen vier Fallen ergibt sich ein Widerspruch zu (iv). �

4.4.8 Bemerkung Die in der letzten Behauptung notierte Eigenschaft, dass kontext-freie Grammatiken nicht erzwingen konnen, dass zwei Teilworter identisch sind, kannverallgemeinert werden, zum Beispiel folgendermaßen: Die Sprache

{w13 · · · 3wr2v13 · · · 3vs | s ≥ r ≥ 1, w1, . . . , wr, v1, . . . , vr ∈ {0, 1}∗,jedes vi kommt in {w1, . . . , wr} vor}

152

Page 53: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

ist nicht kontextfrei. Dies hat zur Folge, dass eine grundlegende Eigenschaft korrekterPascal- und Java-Programme nicht durch kontextfreie Grammatiken ausgedruckt werdenkann, namlich das Prinzip, dass die Namen von Variablen, die benutzt werden, zuvordeklariert worden sein mussen. Bedingungen dieser Art werden daher stets zusatzlichzu der formalen Grammatik angegeben.

4.4.9 Behauptung Die Sprache

L4 = {0n2 | n ≥ 1}

ist nicht kontextfrei.

Beweis : Indirekt. Angenommen, L4 ware kontextfrei. Dann gibt es ein n ≥ 1 mit den Ei-genschaften wie in (PL-kfS). Wahle nun z = 0n2 ∈ L4. Nach (PL-kfS) gibt es u, v, w, x, y ∈Σ∗ derart dass fur z (i)–(iv) erfullt sind. Nun ist aber

uv2wx2y = 0n2+|v|+|x| = 0n2+k

fur ein k mit 1 ≤ k ≤ n (nach (ii) und (iii)). Jedoch ist n2 < n2 +k < (n+1)2, also n2 +kkeine Quadratzahl und damit uv2wx2y 6∈ L4. Dies widerspricht (iv). �

4.4.10 Bemerkung

(a) Der Beweis von Behauptung 4.4.9 verlauft genauso wie der Beweis von Behaup-tung 2.4.2(b), wo wir gesehen haben, dass L3 nicht regular ist. Dies ist charakte-ristisch fur Sprachen uber einem einelementigen Alphabet: Ein Nichtregularitats-beweis mit dem Pumping-Lemma fur regulare Sprachen fuhrt sofort zu einem fastgleichlautenden Beweis der Nicht-Kontextfreiheit, wenn wir das Pumping-Lemmafur kontextfreie Sprachen benutzen.

(b) Tatsachlich gilt:L ⊆ Σ∗, |Σ| = 1, L ∈ L2 ⇒ L ∈ L3.

Es gibt also uberhaupt keine kontextfreien Sprachen uber einem einelementigenAlphabet, die nicht regular sind. Der Beweis dieser Aussage ist etwas aufwendiger– er benutzt ubrigens das Pumping-Lemma 4.4.1 – und nicht Stoff der Vorlesung.

Zum Schluss dieses Abschnittes formulieren wir eine verstarkte Version des Pumping-Lemmas fur kontextfreie Sprachen, das in Beweisen fur Nicht-Kontextfreiheit oft zumZiel fuhrt, wenn die Anwendung des einfachen Pumping-Lemmas muhsam oder nichtmoglich ist. Diese Aussage nennt man nach seinem Urheber das

”Lemma von Ogden“.

Bei der Anwendung dieses Lemmas per Schema durfen wir in Schritt [3] nicht nur z wahlen,sondern in z auch n uns gunstig erscheinende Buchstaben in z

”markieren“ (unterstrei-

chen, rot einfarben). Die Zerlegung in u, v, w, x, y, die wir in Schritt [5] bearbeiten

153

Page 54: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

mussen, hat die Eigenschaft, dass entweder v oder x mindestens einen der markiertenBuchstaben enthalt.

Wir formulieren das Lemma und das resultierende Beweisschema. Auf einen Beweis desLemmas von Ogden verzichten wir hier. Dieser Beweis ist sehr ahnlich zu dem fur dasPumping-Lemma fur kontextfreie Sprachen (Satz 4.4.1).

4.4.11 Satz (Lemma von Ogden) Wenn L eine kontextfreie Sprache uber Σ ist,dann gibt es eine Zahl n ≥ 1, fur die folgendes gilt : Wenn z ein Wort in L ist, in dem nBuchstabenpositionen

”markiert“ sind, dann gibt es Worter u, v, w, x, y ∈ Σ∗, derart dass

folgendes gilt :

(i) z = uvwxy,

(ii) v und x zusammen enthalten mindestens ein markierte Buchstabenposition,

(iii) ∀i ∈ N : uviwxiy ∈ L.

Schema fur Nicht-Kontextfreiheits-Beweise mit dem Lemma von Ogden:

[1] (Wortlich) Beweis indirekt. Annahme: L ist kontextfrei.

[2] (Wortlich) Dann gibt es ein n ≥ 1 mit den im Lemma von Ogden (Satz 4.4.11)behaupteten Eigenschaften.

[3] (Problemspezifisch) Wahle z ∈ L, mit |z| ≥ n, und markiere n Buchstabenin z.

(z und die Markierungspunkte werden so gewahlt, dass Schritt [5] gut ausfuhrbarist.)

[4] (Wortlich) Gemaß (PL-kfS) gibt es u, v, w, x, y derart dass folgendes gilt:

(i) z = uvwxy; (ii) v und x enthalten mindestens eine markierte Position; und

(iii) uviwxiy ∈ L fur alle i ≥ 0.

[5] (Problemspezifisch) Zeige nun, dass man fur jede nach (ii) noch moglichePosition der Teilworter u, v, w, x, y in z ein i angeben kann, so dass uviwxiy /∈ List.

(Wortlich) Dies ist der gewunschte Widerspruch.

4.4.12 Behauptung Die Sprache

L4 = {akblcm | k ≥ l ≥ m ≥ 0}

ist nicht kontextfrei.

154

Page 55: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis : Indirekt. Angenommen, L4 ware kontextfrei. Dann gibt es ein n ≥ 1 mit denEigenschaften wie im Lemma von Ogden. Wahle nun z = anbncn ∈ L4 und markiere dien a’s. Nach dem Lemma von Ogden gibt es u, v, w, x, y ∈ Σ∗ derart dass

(i) anbncn = uvwxy, ;

(ii) v und x zusammen enthalten mindestens einen markierten Buchstaben, also min-destens ein a;

(iii) ∀i ∈ N : uviwxiy ∈ L4.

1. Fall: v enthalt zwei verschiedene Buchstaben. Dann sieht man sofort, dass in uv2wx2ydie Buchstabenreihenfolge akblcm nicht eingehalten ist, was der Aussage aus (iii) wider-spricht.

2. Fall: x enthalt zwei verschiedene Buchstaben. Das fuhrt ebenso wie in Fall 1 zu einemWiderspruch.

Von hier an nehmen wir an, dass v und x jeweils nur eine Sorte von Buchstaben enthalt.

3. Fall: x besteht aus a’s. Dann besteht vx nur aus a’s, und uv0wx0y enthalt weniger a’sals b’s, also ist uv0wx0y nicht in L4, Widerspruch.

4. Fall: x besteht aus b’s. Wegen (ii) ist dann v eine nichtleere Folge von a’s, und uv0wx0yenthalt weniger a’s als c’s, also ist uv0wx0y nicht in L4, Widerspruch.

5. Fall: x besteht aus c’s. Fuhrt analog zum 4. Fall zu einem Widerspruch. �

Eine alternative Sicht auf Beweise mit dem Pumping-Lemma:Ein Spiel-Schema

Es gibt eine Formulierung fur Beweise mit dem Pumping-Lemma, die es vermeidet, dieStichworter

”Annahme“ und

”Widerspruch“ zu benutzen, die zu unserem Beweisschema

gehoren. Diese Formulierung formuliert den Beweis als ein Spiel, das wir (die”Beweiser“,

Spieler B), gegen einen Gegner (Spieler G) spielen. Auch hier sind die Zuge zum Teilmechanisch, zum Teil erfordern sie etwas Einfallsreichtum.

Gegeben ist eine Sprache L. Die zu beweisende Behauptung ist: L ist nicht kontextfrei.

Spiel-Schema

Runde 1: G gibt uns eine Zahl n ≥ 1.

Runde 2: (B) Wir wahlen (geschickt) ein z ∈ L mit |z| ≥ n

(∗ so dass wir in Runde 4 immer gewinnen ∗)

155

Page 56: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Runde 3: G gibt uns u, v, w, x, y mit(i) z = uvwxy, (ii) |vwx| ≤ n und (iii) |v|+ |x| ≥ 1 .(∗ Wir wissen nicht genau, wie u, v, w, x, y in z liegen. ∗)

Runde 4: (B) Wir wahlen, abhangig von u, v, w, x, y, ein i und zeigen, dass uviwxiy /∈L.(∗ Normalerweise muss man hier einige Falle betrachten. ∗)

Wenn man sich das Spiel-Schema ansieht, erkennt man, dass keine Komponenten einesindirekten Beweises (wie

”Annahme“ und

”Dies ist ein Widerspruch“) mehr vorkommen.

Allerdings hat sich die Schwierigkeit, die darin liegt, ein gutes z zu wahlen und in Runde4 fur alle Moglichkeiten von u, v, w, x, y zu zeigen, dass man ein passendes i finden kann,gegenuber dem gewohnlichen Schema nicht verandert.

Wir demonstrieren die Benutzung des Spielschemas an einem Beispiel.

Beh.: Die Sprache L = {0n12n23n | n ≥ 0} ist nicht kontextfrei.

Wir beweisen dies mit dem Spielschema.

Runde 1: G gibt uns eine Zahl n ≥ 1.

Runde 2: Wir (B) wahlen z = 0n12n23n.

Es ist klar, dass |z| = 6n ≥ n ist.

Runde 3: G gibt uns u, v, w, x, y mit(i) x = uvwxy, (ii) |vwx| ≤ n und (iii) |v|+ |x| ≥ 1 .

Runde 4: Unsere (B) Aufgabe ist es, nun zu zeigen, dass es ein i ∈ N gibt derart dassuviwxiy /∈ L ist. Da wir nicht wissen, wie u, v, w, x, y in z liegen, mussen wirmehrere Moglichkeiten betrachten.

Zuerst benutzen wir, dass |vwx| ≤ n ist und folgern, dass vwx entweder den Buch-staben 0 nicht enthalt oder den Buchstaben 2 nicht enthalt. (Sonst musste vwx alle1en und zudem eine 0 und eine 2 enthalten, hatte also Lange mindestens 2n+2 > n.)

1. Fall: vwx enthalt keine 2. – Setze i = 0. Dann gilt fur uv0wx0y = uwz folgendes:|uwy|0 + |uwy|1 = 3n − (|v| + |x|) < 3n, aber |uwy|2 = 3n. Daher kann uwy keinElement von L sein.

2. Fall: vwx enthalt keine 0. – Setze i = 0. Dann gilt fur uv0wx0y = uwz folgendes:|uwy|0 = n, aber |uwy|1 + |uwy|2 = 5n − (|v| + |x|) < 5n. Daher kann uwy keinElement von L sein.

Wir verzichten auf den formalen Beweis dafur, dass die korrekte Vervollstandigung desSpielschemas in Runden 2 und 4 fur eine Sprache L hinreichend dafur ist, zu zeigen, dassL nicht kontextfrei ist. Man sieht aber, dass man im Spielschema eigentlich nichts anderesmacht als in den gewohnlichen Beweisen nach dem Schema mit den indirekten Beweisen:

156

Page 57: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

wahle (geschickt) ein z und beweise dann fur eine beliebige Zerlegung von z in u, v, w, x,y, die (i), (ii), (iii) erfullt, dass es ein i mit uviwxiy /∈ L geben muss.

Bemerkung : Entsprechend modifizierte Spiel-Schemata sind auch geeignet, Nicht-Kontext-freiheits-Beweise mit dem Lemma von Ogden und Nicht-Regularitats-Beweise mit demPumping-Lemma fur regulare Sprachen durchzufuhren.

4.5 Der Cocke-Younger-Kasami-Algorithmus

In diesem Abschnitt betrachten wir das Wortproblem fur kontextfreie Grammatiken, d. h.das Problem, fur eine vorgelegte kontextfreie Grammatik G = (V,Σ, S, P ) und ein Wortw ∈ Σ∗ zu entscheiden, ob w ∈ L(G) gilt oder nicht. Wir konnen annehmen, dass Gin Chomsky-Normalform vorliegt (andernfalls wenden wir den Umbau-Algorithmus ausAbschnitt 4.3 an). Falls w = ε, mussen wir nur prufen, ob S → ε eine Produktion in Pist. Also interessieren uns nur Worter w 6= ε. In Ableitungen fur ein solches w konnenkeine ε-Produktionen vorkommen. Wir beschranken uns also auf die Produktionen in P ,die die Form A→ BC oder A→ a haben, mit A,B,C ∈ V , a ∈ Σ.

Wir benutzen das Prinzip der dynamischen Programmierung , das in der Vorlesung

”Effiziente Algorithmen“ genauer behandelt wird.

Es sei w = a1 · · · an ∈ Σ∗ gegeben, n ≥ 1. Wir wollen fur jedes Teilwort ai · · · ai+d−1,1 ≤ d ≤ n, 1 ≤ i ≤ n− d+ 1, von w wissen, aus welchen Variablen dieses Wort herleitbarist. Dazu definieren wir Mengen

Ud,i := {A ∈ V | A ∗⇒ ai · · · ai+d−1}, fur 1 ≤ d ≤ n, 1 ≤ i ≤ n− d+ 1.

Offenbar ist w ∈ L(G) genau dann wenn S ∈ Un,1. Wir uberlegen nun, wie die Ud,i durchInduktion uber d = 1, 2, . . . , n berechnet werden konnen.

Induktionsanfang d = 1: Weil G in Chomsky-Normalform ist, gilt A∗⇒ a fur A ∈ V ,

a ∈ Σ genau dann wenn A→ a in P ist. Also:

U1,i = {A ∈ V | A→ ai}, fur 1 ≤ i ≤ n.

Induktionsschritt d > 1: Setze v := ai · · · ai+d−1. Ist A∗⇒ v, so gibt es einen A-

Ableitungsbaum T mit α(T ) = v. Die Wurzel von T ist also mit A beschriftet, undT hat d Blatter. Die Wurzel muss zwei Nachfolger haben, die mit Variablen (etwa C undD) beschriftet sind. Schematisch sieht das so aus:

157

Page 58: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

TC

TD

A

C D

w’

w’’

Die beiden Teilbaume von T heißen TC und TD, und wir setzen w′ := α(TC), w′′ := α(TD).Offenbar gilt:

(4.1)C∗⇒ w′, D

∗⇒ w′′, v = w′w′′, und 1 ≤ |w′|, |w′′| < d ,und A→ CD ist Produktion.

Umgekehrt uberlegt man sich leicht, anhand desselben Bildes, dass aus der Situation (4.1)

folgt, dass A∗⇒ v. – Wir haben also, fur A ∈ V :

A∗⇒ ai · · · ai+d−1 ⇔ ∃C,D ∈ V ∃d′ : 1 ≤ d′ < d− 1 und

C∗⇒ ai · · · ai+d′−1, D

∗⇒ ai+d′ · · · ai+d−1

und A→ CD ist Produktion .

Damit erhalten wir folgende Rekursionsformel fur die Mengen Ud,i:

Ud,i = {A ∈ V | ∃C,D ∈ V ∃d′ : 1 ≤ d′ < d und

A→ CD ist Produktion und

C ∈ Ud′,i und D ∈ Ud−d′,i+d′}.

Aus der Rekursionsformel ergibt sich der folgende iterative Algorithmus zur Losung desWortproblems fur eine Grammatik G in Chomsky-Normalform.

Eingabe: Grammatik G = (V,Σ, S, P ) in Chomsky-Normalform, w = a1 · · · an ∈ Σ∗.

Falls w = ε, prufe, ob S → ε Produktion ist.Falls ja, gib

”JA“ aus, sonst

”NEIN“.

Ab hier wird n ≥ 1 vorausgesetzt.

Datenstruktur: Ein Array U [1..n, 1..n], wo jeder Eintrag eine Teilmenge von V ist.

Initialisierung: U [d, i] := ∅, fur 1 ≤ d ≤ n, 1 ≤ i ≤ n− d+ 1.

(Nur diese Eintrage in U werden benutzt. d ist die Lange des betrachteten Teilworts, idie Position des ersten Buchstabens.)

Methode:

1. U [1, i] := {A | A→ ai ist Produktion }, fur 1 ≤ i ≤ n.

158

Page 59: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

2. for d := 2 to n do

for i := 1 to n− d+ 1 do

for d′ := 1 to d− 1 do

U [d, i] := U [d, i] ∪ {A ∈ V | es gibt eine Produktion A→ CD

und C ∈ U [d′, i], D ∈ U [d− d′, i+ d′]} .

3. Falls S ∈ U [n, 1], gib”JA“ aus, sonst

”NEIN“.

Die Korrektheit des Algorithmus folgt aus den vorher angestellten Uberlegungen. DieLaufzeit ist O(n3) – dabei geht die Große der Grammatik G in die in dem

”O“ versteckte

Konstante ein.

Wenn man den CYK-Algorithmus von Hand ausfuhrt, verwendet man ein dreieckigesSchema, dessen Felder den relevanten Eintragen des Arrays U entsprechen. In Feld (d, i),1 ≤ d ≤ n, 1 ≤ i ≤ n − d + 1, werden die Variablen A ∈ Dd,i eingetragen, also dieVariablen, aus denen ai · · · ai+d−1 ableitbar ist.

. . . . .

d

n

a a an

n

w

i

...

= 1

...

2

2

...

2

=1

= 1

Die Eintrage werden zeilenweise berechnet. Die Eintrage in Zeile d = 1 ergeben sich direktaus den Produktionen der Form A → a. Um die Variablen in Zelle (d, i) fur d > 1 zuberechnen, betrachtet man Paare von schon ausgefullten Zellen nach folgendem Muster,etwa fur d = 5, i = 2:

159

Page 60: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

n

a a an

n

w

i. . . . .

*

1

2

3

4 1

2

3

4d

4

=

=

2

5

1

= 6

2

1

2

3

=1

Abbildung 4.20: Ein Schritt im CYK-Algorithmus, zu bearbeitende Zellen

Fur d′ = 1, . . . , d − 1 pruft man fur jede Produktion A → CD der Grammatik, ob C inZelle (i, d′) und D in Zelle (i+ d′, d− d′) vorkommt. (Falls dies so ist, wird A in die Zelle(d, i) eingetragen.) In Abb. 4.20 wird die Zelle (2, 5) ausgefullt. Zusammengehorige Zellen(i, d′) und (i+ d′, d− d′) sind mit den gleichen eingekreisten Zahlen markiert. Die Zellen(i, d′) bilden im Schema eine Teil-Spalte, die Zellen (i + d′, d − d′) eine Teil-Diagonale.Zum Beispiel muss man testen, ob es eine Produktion A → CD gibt, derart dass C inZelle (3, 2) und D in Zelle (2, 5) steht (mit eingekreister

”3“ markiertes Zellenpaar). Die

schraffierten Dreiecke deuten an, welche Teilworter betroffen sind, wenn die Zellen (2, 3)und (5, 2) (Nummer 3) untersucht werden.

Beispiel : Betrachte die Grammatik aus Beispiel 4.4.2. Anwenden des Verfahrens auf dieEingaben w1 = 00100111 und w2 = 01011100 liefert die in Abb. 4.21 angegebenen Er-gebnisse. (Ist die Menge Ud,i leer, deuten wir dies durch Freilassen des entsprechendenKastchens an.)

160

Page 61: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

AB B B B B B B BA A A A A A A

0 0 01 1 1

d=1

2

3

4

5

6

7

8

1 1 1 10 0 0 0

S S

S

S

S

D

0 1

S S S

D

S

D

D

Abbildung 4.21: Anwendung des CYK-Algorithmus auf zwei Worter

Es ergibt sich, dass w1 in L(G) ist, w2 dagegen nicht.

Durch eine leichte Erweiterung der Datenstruktur ist es auch moglich, den Algorithmusso auszubauen, dass im Falle w ∈ L(G) eine Ableitungsfolge oder ein Ableitungsbaum furw ausgegeben wird: Dazu notiert man fur jede eingetragene Variable A die ProduktionA→ BC, die zum Eintrag gefuhrt hat, und den Wert d′, der zu diesem Eintrag gehort. Mitdiesen Informationen lasst sich, von dem S in Kastchen (d, 1) beginnend, ein Ableitungs-baum aufbauen. Ebenso ist leicht feststellbar, ob das Wort w mehrere Ableitungen besitzt:Wenn in ein Kastchen (i, d) dieselbe Variable A ein zweites Mal eingetragen wird, bedeu-

tet dies, dass es zwei verschiedene Ableitungsbaume fur die Ableitung A∗⇒ ai · · · ai+d−1

gibt. Wenn ein solcher Eintrag im weiteren Verlauf dazu beitragt, dass die Variable S indas Kastchen (n, 1) eingetragen wird, dann gibt es fur das Eingabewort zwei verschiedeneAbleitungen.

Wir betrachten nochmals zwei Beispieleingaben fur die Grammatik aus Beispiel 4.4.2:w3 = 01001101 und w4 = 01010111. Die entsprechenden Eintragungen im Schema findensich in Abb. 4.22.

161

Page 62: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

2

21

1

B B B BA A A AB B B B

S S S

S

SS

SS

SS

S S

S S S

D

D

D

A

D

A AB

0 01 1 1

d=1

2

3

4

5

6

7

8

1 10 01 0 1 0 0 1 1

Abbildung 4.22: Mehrere Ableitungen im CYK-Algorithmus

Es ergibt sich, dass w3 zwei verschiedene Ableitungsbaume besitzt. Die beiden Paare vonVariablen S, die zu je einem Eintrag

”S“ in Kastchen (8, 1) fuhren, sind mit Indizes 1

bzw. 2 markiert. Das Schema fur w4 weist ebenfalls eine Doppel-Eintragung auf, jedochist w4 nicht in L(G).

Wir haben gezeigt:

4.5.1 Satz Es gibt einen Algorithmus, der zu einer vorgelegten kontextfreien GrammatikG = (V,Σ, S, P ) und w ∈ Σ∗ entscheidet, ob w ∈ L(G). Fur festes G ist die Laufzeit desAlgorithmus O(n3), fur |w| = n. (Die Große und Struktur der Grammatik G geht in dieim

”O“ versteckte Konstante ein.)

Es sei angemerkt, dass die Laufzeit O(n3) fur die Analyse und Ubersetzung von Pro-grammen in einer durch eine kontextfreie Grammatik spezifizierten Programmierspracheindiskutabel langsam ist – schließlich gibt es Programme, die aus zigtausenden von Text-einheiten (Tokens) bestehen. In der Praxis benutzt man daher spezielle Grammatiken, dieeine Syntaxanalyse in linearer Zeit erlauben. Weitere Erlauterungen hierzu finden sich imfolgenden Kapitel 5, und Details in einer Vorlesung

”Ubersetzerbau“.

4.6 Abschlusseigenschaften kontextfreier Sprachen I

Wir diskutieren hier zunachst einige Operationen, unter denen die Klasse L2 der kontext-freien Sprachen abgeschlossen ist. Die Beweistechniken fur diese positiven Abschlusseigen-

162

Page 63: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

schaften konnen auch gut fur den Entwurf von kontextfreien Grammatiken fur komplexereSprachen benutzt werden.

Zum zweiten werden wir zeigen, dass L2 nicht unter der Durchschnittsoperation undunter Komplementbildung abgeschlossen ist.

Weitere Abschlusseigenschaften der Klasse L2 und verwandter Klassen werden (nach derBesprechung von Kellerautomaten im folgenden Kapitel 5) in Abschnitt 5.6 diskutiert.

4.6.1 Satz Die Klasse L2 ist abgeschlossen unter Vereinigung, Konkatenation undKleene-Abschluss.

Beweis : Wir betrachten zunachst Vereinigung und Konkatenation.

Es sei L1 = L(G1), L2 = L(G2) fur kontextfreie Grammatiken G1 = (V1, Σ1, S1, P1) undG2 = (V2, Σ2, S2, P2). O. B. d. A. konnen wir annehmen, dass V1∩V2 = ∅. (Gegebenenfallsbenennt man Variablen um.) Dann definieren wir neue Grammatiken G′ und G′′ durchZusammenwerfen von P1 und P2 und Verbinden der beiden Teile durch eine passendgewahlte Startproduktion. Hierzu wahlen wir eine neue Startvariable S 6∈ V1 ∪ V2.

G′ := (V1 ∪ V2 ∪ {S},Σ1 ∪ Σ2, S, P1 ∪ P2 ∪ {S → S1 | S2})G′′ := (V1 ∪ V2 ∪ {S},Σ1 ∪ Σ2, S, P1 ∪ P2 ∪ {S → S1S2}).

Man uberzeugt sich leicht, dass L(G′) = L1 ∪ L2 und L(G′′) = L1L2 gilt.

Nun betrachten wir den Kleene-Abschluss. Gegeben sei eine kontextfreien GrammatikG =(V,Σ, S, P ). Wir wahlen eine neue Variable S ′, S ′ 6∈ V , und definieren eine kontextfreieGrammatik G′′′ wie folgt:

G′′′ := (V ∪ {S ′},Σ, S ′, P ∪ {S ′ → S S ′ | ε}).

Wieder ist leicht zu sehen, dass L(G′′′) = L(G)∗ gilt. �

4.6.2 Beispiel Wir betrachten die Grammatiken G1 = ({A}, {0, 1}, A, P1) mit denProduktionen A → 0A1 | ε und G2 = ({B}, {0, 1}, B, P2) mit den Produktionen B →1B0 | ε. Offenbar ist L(G1) = {0n1n | n ≥ 0} und L(G2) = {1n0n | n ≥ 0}.Eine Grammatik fur die Sprache

L(G1) ∪ L(G2) = {0n1n | n ≥ 0} ∪ {1n0n | n ≥ 0}

hat Startvariable S und Produktionen

S → A | BA → 0A1 | εB → 1B0 | ε

163

Page 64: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Eine Grammatik fur die Sprache

L(G1)L(G2) = {0n1n1m0m | n,m ≥ 0} = {0n1n+m0m | n,m ≥ 0}

hat Startvariable S und Produktionen

S → AB

A → 0A1 | εB → 1B0 | ε

Schließlich sieht eine Grammatik fur die Sprache

L(G1)∗ = {0n11n1 · · · 0nr1nr | r ≥ 0, n1, . . . , nr ≥ 0}

wie folgt aus: Startvariable S, Produktionen

S → AS | εA → 0A1 | ε

Fur den folgenden Satz rekapituliere man Definition 2.5.2, die die Substitution von Spra-chen definiert. Es ist ziemlich klar, dass kontextfreie Sprachen unter dieser Operationabgeschlossen sind.

4.6.3 Satz Die Klasse L2 ist abgeschlossen unter Substitution. D. h.: Wenn f eineSubstitution wie in Definition 2.5.2 ist und f(a1), . . . , f(an) sowie L kontextfreie Sprachensind, so ist auch f(L) kontextfrei.

Beweis : Man wahlt Grammatiken G1, . . . , Gn (mit Startvariablen S1, . . . , Sn) und G furdie Sprachen f(a1), . . . , f(an) und L und sorgt dafur, dass die Variablenmengen in diesenGrammatiken disjunkt sind. Dann ersetzt man fur 1 ≤ i ≤ n in G das Teminalzeichenai durch eine neue Variable Di, vereinigt alle Produktionenmengen, und fugt die n Pro-duktionen Di → Si zur Produktionenmenge hinzu. Die resultierende Grammatik erzeugtf(L). �

4.6.4 Satz Die Klasse L2 ist nicht abgeschlossen unter Durchschnitt und Komplement.

Beweis :”Durchschnitt“: Wir mussen zeigen, dass es kontextfreie Sprachen L1 und L2

gibt, deren Durchschnitt nicht kontextfrei ist. Betrachte hierzu

L1 = {aibicj | i, j ≥ 1} und L2 = {aibjcj | i, j ≥ 1}.

164

Page 65: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beide Sprachen sind kontextfrei. Zum Beispiel wird L1 von einer Grammatik mit denProduktionen

S → AC

A → aAb | abC → cC | c

erzeugt.

Jedoch ist L1 ∩ L2 = {ambmcm | m ≥ 1}, eine Sprache, die sich in Behauptung 4.4.3 alsnicht kontextfrei herausstellte.

”Komplement“: Wir untersuchen die Sprache

L3 = {aibjck | i, j, k ≥ 0, i 6= j oder j 6= k}.

Behauptung 1: L3 ist kontextfrei. – Dies sieht man folgendermaßen:

L3 = L′1 ∪ L′2 ∪ L′3 ∪ L′4,

wobei

L′1 = {aibjck | 0 ≤ i < j, k ≥ 0}L′2 = {aibjck | 0 ≤ j < i, k ≥ 0}L′3 = {aibjck | 0 ≤ j < k, i ≥ 0}L′4 = {aibjck | 0 ≤ k < j, i ≥ 0}.

Die vier Sprachen L′1, . . . , L′4 sind alle kontextfrei – zum Beispiel wird L′1 von einer Gram-

matik mit den folgenden Produktionen erzeugt:

S → AbC

A → aAb | Ab | εC → cC | ε

Nach Satz 4.6.1 ist also auch L3 kontextfrei.

Behauptung 2: L4 := L3 ∪ (Σ∗ − L(a∗b∗c∗)) ist kontextfrei. – Dies sieht man so ein:Die Sprache L(a∗b∗c∗) ist regular. Da die regularen Sprachen unter Komplementbildungabgeschlossen sind, ist auch Σ∗ − L(a∗b∗c∗) regular. Weil L3 ⊆ L2, ist Σ∗ − L(a∗b∗c∗)auch kontextfrei. Daraus folgt, wieder mit Satz 4.6.1, dass L4 ebenfalls kontextfrei ist.

Behauptung 3: L4 ist nicht kontextfrei. – In L4 sind alle Worter, die weder in Σ∗ −L(a∗b∗c∗) noch in L3 sind. Dies sind also die Worter der Form aibjck, die i = j und j = kerfullen. Das heißt:

L4 = {ambmcm | m ≥ 0},die Sprache, die nach Behauptung 4.4.3 und Bemerkung 4.4.4 nicht kontextfrei ist. �

165

Page 66: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

1

0

0

0 1

1

0

1

F

A

A

B

A F

A F

R

R

B

S

R

H

F

Abbildung 4.17: Zerlegung von α(T ) = 00101101: u = 00, v = 10, w = 1, x = ε, y = 101

166

Page 67: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Kapitel 5

Kellerautomaten

In diesem Kapitel behandeln wir das Maschinenmodell, das den kontextfreien Grammati-ken entspricht, namlich die nichtdeterministischen Kellerautomaten. Anhand des Modellswerden verschiedene Prinzipien fur die Syntaxanalyse diskutiert, d. h. die Erstellung einesAbleitungsbaumes zu einem vorgelegten Wort aus L(G): Top-Down-Parsing und Bottom-Up-Parsing. Weiter wird auf die deterministische Variante des Kellerautomaten-Modellsund die zugehorige Sprachklasse eingegangen. Schließlich werden wesentliche Abschluss-und Entscheidbarkeitseigenschaften der entsprechenden Sprachklassen diskutiert.

5.1 Nichtdeterministische Kellerautomaten

Was passiert mit der Berechnungsstarke von endlichen Automaten, wenn sie zusatzlichzur Steuereinheit mit einem weiteren (unendlichen) Speichermedium versehen werden?

Wir betrachten hier eine ganz spezielle Form eines Speichers: einen”Keller“ oder

”Stack“

(englisch auch:”pushdown store“).1

Diese Datenstruktur lasst die Operationen empty, push und pop zu, wobei empty einenleeren Keller erzeugt, push a das Element a oben auf den Keller legt, und pop das ober-ste Kellerelement entfernt und ausliest. Im Zusammenhang mit Sprachen speichern wirBuchstaben eines (Keller-)Alphabets.

1Synonym auch: Stapel, LIFO-Speicher, fur last-in-first-out-Speicher. Diese Struktur wird im 1. Seme-ster in der Lehrveranstaltung

”Algorithmen und Programmierung“ besprochen.

167

Page 68: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

leer: pop

pop pop poppoppoppop

κκλ

κ

λ

φ λκ

κλ

ππ

λκ

κκπ

λκ

λ

κπ

λκ

π

λκ

κλ

π

π π

λκ

λκ

κ λ

κ λpushpush push φ push π κpush push λ

push π λpush

Abbildung 5.1: Arbeitsweise eines Kellerspeichers

Die Funktionsweise eines Kellers wird in Abbildung 5.1 veranschaulicht, die den Effektder Operationsfolge

empty; push κ; push λ; push φ; pop; push π; push κ; push λ; pop; pop; push π;pop; pop; pop; pop; push λ;

auf einen anfangs leeren Keller zeigt.

Keller sind sehr gut zur Bearbeitung von klammerartigen Strukturen geeignet; zum Bei-spiel kann man die Auswertung eines (auch geklammerten und nach der Punkt-vor-Strich-

168

Page 69: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Regel auszuwertenden) arithmetischen Ausdrucks sehr bequem mit einer solchen Daten-struktur durchfuhren. Wir werden hier sehen, dass alle von kontextfreien Grammatikenerzeugbaren Strukturen von Automaten mit einem Keller analysiert werden konnen.

Anschaulich gesprochen besteht ein Kellerautomat aus einem Kellerspeicher (pushdownstore), einer Steuereinheit, wie sie von den endlichen Automaten bekannt ist, und einemEingabeband, das einfach von links nach rechts gelesen wird. Abbildung 5.2 gibt einBeispiel.

Lesekopf:

a ab bbbc cc cc c#

Eingabeband:

Steuereinheit: B

B

C

A

C

Keller:

Abbildung 5.2: Anschauliches Bild eines Kellerautomaten

Im Keller eines solchen Kellerautomaten konnen die Elemente eines”Keller-Alphabets“ Γ

gespeichert werden. Anfangs steht im Keller ein besonderes Zeichen, das”Keller-Anfangs-

Symbol“. Die Eingabe fur den Kellerautomaten steht auf einem separaten Eingabeband,das mit Hilfe eines

”Lesekopfs“ einmal von links nach rechts gelesen wird. Anfangs steht

der Kopf auf dem ersten Zeichen des Eingabewortes x ∈ Σ∗. Die Steuereinheit des Keller-automaten sieht aus wie bei einem DFA oder einem NFA: es gibt endlich viele Zustande,von denen einer als Startzustand ausgezeichnet ist.

Der Kellerautomat rechnet in Schritten. In einem Schritt ruckt der Kopf auf dem Eingabe-band entweder um ein Feld nach rechts oder andert seine Position nicht (letzteres nennenwir einen

”ε-Zug“). Wenn das Eingabewort vollstandig gelesen worden ist, befindet sich

der Lesekopf rechts von der Eingabe; dies ist also auch eine legale Position.

Ein Schritt besteht dabei aus folgenden Teilschritten:

1. Das oberste Kellersymbol Z wird vom Keller entfernt und gemerkt (pop-Operation).

169

Page 70: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

2. Es wird entweder das nachste Symbol ai des Eingabewortes gelesen (dann rucktder Lesekopf um ein Feld nach rechts) oder nichts vom Eingabeband gelesen (derLesekopf bewegt sich nicht: ε-Zug).

3. Das Kellerzeichen Z, der gegenwartige Zustand q und (falls kein ε-Zug vorliegt) dasZeichen ai zusammen legen fest, welche Zuge ausfuhrbar sind. Ein Zug besteht dabeiaus

– einem neuen Zustand q′;

– einer Folge γ = Z1 · · ·Zr von Kellerzeichen, die auf den Keller gelegt werden:Der Keller verandert sich gemaß der Operationsfolge

push(Zr); push(Zr−1); . . . ; push(Z1).

Einer der ausfuhrbaren Zuge wird durchgefuhrt.

In einer gegebenen Situation konnen in Teilschritt 3. kein, ein, oder mehrere verschiedeneZuge ausfuhrbar sein. Die hier betrachteten Kellerautomaten sind also nichtdetermini-stisch. Daher sind, wie bei NFA’s, eventuell auf einer Eingabe viele verschiedene Berech-nungen moglich.

Per Konvention legen wir fest, dass der Kellerautomat”mit leerem Keller akzeptiert“,

d. h. eine Berechnung des Kellerautomaten auf einer Eingabe x = a1 · · · an akzeptiert, fallsnach Lesen aller Zeichen der Eingabe und Durchfuhrung entsprechender Zuge der Kellervollig geleert ist. Man beachte, dass nach volligem Entleeren des Kellers kein weitererSchritt moglich ist (Teilschritt 1. kann nicht durchgefuhrt werden) und dass nach Lesendes letzten Eingabezeichens an nur noch ε-Zuge moglich sind.

Die alternative Moglichkeit, uber akzeptierende Zustande zu akzeptieren, wird spaterbesprochen.

5.1.1 Beispiel Palindrome (Spiegelworter) uber {a, b, c} mit Mittezeichen.

Wir beschreiben die Funktionsweise einen Kellerautomaten, der genau die Worter der(nicht regularen) Sprache

L = {w#wR | w ∈ {a, b, c}∗}akzeptiert. Zunachst gehen wir informal vor. Der Automat arbeitet in zwei Phasen.

Lesephase: Vor dem Auftauchen von”#“ werden im Keller die bisher gelesenen Zeichen

gespeichert.

Kontrollphase: Nach dem”#“ werden die gelesenen Zeichen der Reihe nach mit den

Kellerzeichen verglichen.

Die Steuereinheit wird benutzt, um zwischen den Phasen (”L“ fur links“,

”R“ fur

”rechts“)

zu unterscheiden. Wenn in der Kontrollphase ein weiteres”#“ auftaucht, bricht die Rech-

nung ab; die Eingabe wird nicht akzeptiert.

170

Page 71: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beginn:

Lesekopf

a ab bbbc cc cc c#

Keller:

R

L

Eingabeband:

Nach dem Einlesen von 5 Buchstaben:

CACBB

a ab bbbc cc cc c#

Keller:

R

L

Eingabeband:

Nach dem Entdecken des #:

CACBBC

a ab bbbc cc cc c#

Keller:

R

L

Eingabeband:

171

Page 72: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Nach dem Kontrollieren von 3 Buchstaben:

CAC

a ab bbbc cc cc c#

Keller:

R

L

Eingabeband:

Am Ende der Eingabe:

Wort zuende, Keller leer: akzeptieren!

a ab bbbc cc cc c#

Keller:

R

L

Eingabeband:

Wir setzen nun die obige informale Beschreibung in eine formale Definition um.

5.1.2 Definition Ein nichtdeterministischer Kellerautomat (englisch: nondeter-ministic pushdown automaton; Abk.: NPDA) ist ein 6-Tupel M = (Q,Σ,Γ, q0, Z0, δ),bestehend aus 6 Komponenten:

• Q, einer endlichen, nichtleeren Menge von Zustanden,

• Σ, dem Eingabe-Alphabet;

• Γ, dem Keller-Alphabet (Stack-Alphabet)

• q0 ∈ Q, dem Startzustand

• Z0 ∈ Γ, dem Symbol, das anfangs im Keller steht

172

Page 73: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

• δ : Q× (Σ∪{ε})×Γ→ P<∞(Q×Γ∗), der (nichtdeterministischen) Ubergangsfunk-tion.

(Dabei steht P<∞(R) fur {T ⊆ R | T endlich}, fur beliebige Mengen R.)

Wir erlautern die Details und die Anwendung der Ubergangsfunktion δ. Wenn q ein Zu-stand, a ein Buchstabe aus Σ und Z ein Buchstabe aus dem Kelleralphabet Γ ist, dannist δ(q, a, Z) eine endliche Menge von Paaren (q′, Z1 · · ·Zr), q

′ Zustand, r ≥ 0, Z1, . . . , Zr

Buchstaben aus Γ. Jedes solche Paar beschreibt einen moglichen Zug , wenn auf demEingabeband a steht, der Automat in Zustand q ist und das oberste Kellerzeichen Z ist.Wenn δ(q, a, Z) = ∅ ist, ist in dieser Situation kein Zug moglich, der a liest. Wird der Zug(q′, Z1 · · ·Zr) angewendet,

• geht der Automat in den neuen Zustand q′ uber,

• das Eingabezeichen a wird gelesen,

• der Lesekopf wird um ein Feld nach rechts geruckt,

• das alte Kellerzeichen Z wird entfernt (”pop“) und

• die Kellerzeichen Z1, . . . , Zr werden auf den Keller gepackt, in der Art, dass Z1 obenliegt. Dies entspricht der Operationsfolge push(Zr); push(Zr−1); . . . ; push(Z1).

Bemerkung : Mit r = 0 wird das oberste Kellersymbol gestrichen. Mit r = 1 und Z1 = Zbleibt der Keller unverandert. Mit r ≥ 2 und Zr = Z werden Z1, . . . , Zr−1 auf den Kellergestapelt.

Neben den Zugen, die einen Buchstaben lesen, gibt es die ε-Zuge, die durch die Wer-te δ(q, ε, Z) gegeben sind. Auch δ(q, ε, Z) ist jeweils eine endliche, moglicherweise leere,Menge von Zugen. Wenn der Automat in Zustand q ist und das oberste KellerzeichenZ ist, kann einer der Zuge aus δ(q, ε, Z) ausgefuhrt werden. Wenn der Zug (q′, Z1 · · ·Zr)ausgefuhrt wird, geht der Automat in den Zustand q′ uber und ersetzt das oberste Kel-lerzeichen Z durch Z1 · · ·Zr. Der Lesekopf verandert seine Position nicht.

Beachte: In einer Situation, in der M in Zustand q ist, das nachste Eingabezeichen a istund das oberste Kellerzeichen Z ist, ist jeder der Zuge aus δ(q, a, Z)∪δ(q, ε, Z) anwendbar.

Wir sagen (vorerst informal), dass M ein Wort x akzeptiert, wenn es moglich ist, ausder Startsituation (Zustand q0, Kellerinhalt Z0, x als Inhalt des Eingabebands) durchAnwendung einer von δ erlaubten Folge von Zugen das Eingabewort vollstandig zu lesenund dabei den Keller zu leeren.

5.1.3 Beispiel Wir setzen Beispiel 5.1.1 fort. Ein NPDA, der genau die Palindromemit Mittezeichen akzeptiert, hat die folgenden Komponenten:

• Q = {L,R}

173

Page 74: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

• Σ = {a, b, c, #}• Γ = {A,B,C,⊥}• q0 = L

• Z0 = ⊥• δ ist durch die folgende Tabelle gegeben:

δ ⊥ A B C(L, a) (L,A) (L,AA) (L,AB) (L,AC)(L, b) (L,B) (L,BA) (L,BB) (L,BC)(L, c) (L,C) (L,CA) (L,CB) (L,CC)(L, #) (R, ε) (R,A) (R,B) (R,C)(R, a) – (R, ε) – –(R, b) – – (R, ε) –(R, c) – – – (R, ε)(R, #) – – – –

In der Tabelle steht ein Paar (q′, γ) fur die Einermenge {(q′, γ)}; der Strich”– “

steht fur ∅. Die Zeilen fur die ε-Zuge sind weggelassen, da δ(q, a, Z) = ∅ ist fur allea, q, Z, also uberhaupt keine ε-Zuge moglich sind.

Man sieht, dass die Ubergangsfunktion deterministisch ist in dem Sinn, dass in jeder Si-tuation entweder ein oder kein Zug moglich ist. Dies ist von der Definition nicht verboten.

Das Anfangs-Keller-Zeichen wird im ersten Leseschritt geloscht.

Man uberzeuge sich durch Testen auf einigen Eingabewortern, z. B. ε, #, a#a, a#, ac#caund acc#ccab, dass der beschriebene Automat genau mit den Palindromen mit Mitte-zeichen als Input die beabsichtigte Berechnung absolviert (vollstandiges Lesen des Ein-gabeworts, Leeren des Kellers). Situationen, die zu einem fehlerhaften Anhalten fuhren,sind:

• Leeren des Kellers, bevor das Eingabewort vollstandig gelesen ist;

• Erreichen des Endes des Eingabewortes, ohne dass der Keller leer ist;

• eine Situation mit Zustand q, oberstem Kellerzeichen Z, Eingabebuchstaben a, inder δ(q, a, Z) ∪ δ(q, ε, Z) = ∅ ist.

Auch beachte man die Wirkung der Zuge

• (L,AB) ∈ δ(L, a,B) (Hinzufugen von”A“ im Keller),

• (L,A) ∈ δ(L, #,A) (Keller bleibt unverandert),

• (R, ε) ∈ δ(L, a,A) (Loschen des Kellersymbols”A“ nach Abgleich mit dem Einga-

bezeichen a).

174

Page 75: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Alternativ zur Tabellendarstellung kann man fur den Entwurf und fur die Beschreibungder Ubergangsfunktion fur (kleine) NPDA’s auch eine graphische Darstellung benutzen.In Abb. 5.3 ist eine solche Darstellung fur den NPDA aus Beispiel 5.1.3 angegeben.

εa

b

,

,

A

B

c , C

u

u

u

u

u

u

,# u u

L R

Start

u

,# ε

steht für A, B oder C

b

c

,

,

a , A

B

C a

b

,

,

c ,

A

B

C

ε

ε

Abbildung 5.3: Graphische Darstellung eines NPDA

In einer solchen graphischen Darstellung von M = (Q,Σ,Γ, q0, Z0, δ) gibt es fur jedenZustand q ∈ Q einen Knoten, der mit q beschriftet ist. Der Knoten fur den Startzustandq0 ist mit einem Pfeil gekennzeichnet. Falls (q′, Z1 · · ·Zr) ∈ δ(q, a, Z), verlauft eine Kantevon q nach q′, die mit

a, Z | Z1 · · ·Zr

beschriftet ist. Dabei werden Mehrfachkanten zu einer zusammengefasst, die mit einerListe von Beschriftungen versehen ist; weitere Abkurzungen fur ahnliche Ubergange sindmoglich.

Um auch die Wirkung des Nichtdeterminismus zu sehen, betrachten wir ein weiteresBeispiel.

5.1.4 Beispiel Die Sprache

L = {w wR | w ∈ {a, b, c}∗}

enthalt genau die Palindrome (Spiegelworter) uber {a, b, c}, die gerade Lange haben.Zum Beispiel sind ε, aaaa und abbccbba in dieser Sprache, nicht hingegen aca und abca.Die Idee fur einen NPDA, der die Worter dieser Sprache akzeptiert, ist die folgende. DerAutomat arbeitet in zwei Phasen.

Lesephase: (Zustand”L“) Die gelesenen Zeichen werden im Keller gespeichert.

175

Page 76: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Kontrollphase: (Zustand”R“) Die gelesenen Zeichen werden mit den Kellerzeichen ver-

glichen.

Da das Eingabewort keine Markierung fur das Umschalten von der Lese- zur Kontrollphaseenthalt, benutzen wir hierfur den Nichtdeterminismus: Jederzeit wahrend der Lesephasekann der NPDA nichtdeterministisch wahlen, ob das nachste Zeichen gelesen und im Kellergespeichert oder spontan (mit einem ε-Zug) in die Kontrollphase gewechselt werden soll.

Der NPDA hat die folgenden Komponenten:

• Q = {L,R}

• Σ = {a, b, c}

• Γ = {A,B,C,⊥}

• q0 = L

• Z0 = ⊥

• δ ist durch die folgende Tabelle gegeben:

δ ⊥ A B C(L, a) (L,A) (L,AA) (L,AB) (L,AC)(L, b) (L,B) (L,BA) (L,BB) (L,BC)(L, c) (L,C) (L,CA) (L,CB) (L,CC)(L, ε) (R, ε) (R,A) (R,B) (R,C)(R, a) – (R, ε) – –(R, b) – – (R, ε) –(R, c) – – – (R, ε)

Die graphische Darstellung sieht aus wie in Abb. 5.4 angegeben.

ε

, u uεb

c

,

,

a , A

B

CL R

a

b

,

,

c ,

A

B

C

ε

ε

ε

a

b

,

,

A

B

c , C

Start

u

u

u

u

u

u

u

, ε

steht für A, B oder C

Abbildung 5.4: NPDA fur Palindrome gerader Lange

176

Page 77: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Nun hat in dieser Tabelle jeder Eintrag δ(q, a, Z) und δ(q, ε, Z) Große 1 oder Große 0. Woist die nichtdeterministische Enscheidungsmoglichkeit? Wenn zum Beispiel der Zustand Lund das oberste Kellerzeichen A ist, und der nachste Buchstabe auf dem Eingabeband dasb, dann kann der NPDA zwischen den Zugen (L,BA) ∈ δ(L, b,A) und (R,A) ∈ δ(L, ε,A)wahlen.

Man finde fur die Eingabe acca eine Berechnung des NPDA M , die das Wort liest und denKeller leert, sowie eine Berechnung, die eine Fehlentscheidung trifft und in eine Sackgassegerat! Wie sieht die erfolgreiche Berechnung fur die Eingabe ε aus?

Um das Verhalten von NPDA’s formal zu erfassen, ohne nichtmathematische Gegenstandewie Lesekopfe oder Kellerspeicher zu erwahnen, benutzen wir das Konzept der Konfigu-rationen . Dieses Vorgehen ist typisch und beispielhaft fur die exakte Beschreibung derSemantik von Systemen, die in Schritten rechnen und Speicher- oder Steuer-Zustandehaben.

5.1.5 Definition Sei M = (Q,Σ,Γ, q0, Z0, δ) ein NPDA.

(a) Eine Konfiguration von M ist ein Tripel (q, w, α) ∈ Q× Σ∗ × Γ∗.

Beispiel : Im NPDA aus Beispiel 5.1.4 sind (L, aabbc,BBC) oder (R, aabbc,CCC⊥AB)Konfigurationen.

(q ist der gegenwartige Zustand, w ist das noch nicht gelesene Suffix des Eingabe-wortes (w wird oft auch

”Restwort“ genannt), α = Y1 · · ·Yr ∈ Γ∗, r ≥ 0, ist der

Kellerinhalt – Y1 ist das oberste Kellersymbol. Es ist nicht verlangt, dass das Wortα in einer Berechnung als Kellerinhalt auftreten kann.)

Die Menge aller Konfigurationen von M nennen wir KM .

(KM ist naturlich eine unendliche Menge.)

(b) Wenn k = (q, au, Zγ) Konfiguration ist, mit q ∈ Q, a ∈ Σ, u ∈ Σ∗, Z ∈ Γ undγ ∈ Γ∗,

und wenn zudem (q′, Z1 · · ·Zr) ∈ δ(q, a, Z) ist, dann nennen wir k′ = (q′, u, Z1 · · ·Zr γ)eine direkte Nachfolgekonfiguration von k und schreiben

k ⊢M k′ oder k ⊢ k′;

weiterhin: wenn k = (q, u, Zγ) Konfiguration ist, mit q ∈ Q, u ∈ Σ∗, Z ∈ Γ undγ ∈ Γ∗,

und wenn zudem (q′, Z1 · · ·Zr) ∈ δ(q, ε, Z) ist, dann nennen wir k′ = (q′, u, Z1 · · ·Zr γ)eine direkte Nachfolgekonfiguration von k und schreiben

k ⊢M k′ oder k ⊢ k′.

Damit ist ⊢M eine zweistellige Relation auf KM .

177

Page 78: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

(c) Die Relation ⊢∗M , oder kurz ⊢∗, ist die reflexive und transitive Hulle von ⊢ (sieheBeispiel A.2.14 im Anhang), das heißt: k ⊢∗M k′ ⇔ es existiert eine Folge k0 =k, . . . , kl = k′, l ≥ 0, derart dass ki−1 ⊢ ki, fur 1 ≤ i ≤ l.

(Dies bedeutet, dass k = k′ ist oder dass man in einer Reihe von legalen Schrittenvon der Konfiguration k zur Konfiguration k′ kommen kann.)

(d) M akzeptiert x ∈ Σ∗, falls (q0, x, Z0) ⊢∗M (q, ε, ε) fur ein q ∈ Q.

(Startend in Zustand q0, mit Eingabe x und nur dem Zeichen Z0 im Keller, kannin einer Reihe von legalen Schritten das Eingabewort gelesen und der Keller geleertwerden. Der erreichte Zustand ist irrelevant.)

Die Konfiguration initM(x) := (q0, x, Z0) heißt Startkonfiguration von M zuEingabe x.

Jede legale Konfigurationenfolge

initM(x) = k0 ⊢M k1 ⊢M k2 ⊢M · · · ⊢M kt

heißt eine Berechnung von M auf x.

(e) LM := {x ∈ Σ∗ |M akzeptiert x} heißt die von M akzeptierte Sprache .

Wir betrachten nochmals Beispiel 5.1.4. Die folgenden Paare liegen in der Relation ⊢M :

(L, aabbc,BBC) ⊢M (L, abbc,ABBC)

(L, aabbc,BBC) ⊢M (R, aabbc,BBC)(Auch dumme Ubergange konnen legal sein.)

(L, abc,BBC⊥A) ⊢M (L, bc,ABBC⊥A) (Es kommt nicht darauf an, ob k und k′ inechten Berechnungen vorkommen.)

(R, aabbc,BBC) hat keine Nachfolgekonfiguration.

(R, aabbc, ε) hat keine Nachfolgekonfiguration. (Allgemein gilt: Eine Konfiguration mitleerem Keller hat keine Nachfolgekonfiguration.)

Eine legale Berechnung dieses NPDA, die zur gewunschten akzeptierenden Konfigurationfuhrt, ist folgende:

(L, cbbc,⊥)

⊢ (L, bbc,C)

⊢ (L, bc,BC)

⊢ (R, bc,BC)

⊢ (R, c,C)

⊢ (R, ε, ε).

178

Page 79: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Eine legale, aber nicht akzeptierende Berechnung auf demselben Eingabewort:

(L, cbbc,⊥)

⊢ (L, bbc,C)

⊢ (L, bc,BC)

⊢ (L, c,BBC)

⊢ (R, c,BBC)

Diese Berechnung fuhrt in eine”Sackgasse“, eine Konfiguration ohne Nachfolgekonfigura-

tion. Obgleich solche Sackgassen existieren, gehort das Wort x = cbbc zur Sprache LM :eine akzeptierende Berechnung genugt uns.

Startkonfiguration:

ε

ε

ε

ε ε

(R,ba,BA)

(R, , ) (R, ,ABBBBA)

(L,bbbba,A)

(L,bbba,BA)

(L,bba,BBA)

(L,ba,BBBA)

(L,a,BBBBA)

(R,a,BBBBA)

(R,ba,BBBA)

(R,a,BBA)

(R,bba,BBA)

(R,abbbba, )

(L, ,ABBBBA)

(R,bbbba,A)

(R,bba,A)

(R,a,A)

(L,abbbba, )

(R,bbba,BA)

Abbildung 5.5: Baum aller moglichen Berechnungen auf Eingabe abbbba

Um dies zu verdeutlichen, geben wir in Abb. 5.5 den Baum aller moglichen legalen Be-rechnungen auf dem Eingabewort abbbba an. Sechs dieser Berechnungen enden in einerSackgasse, aber eine erreicht die akzeptierende Konfiguration (R, ε, ε). Dies genugt, umabbbba ∈ LM zu folgern. Wenn ein Wort x nicht in LM ist, dann enthalt der Baum allermoglichen Berechnungen keine einzige Berechnung, die in der akzeptierende Konfiguration(R, ε, ε) endet. (Man zeichne den entsprechenden Baum fur die Eingabe abbb!)

5.1.6 Beispiel Zu guter Letzt wollen wir noch einen NPDA fur die Sprache der kor-rekten Klammerausdrucke angeben. Zur Abwechslung benutzen wir nicht die Buchstaben0 und 1, sondern ( und ). Es geht also um die Sprache

L = {w | w ∈ {(, )}∗ ist korrekter Klammerausdruck}

Die Idee fur den NPDA ist ganz einfach: Wir merken uns im Keller (in Unardarstellung)die Anzahl der gelesenen

”offenen“ Klammern, fur die noch kein schließendes Gegenstuck

aufgetaucht ist. Das heißt: Beim Lesen eines”(“ wird der Kellerstand um 1 erhoht, beim

Lesen eines”)“ wird der Kellerstand um 1 erniedrigt. Ein Fehler tritt ein, wenn der

Keller leer ist und ein”)“ gelesen wird. Hingegen ist es kein Fehler, wenn der Keller leer

179

Page 80: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

wird und dann wieder ein”(“ gelesen wird. (Man hat dann ein Prafix des Eingabewortes

gesehen, das fur sich ein korrekter Klammerausdruck ist.) Hierfur benutzen wir folgendenTrick: Das Kellerendezeichen ⊥ wird nicht geloscht. Wenn es als oberstes Kellerzeichenauftaucht, wissen wir, dass der Keller

”eigentlich“ leer ist und dass kein

”)“ gelesen werden

kann. Andererseits erlauben wir in dieser Situation einen ε-Ubergang, der das ⊥ loscht,den Keller im technischen Sinn leert, und die Berechnung beendet. Der NPDA hat diefolgenden Komponenten:

• Q = {0} (|Q| = 1: Zustand ist irrelevant);

• Σ = {(, )};

• Γ = {1,⊥};

• q0 = 0;

• Z0 = ⊥;

• δ ist durch folgende Tabelle gegeben:

δ ⊥ 1

(0, () (0, 1⊥) (0, 11)(0, )) − (0, ε)(0, ε) (0, ε) −

ε

( , 1

0Start ,

,

(

) ε

11

1

1

Abbildung 5.6: NPDA fur korrekte Klammerausdrucke

5.2 Top-Down-Parsing, LL-Parsing

Wir wollen zunachst anhand eines Beispiels uberlegen, dass Worter zu kontextfreienGrammatiken mit Kellerautomaten verarbeitet werden konnen. Dazu betrachten wir dieGrammatik G = (V,Σ, S, P ) mit V = {S}, Σ = {(, )} und P = {S → (S)S | ε}, die

180

Page 81: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

nach Proposition 4.2.8 die korrekten Klammerausdrucke erzeugt. Der Kellerautomat hatBandalphabet Σ, Kelleralphabet Γ = {S, (, )} und Anfangs-Kellerzeichen Z0 = S.

Erlaubt sind folgende Aktionen:

1) Ist”(“ oberstes Kellerzeichen und nachstes Eingabezeichen, streiche

”(“ aus dem

Keller und rucke den Lesekopf auf dem Eingabeband um ein Feld nach rechts (”Le-

sen“: L).

2) Wie 1), mit”(“ durch

”)“ ersetzt (

”Lesen“ : L).

3) Ist S oberstes Kellerzeichen, ersetze dies durch nichts (ε) oder durch die 4 Zeichen

”(S)S“ (

”Expandieren“: E).

Die Eingabe ()(()()) kann dann folgendermaßen verarbeitet werden:

Aktionstyp gelesene Bandbuchstaben KellerStart - S

E - (S)SL ( S)SE ( )SL () SE () (S)SL ()( S)SE ()( (S)S)SL ()(( S)S)SE ()(( )S)SL ()(() S)SE ()(() (S)S)SL ()(()( S)S)SE ()(()( )S)SL ()(()() S)SE ()(()() )SL ()(()()) SE ()(()())

Schluss

Beobachte: Konkateniert man in jeder Zeile die gelesenen Buchstaben und den Kellerin-halt, ergibt sich, von oben nach unten gelesen, eine Linksableitung fur das Eingabewort()(()()). Leseschritte bringen dabei die Ableitung nicht voran, sie verschieben nur einZeichen aus dem Keller in das schon gelesene Anfangsstuck. Expansionsschritte entspre-chen Ableitungsschritten.

Das Lesen eines Wortes w aus L(G) unter Herstellung einer Ableitung (insbesonodereeines Ableitungsbaums fur w) nennen wir Parsing . In unserem Beispiel wird das Wortvon links nach rechts gelesen; dabei wird eine Linksableitung erzeugt (

”LL-Parsing“).

181

Page 82: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Wenn man die in dieser Linksableitung durchgefuhrten Expansionsschritte in der in Lem-ma 4.2.3 (

”⇒“) beschriebenen Weise in einen Ableitungsbaum umsetzt, dann entsteht

dieser von der Wurzel (oben) her auf die Blatter (unten) zu wachsend. Wir sprechendaher beim LL-Parsing auch von

”Top-Down-Syntaxanalyse“.

5.2.1 Beispiel Wir formalisieren den oben skizzierten NPDA zur Grammatik mit denProduktionen S → (S)S | ε wie folgt:

• Q = {0}; q0 = 0 (der Zustand ist irrelevant);

• Σ = {(,)};

• Γ = {S, (, )}, Z0 = S;

• δ(0,(,() = {(0, ε)} (Leseschritt) ,

δ(0,),)) = {(0, ε)} (Leseschritt) ,

δ(0, ε, S) = {(0, ε), (0, (S)S)} (Expansionsschritt).

Das eben an einem Beispiel beschriebene Vorgehen lasst sich fur jede kontextfreie Gram-matik anwenden.

5.2.2 Satz Zu jeder kontextfreien Grammatik G gibt es einen NPDA M mit L(G) =LM . Der Kellerautomat M hat nur einen Zustand.

Beweis : Es sei G = (V,Σ, S, P ) eine kontextfreie Grammatik. Wir konstruieren M =(Q,Σ,Γ, q0, Z0, δ) in Verallgemeinerung von Beispiel 5.2.1 wie folgt. Wenn das obersteKellersymbol eine Variable A ist, kann diese in einem

”Expansionsschritt“ durch irgend-

eine rechte Seite α einer Produktion A→ α ersetzt werden. Der Nichtdeterminismus liegtdarin, dass zu einer Variablen mehrere rechte Seiten gehoren konnen. Wenn das obersteKellerzeichen ein Terminalzeichen a ist, kann nur ein

”Leseschritt“ erfolgen: es wird ge-

pruft, ob das nachste Eingabezeichen ebenfalls a ist; in diesem Fall wird dieses a gelesenund aus dem Keller geloscht. Formal:

• Q = {0},

• Γ = V ∪ Σ,

• Z0 = S,

• δ(0, a, a) = {(0, ε)} (Leseschritt)

δ(0, ε, A) = {(0, γ) | A→ γ ist in P}, fur A ∈ V (Expansionsschritt).

182

Page 83: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Es folgt nun der formale Beweis dafur, dass tatsachlich L(G) = LM ist. Dabei ist die Ideedes Beweises ganz einfach. Aus einer akzeptierenden Berechnung von M auf w erhaltenwir durch Betrachten der Expansionsschritte eine Linksableitung fur w in G; umgekehrtkann man aus einer Linksableitung eine akzeptierende Berechnung erhalten, indem manpassende Leseschritte dazwischenschiebt.

Die Details des Beweises sind nicht prufungsrelevant. Jedoch muss man in derLage sein, zu einer gegebenen Grammatik G den NPDA M zu definieren sowie aus einerakzeptierenden Berechnung von M die entsprechende Linksableitung abzulesen und auseiner Linksableitung eine akzeptierende Berechnung des NPDA zu konstruieren.

”L(G) ⊆ LM“: Es sei ein Wort w ∈ L(G) mit einer Linksableitung

S = α0 ⇒G α1 ⇒G · · · ⇒G αt = w,

(mit t ≥ 1) gegeben. Die Idee ist, zu zeigen, dass es eine akzeptierende Berechnungvon M auf w gibt, die genau dieser Linksableitung folgt. Technisch zeigen wir, dass furj = 0, 1, . . . , t die folgende Aussage (Aj) gilt:

Es sei w′ das langste Prafix von αj, das nur aus Terminalzeichen besteht.Schreibe αj = w′β und w = w′w′′.(D. h.: Fur j < t ist β = Aγ mit einer Variablen A; fur j = t ist β = ε.)Dann gilt fur M : (0, w, S) ⊢∗M (0, w′′, β).

Wir beweisen (Aj) durch Induktion uber j.

I.A.: j = 0. In diesem Fall ist w′ = ε, also β = S, und w′′ = w; damit gilt (0, w, S) ⊢∗M(0, w′′, β), weil beide Konfigurationen gleich sind.

Nun sei j ≥ 1.

I.V.: Die Behauptung (Aj−1) gilt. Das heißt: Es sei u′ das langste Prafix von αj−1 ohneVariable, w = u′u′′, und und αj−1 = u′Aγ. Es gibt eine Berechnung

(0, w, S) ⊢∗M (0, u′′, Aγ).

I.S.: In der Konfiguration (0, u′′, Aγ) wenden wir einen Expansionsschritt an, und zwarmit der Produktion A→ α, die von αj−1 = u′Aγ zu αj = u′αγ fuhrt. Dies liefert:

(5.1) (0, u′′, Aγ) ⊢M (0, u′′, αγ).

In Kombination mit der I.V. ergibt sich daraus:

(5.2) (0, w, S) ⊢∗M (0, u′′, αγ).

Wenn nun αγ mit einer Variablen beginnt oder gleich ε ist, sind wir fertig, da dann u′

auch das langste Prafix von αj aus Terminalzeichen ist. Sonst sei v′ das langste Prafix von

183

Page 84: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

αγ, das nur aus Terminalzeichen besteht. Schreibe αγ = v′ζ. Da u′αγ = u′v′ζ ⇒∗G u′u′′

im Rahmen einer Linksableitung, ist v′ auch Prafix von u′′, und wir konnen u′′ = v′v′′

schreiben. In der Konfiguration (0, u′′, αγ) wenden wir |v′| Leseschritte an und erhalten

(5.3) (0, u′′, αγ) = (0, v′v′′, v′ζ) ⊢∗M (0, v′′, ζ),

wobei entweder ζ = ε ist oder mit einer Variablen beginnt. Wenn wir nun (5.2) und (5.3)zusammensetzen, ergibt sich:

(5.4) (0, w, S) ⊢∗M (0, v′′, ζ),

und das ist die Induktionsbehauptung.

Damit haben wir die Aussage (Aj) fur alle j bewiesen. Insbesondere gilt (At). Weil aberαt = w ist, heißt (At) einfach, dass es eine Berechnung (0, w, S) ⊢∗M (0, ε, ε) gibt, was zuzeigen war.

”LM ⊆ L(G)“: Sei w ∈ LM . Dann haben wir eine akzeptierende Berechnung

initM(w) = (0, w, S) = k0 ⊢M k1 ⊢M · · · ⊢M kt = (0, ε, ε).

Wir zeigen (wie im Beispiel am Anfang dieses Abschnitts schon beobachtet), dass ausdieser Berechnung eine Linksableitung abgelesen werden kann. Technisch gehen wir wiefolgt vor.

Eine Konfiguration kj in dieser Berechnung hat folgende Form:

kj = (0, w′′j , βj),

wo w′′j der noch nicht gelesene Teil von w ist und βj ∈ (V ∪ Σ)∗ der Kellerinhalt. Wirkonnen also w = w′jw

′′j schreiben, fur ein Wort w′j (der schon gelesene Teil, der in der

Konfiguation kj nicht mehr erwahnt wird).

Behauptung: (Bj) S ⇒∗G w′jβj, fur j = 0, . . . , t.

(Wenn (Bj) fur alle j bewiesen ist, wenden wir (Bt) an und erhalten S ⇒∗G w′tβt = w, alsow ∈ L(G), wie gewunscht.)

Die Aussage (Bj) beweisen wir durch Induktion uber j.

I.A.: j = 0: Es ist w′0 = ε (noch nichts gelesen) und β0 = S. Daher gilt S ⇒∗G w′0β0.

Nun sei 1 ≤ j ≤ t.

I.V.: (Bj−1) gilt, d. h. S ⇒∗G w′j−1βj−1.

I.S.:

1. Fall : Der Schritt von kj−1 zu kj ist ein Expansionsschritt.Dann kann man βj−1 = Aγ schreiben, fur eine Variable A und γ ∈ (V ∪Σ)∗, und βj = αγ,wobei A→ α eine Produktion ist. Weiter gilt w′′j = w′′j−1 und daher w′j = w′j−1, weil keinZeichen gelesen wird. Daraus folgt:

w′j−1βj−1 = w′j−1Aγ ⇒G w′j−1αγ = w′jβj.

184

Page 85: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Wenn wir dies mit der I.V. kombinieren, ergibt sich S ⇒∗G w′jβj, also die Induktionsbe-hauptung (Bj).

2. Fall : Der Schritt von kj−1 zu kj ist ein Leseschritt.Dann gibt es ein a ∈ Σ so dass

βj−1 = aβj und w′′j−1 = aw′′j

gilt. Daraus folgt sofort w′j = w′j−1a. Wir erhalten:

w′j−1βj−1 = w′j−1aβj = w′jβj,

und daher nach der Induktionsvoraussetzung auch S ⇒∗G w′jβj, also die Induktionsbe-hauptung (Bj).

Dieser Beweis kann als Rezept interpretiert werden, wie aus einer akzeptierenden Berech-nung von M eine Linksableitung in G zu erhalten ist und umgekehrt. Die Leseschrittetauchen in der Ableitung nicht auf; die Schritte der Linksableitung entsprechen genau denExpansionsschritten der Berechnung des NPDAs. Man prufe dies noch einmal anhand desBeispiels am Anfang dieses Abschnitts (5.2) nach.

Ausblick: LL(1)-Grammatiken und ihre deterministischen Parser

Die Benutzung des Nichtdeterminismus zum Finden der richtigen Ableitungsschritte istnaturlich recht storend. Wenn die Grammatik G eindeutig ist (siehe Def. 4.2.6(a)), dannhat jedes Wort w ∈ L(G) genau eine Linksableitung; nach der Konstruktion aus demeben gefuhrten Beweis gibt es also genau eine akzeptierende Berechnung des NPDA M .Das heißt, dass es in jeder Situation genau eine korrekte Entscheidung gibt, die am Endezur akzeptierenden Situation fuhrt.

Wenn man einen wirklichen, benutzbaren Parser erstellen will, der nach dem Top-Down-Prinzip (und ohne Zurucksetzen) arbeitet, muss man einen Mechanismus bereitstellen,der es erlaubt, in jeder Situation diesen einen korrekten Zug zu finden. Eine Moglichkeithierfur sind die sogenannten LL(1)-Parser, die diese Entscheidung aufgrund des oberstenKellersymbols und des nachsten anstehenden Zeichen in der Eingabe treffen.

In Verallgemeinerung der LL(1)-Grammatiken betrachtet man auch LL(k)-Grammatikenfur beliebige k ≥ 1, bei denen der Parser die jeweils nachsten k Zeichen der Eingabeinspizieren darf (

”lookahead“), um die Entscheidung uber den nachsten vorzunehmenden

Zug zu treffen. Details zu LL(k)-Grammatiken und zur Konstruktion von LL-Parsernerfahrt man in der Vorlesung

”Ubersetzerbau“ oder aus den entsprechenden Lehrbuchern

wie [Aho, Sethi, Ullman, Compilerbau, Oldenbourg 1999] oder [Wilhelm, Maurer, Uber-setzerbau, Springer 1997].

Wir skizzieren das Vorgehen bei LL(1)-Grammatiken. Um die Diskussion zu vereinfa-chen, vereinbaren wir folgendes. Zu einer Grammatik G = (V,Σ, S, P ) wird ein neues

185

Page 86: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Terminalzeichen $, eine neue Variable S ′ und eine neue Produktion S ′ → S$ hinzu-gefugt. Die Variable S ′ wird die Startvariable. Die neue (erweiterte) Grammatik soll dannG′ = (V ′,Σ′, S ′, P ′) heißen, und wir betrachten nur Grammatiken, die diese Strukturhaben. Damit endet jedes Wort in L(G′) auf $, und dieses Zeichen kommt nirgendwoanders vor. (In tatsachlich verwendeten Sprachen gibt es Abwandlungen dieser Vereinba-rung. Zum Beispiel signalisiert in der Programmiersprache Pascal die Zeichenfolge end.

das Ende des Programms. In anderen Programmiersprachen spielt das nicht-druckbareZeichen eof, das das Dateiende markiert, die Rolle des Schlusszeichens.)

Die betrachteten LL-Kellerautomaten beginnen ihre Berechnung damit, die Zeichen $

und S in den Keller zu schreiben. Eingabeworter, die das Zeichen $ nicht oder nicht nuram Schluss enthalten, fuhren immer zu einem Fehler. Damit ist klar, dass akzeptierendeBerechnungen mit einem Leseschritt enden mussen, bei dem das Schlusszeichen $ derEingabe gelesen und das Schlusszeichen $ im Keller geloscht wird.

5.2.3 Definition Eine kontextfreie Grammatik G′ = (V ′,Σ′, S ′, P ′) (mit Endezeichen$) heißt vom Typ LL(1), wenn fur jede Variable A und jedes Paar verschiedener Pro-duktionen A→ α und A→ β gilt:

(a) Wenn α∗⇒ au, β

∗⇒ bv, a, b ∈ Σ′, u, v ∈ (Σ′)∗, dann ist a 6= b.(Aus zwei verschiedenen rechten Seiten in Produktionen von A kann nie derselbeerste Terminalbuchstabe entstehen.)

(b) Wenn α∗⇒ au, β

∗⇒ ε, S ′∗⇒ xAbv, u, x, v ∈ (Σ′)∗, a, b ∈ Σ′, dann ist a 6= b.

(Es kann nicht vorkommen, dass aus einer Produktion von A ein Terminalbuchstabeals erstes Zeichen entsteht, der auch in einer Ableitung an dieser Stelle stehen kann,die aus A das leere Wort erzeugt.)

Der Effekt dieser Definition ist folgender: Wenn man beim bislang fehlerlosen LL-Parsingeines Wortes w ∈ L(G′) in einer Situation angekommen ist, wo w = w′aw′′, w′ das schongelesene Teilwort, und aw′′ das noch zu lesende Restwort ist, und wenn der KellerinhaltAγ ist, mit A ∈ V ′, γ ∈ (V ′ ∪ Σ′)∗, dann gibt es nur eine Produktion A → α, die jetztanwendbar ist. Diese Produktion ist durch A und a eindeutig bestimmt.

5.2.4 Fakt Es gibt einen Algorithmus, der Grammatiken auf die LL(1)-Eigenschafttestet und der zu jeder Kombination (A, a), A ∈ V ′, a ∈ Σ′, den richtigen Zug (d. h. diejetzt anzuwendende Produktion) ermittelt.

5.2.5 Beispiel Wir demonstrieren die Struktur eines LL(1)-Parsers an einem ausfuhr-lichen Beispiel. Unsere erste Grammatik in Beispiel 3.1.1 diente zur Erzeugung der Mengeder arithmetischen Ausdrucke mit Klammern und Prioritaten. Wir wiederholen die Gram-matik hier, mit abgekurzten Variablen:

186

Page 87: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

G = ({T,E, F}, {+, -, *, /, (, ),n}, E, P ), wobei P die folgenden Regeln enthalt:

E → E + T | E - T | TT → T * F | T / F | FF → ( E ) | n

Diese Grammatik enthalt eine Erscheinung, die man”Linksrekursion“ nennt: es gibt Pro-

duktionen der Form A → Aα (allgemeiner: A∗⇒ Aα). Solche Grammatiken konnen

niemals LL(1)-Grammatiken sein. (Wieso?) Man baut (mit einem einfachen Algorithmus,den wir hier nicht besprechen) die Grammatik zu einer aquivalenten Grammatik um, diedie Erscheinung

”Linksrekursion“ nicht hat, und fugt gleich das Abschlusszeichen $ hinzu.

Dies liefert die folgende Grammatik:

G′ = ({T, T ′, E,E ′, F, S ′}, {+, -, *, /, (, ),n, $}, E ′, P ′), wobei P ′ die folgenden Regelnenthalt:

S ′ → E $

E → T E ′

E ′ → + T E ′ | - T E ′ | εT → F T ′

T ′ → * F T ′ | / F T ′ | εF → ( E ) | n

187

Page 88: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

S’

E

T

F T’

n ε

E’

T E’

F

E

E’

T’

F T’

E

T

F T’

n ε

E’

T

T’F

T’F

T

F T’

n ε

E’

T

F T’

n ε

E’−

ε

$

+

( )

ε

ε

/

( )ε

n ε

*n

Abbildung 5.7: Der Ableitungsbaum in G′ fur das Wort n+(n*n)/(n-n-n)$

Als Anschauungsmaterial fur das Funktionieren dieser Grammatik geben wir den Ablei-tungsbaum (Abb. 5.7) und eine Linksableitung (Abb. 5.8) fur das Wort n+(n*n)/(n-n-n)$an. Um diese etwas abzukurzen, notieren wir die Teilableitung T ⇒ FT ′ ⇒ nT ′ ⇒ n, diestillschweigend (mit

∗⇒) benutzt wird.

188

Page 89: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

S ′ ⇒ E$

⇒ TE ′$∗⇒ nE ′$

⇒ n+TE ′$

⇒ n+FT ′E ′$

⇒ n+(E)T ′E ′$

⇒ n+(TE ′)T ′E ′$

⇒ n+(FT ′E ′)T ′E ′$

⇒ n+(nT ′E ′)T ′E ′$

⇒ n+(n*FT ′E ′)T ′E ′$

⇒ n+(n*nT ′E ′)T ′E ′$

⇒ n+(n*nE ′)T ′E ′$

⇒ n+(n*n)T ′E ′$

⇒ n+(n*n)/FT ′E ′$

⇒ n+(n*n)/(E)T ′E ′$

⇒ n+(n*n)/(TE ′)T ′E ′$∗⇒ n+(n*n)/(nE ′)T ′E ′$

⇒ n+(n*n)/(n-TE ′)T ′E ′$∗⇒ n+(n*n)/(n-nE ′)T ′E ′$

⇒ n+(n*n)/(n-n-TE ′)T ′E ′$∗⇒ n+(n*n)/(n-n-nE ′)T ′E ′$

⇒ n+(n*n)/(n-n-n)T ′E ′$

⇒ n+(n*n)/(n-n-n)E ′$

⇒ n+(n*n)/(n-n-n)$

Abbildung 5.8: Die Linksableitung in G′ fur n+(n*n)/(n-n-n)$

Um die Wirkungsweise der Grammatik intuitiv zu verstehen, kann man sich vorstel-len, dass

”E“ fur einen

”Ausdruck mit + und -“ steht,

”E ′“ fur

”Erweiterung eines

+/-Ausdrucks“, und dass ahnlich”T“ fur einen

”Ausdruck mit * und /“ steht,

”T ′“ fur

”Erweiterung eines *//-Ausdrucks“. Schließlich steht

”F“ fur einen

”Faktor“ innerhalb

eines *//-Ausdrucks.

Eine Entscheidungstabelle fur die Expansionsschritte fur diese Grammatik sieht folgen-dermaßen aus. Die Spalte

”Var.“ gibt die Variable an, die oben im Keller steht. Wenn das

oberste Kellerzeichen ein Terminalzeichen ist, kommt nur ein Leseschritt in Frage.

189

Page 90: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

nachstes Eingabezeichen

Var. n + - * / ( ) $

S′ S′ → E$ – – – – S′ → E$ – –

E E → TE′ – – – – E → TE′ – –

E′ – E′ → +TE′ E′ → -TE′ – – – E′ → ε E′ → ε

T T → FT ′ – – – – T → FT ′ – –

T ′ – T ′ → ε T ′ → ε T ′ → *FT ′ T ′ → /FT ′ – T ′ → ε T ′ → ε

F F → n – – – – F → (E) –

Erste Schritte des deterministischen LL(1)-Parsers auf der Eingabe n+(n*n)/(n-n-n):

nachstesgelesen Zeichen Keller Zug

ε n S ′ S ′ → Eε n E$ E → TE ′

ε n TE ′$ T → FT ′

ε n FT ′E ′$ F → nε n nT ′E ′$ Lesenn + T ′E ′$ T ′ → εn + E ′$ E ′ → +TE ′

n + +TE ′$ Lesenn+ ( TE ′$ T → FT ′

n+ ( FT ′E ′$ F → (E)n+ ( (E)T ′E ′$ Lesen

n+( n E)T ′E ′$ E → TE ′

n+( n TE ′)T ′E ′$ T → FT ′

n+( n FT ′E ′)T ′E ′$ F → nn+( n nT ′E ′)T ′E ′$ Lesen

n+(n * T ′E ′)T ′E ′$ T ′ → *FT ′

n+(n * *FT ′E ′)T ′E ′$ Lesenn+(n* n FT ′E ′)T ′E ′$ F → nn+(n* n nT ′E ′)T ′E ′$ Lesen

n+(n*n ) T ′E ′)T ′E ′$ T ′ → εn+(n*n ) E ′)T ′E ′$ E ′ → εn+(n*n ) )T ′E ′$ Lesen

n+(n*n) / T ′E ′$ . . ....

......

...

Es ist eine gute Ubung, die Tabelle zu vervollstandigen.

190

Page 91: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

5.3 Bottom-Up-Parsing, LR-Parsing

In Abschnitt 5.2 haben wir mit dem Top-Down-Parsing oder LL-Parsing eine Methodekennengelernt, wie man (im Prinzip) zu einem gegebenen Wort w ∈ L(G) mit einemKellerautomaten eine Ableitung und einen Ableitungsbaum entwickeln kann. In diesemAbschnitt besprechen wir einen anderen Ansatz, der denselben Effekt hat. Die Einga-beworter werden wieder von links nach rechts gelesen; im Gegensatz zum LL-Parsingwird aber eine Rechts-Ableitung erzeugt; der Ableitungsbaum entsteht von den Blatternher auf die Wurzel zu wachsend. Daher spricht man von LR-Parsing oder von Bottom-Up-Parsing .

Der Ausgangspunkt ist derselbe wie vorher. Gegeben ist eine kontextfreie GrammatikG = (V,Σ, S, P ) und ein w ∈ Σ∗. Wir wollen eine Ableitung und damit implizit einenSyntaxbaum konstruieren, falls w ∈ L(G) ist. Hierzu nehmen wir hier, in diesem theore-tischen Rahmen, wieder den Nichtdeterminismus zu Hilfe. Wir diskutieren zum Schlussnoch kurz, wie deterministische Parser aussehen, die nach dem Bottom-Up-Prinzip arbei-ten.

Die Grundidee ist, bei w zu beginnen und Schritt fur Schritt ruckwarts eine Ableitungvon w zu konstruieren. Ein elementarer Schritt in diesem Vorgang ist die

”Reduktion“,

das ist das Uberfuhren eines Wortes

αβ γ ∈ (V ∪ Σ)∗

in αAγ, wobei A → β eine Produktion ist. In Erweiterung unserer Standardnotationkonnte man

αβ γ ⇐ αAγ

fur einen solchen Schritt schreiben. Wenn man bei w beginnt und nach Anwenden einerReihe solcher Reduktionsschritte bei S ankommt, dann hat man gezeigt, dass w ∈ L(G)ist, und eine Ableitungsfolge ruckwarts durchlaufen. Diesen Vorgang wollen wir auf einemKellerautomaten durchfuhren, der w von links nach rechts liest, und zwar so, dass dieReduktionsschritte immer am oberen Kellerende stattfinden.

Schematisch kann man sich das so vorstellen. Wir zeichnen einen Kellerautomaten, wobeieinstweilen der Zustand keine Rolle spielen soll, so dass der Keller links steht, horizontalangeordnet, mit dem oberen Kellerende rechts. Die Eingabe wird rechts davon ebenfallshorizontal angeordnet.

Anfangssituation:

a1

a2 an. . . . . . . . .

Kellerobenunten

Eingabe

Steuereinheit

191

Page 92: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Zwischensituation:

n. . . . . . . . . . . . . a i

gelesen

r 1Z Z a

Eingabe

SteuereinheitKellerunten oben

In einer gegebenen Situation sind zwei Arten von Aktion moglich:

1)”shift“: Falls noch ungelesene Eingabebuchstaben vorhanden sind, kann das nachste

Eingabesymbol gelesen und oben auf den Keller gelegt werden.

Z. . . . ai

gelesen

r 1Z anai+1 . . . .

SteuereinheitKeller

Eingabe

2)”reduce“: Falls die s obersten Kellersymbole Z1, . . . , Zs, s ≥ 0, zusammen eine rechte

Seite β = Zs . . . Z1, s ≥ 0, einer Produktion A → β bilden, dann kann Z1, . . . , Zs durchA ersetzt werden. Dabei wird kein Eingabezeichen gelesen. Das Wort β ∈ (V ∪ Σ)∗ amoberen Kellerende nennt man

”handle“ (oder

”Griff“) fur die Reduktion.

san. . . . . . . . . a i

gelesen

A. . . .rZ Z +1

Keller

Eingabe

Steuereinheit

Ende: Die gesamte Kellerinschrift ist ⊥S. Dann kann diese geloscht werden.

Beispiel : Folgende Produktionen, mit Startsymbol S, gehoren zu einer eindeutigen kon-textfreien Grammatik fur die Sprache der korrekten Klammerausdrucke ohne ε:

S → (S)S | () | (S) | ()S.

Wir arbeiten die Eingabe nach den formulierten Regeln ab. Die Stelle in der Eingabe, ander der Lesekopf steht, ist durch einen senkrechten Strich (|) markiert. Mitunter sind eineiner Konfiguration mehrere Zuge moglich. Immer wenn eine Reduktion anwendbar ist unddie Eingabe noch nicht vollstandig gelesen ist, konnte man auch einen Leseschritt anwen-den (

”shift-reduce-Konflikt“). Es kann aber auch sein, dass nicht eindeutig bestimmt ist,

welcher Reduktionsschritt, d. h. welche Produktion, auf die Zeichen am oberen Kellerende

192

Page 93: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

anzuwenden ist. Dies kann vorkommen, wenn es verschiedene Produktionen A → β undB → γ gibt, wo β ein Prafix von γ oder gar gleich γ ist (

”reduce-reduce-Konflikt“; in der

hier betrachteten Grammatik nicht vorliegend). Wir benutzen hier Nichtdeterminismus,um denjenigen Zug zu wahlen, der zum Ziel fuhrt.

Keller Eingabe

⊥ | (())((()())())

shift: ⊥( ( | ())((()())())

shift: ⊥(( (( | ))((()())())

shift: ⊥(() (() | )((()())())”Griff“:()

reduce: ⊥(S (() | )((()())())

shift: ⊥(S) (()) | ((()())())”Griff“:(S)

”Shift-Reduce-Konflikt“ : fur shift entscheiden:

shift: ⊥(S)( (())( | (()())())

shift: ⊥(S)(( (())(( | ()())())

shift: ⊥(S)((( (())((( | )())())

shift: ⊥(S)((() (())((() | ())()) Konflikt! → shift

shift: ⊥(S)((()( (())((()( | ))())

shift: ⊥(S)((()() (())((()() | )())

reduce: ⊥(S)((()S (())((()() | )())

reduce: ⊥(S)((S (())((()() | )())

shift: ⊥(S)((S) (())((()()) | ()) Konflikt! → shift

shift: ⊥(S)((S)( (())((()())( | ))

shift: ⊥(S)((S)() (())((()())() | )

reduce: ⊥(S)((S)S (())((()())() | )

reduce: ⊥(S)(S (())((()())() | )

193

Page 94: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

shift: ⊥(S)(S) (())((()())()) |

reduce: ⊥(S)S (())((()())()) |

reduce: ⊥S (())((()())()) |

Schlussschritt: leere den Keller

ε (())((()())()) |

Wenn wir parallel zu dieser Berechnung die den Reduktionsschritten entsprechenden Teiledes Syntaxbaumes aufschreiben, so entsteht dieser von den Blattern beginnend nach obenauf die Wurzel zu. Wir sprechen daher von

”Bottom-Up-Parsing“.

Beobachtung: Von unten nach oben gelesen, bilden die Konkatenationen

Kellerinhalt Resteingabe

eine Rechtsableitung fur das Eingabewort w. Das liegt daran, dass”shift“-Schritte die

Konkatenation nicht andern und dass in”reduce“-Schritten ein Reduktionsschritt ange-

wendet wird, der die Umkehrung eines Ableitungsschrittes ist. Wegen der Endebedingung(Kellerinhalt ⊥S) und der Anfangsbedingung (Kellerinhalt ⊥, Restwort w) handelt essich um eine vollstandige Ableitung fur w. Schließlich ist in jedem Reduktionsschritt diein der jeweiligen Satzform am weitesten rechts stehende Variable betroffen, da in der

”Resteingabe“ naturlich nur Terminalzeichen stehen.

Bevor wir tatsachlich sagen konnen, dass diese Art von Reduktion von einem NPDAdurchgefuhrt werden kann, mussen wir noch ein technisches Problem diskutieren. Nachunserer Definition konnen NPDA’s nur das oberste Kellerzeichen lesen; in unserer Strate-gie haben wir aber so getan, als konnten wir die obersten

l = max{|α|

∣∣ A→ α Produktion}

Kellerzeichen sehen. Dies kann man aber leicht durch die Benutzung von Zustanden derSteuereinheit simulieren. In der Steuereinheit sind (Cache-artig) stets die obersten l Kel-lersymbole gespeichert; nur die noch tiefer liegenden Kellereintrage stehen

”wirklich“ im

Keller. Eine Kopie des ⊥-Zeichens verbleibt immer im Keller.

194

Page 95: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

ZZ r

Z r Z Z Z

>

r < l

l l

r l

Eingabe

+1

gelesen

1

1

Eingabe

gelesen

Als Zustandsmenge benutzen wir

Q =⋃

0≤r≤l

Γr, wobei Γ = {⊥} ∪ V ∪ Σ.

Die Bedingung, dass der Zustand die bis zu l obersten Kellerzeichen darstellt, ist leichtaufrechtzuerhalten. Wenn in einem

”shift“-Schritt die Kellerhohe wachst, muss das l-te

Zeichen aus dem Zustand in den”echten“ Keller verschoben werden. Wenn in einem

”reduce“-Schritt die Kellerhohe sinkt, muss man mit ε-Schritten Zeichen aus dem Keller

”nachziehen“, bis dieser leer ist oder die Steuereinheit wieder l Zeichen kennt. (Die formale

Definition von δ ist nicht schwer, nur etwas muhsam.)

. . .

rZ

rZ

Z Z

ZZ AsZ. . .

. . . . . .Z l l

l+s l+s

+1

+1

gelesen

Eingabe

Eingabe

+1

1

vorher

nachher

gelesen

Im Beispiel sind schon”shift-reduce-Konflikte“ aufgetreten. Die zweite oben erwahnte Art

von Konflikten, die eintreten, wenn in einer Konfiguration mehrere verschiedene Reduk-tionsschritte anwendbar sind (

”reduce-reduce-Konflikt“) gibt es in der Grammatik des

Beispiels nicht, da es keine rechten Seiten von Produktionen gibt, die gleich oder Prafixvoneinander sind. Allerdings sind solche Grammatiken nicht selten.

Bevor man den Shift-Reduce-Parsing-Vorgang algorithmisch einsetzt, mussen also nochWege gefunden werden, diese Konflikte jeweils deterministisch zu entscheiden. Hierfur

195

Page 96: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

geht man bei der Konstruktion von Parsern fur Programmiersprachen folgenden Weg.Um zwischen dem ε-Zug

”reduce“ und einem Leseschritt (

”shift“) zu entscheiden, darf der

Parser die nachsten k ≥ 1 Eingabesymbole ansehen. (Man nennt dies”lookahead“. Falls

er sich fur”reduce“ entscheidet, wird keines dieser Zeichen verbraucht; im Fall von

”shift“

nur eines. Man beachte, dass technisch gesehen unser NPDA-Modell im Fall eines ε-Zugesdas nachste Eingabesymbol uberhaupt nicht ansieht.) Es gibt nun gewisse eindeutige2

Grammatiken (die man dann”LR(k)-Grammatiken“ nennt), bei denen es moglich ist,

mit dieser Zusatzinformation samtliche Konflikte eindeutig aufzulosen, wobei immer dieeine richtige Moglichkeit gewahlt wird, die zum Ableitungsbaum bzw. zur Rechtsableitungfur das Eingabewort w fuhrt – falls w zu der Sprache, gehort, die von der Grammatikerzeugt wird. Der Algorithmus, der entscheidet, ob eine vorgelegte Grammatik eine LR(k)-Grammatik ist und eventuell einen entsprechenden NPDA baut, der die beschriebeneEindeutigkeitseigenschaft hat, ist etwas komplexer. Mit dieser Problemstellung beschaftigtsich die Vorlesung

”Ubersetzerbau“. Es gibt aber auch schon seit langem Werkzeuge,

sogenannte Parser-Generatoren, die diese Arbeit durchfuhren. Es ist also in der Praxiskein Problem, eine Grammatik auf die LR(1)-Eigenschaft (oder die LR(k)-Eigenschaft) zutesten und automatisch einen entsprechenden Kellerautomaten erzeugen zu lassen. Diesleistet zum Beispiel der Parser-Generator yacc, der zu den Standardapplikationen gehort,die in jedem Unix-System enthalten sind.

5.4 Akzeptierungsmodi

Die bislang betrachteten NPDA’s akzeptieren”mit leerem Keller“. Alternativ (und naher

am NFA-Modell) kann man auch den Modus”Akzeptieren durch akzeptierenden Zustand“

betrachten. Diese Variante von NPDA’s hat eine weitere Komponente F ⊆ Q. Die Defini-tion von Konfiguration und der Relation ⊢∗M bleibt gleich, jedoch wird w ∈ Σ∗ akzeptiert,ist also in LM , wenn (q0, w, Z0) ⊢∗M (q, ε, γ) fur ein q ∈ F und ein beliebiges γ ∈ Γ∗.Das heißt, man fragt, ob von der Startkonfiguration aus das ganze Wort gelesen werdenkann und dann ein akzeptierender Zustand erreicht werden kann. Die beiden Modelle sindaquivalent. Zur Ubung beschreiben wir die Transformation genau.

5.4.1 Behauptung Es sei L ⊆ Σ∗. Dann gilt: L = LM fur einen NPDA M , dermit leerem Keller akzeptiert, genau dann wenn L = LM ′ fur einen NPDA M ′, der mitakzeptierendem Zustand akzeptiert.

Beweis”⇒“ : Betrachte M = (Q,Σ,Γ, q0, Z0, δ). Wir bauen einen aquivalenten NPDA

M ′ = (Q′,Σ,Γ′, q′0, Z′0, δ′), der mit akzeptierenden Zustanden arbeitet. Die Idee ist einfach:

M ′ hat ein neues Keller-Anfangssymbol Z ′0 und einen neuen Startzustand q′0. Als ersteAktion jeder Berechnung schreibt M ′ zusatzlich das Keller-Anfangs-Zeichen Z0 von M in

2also Grammatiken, bei denen jedes ableitbare Wort genau einen Ableitungsbaum besitzt, sieheDef. 4.2.6

196

Page 97: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

seinen Keller und geht in den Zustand q0 uber. Von hier an verhalt sich M ′ genau wieM . Nur wenn der Keller von M leer ware, kann M ′ dies dadurch feststellen, dass dasKeller-Zeichen Z ′0 im Keller sichtbar ist. Wann immer das passiert, kann M ′ mit einemoptionalen ε-Zug in einen neuen akzeptierenden Zustand qacc wechseln, von dem aus nichtweitergerechnet werden kann. Wenn M ′ dies durchfuhrt, nachdem das Eingabewort wvollstandig gelesen worden ist, wird w von M ′ akzeptiert.

Formal wird diese Idee durch die folgenden Definitionen umgesetzt:

Q′ = Q ∪ {q′0, qacc}, Γ′ = Γ ∪ {Z ′0}, F = {qacc}.

(i) δ(q′0, ε, Z′0) = {(q0, Z0Z

′0)}.

(ii) δ′ stimmt auf Q× (Σ ∪ {ε})× Γ mit δ uberein.

(iii) δ′(q, ε, Z ′0) = {(qacc, ε)} fur q ∈ Q.

Es ist nicht schwer zu sehen, dass tatsachlich LM = LM ′ gilt.

”⇐“ : Wir gehen von einem NPDA M ′ = (Q′,Σ,Γ′, q′0, Z

′0, δ′, F ′) aus, der L

”mit akzep-

tierenden Zustanden“ akzeptiert. Wir suchen einen NPDA M , der dieselbe Sprache mitleerem Keller akzeptiert. Hierfur mussen wir M ′ simulieren, und immer, wenn M ′ in einemakzeptierenden Zustand ist, die Moglichkeit eroffnen, nichtdeterministisch in einen Modus(Zustand qevac) zu wechseln, in dem nur noch der Keller geleert wird. Hierfur definieren wirM = (Q,Σ,Γ, q0, Z0, δ) folgendermaßen. Die Zustandsmenge Q = Q′ ∪ {q0, qevac} enthalteinen neuen Startzustand q0 und einen

”Leere-den-Keller“-Zustand qevac. Das Kelleral-

phabet Γ = Γ′ ∪ {Z0} enthalt einen neuen Keller-Anfangs-Zustand Z0. Dieses besondereZeichen dient dazu, zu verhindern, dass der Keller von M leer wird, obgleich M ′ keinenakzeptierenden Zustand erreicht hat. Die Ubergangsfunktion δ wird wie folgt definiert.

(i) δ(q0, ε, Z0) = {(q′0, Z ′0Z0)}.

(ii) δ stimmt auf Q′ × (Σ ∪ {ε})× Γ′ mit δ′ uberein.

(iii) zusatzlich ist(qevac, ε) ∈ δ(q, ε, Z) fur q ∈ F ′ ∪ {qevac}, Z ∈ Γ′ ∪ {Z0}.

Man sieht, dass M dieselben Rechnungen wie M ′ durchfuhrt, nur mit dem zusatzlichenKellersysmbol Z0. Wenn (aus Sicht von M ′) ein akzeptierender Zustand erreicht wurde,kann begonnen werden, den Keller, einschließlich Z0, zu leeren, und damit M zu einerakzeptierenden Konfiguration zu fuhren – falls das Eingabewort fertig gelesen ist. Manbeachte, dass das zusatzliche Kellersymbol Z0 verhindert, dass die Situation, wo M ′ dasEingabewort fertig liest und gleichzeitig den Keller leert, jedoch nicht in einem akzeptie-renden Zustand ist,

”versehentlich“ zum Akzeptieren durch M fuhrt.

197

Page 98: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

5.5 Kellerautomaten und Grammatiken

Wir wenden uns nun dem bereits angekundigten Aquivalenzsatz zu, der besagt, dass kon-textfreie Grammatiken und NPDA’s dieselbe Sprachklasse beschreiben. Der Satz ist sehrwichtig. Von großer praktischer Bedeutung ist die Konstruktion von Parsern aus kontext-freien Grammatiken, wie in den Abschnitten 5.2 und 5.3 in Grundzugen dargestellt. DerUbergang von Kellerautomaten zu Grammatiken ist von prinzipieller und theoretischerBedeutung. Daher werden wir (fur die Neugierigen und Unerschrockenen) auch einenvollstandigen Beweis angeben. (In der Vorlesung werden die Details nicht ausgefuhrt, unddiese sind auch nicht prufungsrelevant .)

5.5.1 Satz Sei L ⊆ Σ∗ Sprache. Dann sind aquivalent :

(a) L = L(G) fur eine kontextfreie Grammatik G.

(b) L = LM fur einen NPDA M .

Beweis”(a) ⇒ (b)“: Diese Richtung wurde mit Satz 5.2.2 schon gezeigt.

”(b) ⇒ (a)“:

Es sei ein NPDA M = (Q,Σ,Γ, q0, Z0, δ) gegeben. Wir geben eine kontextfreie GrammatikG = (V,Σ, S, P ) an, die LM = L(G) erfullt. Wegen der besonderen Form der Variablenvon G heißt diese Konstruktion auch die

”Tripelkonstruktion“. Wir definieren

V := {S} ∪ {〈q, A, p〉 | p, q ∈ Q,A ∈ Γ}.

(S ist das Startsymbol vonG.) Unsere Absicht ist es, die Produktionen vonG so anzulegen,dass fur q, p ∈ Q, A ∈ Γ und w ∈ Σ∗ gilt:

(5.5) 〈q, A, p〉 ⇒∗G w ⇔ (q, w,A) ⊢∗M (p, ε, ε).

In Worten:

Es gibt einen G-Ableitungsbaum mit Wurzelbeschriftung 〈q, A, p〉 und Ergebnis(Blattinschrift) w⇔M kann von der Konfiguration (q, w,A) (Zustand q, Restwort w zu lesen, genau dasSymbol A im Keller) aus die Konfiguration (p, ε, ε) (Zustand p, w vollstandig gelesen,Keller leer) erreichen.

5.5.2 Bemerkung Es ist gunstig, sich gleich hier klarzumachen, dass (q, w,A) ⊢∗M(p, ε, ε) auch bedeutet, dass dieselbe Rechnung als Teilrechnung oben auf einem irgendwiegefullten Keller und mit einem nachfolgenden Restwort moglich ist, dass also (q, wu,Aγ) ⊢∗M(p, u, γ) gilt, fur beliebige u ∈ Σ∗ und γ ∈ Γ∗.

198

Page 99: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Um den in (5.5) angegebenen Effekt zu erzielen, legen wir fest, dass P folgende Produk-tionen enthalt:

(i) S → 〈q0, Z0, p〉, fur jedes p ∈ Q.

(ii)〈q, A, qm+1〉 → a〈q1, A1, q2〉〈q2, A2, q3〉 · · · 〈qm, Am, qm+1〉,

fur (q, a, A) ∈ Q× (Σ∪{ε})×Γ , q1, . . . , qm+1 ∈ Q , m ≥ 0, wenn (q1, A1 · · ·Am) ∈δ(q, a, A).

Man beachte zwei Spezialfalle: m = 0, was zur Produktion 〈q, A, q1〉 → a fuhrt, und a = ε,was zu einer Produktion 〈q, A, qm+1〉 → 〈q1, A1, q2〉 · · · 〈qm, Am, qm+1〉 fuhrt.

Damit ist die Konstruktion beendet. Der Umbau von NPDA in eine Grammatik ist alsouberhaupt nicht schwierig (nur etwas muhsam).

Etwas komplizierter (und nicht prufungsrelevant) ist der Beweis dafur, dass die neueGrammatik die von M definierte Sprache erzeugt.

Behauptung: Aussage (5.5) gilt.

Bevor wir dies beweisen, folgern wir, dass L(G) = LM ist:

w ∈ LM ⇔ ∃p ∈ Q : (q0, w, Z0) ⊢∗M (p, ε, ε)

(5.5)⇔ ∃p ∈ Q : 〈q0, Z0, p〉 ⇒∗G w

⇔ S ⇒∗G w

⇔ w ∈ L(G).

Die vorletzte Aquivalenz gilt dabei, weil aus S im ersten Schritt nur Variable 〈q0, Z0, p〉, p ∈Q, ableitbar sind.

Es bleibt die Behauptung zu beweisen.

”⇒“: Wir beweisen die Aussage

〈q, A, p〉 ⇒∗G w impliziert (q, w,A) ⊢∗M (p, ε, ε)

durch verallgemeinerte Induktion uber die Tiefe k ≥ 1 eines 〈q, A, p〉-Ableitungsbaumesmit Blattwort w.

Ist k = 1, so sieht der Ableitungsbaum fur w ∈ Σ∗ so aus:

<q,A,p>

w

199

Page 100: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Damit muss 〈q, A, p〉 → w eine Regel in P sein. Nach der Definition von P kann dies nurdann passieren, wenn w = ε oder w ∈ Σ ist; weiter gilt (p, ε) ∈ δ(q, w,A). Daraus folgtaber (q, w,A) ⊢M (p, ε, ε).

Sei nun k > 1. Der Ableitungsbaum fur die Ableitung 〈q, A, p〉 ⇒∗G w hat folgendesFormat:

k

m

1 2...

a

<q,A,p>

1w w

Tiefe <

<q , A , q >m m m+

<q , A , q >11

Dabei ist m ≥ 0, q1, . . . , qm ∈ Q, qm+1 = p, a ∈ Σ ∪ {ε} (wenn a = ε, fallt das ersteBlatt weg), und w1, . . . , wm ∈ Σ∗ sind die Eintrage an den Blattern der m Teilbaume,also w = aw1 · · ·wm, und 〈qi, Ai, qi+1〉 ⇒∗G wi mittels Ableitungsbaumen der Tiefe < k.Also gilt nach Induktionsvoraussetzung

(qi, wi, Ai) ⊢∗M (qi+1, ε, ε), fur 1 ≤ i ≤ m.

Also gilt mit der Regel (q1, A1 . . . Am) ∈ δ(q, a, A):

(q, aw1 · · ·wm, A) ⊢M (q1, w1 · · ·wm, A1 · · ·Am)

⊢∗M (q2, w2 · · ·wm, A2 · · ·Am)...

⊢∗M (qm+1, ε, ε) = (p, ε, ε),

wie gewunscht. (Man benutzt Bemerkung 5.5.2, um zu sehen, dass es legal ist, dieseTeilrechnungen aneinanderzuhangen.)

”⇐“: Wir beweisen die Aussage

(q, w,A) ⊢∗M (p, ε, ε) impliziert 〈q, A, p〉 ⇒∗G w

durch Induktion uber die Zahl k ≥ 1 der Schritte, die M macht, um (q, w,A) in (p, ε, ε)zu uberfuhren.

Ist k = 1, so muss w ∈ Σ ∪ {ε} und (p, ε) ∈ δ(q, w,A) sein. Also ist, nach Definitionvon P , 〈q, A, p〉 → w eine Produktion, also gilt 〈q, A, p〉 ⇒G w. Sei nun k > 1. Wir

200

Page 101: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

betrachten eine Rechnung, die M in k Schritten von (q, w,A) nach (p, ε, ε) fuhrt. Wirzerlegen w = aw′, wo a ∈ Σ oder a = ε ist, je nachdem, ob M im ersten Schritt einenBuchstaben von w liest oder nicht. Es sei

(q1, A1 · · ·Am) ∈ δ(q, a, A)

das Paar in der Ubergangsfunktion δ von M , das im ersten Schritt verwendet wird. Dieletzten k − 1 Schritte der betrachteten Berechnung von M fuhren also (q1, w

′, A1 · · ·Am)in (p, ε, ε) uber. Wir teilen diese Berechnung in m Phasen (t0, t1], . . . , (tm−1, tm] ein, wobei0 = t0 < t1 < · · · < tm die Schritte der Rechnung von M sind, die durch folgendeEreignisse gekennzeichnet sind:

ti ist der Schritt von M , nach dem erstmals Ai+1 · · ·Am die Kellerinschrift ist, 1 ≤ i ≤ m.

Offensichtlich dauert jede dieser Phasen < k Schritte, Mit wi, 1 ≤ i ≤ n, bezeichnen wirdas Teilwort von w, das wahrend Phase (ti−1, ti] von M gelesen wird.

Offenbar gilt dann w′ = w1 · · ·wm. Wahrend Phase i spielt sich also folgender Konfigura-tionsubergang ab, fur gewisse qi ∈ Q, i = 2, . . . ,m:

(qi, wi · · ·wm, Ai · · ·Am) ⊢M · · · ⊢M (qi+1, wi+1 · · ·wm, Ai+1 · · ·Am).

Da wahrend dieser Rechnung der Teil Ai+1 · · ·Am des Kellers nicht beruhrt, auch nichtgelesen wird, ist auch folgendes eine legale (Teil-)Rechnung des NPDA M , mit < k Schrit-ten:

(qi, wi, Ai) ⊢M · · · ⊢M (qi+1, ε, ε).

Nach Induktionsvoraussetzung folgt

〈qi, Ai, qi+1〉 ⇒∗G wi, fur 1 ≤ i ≤ m.

Da nach Definition von G auch

A⇒G a〈q1, A1, q2〉 · · · 〈qm, Am, qm+1〉

gilt, haben wir (durch Betrachten des Ableitungsbaums):

A⇒∗G aw1 · · ·wm = w.

Damit ist der Beweis der Behauptung, und auch der von Satz 5.5.1, beendet. �

5.6 Abschlusseigenschaften II

Wir erganzen noch eine interessante (und wichtige) Abschlusseigenschaft von L2.

5.6.1 Satz Ist L1 kontextfrei und L2 regular, so ist L1 ∩ L2 kontextfrei.

201

Page 102: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis(idee): Weil L1 kontextfrei ist, gibt es nach Satz 5.5.1 und Behauptung 5.4.1 einenNPDA M , der L1 mit akzeptierenden Zustanden akzeptiert. Außerdem existiert ein DFAM ′ = (Q′,Σ, q′0, F

′, δ′) fur L2. Um einen NPDA M∩ fur L1 ∩ L2 zu erhalten, erweitertman die Steuereinheit von M in der folgenden Weise: Es wird ein zusatzliches Register(mathematisch: eine Komponente) angelegt, die einen Zustand von M ′ speichern kann.Dieses wird anfangs mit q′0 besetzt. Bei Zugen von M , bei denen ein Buchstabe a gelesenwird, wird dieses Register gemaß δ′ weitergeschaltet. Bei ε-Zugen bleibt der Registerinhaltunverandert. Der neue DPDA M∩ ist in einem akzeptierenden Zustand, wenn M in einemakzeptierenden Zustand ist und das Register einen Zustand q′ ∈ F ′ enthalt.

Es ist nicht schwierig, den NPDA M∩ durch eine leichte Verallgemeinerung der Kreuzpro-duktkonstruktion (siehe Satz 2.1.10(c)) prazise zu definieren und zu zeigen, dass LM∩ =L1 ∩ L2 ist. �

Wir bemerken, dass es nicht moglich ist, zwei NPDA’s mit einer an die Kreuzprodukt-konstruktion angelehnten Verfahren zu kombinieren. Grund ist, dass jeder NPDA seineneigenen Keller mitbringt und es nicht moglich ist, diese beiden Keller zu einem einzigen zu

”vermischen“. Hier handelt es sich um eine mathematisch prazise Aussage! Ware es im-

mer moglich, auf eine solche Weise aus zwei NPDA’s einen NPDA fur den Durchschnittder zwei Sprachen zu konstruieren, dann waren die kontextfreien Sprachen unter derDurchschnittsoperation abgeschlossen, was nach Satz 4.6.4 nicht der Fall ist. Tatsachlichwerden wir in der Vorlesung

”Berechenbarkeit und Komplexitatstheorie“ sehen, dass zwei

unabhangige Keller zu Rechenmodellen fuhren, die viel starker sind als die NPDA’s.

5.7 Deterministische Kellerautomaten und ihre Spra-

chen

Wir betrachten hier eine Teilklasse der NPDA’s, namlich deterministische Kellerautoma-ten (DPDA’s). Diese zeichnen sich dadurch aus, dass in jeder Konfiguration hochstens einnachster Zug moglich ist.

Weil dazu auch keine Wahlmoglichkeit zwischen ε-Zug und Lesen eines Symbols vomEingabeband bestehen darf, verlangt man:

(5.6) |δ(q, a, A)|+ |δ(q, ε, A)| ≤ 1

fur jedes q ∈ Q, a ∈ Σ, A ∈ Γ. Der Berechnungsbaum (vgl. Abb. 5.5) degeneriert zu einemWeg ohne Verzweigung. Weiterhin muss man (aus technischen Grunden) festlegen, dassuber akzeptierende Zustande akzeptiert wird, wie in der in Abschnitt 5.4 besprochenenVariante.

Beispiel : Wir wollen die Klammersprache mit einem deterministischen Kellerautomatenbearbeiten. Wurde dieser

”mit leerem Keller“ akzeptieren, dann musste zum Beispiel nach

dem Lesen des Wortes (()) der Keller leer sein; damit ist aber das Weiterrechnen und

202

Page 103: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Akzeptieren auf der Eingabe (())() nicht moglich. (Allgemein konnen deterministischeVerfahren mit Akzeptierungsmodus

”leerer Keller“ nicht funktionieren, wenn die zu ak-

zeptierende Sprache L nicht prafixfrei ist, d. h. wenn es Worter w1, w2 ∈ L gibt, derartdass w1 ein echtes Prafix von w2 ist.)

Ein DPDA hat also eine Menge F ⊆ Q von akzeptierenden Zustanden, und M akzeptiertw ∈ Σ∗, wenn w vollstandig gelesen wird und nach dem vollstandigen Lesen von w einakzeptierender Zustand erreicht wird. Die formalen Definitionen lauten folgendermaßen.

5.7.1 Definition Ein deterministischer Kellerautomat (DPDA) besteht aus 7Komponenten: Q, Σ, Γ, q0, Z0 sind wie in Definition 5.1.2, F ist Teilmenge von Q, und

δ : Q× (Σ ∪ {ε} × Γ)→ P<∞(Q× Γ∗),

wobei|δ(q, a, A)|+ |δ(q, ε, A)| ≤ 1, fur alle a ∈ Σ, q ∈ Q, A ∈ Γ.

5.7.2 Definition Sei M = (Q,Σ,Γ, q0, Z0, F, δ) ein DPDA, der (5.6) erfullt.

(a) Konfigurationen und die Relationen ⊢M und ⊢∗M sind wie in Abschnitt 5.1.5 definiert.(Man beachte, dass fur jede Konfiguration k hochstens eine direkte Nachfolgekonfi-guration existiert.)

(b) M akzeptiert w ∈ Σ∗, falls

(q0, w, Z0) ⊢∗M (q, ε, γ) fur ein q ∈ F, γ ∈ Γ∗.

(c) LM = {w ∈ Σ∗ |M akzeptiert w}.

Beachte:(i) Es ist erlaubt, dass M die Eingabe vollstandig liest und dann noch einen oder mehrereε-Zuge durchfuhrt, die den Keller (lesen und) verandern konnen und auch durch mehre-re Zustande fuhrt. Akzeptiert wird, wenn schließlich ein akzeptierender Zustand erreichtwird.(ii) Bei nicht akzeptierten Wortern ist uber das Verhalten zunachst nichts gesagt. DieRechnung kann (ohne Nachfolgekonfiguration) in der Mitte des Wortes anhalten oder (mitε-Zugen) in eine Endlosschleife geraten, in der sich nur noch Kellerinhalt und Zustandeandern. Dabei kann sogar der Keller immer weiter wachsen. (Wir kommen auf diese Pro-blematik zuruck.)

203

Page 104: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

5.7.3 Beispiel

Wir konstruieren einen deterministischen Kellerautomaten fur die Sprache L ⊆ {(, )}∗ derkorrekten Klammerausdrucke. Die grundlegende Idee ist einfach: Der Keller realisiert einen(unaren) Zahler. Wenn ein

”(“ gelesen wird, erhoht sich der Zahler; wenn ein

”)“ gelesen

wird, erniedrigt er sich. Dadurch wird erreicht, dass der Zahlerstand den”Vorsprung“ der

gelesenen offnenden Klammern vor den schließenden Klammern ausdruckt, der naturlichimmer nichtnegativ ist. Man kann akzeptieren, wenn der Zahlerstand 0 ist. Technischarbeitet man mit dem Kelleralphabet Γ = {1,⊥}. Dabei wird das Kelleranfangszeichen⊥ nie geloscht und markiert immer das Ende des Kellers. Wenn dieses Zeichen im Kellersichtbar ist, wechseln wir mit einem ε-Zug in einen akzeptierenden Zustand. Der Kellerwird dadurch nicht verandert, so dass auch Weiterrechnen moglich ist.

Formal legen wir den DPDA M wie folgt fest:

• Q = {A, V },• q0 = V ,

• Σ = {(, )},• Γ = {1,⊥},• Z0 = ⊥,

• F = {A},• δ ist als Graph und als Tabelle beschrieben.

V A

,( 1

ε ,

Start

) ,1 ε

( ,1 11

Abbildung 5.9: Ein DPDA fur die Klammersprache

δ ⊥ 1

(V, ε) (A,⊥) −(V, () − (V, 11)(V, )) − (V, ε)(A, ε) − −(A, () (V, 1⊥) −(A, )) − −

204

Page 105: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Auf der Eingabe ()(())((()())) arbeitet dieser DPDA wie folgt:

schon gelesen Keller Zustand− ⊥ V− ⊥ A( 1⊥ V() ⊥ V() ⊥ A()( 1⊥ V()(( 11⊥ V()(() 1⊥ V()(()) ⊥ V()(()) ⊥ A()(())( 1⊥ V()(())(( 11⊥ V()(())((() 11⊥ V()(())((()( 111⊥ V()(())((()() 11⊥ V()(())((()()) 1⊥ V()(())((()())) ⊥ V()(())((()())) ⊥ A

Man beachte, wie der Keller tatsachlich immer die Anzahl der momentan geoffneten Klam-mern widerspiegelt, und wie der ε-Zug im Zustand V genutzt wird, um die Beobachtung,dass das Kellersymbol ⊥ sichtbar ist, in einen Zustandswechsel umzusetzen.

5.7.4 Beispiel

Wir konstruieren einen Kellerautomaten fur die Sprache L = {aibj | i, j ≥ 0, i 6= j}.Hierbei ist die erste Idee, die Bedingung, dass erst a’s und dann b’s kommen sollen,im Zustand der Steuereinheit zu kontrollieren. Weiterhin zahlen wir die gelesenen a’sim Keller, um dann fur jedes gelesene b den Zahlerstand um 1 zu erniedrigen. Solangeder Zahlerstand nicht 0 ist, erklaren wir den Zustand fur akzeptierend. Wichtig ist hier,beim Herunterzahlen zunachst in einen verwerfenden Zustand zu gehen und erst dannmit einem ε-Zug in einen akzeptierenden zu wechseln, wenn sich der Keller nicht als leererweist. Wenn der Zahlerstand exakt 0 ist, muss verworfen werden; wenn dann weitere b’sfolgen, konnen wir wieder akzeptieren. Das Kellerendezeichen ⊥ wird nie geloscht. Formalsieht der DPDA fur L folgendermaßen aus.

• Q = {S,A,B,C,D},

• q0 = S,

• Σ = {a, b},

205

Page 106: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

• Γ = {1,⊥}

• Z0 = ⊥,

• F = {A,C,D},

• δ ist als Graph beschrieben.

a

, 1aB

, εb 1

C

,1ε 1 ,b ε1

,b

D ,b

,b

Start S A

,1 11

Abbildung 5.10: Ein DPDA fur die Sprache {aibj | i, j ≥ 0, i 6= j}

Man prufe nach, dass in diesem DPDA es nie zwei miteinander konkurrierende Zuge gibt.Die Zustande S und A dienen zum Lesen von a’s, die Zustande B, C und D zum Lesen vonb’s. Die Kombination der Zustande B und C realisiert das vorsichtige Lesen der b’s: erstwird gelesen und der Zahler erniedrigt (Zustand B), dann wird mit einem ε-Zug gepruft,dass der Keller nicht leer ist.

Eine Beispielberechnung dieses DPDA’s sieht wie folgt aus:

Eingabe: aaabbbbbbb

schon gelesen Keller Zustand

− ⊥ S− ⊥ Sa 1⊥ Aaa 11⊥ Aaaa 111⊥ Aaaab 11⊥ Baaab 11⊥ Caaabb 1⊥ Baaabb 1⊥ Caaabbb ⊥ Baaabbbb ⊥ Daaabbbbb ⊥ D. . . . . . . . .

206

Page 107: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

5.7.5 Definition Eine Sprache L heißt deterministisch kontextfrei , wenn L = LM

fur einen DPDA M gilt.

Wir merken an, dass die Klasse der deterministisch kontextfreien Sprachen uber ein Ma-schinenmodell definiert ist, obwohl die kontextfreien Sprachen uber eine Eigenschaft derzugehorigen Grammatiken definiert ist. Gibt es auch einen Grammatiktyp, der zu den de-terministisch kontextfreien Grammatiken gehort? Dies ist tatsachlich der Fall; es handeltsich um die

”LR(k)-Grammatiken“, fur k ≥ 1. Die Definition der Klasse der LR(k)-

Grammatiken ist nicht einfach syntaktisch wie bei den Typ-i-Grammatiken, i = 0, 1, 2, 3,sondern bezieht sich auf eine unendliche Menge von Situationen, die in Ableitungenauftreten konnen. Die Eigenschaft lauft darauf hinaus, dass ein bestimmtes determini-stisches Bottom-Up-Parsing-Verfahren (siehe Abschnitt 5.3), das fur das Auflosen vonShift-Reduce- und Reduce-Reduce-Konflikten die nachsten k Zeichen des Eingabewor-tes ansehen darf, erfolgreich arbeiten kann. Man kann aber Grammatiken algorithmischauf diese Eigenschaft testen. LR(k)-Grammatiken mit den zugehorigen Parsern sind diemachtigsten bekannten Syntaxbeschreibungsverfahren mit

”Syntaxanalyse in Linearzeit“.

Man kann zeigen (dies ware ein Thema einer fortgeschrittenen Vorlesung uber formaleSprachen), dass jede deterministisch kontextfreie Sprache sogar eine LR(1)-Grammatikhat, so dass die Grammatikklassen LR(k), k ≥ 1, alle gleichmachtig sind. InsbesondereLR(1)-Grammatiken werden bei der Konstruktion von Ubersetzern fur Programmierspra-chen bevorzugt eingesetzt. Naheres zu diesen Grammatiken und zur Konstruktion derzugehorigen Parser erfahrt man in der Vorlesung

”Ubersetzerbau“.

Wir notieren, dass die Klasse der deterministisch kontextfreien Sprachen unter Komple-mentbildung abgeschlossen ist. Sonst ist diese Klasse unter ziemlich wenigen Operationenabgeschlossen, insbesondere nicht unter Vereinigung oder Durchschnitt, Konkatenationund Kleene-Abschluss.

Die Grundidee fur die Konstruktion eines DPDA M ′ fur LM ist einfach: Man lasse Mauf Eingabe w laufen; wenn M akzeptiert, verwirft man, sonst akzeptiert man. Mit dieserIdee treten verschiedene Probleme auf. Das wichtigste davon ist, dass M auf Eingabenw /∈ LM nicht zu einem vernunftigen Abschluss der Berechnung finden muss.

5.7.6 Lemma Wenn M ein DPDA ist, dann kann man aus M einen DPDA M1 furdieselbe Sprache konstruieren, der folgende Eigenschaften hat :

• M1 liest jede Eingabe w bis zum letzten Buchstaben (es gibt kein vorzeitiges Ak-zeptieren oder Verwerfen);

• nach dem Lesen des letzten Buchstabens fuhrt M1 nur eine begrenzte Zahl von ε-Zugen aus (es kann nicht unendlich viele ε-Zuge geben, die keinen Buchstaben derEingabe lesen).

Fur einen Beweis (der etwas technisch ist) wird auf die Literatur verwiesen (z. B. [Floyd,Beigel, Die Sprache der Maschinen, Thomson 1996, S. 373ff.]).

207

Page 108: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

5.7.7 Lemma Wenn L deterministisch kontextfrei ist, dann auch L.

Beweis: Nach Lemma 5.7.6 gibt es einen DPDA M = (Q,Σ,Γ, q0, Z0, F, δ) mit L = LM ,der alle Eingabeworter bis zum Ende liest und nach dem Lesen eines Eingabebuchstabensnur endlich viele Schritte macht, bevor der nachste Buchstabe gelesen wird.

Die naheliegende Idee ist, in M einfach F und Q − F zu vertauschen. (Das funktioniertbei DFA’s, siehe Satz 2.1.10(e).) Es gibt aber noch ein kleines technisches Problem: Mkonnte nach dem Lesen von w ∈ Σ∗ noch einige ε-Schritte machen und dabei Zustandein F und Zustande in Q − F erreichen. Wurde man F und Q − F einfach vertauschen,wurde auch der neue DPDA w akzeptieren – falschlicherweise.

Dieses Problem ist aber leicht zu losen. Der neue DPDA M ′ registriert (in der Steuerein-heit), welche Art von Zustanden M in den ε-Zugen nach dem Lesen eines Buchstabensdurchlauft. Irgendwann erreicht M eine Situation, in der kein weiterer ε-Zug moglich ist.Nun gibt es zwei Moglichkeiten: (1) Alle Zustande nach dem Lesen des letzten Buchsta-bens waren nicht in F . Dann wechseltM ′ mit einem ε-Zug in einen (neuen) akzeptierendenZustand, und rechnet dann mit dem Lesen des nachsten Buchstabens weiter. (2) Nachdem Lesen des letzten Buchstabens wurde mindestens ein Zustand aus F durchlaufen.Dann rechnet M ′ einfach weiter, ohne in den akzeptierenden Zustand zu wechseln.

Außer gegen Komplementbildung sind deterministisch kontextfreie Sprachen gegen keineweitere der Standard-Operationen abgeschlossen.

5.7.8 Behauptung Es gibt kontextfreie Sprachen, die nicht deterministisch kontextfreisind.

Beweis: L = {aibjck | i 6= j ∨ j 6= k} ist kontextfrei. (Das haben wir im Beweis vonSatz 4.6.4 gesehen, Behauptung 1 uber L3.)

Ware L deterministisch kontextfrei, ware nach 5.7.7 auch L deterministisch kontextfrei,also insbesondere kontextfrei. Die Sprache L ist aber nicht kontextfrei, sonst ware nachSatz 5.6.1 L ∩ {a}∗{b}∗{c}∗ = {anbncn | n ≥ 0} ebenfalls kontextfrei, was nicht der Fallist. �

Ein sehr naheliegendes Beispiel einer kontextfreien, aber nicht deterministisch kontext-freien Sprache ist

{w | w ∈ {0, 1}∗, w = wR}.Intuitiv gesprochen kann ein deterministischer Kellerautomat die Stelle in einem Einga-bewort w nicht identifizieren, an der

”umzukehren“ und der Kellerinhalt mit dem bisher

Gelesenen zu vergleichen ist. Der Beweis fur diese einleuchtende Tatsache ist allerdingstechnisch aufwendig.

5.7.9 Behauptung Die deterministisch kontextfreien Sprachen sind nicht gegen ∪ und∩ abgeschlossen.

208

Page 109: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis: L1 = {aibjck | i 6= j} undL2 = {aibjck | j 6= k} sind deterministisch kontextfrei (Beweis von Satz 4.6.4);

aber L1 ∪ L2 ist nicht deterministisch kontextfrei (Beweis von Behauptung 5.7.8).

L3 = {aibjck | i = j} undL4 = {aibjck | j = k} sind deterministisch kontextfrei;

aber L3 ∩ L4 ist nicht kontextfrei. (Vgl. Beweis von Satz 4.6.4.)

5.7.10 Behauptung Die deterministisch kontextfreien Sprachen sind nicht gegen Kon-katenation und Kleene-Abschluss abgeschlossen. (Ohne Beweis.)

5.7.11 Satz Die deterministisch kontextfreien Sprachen sind gegen Durchschnitt mitregularen Sprachen abgeschlossen.(D. h.: L1 deterministisch kontextfrei, L2 regular ⇒ L1 ∩ L2 deterministisch kontextfrei.)

Dies beweist man genauso wie Satz 5.6.1.

5.8 Entscheidungsfragen fur kontextfreie Sprachen

Ebenso wie bei regularen Sprachen kann man sich fragen, welche Eigenschaften der Spra-che L(G) man anhand der Grammatik G effizient – oder zumindest effektiv, also algorith-misch – testen kann. Dabei stellt sich heraus, dass viele Probleme bezuglich kontextfreierGrammatiken unentscheidbar werden. Das bedeutet, dass es prinzipiell keinen Algorith-mus geben kann, der dieses Problem fur alle Grammatiken losen kann. Den technischenHintergrund fur Unentscheidbarkeitsaussagen werden wir jedoch erst in der Vorlesung

”Berechenbarkeit und Komplexitatstheorie“ kennenlernen. Daher werden hier alle Unent-

scheidbarkeitsaussagen (einstweilen) ohne Beweis bleiben.

5.8.1 Satz Die folgenden Aufgaben bezuglich kontextfreier Sprachen sind algorithmischlosbar :

(a) (Leerheitsproblem) Gegeben eine kontextfreie Grammatik G = (V,Σ, S, P ), ent-scheide ob L(G) = ∅ ist.

(b) (Wortproblem) Gegeben eine kontextfreie Grammatik G = (V,Σ, S, P ) und einw ∈ Σ∗, entscheide ob w ∈ L(G), und finde im positiven Fall einen Ableitungsbaum.

(c) (Unendlichkeitsproblem) Gegeben eine kontextfreie Grammatik G, entscheideob |L(G)| =∞ ist.

209

Page 110: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Beweis : (a) Nach Proposition 4.3.14(c) genugt es, mit dem dort angegebenen Markie-rungsalgorithmus die Menge der produktiven Variablen in V zu bestimmen. Die SpracheL(G) ist nicht leer genau dann wenn S produktiv ist.

(b) Man wandelt G in eine aquivalente Grammatik G′ in Chomsky-Normalform um (s.Abschnitt 4.3). Dann wendet man auf G′ und w den CYK-Algorithmus an, der in Ab-schnitt 4.5 besprochen wurde.

(c) Mit dem Algorithmus aus Abschnitt 4.3 wandeln wir G in eine aquivalente Gram-matik G′ = (V ′,Σ, S ′, P ′) in Chomsky-Normalform um. Mit dem Algorithmus zu Pro-position 4.3.14 ermitteln wir die Menge der produktiven Variablen in V ′. Wenn S ′ nichtproduktiv ist, ist L(G) = ∅, und wir sind fertig. Sonst lassen wir aus V ′ die nicht pro-duktiven (die

”nutzlosen“) Variablen weg, und erhalten eine zu G aquivalente Grammatik

G′′ = (V ′′,Σ, S ′, P ′′) in Chomsky-Normalform, die keine nutzlosen Variablen hat.

Mit einem weiteren Markierungsalgorithmus ermitteln wir nun die Menge V ′′′ aller Varia-blen A ∈ V ′′, die in einer Satzform α von G′′ vorkommen, also mit einer Ableitungsfolge

S ⇒G′′ α1 ⇒G′′ α2 ⇒G′′ · · · ⇒G′′ αt = α

erreichbar sind. (Die Details moge man sich als Ubung uberlegen.) Wenn wir aus G′′

die nicht erreichbaren Variablen weglassen und alle Produktionen streichen, in denensolche Variablen vorkommen, erhalten wir eine zu G aquivalente Grammatik G′′′ =(V ′′′,Σ, S ′, P ′′′), in der jede Variable erreichbar und produktiv ist.

Zur Vereinfachung der Notation nehmen wir ab hier einfach an, dass L(G) 6= ∅ ist unddass V keine nutzlosen und keine unerreichbaren Variablen enthalt.

Nun definieren wir einen gerichteten Graphen H = (V,E) mit Knotenmenge V undKantenmenge

E := {(A,B) ∈ V × V | ∃C ∈ V : A→ BC oder A→ CB ist Produktion}.Mit einem geeigneten Graphalgorithmus oder auch einem simplen Markierungsalgorith-mus konnen wir uberprufen, ob es r ≥ 1 und eine Folge A0, A1, . . . , Ar in V gibt mitA0 = Ar und

(A0, A1), . . . , (Ar−1, Ar) ∈ E.(Diese Kantenfolge bildet also einen gerichteten Kreis der Lange r im Graphen H.) DieserTest liefert die gewunschte Antwort, wie die folgende Behauptung feststellt.

Behauptung:

|L(G)| =∞ ⇔ H besitzt einen gerichteten Kreis.

Beweis der Behauptung: “⇒“: Wenn H keinen Kreis besitzt, dann besitzt jeder Weg ineinem Ableitungsbaum von G hochstens |V | viele innere Knoten. Es gibt aber nur endlichviele Binarbaume der Tiefe ≤ |V | mit Knotenmarkierungen aus V , also lasst G nurendlich viele Ableitungsbaume zu. Also ist L(G) endlich.

“⇐“: Angenommen, H besitzt einen Kreis A0, A1, . . . , Ar = A0. Nun bauen wir einenAbleitungsbaum in G wie folgt:

210

Page 111: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

1. Bilde einen Ableitungsbaum T mit Wurzelbeschriftung S fur eine Satzform α(T ),in der A0 vorkommt. (Dies geht, weil jede Variable, also auch A0, erreichbar ist.)Das heißt, dass T einen Blattknoten k1 hat, der mit A0 beschriftet ist.

2. Bilde einen A0-Ableitungsbaum T ′1 mit Wurzelbeschriftung A0, der nicht nur aus derWurzel besteht und ein Wort α(T1) als Ergebnis hat, in dem A0 vorkommt. (Diesgeht mit den Produktionen, die den Kreis A0, A1, . . . , Ar = A0 in H erzeugen.)

3. Fuge T ′1 in T ein, indem die Wurzel von T ′1 mit k1 identifiziert wird. Das Resultatist der Baum T ′. Der Blattknoten in T ′1, der mit A0 beschriftet ist, heiße k2.

4. Wenn k ein Blatt von T ′ ist, das mit einer Variablen A beschriftet ist, so erganzeunter k einen A-Ableitungsbaum, dessen Blatter mit Terminalzeichen beschriftetsind. (Dies geht, weil A produktiv ist.)

5. Der resultierende Ableitungsbaum heiße T0. Der Unterbaum mit Wurzel k1 heißt T1;der Unterbaum von T1 mit Wurzel k2 heißt T2.

Nun haben wir eine Situation erreicht, die der im Beweis des Pumping-Lemmas (Satz 4.4.1)entspricht. Wenn wir w = α(T2) setzen und v und x so wahlen, dass α(T1) = vwx, undschließlich u und y so, dass uvwxy = α(T0) ist, so konnen wir genau wie im Beweis desPumping-Lemmas schließen, dass |vx| ≥ 1 ist und alle Worter uviwxiy ∈ L(G) sind. DieseWorter sind alle verschieden; also ist L(G) unendlich. �

5.8.2 Satz Die folgenden Aufgaben bezuglich NPDA’s sind algorithmisch losbar:

(a) (Leerheitsproblem) Gegeben ein NPDA M , entscheide ob LM = ∅ ist.

(b) (Wortproblem) Gegeben ein NPDA M und ein w ∈ Σ∗, entscheide ob w ∈ LM ,und finde im positiven Fall eine akzeptierende Berechnung von M auf x.

(c) (Unendlichkeitsproblem) Gegeben ein NPDA M , entscheide ob |LM | =∞ ist.

Beweis : Aus Satz 5.5.1 wissen wir, dass man aus M eine kontextfreie Grammatik G(in Chomsky-Normalform) mit L(G) = LM konstruieren kann. Auf diese Grammatikwenden wir die Algorithmen aus Satz 5.8.1(a), (b) und (c) an. Wenn wir in Aufgabe (b)herausfinden, dass w ∈ LM ist, dann probieren wir systematisch alle Berechnungen vonM auf Eingabe w durch, die t Schritte machen, fur t = |w|, |w| + 1, |w| + 2, . . ., bis wireine akzeptierende Berechnung finden. �

Bemerkung : Man beachte das vosichtige Vorgehen in (b). Es genugt nicht, den NPDAeinfach alle moglichen Berechnungen durchprobieren zu lassen, da es fur ein Wort w /∈ Lmoglicherweise unendlich viele Berechnungen gibt und man nie feststellt, dass es keineakzeptierende Berechnung gibt.

211

Page 112: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

Naturlich sind dieselben Fragen fur DPDA’s im Prinzip mit denselben Algorithmen losbar,da DPDA’s nur ein Spezialfall von NPDA’s sind. Im Fall des Wortproblems gibt es furDPDA’s einen einfacheren Algorithmus. Gegeben einen DPDA M und ein Eingabewortw, bauen wir M nach den in Lemmas 5.7.6 und 5.7.7 erwahnten Methoden in einen zuM aquivalenten DPDA M ′ um, der seine Eingabe w vollstandig liest und dann mittelsseines Zustandes mitteilt, ob w ∈ LM oder nicht. Damit lasst sich das Wortproblem danndirekt losen, ohne den DPDA in eine Grammatik umzuformen.

Weiter kann man fur einen DPDA M algorithmisch testen, ob LM = Σ∗ ist. (Man bautmit der Methode der eben erwahnten Lemmata einen DPDA M ′ fur LM und testet, obLM ′ = ∅.)Zum Abschluss wollen wir noch einige

”algorithmisch unentscheidbare“ Eigenschaften von

kontextfreien Sprachen diskutieren. Eine”Eigenschaft“ ist dabei einfach eine Aussage,

die auf kontextfreie Grammatiken zutreffen kann oder nicht, beispielsweise die Aussagen

”L(G) ist endlich“ oder

”G ist mehrdeutig“.

Zunachst erklaren wir:

5.8.3 Erklarung Eine Eigenschaft E von kontextfreien Grammatiken heißt unent-scheidbar , wenn es keinen Algorithmus A gibt, der zu jeder vorgelegten kontextfreienGrammatik G als Eingabe die Antwort

”ja“ liefert, wenn G die Eigenschaft E hat, und

”nein“ sonst.

Die Erklarung des Begriffs”unentscheidbar“ muss momentan noch etwas vage und ma-

thematisch ungenau bleiben, weil wir den Begriff”Algorithmus“ nicht prazise definiert

haben (und dies auch gar nicht konnen). In der Vorlesung”Berechenbarkeit und Komple-

xitatstheorie“ wird gezeigt, wie man den intuitiven Algorithmusbegriff durch eine formaleDefinition ersetzen kann, so dass die Behauptung

”es gibt keinen Algorithmus“ mathema-

tischer Argumentation zuganglich wird.

Naturlich kann man genauso uber Eigenschaften anderer Dinge, wir NPDA’s oder DPDA’ssagen, sie seien unentscheidbar. Manchmal bezeichnet man auch eine Eigenschaft vonkontextfreien Sprachen als unentscheidbar (z. B. sagt man, die Eigenschaft

”L = Σ∗“ oder

”L ist regular“ sei

”fur kontextfreie Sprachen unentscheidbar“). Dann ist aber implizit

immer gemeint, dass die Sprachen durch eine endliche Beschreibung wie eine Grammatikoder einen Kellerautomaten gegeben sein mussen.

Wenn eine Eigenschaft von Grammatiken unentscheidbar ist, dann bedeutet dies ins-besondere, dass es prinzipiell kein

”Debugging-Tool“ geben kann, das das entsprechen-

de Entscheidungsproblem allgemein und fur jede Grammatik lost. Beispielsweise ist dieEigenschaft

”G ist mehrdeutig“ unentscheidbar. Das bedeutet, dass jeder menschliche

Grammatik-Designer, aber auch automatische Grammatik-Konstruktions-Verfahren aufandere Weise sicherstellen mussen, dass eine neu konstruierte Grammatik nicht verse-hentlich mehrdeutig wird.

Wir geben nun einige unentscheidbare Fragen im Zusammenhang mit kontextfreien Spra-chen an. Fur die Beweise (Auswahl) verweisen wir auf die Vorlesung

”Berechenbarkeit

212

Page 113: Automaten und Formale Sprachen Skript zur Vorlesung … Beispiel 3.1.11 sind dies z.B. 01, 0101 und 01001101. Die Menge L(G) = {w ... S⇒ε; S⇒0S0

und Komplexitatstheorie“.

5.8.4 Satz (Unentscheidbare Fragen fur zwei kontextfreie Grammatiken)

Folgende Probleme sind unentscheidbar :

Gegeben seien zwei kontextfreie Grammatiken G1 und G2.

(a) Ist L(G1) ∩ L(G2) = ∅?

(b) Ist L(G1) = L(G2)?

5.8.5 Satz (Unentscheidbare Fragen fur eine kontextfreie Grammatik)

Folgende Probleme sind unentscheidbar :

Gegeben sei eine kontextfreie Grammatik G.

(a) Ist G mehrdeutig?

(b) Ist L(G) inharent mehrdeutig?

(c) Ist L(G) kontextfrei?

(d) Ist L(G) deterministisch kontextfrei?

(e) Ist L(G) regular?

Wir bemerken, dass die Unentscheidbarkeit sich auf NPDA’s ubertragt, da man nachSatz 5.5.1 Grammatiken und NPDA’s algorithmisch ineinander umformen kann.

Wir benennen noch den Entscheidbarkeitsstatus dreier Fragen zu DPDA’s. Der Statusdes Aquivalenzproblems bildete jahrzehntelang ein (beruhmtes) offenes Problem, bis er1997 geklart wurde.

5.8.6 Satz (Entscheidungsfragen fur DPDA’s)

(a) (Schnittproblem) Es ist unentscheidbar, ob fur gegebene DPDA’s M1 und M2 gilt,dass LM1

∩ LM2= ∅.

(b) (Aquivalenzproblem) Es gibt einen Algorithmus, der zu gegebenen DPDA’s M1

und M2 entscheidet, ob LM1= LM2

gilt. (G. Senizergues, 1997.)

(c) (Regularitatsproblem) Es gibt einen Algorithmus, der zu einem gegebenen DPDAM entscheidet, ob L(M) regular ist.

213