Automatentheorie und Formale Sprachen

Skriptum zur Vorlesung WS 1993/94 von Volker Diekert ^{∗}

Universität Stuttgart Fakultät Informatik Breitwiesenstr. 20–22 7000 Stuttgart 80

∗geschrieben von T. Jahke, H. Ohmenhäuser und K. Tanaka, 1991 und 1992 erweitert von T. Schreiner

\underline{i}

Vorwort

Das Skript ”Automatentheorie und formale Sprachen“ entstand aus einer Mitschrift zu einer Vorlesung, die ich im Wintersemester 1989/90 an der Universität Stuttgart gehalten habe. Der Stoffumfang bezieht sich auf 22 doppelstündige Vorlesungen. Das Skript ist nur an wenigen Stellen ausführlicher als die ursprüngliche Mitschrift und sollte daher auf keinen Fall mit einem Lehrbuch verwechselt werden. Es enthält die Sätze, die in der Vorlesung behandelt wurden. Es fehlen jedoch motivierende und übergreifende Begleittexte. Auch die Beweise, wie sie in einer Vorlesung geführt werden, unterscheiden sich von Beweisen, wie sie in einem Lehrbuch niedergeschrieben werden sollen. In einer Vorlesung hat man die Möglichkeit durch verschiedene Betonungen, Pausen, usw. wichtige Punkte herauszuheben und auf das eigene Gedankenspiel der Hörer zu verweisen. Ich denke und hoffe dennoch, daß der Leser Gewinn aus diesem Skript ziehen kann. Die Initiative zu dieser Mitschrift ging von den Studenten K. Tanaka, H. Ohmenhäuser und T. Jahke aus, die auf zunächst rein freiwilliger Basis mit der Ausarbeitung begannen. Ich möchte Ihnen an dieser Stelle herzlich für ihr großes Engagement und ihre Mühe danken, mit der sie dieses Skript erstellt haben. Dem Institut für Informatik möchte ich für die gute Arbeitsumgebung danken und dafür, daß es mir eine teilweise Unterstützung dieser Arbeit ermöglicht hat. Insbesondere bedanke ich mich bei Professor Knödel und Professor Lagally. Herrn K. Reinhardt danke ich für die Betreuung der Übungen und die Ausarbeitungen der Musterlösungen. Die Aufgaben und Lösungen finden sich am Ende des Skripts zusammen mit den Klausuraufgaben, die im Frühjahr 1990 in der Automatentheorie gestellt wurden. Desweiteren befindet sich im Anhang ein Stichwortverzeichnis, sowie ein kleines Abkürzungsverzeichnis, das die Arbeit mit diesem Skript erleichtern soll.

Stuttgart, im April 1990 Volker Diekert

Auch wir, die Schreiberlinge, wollen uns noch einmal bei Herrn Diekert für die gute Zusammenarbeit bedanken. Die Atmosphäre, in der die Erstellung dieses Skriptums erfolgte, empfanden wir als sehr angenehm und in einer Weise, wie sie nicht selbstverständlich ist. So fand Herr Diekert immer wieder Zeit, die Rohfassungen in kürzesten Zeiten zu korrigieren und mit uns Fragen durchzugehen. Durch die gute Betreuung und die raschen Korrekturen konnte das Skriptum drei Mal überarbeitet werden, so daß hoffentlich keine allzu gravierenden Fehler mehr enthalten sind.

Stuttgart, im April 1990 T. Jahke, H. Ohmenhäuser, K. Tanaka

Vorwort zur Auflage WS93/94 Das Skript wurde bereits in der zweiten Auflage leicht erweitert. Der Abschnitt 5.7 und das Kapitel 8 stammen von Herrn Posthoff, der die Vorlesung im WS 90/91 hielt. Einige Korrekturen wurden durch Herrn Vogler möglich, der eine entsprechende Vorlesung im WS 91/92 an der LMU in München hielt und dieses Skript als Vorlage benutzte. Die verbliebenen Fehler und Ungenauigkeiten bitte ich zu entschuldigen.

Bedanken möchte ich mich bei den Herren Tobias Schreiner und Günther Hutzl, die weitere LaTEX-Arbeiten am Skript übernommen haben.

Stuttgart, im Oktober 1993 Volker Diekert

Inhaltsverzeichnis

1 Grundbegriffe 1 1.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Grundbegriffe über Monoide . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Kombinatorik über Wörtern . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Formale Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Die Chomsky-Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6 Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7 Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Reguläre Sprachen 20 2.1 Graph. Darstellung einer Ableitung . . . . . . . . . . . . . . . . . . . . . . 22 2.2 Pumpinglemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3 Endliche Automaten 25 3.1 Graph. Darstellung von Automaten . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Andere Def. für endl. Autom. . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.2.1 Automaten mit genau einem Startzustand . . . . . . . . . . . . . . 27 3.2.2 Fast-buchstabierende Automaten . . . . . . . . . . . . . . . . . . . 32 3.2.3 Buchstabierende Automaten . . . . . . . . . . . . . . . . . . . . . . 33

4 Deterministische Automaten 37 4.1 Die Potenzautomatenkonstruktion . . . . . . . . . . . . . . . . . . . . . . 37 4.2 Rat. Ausdrücke, Satz von Kleene . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 Automaten m. rat. Kantenbesch. . . . . . . . . . . . . . . . . . . . . . . . 46 4.4 Verallgem. rat. Ausdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.5 Minimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.5.1 Naiver Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.5.2 Algorithmus von Hopcroft . . . . . . . . . . . . . . . . . . . . . . . 55 4.5.3 Minimierung nach J.Brzozowski . . . . . . . . . . . . . . . . . . . . 58 5 Kontextfreie Sprachen 60

5.1 Pumpinglemma für k.f. Sprachen . . . . . . . . . . . . . . . . . . . . . . . 62 5.2 Abschlußeigensch. k.f. Sprachen . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3 Red. k. f. Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.3.1 Entfernung unproduktiver Symbole und Test auf Leerheit . . . . . 70 5.3.2 Entfernung unerreichbarer Symbole . . . . . . . . . . . . . . . . . . 71 5.3.3 Entfernung von λ-Regeln . . . . . . . . . . . . . . . . . . . . . . . 73 5.3.4 Entfernung von Kettenproduktionen . . . . . . . . . . . . . . . . . 74

5.4 Chomsky-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.5 Der C-Y-K Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.6 Greibach-Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.7 GNF (anderes Verfahren) . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6 Kellerautomaten 84 6.1 Kellerautomaten und k. f. Sprachen . . . . . . . . . . . . . . . . . . . . . . 84 6.2 Deterministische Kellerautomaten . . . . . . . . . . . . . . . . . . . . . . . 94 6.3 Weitere Abschlußeigenschaften . . . . . . . . . . . . . . . . . . . . . . . . 102 6.4 LR(k)-Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

6.4.1 LR(0)-Grammatiken . . . . . . . . . . . . . . . . . . . . . . . . . . 106

7 Turingmaschinen 114 7.1 Varianten des TM-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.2 Universelle Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . 120 7.3 TM als Funktionsberechner . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.4 Die Busy-Beaver-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.5 Der Satz von Rice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

8 Turingmaschinen (andere Definition) 127 8.1 Aufbau und Arbeitsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 8.2 Berechnungen mit Turingmaschinen . . . . . . . . . . . . . . . . . . . . . 130

INHALTSVERZEICHNIS  iv

8.3 Kombination von Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . 133 8.4 Erweiterung von Turingmaschinen . . . . . . . . . . . . . . . . . . . . . . 140 8.5 Unlösbare Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

9 lin. beschr. Automat und Typ – 1 Spr. 143

Anhang 146

A Abkürzungstabelle 146 B Übungsaufgaben 147 C Lösungen zu den Übungsaufgaben 154 D Klausuraufgaben 174 E Lösungen zu den Klausuraufgaben 179 F Literatur 185 G Index 186

1 Grundbegriffe

1.1 Einführung

Was ist eine formale Sprache ? Eine (leider wenig nützliche) Antwort auf diese Frage gibt die folgende Definition.

”Eine formale Sprache ist eine Menge von Wörtern über einen gegebenen Zeichenvorrat.“

Beispiele für formale Sprachen sind

1. die Menge der syntaktisch richtigen PASCAL–Programme, wobei dann unter ”Wort“ ein Programm zu verstehen ist.

2. die Menge aller wahren Aussagen. In diesem Fall ist eine Aussage ein Wort.

3. die Menge der deutschen Sätze. Hier ist der Satz das Wort.

Das Grundproblem, das sich dabei stellt ist, ob ein Wort zu einer gegebenen Sprache gehört. Um dies zu beurteilen, ist eine genaue Spezifikation der Sprache erforderlich.

Beim ersten Beispiel läßt sich dieses Problem befriedigend durch eine Grammatik lösen.

Beim zweiten Beispiel wird es schon schwieriger. Was ist unter einer Aussage zu verstehen? Selbst bei einer Beschränkung auf aussagenlogische Formeln muß der Begriff der Wahrheit syntaktisch und semantisch definiert werden.

Die Spezifikation einer natürlichen Sprache, wie im dritten Beispiel, ist am schwierigsten, da hier keine scharfe Trennung von richtigen und falschen Sätzen existiert. In den meisten Fällen muß man auf die allgemeine Erfahrung zurückgreifen. Auch der Duden gibt in vielen Fällen keine Auskunft. Schwierigkeiten treten z. B. bei Sätzen auf, in denen Dialekt verwendet wird. So stellt sich die Frage, ob der folgende Satz zur deutschen Sprache gehört:

”Ich bin hier im Ländle.“

Bei der Beschreibung von Sätzen in Form einer Grammatik treten weitere Probleme auf, die die Semantik der Sätze betrifft. Folgendes Beispiel soll ein solches Problem andeuten.

1 Grundbegriffe  2  1.1 Einführung

Beispiel:

Eine Grammatik für einen Satz der deutschen Sprache kann z. B. wie folgt aussehen.

<Satz >  → <Subjekt> <Prädikat> <Objekt>
<Subjekt >  → <Artikel> <Attributphrase> <Substantiv>
<Artikel >  → der | die | das
<Attributphrase> → <Attribut> | <Attribut> , <Attributphrase>
<Attribut >  → kleine | große | bissige
<Substantiv >  → Hund | Katze
<Objekt >  → <Artikel> <Attributphrase> <Substantiv>
<Prädikat >  → jagt

Einen möglichen Syntaxbaum zu dieser Grammatik zeigt Abbildung 1.1.

[figure: der; große; ,; bissige; Hund; jagt; die; kleine; Katze; ^{<}Attribut^{>}; ^{<}Attribut^{>}; ^{<}Attributphrase^{>}; ^{<}Attribut^{>}; ^{<}Artikel^{>}; ^{<}Attributphrase^{>}; ^{<}Substantiv^{>}; ^{<}Artikel^{>}; ^{<}Attributphrase^{>}; ^{<}Substantiv^{>}; ^{<}Subjekt^{>}; ^{<}Prädikat^{>}; ^{<}Objekt^{>}; ^{<}Satz^{>}]

Abbildung 1.1: Syntaxbaum

Sie zeigt, daß durch die obige Beschreibung der Satz

”Der große, bissige Hund jagt die kleine Katze.“

gebildet werden kann, es jedoch auch möglich ist, Sätze zu bilden, die weder der deutschen Grammatik entsprechen noch semantisch sinnvoll sind.:

”Das große, kleine, bissige, große, große Katze jagt der kleine Katze.“

Definition 1.1 (Zeichenvorrat/Alphabet)

Ein Zeichenvorrat oder Alphabet ist eine (endliche) Menge. Die Elemente dieser Menge heißen Buchstaben. Nach Din–Norm ist ein Alphabet geordnet.

Folgende Bezeichnungen werden üblicherweise für Alphabete und Buchstaben verwendet.

• Alphabete: Σ, Γ, V, X

1 Grundbegriffe  3  1.2 Grundbegriffe über Monoide

• Buchstaben: a, b, c, x, y, z ∈ Σ Bezeichnungen:

• Mit Σ^{n} wird die Menge der n–Tupel (a_{1}, …, a_{n}) über einem Alphabet Σ für a_{i} ∈ Σ, n ≥ 0 bezeichnet. Dabei wählen wir für die Tupel (a_{1}, …, a_{n}) ∈ Σ^{n} die Schreibweise a_{1} … a_{n}, sofern dies eindeutig ist. Für Σ^{1} werden wir Σ schreiben.

• Mit Σ^{+} bezeichnen wir die Menge der Tupel, die aus einen oder mehr Buchstaben bestehen.

Σ^{+} = ⋃_{n≥1} Σ^{n}

• Mit Σ^{∗} bezeichnen wir die Menge der Tupel, die aus 0 ≤ n < ∞ Buchstaben bestehen.

Σ^{∗} = ⋃_{n≥0} Σ^{n} = {λ} ˙∪ Σ^{+}.

Dabei ist {λ} ˙∪Σ^{+} die disjunkte Vereinigung von {λ} und Σ^{+}. Es gilt also:

λ ∉ Σ ⊆ Σ^{+} ⊆ Σ^{∗}.

\underline{Wichtig}:

Auch wenn Σ = ∅ ist, gilt Σ^{0} ≠ ∅. Die Menge Σ^{0} besteht aus genau einem Element, das mit λ bezeichnet und das \underline{l}eere Wort genannt wird. Formal heißt das

Σ^{0} = Abb(∅, Σ) = {∅}, wobei ∅ die leere Menge ist.

Definition 1.2 (Wort)

w = a_{1} … a_{n} mit a_{i} ∈ Σ heißt ein Wort oder eine Zeichenkette. Für n = 0 heißt w das leere Wort und wird mit w = λ bezeichnet. Für ein Wort w = a_{1} … a_{n} ∈ Σ^{∗} mit n ≥ 0, a_{i} ∈ Σ, 1 ≤ i ≤ n ist n die Länge des Wortes.

Bezeichnung: |w| = n
|λ| = 0

1.2 Grundbegriffe über Monoide

Auf Σ^{∗} ist eine Multiplikation, die Konkatenation, erklärt.

Definition 1.3 (Konkatenation)

Sei v = (a_{1} … a_{m}) ∈ Σ^{m} und w = (b_{1} … b_{n}) ∈ Σ^{n}. Dann ist vw ∈ Σ^{m+n} erklärt durch (a_{1}, …, a_{m}, b_{1}, …, b_{n}) = a_{1} … a_{m}b_{1} … b_{m}

Bemerkung

• Die Multiplikation ist assoziativ, d. h. es gilt (uv)w = u(vw)

• Die Multiplikation ist \underline{nicht} kommutativ. Wenn #Σ ≥ 2 ist, gilt ab ≠ ba für a, b ∈ Σ, a ≠ b • Es existiert ein neutrales Element, nämlich das leere Wort: λu = uλ = u

Definition 1.4 (Monoid)

Ein Monoid ist ein Tripel (M, ·, 1_{M}), wobei

• M eine Menge,

• 1_{M} ∈ M das neutrale Element und

• · : M × M → M eine binäre assoziative Operation ist, so daß gilt

i.) u(vw) = (uv)w ∀ u, v, w ∈ M ii.) 1_{M}u = u1_{M} = u ∀u ∈ M

Bemerkung

Die Menge Σ^{∗} der Wörter über Σ bildet also ein Monoid bezüglich der Konkatenation mit dem neutralen Element λ.

Definition 1.5 (Homomorphismus)

Ein Homomorphismus zwischen zwei Monoiden M und N ist eine Abbildung h : M → N mit

i) h(u · v) = h(u) · h(v)

ii) h(1_{M}) = 1_{N}.

Ein bijektiver Homomorphismus heißt Isomorphismus. Sind M und N isomorph, so schreiben wir M ≅ N.

Beispiele:

(Σ^{∗}, ·, λ) ist ein Monoid, wie oben erklärt.

( , +, 0) ≅ a^{∗} ist ein Monoid. Die Isomorphie identifiziert n ∈ mit a^{n} ∈ a^{∗}.

{1} ≅ ∅^{∗} = {λ} ist das sogenannte triviale Monoid.

( , +, 0) ist sogar eine Gruppe, d. h. jedes Element hat ein Inverses.

( , ·, 1) ist ein Monoid. Der Satz über die Existenz unendlich vieler Primzahlen bedeutet, daß ( , ·, 1) im Gegensatz zu den anderen hier erwähnten Beispielen unendlich erzeugt ist. Der Satz über die Eindeutigkeit der Primfaktorzerlegung natürlicher Zahlen bedeutet, daß ( , ·, 1) ein frei kommutatives Monoid ist.

Beispiel:

Sei = ({true, false}, ∨, false). ist dann ein Monoid. f : ( , +, 0) → mit m ↦ true ist kein Homomorphismus, obwohl i) aus der Definition 1.4 erfüllt ist.

Definition 1.6 (Potenzmenge)

Sei (M,·,1_{M}) ein Monoid. Dann ist die Potenzmenge ℘(M) ein Monoid bezüglich der Konkatenation von Teilmengen:

K · L = {m ∈ M | k ∈ K, l ∈ L, m = k · l} für K, L ⊆ M

mit dem neutralen Element {1_{M}} ∈ ℘(M).

Man beachte: \begin{aligned}∅ & = & \{k · l|k ∈ K, l ∈ ∅\} \\ & = & \{k · l|k ∈ ∅, l ∈ K\} \\ & = & K · ∅ = ∅ · K für alle K ⊆ M. \end{aligned}

Die leere Menge verhält sich also wie die Null bei der Multiplikation.

Es existiert immer ein kanonischer injektiver Homomorphismus

\begin{matrix}M & → & ℘(M) \\ m & ↦ & \{m\}. \end{matrix}

Es ist daher sinnvoll, M als Teilmenge in ℘(M) aufzufassen.

Definition 1.7 ()

Für L ⊆ M definieren wir rekursiv:

\begin{aligned}L^{0} & = & \{λ\} & und \\ L^{i} & = & L(L^{i−1}) & für i ≥ 1. \end{aligned}

Ferner setzen wir:

\begin{aligned}L^{∗} & = & ⋃_{i≥0} L^{i} und \\ L^{+} & = & ⋃_{i≥1} L^{i}. \end{aligned}

Dann ist L^{∗} das von L erzeugte Untermonoid in M und L^{+} die erzeugte Halbgruppe.

Beispiel:

(M = {true, false}, ∨, false) ist ein Monoid. Es gilt:

\begin{matrix}∅  = & K · ∅ = ∅ · K für alle K ⊆ M \\ \{true\}  = & \{k · l|k ∈ \{true\}, l ∈ \{true\}\} \\ = & \{k · l|k ∈ \{true\}, l ∈ \{false\}\} \\ = & \{k · l|k ∈ \{true\}, l ∈ \{true, false\}\} \\ \{false\}  = & \{k · l|k ∈ \{false\}, l ∈ \{false\}\} \\ \{true, false\}= & \{k · l|k ∈ \{false\}, l ∈ \{true, false\} \\ = & \{k · l|k ∈ \{true, false\}, l ∈ \{true, false\}\} \end{matrix}

Es existiert dann ein neutrales Element {false} mit K ·{false} = {k ·false|k ∈ K} = K für K ⊆ {true, false} und ”·“ ist eine binäre assoziative Operation.

1 Grundbegriffe  6  1.3 Kombinatorik über Wörtern

Die Potenzmenge von M ist die Menge ℘(M) = {∅, {true}, {false}, {true, false}}.

Definition 1.8 (freies Monoid)

Σ^{∗} heißt das freie Monoid über Σ, da Homomorphismen von Σ^{∗} in ein Monoid M frei durch die Bilder der Buchstaben a ∈ Σ wählbar sind. Das heißt, daß bei einer Wahl eines Bildes h(a) ∈ Σ für jedes a ∈ Σ genau ein Homomorphismus ĥ : Σ^{∗} → M mit ĥ|_{Σ} = h existiert.

\begin{matrix}h : & Σ & → & M \\ & a & ↦ & h(a), a ∈ Σ \end{matrix} \} ĥ(a_{1} … a_{n}) = h(a_{1}) … h(a_{n})

Daher ist es gerechtfertigt zu schreiben Abb(Σ, M) = Hom(Σ^{∗}, M).

1.3 Kombinatorik über Wörtern

Definition 1.9 (transponierte Wörter)

Zwei Wörter x, y ∈ Σ^{∗} heißen transponiert, wenn x = uv und y = vu gilt für gewisse u, v ∈ Σ^{∗}.

Definition 1.10 (konjugierte Wörter)

Zwei Wörter x, y ∈ Σ^{∗} heißen konjugiert, wenn xu = uy gilt für ein u ∈ Σ^{∗}. (Analogie: u^{−1}xu = y)

Bemerkung

x,y transponiert ⇒ x,y konjugiert, denn x = uv, y = vu ⇒ (uv)u = u(vu)

Korollar 1.1 Die Konjugation ist eine Äquivalenzrelation (Beweis siehe Übungen).

Satz 1.1 Zwei Wörter x,y sind genau dann transponiert, wenn sie konjugiert sind.

Beweis:

”⇒“ trivial (s. o. ) ”⇐“ Fall 1: |u| ≥ |x|. Wähle ein u ∈ Σ^{∗} mit |u| minimal,so daß xu = uy. Dann sei

zunächst |x| = |y|. Somit gilt:

u x  y u w

und damit u = xw = wy und |w| < |u|. ⟶ Widerspruch!

Fall 2: |u| < |x|. Hier gilt:

u x v y u

Daher x = uv und y = vu ⇒ x, y sind transponiert.

Definition 1.11 (primitives Wort)

Ein Wort p ∈ Σ^{∗} heißt primitiv, wenn aus p = q^{s} stets s = 1 folgt, also wenn p keine echte Potenz ist.

Bemerkung

λ = λ^{0} = λ^{2} ist nicht primitiv !

Satz 1.2 Seien u, v ∈ Σ^{∗}, dann gilt uv = vu genau dann, wenn ∃ ein primitives Wort p und gewisse m, n ≥ 0 mit u = p^{s}, v = p^{r}.

Bemerkung

”Ohne Einschränkung“ wird ab jetzt mit Œ abgekürzt.

Beweis:

”⇐“ trivial, da u = p^{s}, v = p^{r} ⇒ uv = p^{p+r} = vu.

”⇒“ Sei n = |uv| und die Behauptung wahr für alle n′ < n,dann gilt Œ : |u| < |v|:

v u  u v w

Dann ist v = uw = wu ⇒ ∃p : u = p^{s}, w = p^{r}, da |w| < |v|. Daher gilt: v = p^{s+r}.

Satz 1.3 (über die Eindeutigkeit einer primitiven Wurzel)

Jedes u ∈ Σ^{+} ist Potenz eines eindeutig bestimmten primitiven Wortes. Dieses heißt primitive Wurzel und wird häufig mit ϱ(u) bezeichnet. (u = (ϱ(u))^{s}, ϱ primitiv)

Beweis:

Sei u = p^{s} = q^{r}. Zeige pq = qp. Dann gilt nämlich: p = ϱ^{m}, q = ϱ^{n} für ein ϱ ∈ Σ^{∗} und falls p (bzw. q) primitiv ist, gilt: p = ϱ(= q).

1. Œ |p| < |q|

2. Es gilt pq^{r} = q^{r}p. Dies ist trivial, da pq^{r} = p^{s+1} = q^{r}p.

1 Grundbegriffe  8  1.4 Formale Sprachen

3.

q q p  p q q  …
, da Œ r ≥ 2. Also pq = qp.

1.4 Formale Sprachen

Definition 1.12 (formale Sprache)

Eine formale Sprache über Σ ist eine Teilmenge L ⊆ Σ^{∗}.

Definition 1.13 (Grammatik)

Eine Grammatik G über Σ ist ein Tupel G = (V, Σ, P, S), wobei

• V eine (endliche) Menge von Variablen,

• P ⊆ (V ∪ Σ)^{∗} × (V ∪ Σ)^{∗} eine endliche Menge von Regeln (oder Produktionen) und • S ∈ V ein Axiom (oder Startsymbol) ist.

Beachte: Das Leerwort λ ist Element (V ∪ Σ)^{∗}.

Bezeichnungen:

Häufig, aber nicht immer werden die folgenden Bezeichnungen verwendet:

kleine lateinische Buchstaben für Terminale  a, b, c, … ∈ Σ
u, v, w, … ∈ Σ^{∗}
große lateinische Buchstaben für Variablen  A, B, C, … ∈ V
griechische Buchstaben  für Zeichenketten α, β, γ, … ∈ (V ∪ Σ)^{∗}

Statt (α, β) ∈ P schreiben wir Regeln auch in der Form α → β.

Es ist üblich, nur die Regeln anzugeben, wenn sich die Bedeutung von Σ, V und S daraus implizit ergibt.

Beispiel:

Ist eine Menge P angegeben mit

P = {S → aSd, S → bZc, Z → bZc, Z → bc},

so gilt implizit G = ({S, Z}, {a, b, c, d}, P, S).

Definition 1.14 (Derivationen oder Ableitungen)

Sei G = (V, Σ, P, S) eine Grammatik und u, v ∈ (V ∪ Σ)^{∗}. Dann heißt

i) v direkt aus u ableitbar, wenn gilt

u = γαδ, v = γβδ für α, β, γ, δ ∈ (V ∪ Σ)^{∗} und (α, β) ∈ P

Eine direkte Ableitung wird u⟹_{G}v geschrieben.

ii) v in n Schritten aus u ableitbar (für n ≥ 0), wenn gilt

∃u_{0} … u_{n} : u = u_{0}⟹_{G}u_{1}⟹_{G} … ⟹_{G}u_{n} = v

Eine Ableitung in n Schritten wird u⟹_{G}^{n}v geschrieben.

Beachte: es gilt u⟹_{G}^{0}v gdw u = v

iii) v aus u ableitbar, wenn u⟹^{n}v für ein n ≥ 0.

Eine Ableitung wird u⟹_{G}^{⋆}v geschrieben.

Beachte: es gilt u⟹_{G}^{⋆}u ∀u ∈ (V ∪ Σ)^{∗}

Definition 1.15 (Satzformsprache S(G))

Die Satzformsprache S(G) ist S(G) = {α ∈ (V ∪ Σ)^{∗}|S⟹_{G}^{⋆}α}.

Das Startsymbol S ist immer Element von S(G), d. h. S ∈ S(G). Die Menge S(G) ist also nicht leer. Das eigentliche Interesse gilt jedoch den erzeugten Wörtern über dem Terminalalphabet.

Definition 1.16 (erzeugte Sprache)

Die erzeugte Sprache von G ist

L(G) = {u ∈ Σ^{∗}|S⟹_{G}^{⋆}u}.

Die erzeugte Sprache ist also die Menge der ableitbaren Wörter, die nur aus Terminalzeichen bestehen, also

L(G) = S(G) ∩ Σ^{∗}.

Definition 1.17 (Äquivalenz)

Zwei Grammatiken G, G′ über Σ heißen äquivalent, wenn die erzeugten Sprachen gleich sind:

L(G) = L(G′)

Beispiel:

1.) Gegeben sei eine Grammatik G_{1} mit

S → aSd|ad.

Die erzeugte Sprache von G_{1} ist

L(G_{1}) = {a^{n}d^{n}|n ≥ 1}

2.) Gegeben sei eine Grammatik G_{2} mit

S → aSd|aZd,
Z → bc|bZc.

Für die Satzformsprache S(G_{2}) gilt dann

S(G_{2}) ⊇ {a^{m}Sd^{m}|m ≥ 1} ∪
{a^{m}b^{n}Zc^{n}d^{m}|m ≥ 1, n ≥ 0} ∪
{a^{m}b^{n}c^{n}d^{m}|m ≥ 1, n ≥ 1}

Die erzeugte Sprache der Grammatik ist

L(G_{2}) = {a^{m}b^{n}c^{n}d^{m}|m ≥ 1, n ≥ 1}.

3.) Gegeben sei eine weitere Grammatik G_{3} mit

S → aSC|abZdC
Z → bZd|bd
dC → Cd
bC → bc
cC → cc

Durch die ersten zwei Produktionen können Zeichenfolgen der Form a^{m}b^{n}d^{n}C^{m} erzeugt werden. Durch die 3. Produktion werden die C’s vor die d’s geschoben: S(G_{3}) ⊇ {a^{m}b^{n}C^{m}d^{n}|m ≥ 1, n ≥ 1}. Durch die 4. und 5. Produktion werden die C’s zu c’s umgewandelt. Für L(G_{3}) gilt dann

L(G_{3}) = {a^{m}b^{n}c^{m}d^{n}|m ≥ 1, n ≥ 1}

Anschauung:

Die Grammatik G_{2} ist in einem intuitiven Sinne einfacher aufgebaut als G_{3}, obwohl L(G_{2}) und L(G_{3}) scheinbar sehr ähnlich sind. Tatsächlich werden wir später sehen, daß die Sprachen L(G_{2}) und L(G_{3}) zu verschiedenen Chomsky-Klassen gehören.

1 Grundbegriffe  11  1.5 Die Chomsky-Hierarchie

1.5 Die Chomsky-Hierarchie

Noam Chomsky definierte 1956,1959 die Chmsky–Hierarchie, in der er für Grammatiken vier Sprachklassen Typ – 0 bis Typ – 3 charakterisierte. Diese werden in diesem Abschnitt erläutert.

Sei G = (V, Σ, P, S) eine Grammatik. Sie ist vom Typ – i, i = 0, … 3, wenn alle Regeln folgende Form haben:

1.) Typ – 0 Grammatiken:

Regeln von Typ – 0 Grammatiken unterliegen keinerlei Einschränkungen. Sie bilden die größte Familie von Grammatiken der Chomsky–Hierarchie und erlauben Produktionen der Form

P ⊆ (V ∪ Σ)^{∗} × (V ∪ Σ)^{∗}.

Zu den Typ – 0 Grammatiken gehören:

a.) klassische Typ – 0 Grammatiken Bei klassischen Typ – 0 Grammatiken haben alle Produktionen die Form

P ⊆ (V ∪ Σ)^{∗}V (V ∪ Σ)^{∗} × (V ∪ Σ)^{∗}.

b.) kontextsensitive Grammatiken mit Auslöschung Hier haben alle Regeln die Form

γAδ → γαδ mit A ∈ V, α, γ, δ ∈ (V ∪ Σ)^{∗}.

2.) Typ – 1 Grammatiken:

Zu den Typ – 1 Grammatiken gehören die kontextsensitiven und die monotonen Grammatiken:

a.) kontextsensitive Grammatiken Bei kontextsensitiven Grammatiken haben alle Regeln die Form

γAδ → γαδ, mit A ∈ V, α, γ, δ ∈ (V ∪ Σ)^{∗}, |α| ≥ 1 oder

S → λ, dann erscheint S aber nie auf der rechten Seite einer Regel.

b.) monotone Grammatiken Bei monotonen Grammatiken haben alle Regeln die Form

α → β mit |α| ≤ |β| oder

S → λ, dann erscheint S aber nie auf der rechten Seite einer Regel.

Beachte: Jede kontextsensitive Grammatik ist monoton.

3.) Typ – 2 Grammatiken: kontextfreie Grammatiken

Bei kontextfreien Grammatiken haben alle Regeln die Form

A → α, mit A ∈ V, α ∈ (V ∪ Σ)^{∗}.

1 Grundbegriffe  12  1.6 Normalformen

4.) Typ – 3 Grammatiken: reguläre Grammatiken a.) rechtslineare Grammatiken

Bei rechtslinearen Grammatiken haben alle Regeln die Form

A → uB oder
A → u mit A, B ∈ V, u ∈ Σ^{∗}.

b.) linkslineare Grammatiken Bei linkslinearen Grammatiken haben alle Regeln die Form:

A → Bu oder
A → u, mit A, B ∈ V, u ∈ Σ^{∗}.

Definition 1.18 Eine Sprache heißt vom Typ – i, wenn sie sich von einer Typ – i Grammatik erzeugen läßt, i = 1, 2, 3, 4. Typ – 0 Sprachen heißen auch aufzählbar, Typ – 1 kontextsensitiv, Typ – 2 kontextfrei und Typ – 3 regulär.

Bemerkung

Für Grammatiken gilt:

Typ – 1 ⇒ Typ – 0, aber Typ – 0 ⇏ Typ – 1

Typ – 3 ⇒ Typ – 2, aber Typ – 2 ⇏ Typ – 3

Typ – 2 ⇒ Typ – 0, aber Typ – 0 ⇏ Typ – 2

Typ – 2 ⇏ Typ – 1 und Typ – 1 ⇏ Typ – 2

Für die Sprachen werden wir im Laufe des Skripts zeigen:

Typ – 3 Typ – 2 Typ – 1 Typ – 0

Die Grammatiken können auf Normalformen gebracht werden. Dies soll im folgenden Kapitel zunächst für Typ – 0 und Typ – 1 Grammatiken betrachtet werden.

1.6 Normalformen

1.) Œ gilt: P ⊆ (V ∪ Σ)^{+} × (V ∪ Σ)^{∗}.

Beweis:

Falls eine Produktion λ → α ∈ P existiert, führen wir stattdessen neue Regeln der Form

u → uα  und
u → αu  für alle u ∈ V ∪ Σ

ein (typerhaltend).

Häufig wird dies gleich in der Definition von Typ – 0 Grammatiken verlangt. Auch wir nehmen dies von nun an an.

2.) Œ gilt: P ⊆ V^{+} × (V ∪ Σ)^{∗}

Für den Beweis dieser Behauptung werden wir einen Trick anwenden:

Wir kopieren die Symbole aus Σ und erklären die Kopien zu neuen Variablen.

Sei Σ′ eine Kopie von Σ und P′ eine Kopie von P, wobei alle Zeichen a ∈ Σ in P durch die entsprechenden Zeichen a′ ∈ Σ′ ersetzt werden. Wir führen weiterhin noch Regeln der Form a′ → a ∀a ∈ Σ ein.

Behauptung:

Für G′ = (V ∪ Σ′, Σ, P′, S) gilt dann L(G′) = L(G), wobei G′ die Bedingung 2.) erfüllt.

Beweis:

Äquivalent sind für a_{i}, b_{i} ∈ (V ∪ Σ), m, n ≥ 0:

(a) a_{1} … a_{m}⟹_{G}b_{1} … b_{n}

(b) a′_{1} … a′_{m}⟹_{G′}b′_{1} … b′_{n}, wobei \{ \begin{matrix}a′_{i} Kopie von a_{i} ist & , falls a_{i} ∈ Σ und \\ a′_{i} = a_{i} & , für a_{i} ∈ V sonst. \end{matrix}

Bemerkung

• Es wurde sogar gezeigt: Œ gilt P ⊆ (V^{+} × V^{∗}) ∪ (V × Σ).

• Beachte: Diese Umformung erhält Typ – 0, Typ – 1, Typ – 2, Monotonie, aber \underline{nicht} Typ – 3 Eigenschaften.

3.) Œ haben alle Regeln die Form

\begin{aligned}AB & → & CD & bzw. \\ A & → & B|BC|a|λ & für A, B, C, D ∈ V, a ∈ Σ. \end{aligned}

Beweis:

Zu zeigen ist folgende Behauptung:

Sei G vom Typ – 0. Dann existiert effektiv eine Grammatik G′ mit L(G) = L(G′), wobei G′ den Bedingungen unter 3.) genügt.

Wir können nach 2.) von einer Grammatik G ausgehen, bei der alle Regeln von der folgenden Form sind:

\begin{aligned}A_{1} … A_{m} & → & B_{1} … B_{n} & , A_{i}, B_{j} ∈ V, m ≥ 1, n ≥ 0 & oder \\ A & → & a & , a ∈ Σ, A ∈ V. \end{aligned}

Umzuwandeln sind also nur noch die Regeln der Form

\begin{aligned}A_{1} … A_{m} → B_{1} … B_{n} mit & A_{i}, B_{j} ∈ V, m ≥ 1, n ≥ 0, \\ & (m, n) ≠ (1, 0), (1, 1), (1, 2). \end{aligned}

Die Fälle (m, n) = (1, 0), (1, 1), (1, 2) entsprechen schon den obigen Bedingungen A → λ, A → B und A → BC. Sei r = A_{1} … A_{m} → B_{1} … B_{n} ∈ P eine Regel der obigen Form. Wir führen nun neue Symbole R, R_{1}, R_{2}, … ein und ersetzen r durch die folgenden Regeln:

1.Fall: n < m (Regel ist nicht monoton)

\begin{aligned}A_{1} … A_{m} & → & B_{1} … B_{n}R^{m−n} \\ R & → & λ \end{aligned}

2.Fall: 1 ≤ m ≤ n

r′_{0} : A_{1}  → R_{1}
r′_{i} : R_{i}A_{i+1} → B_{i}R_{i+1} 1 ≤ i < m
r′_{j} : R_{j}  → B_{j}R_{j+1} m ≤ j < n
r′_{n} : R_{n}  → B_{n}

Die so entstandene neue Grammatik sei G′. Wir müssen nun noch beweisen, daß die Grammatik G′ die gleiche Sprache erzeugt wie G, d. h. L(G′) = L(G).

1. Fall: n < m Der 1.Fall ist klar. Die erste Regel bringt die Anzahl der Variablen auf der rechten Seite auf die Anzahl der Variablen auf der linken Seite, wenn rechts weniger Variablen stehen sollten. Die neuen Variablen können durch die 2. Regel auf λ abgeleitet werden. Die so entstandenen Regeln genügen nun dem 2. Fall.

2.Fall: 1 ≤ m ≤ n

(a) L(G) ⊆ L(G′) : Wir ersetzen eine Regelanwendung von r γA_{1} … A_{m}δ⟹_{r}γB_{1} … B_{n}δ durch die Anwendung von r′_{0}, …, r′_{n}:

γA_{1} … A_{m}δ ⟹_{r′_{0}} γR_{1}A_{2} … A_{m}δ
⟹_{r′_{1}} γB_{1}R_{2}A_{3} … A_{m}δ⟹_{r′_{2}} …
⟹_{r′_{m−1}} γB_{1} … B_{m−1}R_{m}δ
⟹_{r′_{m}} γB_{1} … B_{m−1}B_{m}R_{m+1}δ⟹_{r′_{m+1}} …
⟹_{r′_{n−1}} γB_{1} … B_{n−1}R_{n}δ
⟹_{r′_{n}} γB_{1} … B_{n}δ
(b) L(G′) ⊆ L(G) :

Der formale Beweis für L(G′) ⊆ L(G) ist sehr mühsam und länglich, aber die Intuition ist klar und einfach. Die Idee besteht darin, ”Regelanwendungen zusammenzuschieben“:

Es werde das Startsymbol S durch die Grammatik G′ zur Zeichenkette w abgeleitet: S⟹_{G′}w ∈ Σ^{∗}. Werden bei dieser Ableitung keine der Regeln r′_{k} benutzt, so werden nur Regeln benutzt, die auch in G vorhanden sind, also ist w ∈ L(G). Andernfalls werden alle r′_{k} benutzt, da nur hierdurch die Symbole R_{i} verschwinden. Wir betrachten nun die Ableitung, die r′_{0} … r′_{n} benutzt.

S ⟹_{G′}^{⋆} γ_{i}R_{i}A_{i+1}δ_{i}
⟹_{r′_{i}} γ_{i}B_{i}R_{i+1}δ_{i}
⟹_{G′}^{⋆} γ_{i+1}R_{i+1}A_{i+2}δ_{i+2}
⟹_{r′_{i+1}} γ_{i+1}B_{i+1}R_{i+2}δ_{i+1} = β

Die entscheidende Beobachtung liegt in der Tatsache, daß wir dies so anordnen können, daß gilt

γ_{i}B_{i}⟹_{G′}^{⋆}γ_{i+1} und δ_{i}⟹_{G′}^{⋆}A_{i+2}δ_{i+1}.

Eine Vertauschung der Regelanwendungen ermöglicht:

S ⟹_{G′}^{⋆} γ_{i}R_{i}A_{i+1}δ_{i}
⟹_{G′} γ_{i}R_{i}A_{i+1}A_{i+2}δ_{i+1}
⟹_{r′_{i}} γ_{i}B_{i}R_{i+1}A_{i+2}δ_{i+1}
⟹_{r′_{i+1}} γ_{i}B_{i}B_{i+1}R_{i+1}δ_{i+1}
⟹_{G′} γ_{i+1}B_{i+1}R_{i+2}δ_{i+1} = β

r′_{i} und r′_{i+1} werden direkt hintereinander an derselben Stelle durchgeführt. Die Iteration bringt die Regelanwendungen r′_{0}, …, r′_{n} zusammen, die lassen sich dann in einem Schritt durch r ersetzen. Dies reduziert die Anzahl der Regelanwendungen r′_{0} … r′_{n} und mit Induktion folgt die Behauptung.

Bemerkung

Durch eine einfache Fallunterscheidung brauchen keine Kettenproduktionen A_{1} → R_{1}, R_{n} → B_{n} eingeführt werden. Dies sei dem Leser zur Übung selbst überlassen.

4.) Œ sind alle Regeln von der Form AB → CB|AD bzw. A → B|BC|a|λ.

Beweis:

Wir ersetzen die Regel AB → CD durch die folgenden Regeln mit den neuen Symbolen L und R

AB → LB
LB → LR
LR → CR
CR → CD.

Diese Regeln entsprechen alle den obigen Bedingungen. Betrachten Sie zu diesem Punkt auch Übungsaufgabe 6.

5.) Elimination von Kettenproduktionen

Definition 1.19 (Kettenproduktion) Eine Kettenproduktion ist eine Regel der Form A → B mit A, B ∈ V.

Sei G = (V, Σ, P, S) eine Grammatik. Für A ∈ V definiere R(A) als die Menge aller α ∈ (V ∪ Σ)^{∗} \ V für die gilt:

∃A_{1} … A_{n} ∈ V, n ≥ 1 : A⟹_{G}A_{1}⟹_{G} … ⟹_{G}A_{n}⟹_{G}α, d. h.

R(A) = {α|A → A_{1}, …, A_{n} → α ∈ P und α ∉ V }.

Bemerkung

Die Menge R(A) ist endlich und effektiv berechenbar, da n ≤ #V angenommen werden kann.

Sei G = (V, Σ, P, S). Dann definieren wir

\begin{aligned}P_{1} & := & P ∪ \{A → α|α ∈ R(A), A ∈ V \}, \\ P_{2} & := & P_{1} \ \{A → B ∈ P \}. \end{aligned}

Behauptung:

Ist G kontextfrei, dann gilt L(G_{2}) = L((V, Σ, P_{2}, S)) = L(G). Für eine Grammatik G, die \underline{nicht} kontextfrei ist (also Typ – 0 oder Typ – 1), definieren wir

P_{3} := P_{2} ∪ {AB → CB, DA → DC|A → C ∈ P }.

Dann gilt L(G_{3}) = L((V, Σ, P_{3}, S)) = L(G).

Beweis:

Der kontextfreie Fall wird später in dem Kapitel über kontextfreie Sprachen behandelt. Wir betrachten jetzt den allgemeinen Fall (G_{3}):

(a) L(G_{3}) ⊆ L(G):

Dies ist trivial durch die Konstruktion von G_{3}.

(b) L(G) ⊆ L(G_{3}):

Zu zeigen ist folgende Behauptung:

Existiert eine Ableitung S⟹_{G}^{⋆}w ∈ Σ^{∗}, dann existiert auch eine Ableitung

S⟹_{G_{3}}^{⋆}w.

Œ wird die Kettenproduktion A → B für S⟹_{G}^{⋆}w benutzt, d. h.

S⟹_{G}^{⋆}γAδ⟹_{r}γBδ⟹_{G}^{⋆}w.

Œ können γ, δ ∈ V^{∗} angenommen werden. Nun gibt es zwei Fälle.

1. Fall: γ ≠ λ.

Setze γ = γ′C. Dann kann statt r die Regel CA → CB verwendet werden. Analog kann der Fall δ ≠ λ behandelt werden.

2. Fall: γ = δ = λ

Dann existiert ein α ∈ RA(A) mit

S⟹_{G}^{⋆}A⟹_{G}A_{1}⟹_{G}A_{2}⟹_{G} … ⟹_{G}A_{n}⟹_{G}α⟹_{G}^{⋆}w ∈ Σ^{∗} mit α ∉ V

Dies kann dann durch S⟹_{G}^{⋆}A⟹_{G_{3}}α⟹_{G}^{⋆}w ∈ Σ^{∗} simuliert werden.

Satz 1.4 (Normalformsatz)

Sei G = (V, Σ, P, S) eine Typ – 0 Grammatik, dann existiert effektiv eine äquivalente Grammatik G′ = (V′, Σ′, P′, S′), in der alle Produktionen die folgende Form haben:

\begin{aligned}AB & → & CB|AD \\ A & → & BC|a|λ für A, B, C, D ∈ V′, a ∈ Σ. \end{aligned}

Ferner gilt: Ist G vom Typ – 0 monoton, bzw. kontextsensitiv, bzw. kontextfrei, so hat G′ dieselbe Eigenschaft.

Beweis:

Bis auf den kontextfreien Fall ist dies oben in 1.) bis 5.) gezeigt worden. Der kontextfreie Fall ergibt sich später aus der Chomsky–Normalform.

Korollar 1.2 Jede Typ – 0 Grammatik besitzt effektiv eine äquivalente Grammatik, die kontextsensitiv mit Auslöschung ist.

Beweis:

G′ oben ist von diesem Typ.

1 Grundbegriffe  18  1.7 Ein Beispiel

Korollar 1.3 Jede monotone Grammatik besitzt effektiv eine äquivalente kontextsensitive Grammatik.

Beweis:

Monoton und kontextsensitiv mit Auslöschung ist äquivalent zu kontextsensitiv.

Bemerkung

Ein direkter Beweis für Korollar 1.3 kann in der Übungsaufgabe 5 gefunden werden.

Definition 1.20 (rekursiv aufzählbar)

Eine formale Sprache L ⊆ Σ^{∗} heißt vom Typ – 0 oder rekursiv aufzählbar, wenn es eine Typ – 0 Grammatik G gibt mit L = L(G).

Definition 1.21 (kontextsensitiv)

Eine formale Sprache L ⊆ Σ^{∗} heißt vom Typ – 1 oder kontextsensitiv, wenn es eine Typ – 1 Grammatik G gibt mit L = L(G).

Definition 1.22 (kontextfrei)

Eine formale Sprache L ⊆ Σ^{∗} heißt vom Typ – 2 oder kontextfrei, wenn es eine Typ – 2 Grammatik G gibt mit L = L(G).

Definition 1.23 (regulär)

Eine formale Sprache L ⊆ Σ^{∗} heißt vom Typ – 3 oder regulär, wenn es eine Typ – 3 Grammatik G gibt mit L = L(G).

Dies ergibt die Chomsky–Hierarchie der Typ – i–Sprachen, i= 0, 1, 2, 3.

Bemerkung

Es gibt unentscheidbare Typ – 0 Sprachen. Typ – 1 Sprachen sind entscheidbar, aber im allgemeinen viel zu komplex. Offen ist, ob Typ – 1 Sprachen in polynomieller Zeit zu erkennen sind, es wird aber angenommen, daß dies nicht möglich ist. Bei Typ – 2 Sprachen ist das Wortproblem in der Zeit O(n^{2.6...}) erkennbar, bei Typ – 3 Sprachen ist es sogar in Realzeit mit konstantem Platzverbrauch möglich.

1.7 Ein Beispiel

Die folgende Denksportaufgabe lässt sich mit den Mitteln der Automatentheorie sehr einfach lösen:

Ein blinder Gastwirt, der Handschuhe trägt, macht mit einem Gast folgendes Spiel: Auf einem Tablett befinden sich vier Schnapsgläser, die zu Anfang in beliebiger Orientierung (Öffnung nach oben oder unten) im Viereck angeordnet sind. Der Gastwirt kann, wenn er am Zuge ist ein oder zwei beliebige Gläser drehen, kann aber wegen seinen Handschuhen nicht ertasten, in welcher Orientierung sich die Gläser befinden. Ziel des Gastwirts ist es, alle Gläser in die gleiche Orientierung zu bringen, daß also entweder alle mit der Öffnung nach oben stehen oder alle nach unten. Der Gast versucht diesem Ziel entgegenzuwirken, indem er das Tablett in eine beliebige Richtung um ganzzahlige Vielfache von 90^{∘} dreht. Die beiden wechseln sich bei jedem Zug ab.

Die Frage: Kann der Gast dem Gastwirt sein Ziel vereiteln, oder anders gefragt, schafft es der Gastwirt immer sein Ziel zu erreichen (mit einer bestimmten Strategie) ?

Zur Lösung dieser Aufgabe definieren wir zuerst die möglichen Züge des Gastwirts:

• Zug ”E“: drehe ein beliebiges Glas

• Zug ”D“: drehe eine beliebige Diagonale

• Zug ”N“: drehe zwei beliebige benachbarte Gläser

Von der Drehung des Tabletts kann man abstrahieren, wenn man die Zustände folgendermaßen in Kategorien einordnet:

Situation α: Ungerade Anzahl von Gläsern (also 1 oder 3) ”falsch^{1}“

Situation β: Diagonale ”falsch“ (also nach Drehung einer Diagonale richtig)

Situation γ: Zwei nebeneinander liegende Gläser ”falsch“

Situation δ: Die Gläser stehen alle in der selben Orientierung (”richtig“)

Die Zustände sind nun invariant gegen die Drehung des Tabletts, also kann der Gast nicht mehr einwirken und er kann vernachlässigt werden.

Dies ergibt folgende Darstellung als Automat:

1falsch ist hier so zu verstehen, daß gewisse Gläser bezüglich eines bestimmten Ziels (Öffnung oben/unten) falsch sind

[figure: β; δ; α; γ; D,N; D; E; E; E; E; E; N; N; D; N]

Lösung: Der Gastwirt erreicht sein Ziel immer, wenn er folgende Zugfolge anwendet: DNDEDND.

In den folgenden Kapiteln wollen wir die Abschlußeigenschaften der Sprachklassen untersuchen. Wir werden etwa prüfen, ob für Sprachen L_{1} und L_{2} die Vereinigung L_{1} ∪ L_{2}, die Konkatenation L_{1} · L_{2}, der Kleenestern L_{1}^{∗} oder das Komplement Σ^{∗}\L_{1} vom Typ – i sind. Weiterhin werden wir Automaten zur Erkennung der Typ – i Sprachen kennenlernen.

Wir behandeln die Sprachklassen im folgenden in der Reihenfolge reguläre Sprachen, kontextfreie Sprachen, aufzählbare Sprachen und schließlich nur kurz kontextsensitive Sprachen.

2 Reguläre Sprachen

Bemerkung

Zu jeder linkslinearen Grammatik existiert effektiv eine rechtslineare und umgekehrt.

Beweis:

Der Beweis zu dieser Bemerkung wird in der Übungsaufgabe 8 gestellt.

Die folgende Definition ist ein Spezialfall der Definition 1.7.

Definition 2.1 (L^{i} und der Kleene-Stern)

Sei L ⊆ Σ^{∗} eine formale Sprache. Dann wird für i ≥ 0 rekursiv die Sprache L^{i} wie folgt definiert:

\begin{matrix}L^{0} = & \{λ\} \\ L^{i+1} = & (L^{i}) · L \end{matrix}

Der Kleene-Stern von L wird wie folgt definiert:

L^{∗} = ⋃_{i≥0} L^{i}

Bemerkung

• L^{∗} ist das von L erzeugte Untermonoid in Σ^{∗}.

L^{+} = ⋃_{i≥1} L^{i} = \{ \begin{matrix}L^{∗} , falls & λ ∈ L \\ L^{∗}\\{λ\} , falls & λ ∉ L \end{matrix}

• L^{+} ist die von L erzeugte Halbgruppe.

Satz 2.1 Seien L_{1}, L_{2} ⊆ Σ^{∗} regulär.

Dann sind folgende Sprachen regulär:

i) Endliche Teilmengen von Σ^{∗}

ii) L_{1} ∪ L_{2}

iii) L_{1} · L_{2}

iv) L_{1}^{∗}, L_{1}^{+}

Beweis:

Sei E = {u_{1}, … u_{n}} eine endliche Teilmenge von Σ^{∗}. Dann kann die Grammatik S → u_{1}| … |u_{n} genommen werden.

Seien G_{1}, G_{2} rechtslinear mit L(G_{i}) = L_{i}, i = 1, 2.

i) Wir wählen ein neues Startsymbol S und bilden:

\begin{aligned}G & = & (V_{1} ˙∪V_{2} ˙∪\{S\}, Σ, P, S) & mit \\ P & = & P_{1} ∪ P_{2} ∪ \{S → S_{1}|S_{2}\}. \end{aligned}

Dann gilt:

L(G) = L_{1} ∪ L_{2}.

ii) Für die Konkatenation gilt ähnliches: Wir bilden eine Grammatik G = (V_{1} ˙∪V_{2}, Σ, P, S_{1}) mit P = P′_{1} ∪ P_{2}, wobei P′_{1} aus P_{1} hervorgeht, in dem man alle Regeln der Form A → u ∈ P_{1} durch A → uS_{2} ersetzt. Dabei ist S_{1} auch das Startaxiom von G.

iii) Es gilt L^{∗} = L^{+} ∪ {λ}. Es reicht daher eine Grammatik für L^{+} anzugeben. Sei G = (V, λ, P, S) rechtslinear mit L(G)=L.

2 Reguläre Sprachen  22 2.1 Graph. Darstellung einer Ableitung

Definiere

P^{+} = P ∪ {A → uS|A → u ∈ P }. Dann gilt:

L((V, Σ, P^{+}, S)) = L^{+}.

2.1 Graphische Darstellung einer Ableitung

Ableitungen lassen sich auch graphisch darstellen. Die Konstrukte aus dem letzten Satz lassen sich wie folgt wiedergeben:

i) L_{1} ∪ L_{2}

[figure: S_{1}; S; u_{1}; S_{2}; S; u_{2}; oder]

ii) L_{1} · L_{2}

[figure: S_{2}; S_{1}; u_{1}; ∈ L_{1}; ∈ L_{2}]
iii) L^{+}

2 Reguläre Sprachen  23  2.2 Pumpinglemma

[figure: S; S]

Dabei verschwindet das untere S mit dem rechten Ast nach mehrmaligen Durchlauf, wenn ein Terminalwort abgeleitet wird.

Beispiel:

Gegeben seien die Produktionen

S → u_{1}A_{1}
A_{1} → u_{2}A_{2}
⋮
A_{n} → u_{n+1}

und die Ableitung

S⟹_{G}u_{1} … u_{n}.

Damit kann folgender Ableitungsbaum aufgebaut werden:

[figure: S; A_{1}; A_{2}; A_{n}; u_{1}; u_{2}; u_{n+1}; ...]

2.2 Pumpinglemma (Bar-Hillel) oder uvw-Theorem

In diesem Abschnitt befassen wir uns mit einem wichtigen Werkzeug, mit dem bewiesen werden kann, daß eine gegebene Sprache nicht regulär ist. Später, in dem Abschnitt über deterministische endliche Automaten, werden wir einen weiteren Beweis des folgenden Lemmas geben. Durch die Verwendung von Automaten mag der spätere Beweis anschaulicher und leichter zu verinnerlichen sein.

Lemma 2.1 Sei L ⊆ Σ^{∗} regulär. Dann existiert ein n ≥ 0 so, daß für alle z ∈ L mit |z| ≥ n gilt:

∃u, v, w ∈ Σ^{∗} : z = uvw, |uv| ≤ n, |v| ≥ 1 und uv^{i}w ∈ L ∀i ≥ 0.

Zu beachten ist, daß im besonderen der Fall i = 0 erfüllt sein muß, also uw ∈ L. Beachte auch, daß |uw| < |z| ist.

Beweis: (aus den Grammatiken)

Sei L = L(G) für eine rechtslineare Grammatik G. Sei

S ⇒ u_{1}A_{1} ⇒ u_{1}u_{2}A_{2} … ⇒ u_{1} … u_{m}A_{m} ⇒ u_{1} … u_{m+1} = z eine Ableitung minimaler Länge , d.h. m ist minimal. Es gilt m ≥ const · |z| für ein const > 0, welches nur von L abhängt, aber nicht von z (lange Wörter z ∈ L erfordern lange Ableitungen). Wir wählen n = |z| so groß, daß gilt

m ≥ #V ≥ const · n. Dann wiederholen sich innerhalb der ersten #V Ableitungsschritte Variablen:

S⟹^{⋆} \underbrace{u_{1} … u_{r}}_{u} A_{r}⟹^{⋆} \underbrace{u_{1} … u_{r}}_{u} \underbrace{u_{r+1} … u_{s}}_{v} \underbrace{A_{s}}_{=A_{r}} ⟹^{⋆} z = \underbrace{u_{1} … u_{r}}_{u} \underbrace{u_{r+1} … u_{s}}_{v} \underbrace{u_{s+1} … u_{m}}_{w}

mit 0 ≤ r < s ≤ #V. Œ ist n genügend groß, daß |uv| ≤ n gilt und da m minimal war, gilt ferner v ≠ λ. Dies zeigt die Behauptung.

Beispiel:

Wir wollen folgende Behauptung mit Hilfe des Pumpinglemmas beweisen.

Behauptung: L = {a^{n}b^{n}|n ≥ 0} ist kontextfrei, aber nicht regulär.

Beweis:

1.) L ist kontextfrei

L ist kontextfrei, da es durch

S → aSb|λ darstellbar ist.

2.) L ist nicht regulär (indirekter Beweis) Angenommen L wäre regulär. Dann existiert ein n ≥ 0 wie im uvw-Theorem. Wir betrachten die Zeichenkette z = a^{n}b^{n} ∈ L und betrachten gemäß dem obigen Satz eine Zerlegung z = uvw. Da nach dem uvw-Theorem |uv| < n, |v| ≥ 1 sein muß, gilt für u und v: u = a^{p} und v = a^{q} mit q ≥ 1. w hat dann die Form w = a^{r}b^{n} mit r = n − p − q. Folglich hat die Zeichenkette uw folgende Gestalt: uw = a^{r}b^{n} mit r ≠ n. Das Wort uw ist jetzt aber nicht mehr ein Element von L, was dem Pumpinglemma widerspricht. Also ist L nicht regulär.

Es gibt Sprachen, die dem uvw-Theorem genügen ohne regulär zu sein. In der Tat gibt es überabzählbar viele solcher Sprachen.

Es gilt also:

regulär  ⟹ uvw-Theorem, bzw.
¬uvw-Theorem ⟹ nicht regulär,

aber nicht

uvw-Theorem ⟹ regulär !

3 Endliche Automaten

Vorbereitung:

Die Idee von regulären Sprachen zu endlichen Automaten zu gelangen, ist die folgende:

Sei G = (V, Σ, P, S) eine rechtslineare Grammatik.

Wir fassen nun die Variablen A ∈ V als Zustände eines Automaten auf. Der Zustand für S ∈ V heißt Startzustand. Weiterhin führen wir einen neuen Zustand f, den Endzustand ein.

Falls A → uB ∈ P fügen wir Zustandsübergänge wie folgt ein:

[figure: u; A; B]

Für A → u ∈ P führen wir die folgenden Übergänge ein:

[figure: u; A; f]

Dann gilt:

L(G) = {w ∈ Σ^{∗}|∃ eine Zerlegung w = u_{1} … u_{n} und Zustände A_{1}, …, A_{n−1},

S und f mit Übergängen

[figure: A_{1}; …; u_{1}; u_{2}; u_{n}; f; S; A_{n−1}; u_{n−1}; }]

Definition 3.1 (Nichtdeterministischer endlicher Automat)

Ein nichtdeterministischer endlicher Automat über Σ ist ein Tupel

A = (Q, Σ, δ, I, F). Dabei ist

Q eine endliche Menge von Zuständen,

3 Endliche Automaten  26 3.1 Graph. Darstellung von Automaten

I ⊆ Q eine Menge von Startzuständen (Das I kommt von \underline{I}nitial.),

F ⊆ Q eine Menge von Endzuständen (Das F kommt von \underline{F}inal.) und

δ ⊆ Q × Σ^{∗} × Q eine endliche Relation von Übergängen.

Bemerkung

Tatsächlich ist oben nur wichtig, daß δ endlich ist. (Beachte, i.a. ist Σ^{∗} unendlich.) Ob Q endlich oder unendlich ist, spielt eigentlich gar keine Rolle.

Definition 3.2 (Akzeptierte Sprache )

Die akzeptierte oder erkannte Sprache eines Automaten A=(Q,Σ,δ,I,F) ist definiert durch:

L(A) = {w ∈ Σ^{∗} | ∃ Zerlegung w = w_{1} … w_{n}, n ≥ 0, w_{i} ∈ Σ^{∗} und Übergänge
(p_{i−1}, w_{i}, p_{i}) ∈ δ für 1 ≤ i ≤ n mit p_{0} ∈ I und p_{n} ∈ F }.

3.1 Graphische Darstellung von Automaten

Für die graphische Darstellung von Automaten werden Kreise für Zustände verwendet. Startzustände q ∈ I und Endzustände q ∈ F werden besonders gekennzeichnet. Die folgende Abbildung zeigt mögliche Darstellungsmöglichkeiten.

[figure: oder auch; oder auch; oder auch; Q = Menge von Kreisen; q ∈ I; q ∈ F]

Abbildung 3.1: Zustände eines Automaten

Ein Übergang (p, w, q) ∈ δ wird als beschriftete Kante gezeichnet.

3 Endliche Automaten  27  3.2 Andere Def. für endl. Autom.

[figure: w; p; q]

Wir werden im folgenden Startzustände mit [figure] und Endzustände mit [figure] bezeichnen.

Die erzeugte Sprache läßt sich nun auch wie folgt beschreiben:

L(A) = Menge der Beschriftungen von Pfaden von einem Anfangszustand

zu einem Endzustand.

3.2 Andere übliche Definitionen für endliche Automaten

3.2.1 Automaten mit genau einem Startzustand

Man kann verlangen, daß die Menge der Startzustände einelementig sein soll, d.h. der Automat A hat genau einen Startzustand, I = {q_{0}}. Es ist üblich bei einem Automaten mit einem Startzustand q_{0} das Element q_{0} statt der Menge {q_{0}} anzugeben. Wir schreiben dann also A = (Q, Σ, δ, q_{0}, F).

Sätzle 3.1 Sei A ∈ (Q, Σ, δ, I, F) ein endlicher Automat. Dann existiert effektiv ein äquivalenter Automat A′ = (Q′, Σ, δ′, q_{0}, F). Dabei bedeutet die Äquivalenz von Automaten, daß L(A) = L(A’) ist.

Bemerkung

Œ kann auch für jeden Automaten F = {f} verlangt werden, d.h. zu jedem Automaten existiert ein äquivalenter Automat mit genau einem Start- und einem Endzustand.

Beweis:

Wir transformieren A zu A′ durch neue Zustände q_{0} und f und λ-Übergängen von q_{0} bzw. zu f. Einen solchen Automaten zeigt die Abbildung rechts.

[figure: A; A; λ; λ; λ; λ]

Der neue Automat ist dann äquivalent zum ursprünglichen Automaten und besitzt genau einen Start- und einen Endzustand.

Satz 3.2 Die Sprache L ⊆ Σ^{∗} ist genau dann regulär, wenn L = L(A) für einen nichtdeterministischen endlichen Automaten A = (Q, Σ, δ, I, F) ist.

Beweis:

”⇒“ Sei L = L(G) für eine rechtslineare Grammatik G = (V, Σ, P, S). Dann kann ein Automat A wie in der Vorbereitung konstruiert werden: Der Automat besitzt dann die Zustände

Q = V ˙∪{f},

den Startzustand

I = {S}

und die Übergänge

[figure: u; A; B]

falls eine Produktion A → uB ∈ P mit A, B ∈ V, u ∈ Σ^{∗} und

[figure: u; A; f]

falls eine Produktion A → u ∈ P mit A ∈ V, u ∈ Σ^{∗} existiert.

Beispiel:

Sei die Grammatik G mit der einzigen Produktion

S → λ ∈ P gegeben. Der zugehörige Automat ist dann

[figure: λ; S; f]

”⇐“ Sei umgekehrt L=L(A) für einen Automaten A = (Q, Σ, δ, I, F) gegeben.

Zu zeigen ist nun die Konstruktion einer rechtslinearen Grammatik

G = (V, Σ, P, S) mit L(G) = L.

Œ kann ein Automat mit einem Startzustand I = {q_{0}} gewählt werden, d. h. A = (Q, Σ, δ, q_{0}, F). Wir bilden die Variablen der Grammatik aus den Zuständen des Automaten, V := Q, wobei das Startsymbol S der Startzustand q_{0} sein soll, S := q_{0}. Für die Produktionen der Grammatik gilt

[figure: u; A; B; A → uB ∈ P, falls; ∈ δ und zusätzlich]

[figure: u; A; f; A → u ∈ P, falls; ∈ δ, für ein f ∈ F]

Beispiel:

Es sei folgender Automat gegeben:

[figure: u; p; q; ∈ δ]

Dann nehmen wir also die beiden Produktionen p → uq und p → u ∈ P.

Aufgabe 3.1 Beweisen Sie 3.2 mit Links- statt mit Rechtslinearität.

Wir wollen nun Satz 2.1 noch einmal durch eine Automatenkonstruktion beweisen. Zur Erinnerung geben wir diesen Satz noch einmal an.

Satz 2.1 (Rationaler Abschluß)

Seien L_{1}, L_{2} ⊆ Σ^{∗} regulär, E ⊆ Σ^{∗} endlich.

Dann sind folgende Sprachen regulär :

i) Endliche Teilmengen von Σ^{∗} ii) L_{1} ∪ L_{2} iii) L_{1} · L_{2}

iv) L_{1}^{∗}

Beweis: (”Automatischer Beweis“)

Wir geben nun für jeden Punkt des Satzes einen Automaten an.

• Sei E = {u_{1} … u_{n}} eine endliche Teilmenge von Σ^{∗}. Dann bilden wir den folgenden Automaten:

[figure: f_{1}; f_{n}; ⋮; u_{1}; u_{n}]

• zu i) - iii)

Seien A_{i} endliche Automaten mit L(A_{i}) = L_{i}

[figure: I_{i}; F_{i}; A_{i}]

– Für i) bilden wir den folgenden Automaten:

[figure: F_{2}; A_{2}; F_{1}; A_{1}; I_{1}; I_{2}; λ; λ]

3 Endliche Automaten  31  3.2 Andere Def. für endl. Autom.

– Für ii) bilden wir den folgenden Automaten:

[figure: F_{2}; A_{2}; A_{1}; F_{1}; I_{2}; I_{1}; λ; λ; λ]

– Für iii) bilden wir den Automaten A_{1}^{∗} durch:

[figure: A_{1}; I_{1}; F_{1}; q_{0}; λ; λ; λ; λ]

Nach Satz 3.2 sind dann alle angegebenen Sprachen regulär. Aufgabe 3.2

Gegeben sei der Automat A

[figure: q_{0}; f; A]

mit I = {q_{0}} und F = {f}, also insbesondere q_{0} ∉ F. Ist dann der folgende Automat zur Erkennung von L(A)^{∗} korrekt?

[figure: A; q_{0}; λ; f]

Nein, denn aus dem folgenden Beispiel erkennt man, daß mit obiger Konstruktion auch falsche Wörter akzeptiert werden: Sei A gegeben durch

[figure: a; f; q_{0}; a; b; c; d]

Dann wäre nach der obigen Konstruktion

[figure: a; λ; f; q_{0}; a; b; c; d]

der Automat für L(A)^{∗}. Durch diesen Automaten kann nun jedoch auch die Zeichenkette w = ab erkannt werden, obwohl diese nicht zu L(A)^{∗} gehört. Der Automat kann also nicht zur Erkennung von L(A)^{∗} verwendet werden.

3.2.2 Fast-buchstabierende Automaten

Definition 3.3 (fast-buchstabierende Automaten )

Ein fast-buchstabierender Automat ist ein Automat A = (Q, Σ, δ, I, F), der nur Übergänge der Form

δ ⊆ Q × (Σ ∪ {λ}) × Q besitzt.

Häufig wird der Automat nur als ein fast-buchstabierender Automat definiert. (In Hopcroft– Ullman [3] kann dies z. B. unter dem Stichwort ”NFA with ϵ-moves“ gefunden werden.) Man beachte, daß δ für einen fast buchstabierenden Automaten endlich ist, wenn Q endlich ist.

Sätzle 3.3 Sei A = (Q, Σ, δ, I, F) ein endlicher Automat. Dann existiert ein äquivalenter fastbuchstabierender Automat A′ = (Q′, Σ, δ′, q_{0}, F).

Beweis:

Nach Sätzle 3.3 können wir Œ einen Automaten mit einem Startzustand untersuchen, d. h. es kann angenommen werden, daß I = {q_{0}} gilt. Sei

[figure: w; p; q]

eine Kante des Automaten A mit w ∈ Σ^{∗}, w = a_{1} … a_{n}, n ≥ 0, a_{i} ∈ Σ.

n = 0 : Bei n = 0 ist die Kante mit λ beschriftet. Eine λ-Kante ist bei einem fastbuchstabierenden Automaten erlaubt.

n = 1 : Bei n = 1 ist die Kante nur mit einem Buchstaben beschriftet. Auch diese Kanten entsprechen den Kanten von fast-buchstabierenden Automaten.

n ≥ 2 : Bei n ≥ 2 teilen wir die Beschriftung w zwischen p und q durch mehrere Zustände

[figure: …; p_{1}; p_{n−1}]

und neuen Kanten zwischen diesen Zuständen so auf, daß die Beschriftung jeweils einen Buchstaben lang ist und alle Beschriftungen zusammen die Zeichenfolge w ergeben.

[figure: …; p; p_{1}; p_{2}; p_{n−1}; q; a_{1}; a_{2}; a_{n}]

Der neue Automat A′ ist fast-buchstabierend und äquivalent zu A.

3.2.3 Buchstabierende Automaten

Definition 3.4 (buchstabierender Automat )

Ein buchstabierender Automat ist ein Automat A, bei dem es nur Übergänge von einem Zustand zu einem anderen Zustand gibt, die mit a ∈ Σ beschriftet sind. Die Übergangsrelation hat also die Form:

δ ⊆ Q × Σ × Q.

Häufig wird ein endlicher Automat nur als ein buchstabierender Automat definiert.

Sätzle 3.4 Zu jedem Automaten A = (Q, Σ, δ, I, F) existiert effektiv ein äquivalenter buchstabierender Automat A′ = (Q′, Σ, δ′, q_{0}, F′).

Beweis:

Nach Sätzle 3.3 kann Œ von einem fast-buchstabierenden Automaten A = (Q, Σ, δ, q_{0}, F) ausgegangen werden.

Das Problem besteht also nur noch darin, daß λ-Kanten eliminiert werden müssen. Dies entspricht einer Elimination von Kettenproduktionen.

Für p ∈ Q und a ∈ Σ sei R(p, a) die Menge aller Zustände q, die von p mit beliebig vielen λ-Übergängen und einem Übergang a erreicht werden können.

R(p, a) = {q ∈ Q| ∃n ≥ 0 und Pfad p = p_{0} →^{λ} p_{1} →^{λ} p_{2} … p_{n} →^{a} q}

Wichtig für diesen Beweis ist dabei, daß die Menge R(p, a) endlich und effektiv bestimmbar ist.

Wir fügen nun für alle Zustände q ∈ R(p, a) neue Übergänge

[figure: a; p; q]

ein. Die Menge der Übergänge wird also definiert als

δ_{1} := δ ∪ {(p, a, q) ∈ Q × Σ × Q|q ∈ R(p, a)}.

Durch diesen Vorgang wird die akzeptierte Sprache nicht verändert.

Um die λ-Übergänge entfernen zu können, müssen nun noch die Zustände, von denen man durch λ-Übergänge einen Finalzustand erreichen kann, ebenfalls als Endzustände erklärt werden. Wir setzen

F′ := {p ∈ Q|∃ λ − Pfad zu einem Endzustand, d.h. ∃ Pfad

[figure: p; p_{1}; …; λ; λ; λ; }.]

Da der leere Pfad auch ein λ-Pfad ist, gehören alle Endzustände von F ebenfalls zu F′, es gilt also F ⊆ F′. Auch durch diesen Schritt wurde die Sprache nicht verändert.

Als letzten Konstruktionsschritt streichen wir alle λ-Kanten und erhalten so A′. Da wir alle Zustände, die wir nur über λ-Kanten erreichen konnten, nun auch direkt erreichen können verändert die Streichung die akzeptierte Sprache nicht.

Ein akzeptiertender Pfad in A

[figure: *; a_{1}; *; a_{2}; …; λ; λ; *; a_{n}; *; λ; λ; a_{1}; a_{2}; a_{n}; ↑; ↑; F′; F]

läßt sich also in einen akzeptierenden Pfad von A′ übersetzen, bei dem λ-Kanten nicht benutzt werden müssen. Der so entstandene Automat A′ = (Q, Σ, δ_{1}, q_{0}, F′) ist buchstabierend.

Zusammenfassung: Faßt man die letzten Normalformen zusammen, so kann Œ ein Automat der Form

A = (Q, Σ, δ, q_{0}, F) δ ⊆ Q × Σ × Q genommen werden.

Korollar 3.1 Sei G = (V, Σ, P, S) eine rechtslineare Grammatik. Dann existiert effektiv eine äquivalente rechtslineare Grammatik G′ = (V′, Σ, P′, S′), bei der alle Produktionen die Form

P′ ⊆ (V′ × ΣV′) ∪ V′ × Σ ∪ {S → λ}

besitzen. Die Regeln haben also die Form

A → aB oder
A → a oder
S → λ , für a ∈ Σ, A, B ∈ V′

Bemerkung

Analoges gilt für linkslineare Grammatiken.

Bemerkung

Eine Relation δ ⊆ Q × Σ × Q ist ”dasselbe“ wie eine Funktion δ : Q × Σ → ℘(Q) (= 2^{Q}) δ(p, a) = {q|(p, a, q) ∈ δ}.

Definition 3.5 (Spiegelwort oder Reverse-Operation)

Sei w = a_{1} … a_{n} ∈ Σ^{∗} n ≥ 0 a_{i} ∈ Σ. Dann ist das Spiegelbild w^{R}∈ Σ^{∗} definiert durch:

w^{R} = a_{n} … a_{1}

(das Wort von rechts nach links gelesen).

Sei L ⊆ Σ^{∗} eine Sprache. Dann gilt für die Reverse-Operation

\begin{aligned}L^{R} & = & \{w^{R}|w ∈ L\} \\ λ^{R} & = & λ \\ ∅^{R} & = & ∅ \\ Σ^{∗R} & = & Σ^{∗} \\ ba & = & (ab)^{R} ≠ ab. \end{aligned}

Satz 3.5 Ist L ⊆ Σ^{∗} regulär, dann ist auch L^{R} regulär.

Bemerkung

Die Umkehrung gilt auch wegen L^{RR} = L.

Beweis:

Œ sei L=L(A) für einen buchstabierenden Automaten A = (Q, Σ, δ, I, F). Dann definieren wir

A^{R} = (Q, Σ, δ^{R}, F, I)
δ^{R} = {(q, a, p)|(p, a, q) ∈ δ},

d. h. wir drehen alle Pfeile um und vertauschen Start- und Endzustände:

[figure: …; a_{1}; a_{2}; a_{n}; A :; f; q_{0}]

[figure: …; a_{n}; a_{n−1}; a_{1}; A^{R} :; q_{0}; f]

Da ein Automat mit L = L(A^{R}) existiert, ist die Sprache L^{R} auch regulär.

Aufgabe 3.3 Zeigen Sie, wie man ebenfalls aus Satz 3.5 direkt die Gleichmächtigkeit von links- und rechtslinearen Grammatiken gewinnen kann.

4 Deterministische Automaten

4.1 Die Potenzautomatenkonstruktion

Definition 4.1 (deterministischer endlicher Automat)

Ein endlicher Automat A = (Q, Σ, δ, I, F) heißt deterministisch wenn gilt:

i) Es existiert genau ein Startzustand, d. h. I = {q_{0}}.

ii) Der Automat ist buchstabierend, d. h. δ ⊆ Q × Σ × Q.

iii) δ ist eine partiell definierte Funktion

δ : Q × Σ →_{∗} Q,

d. h. für ein p ∈ Q und a ∈ Σ ist höchstens ein Folgezustand q ∈ Q definiert mit (p, a, q) ∈ δ. Ist A = (Q, Σ, δ, q_{0}, F) ein deterministischer Automat und w ∈ Σ^{∗}, dann existiert höchstens ein q ∈ Q mit

[figure: q; *; w]

Bezeichnung

Hier und im folgenden bezeichnet ein Stern an der Spitze eines Ableitungspfeils eine partiell definierte Funktion. Einen Pfad in einem gerichteten Graphen deuten wir durch einen Stern über dem Pfeil an. Steht zusätzlich ein Wort über dem Pfeil, so bezeichnet dieses Wort seine Beschriftung.

Definition 4.2 (vollständiger deterministischer Automat )

Ein deterministischer Automat heißt vollständig wenn: δ : Q × Σ → Q eine total definierte Funktion ist.

Definition 4.3 (initialzusammenhängender deterministischer Automat ) Ein deterministischer Automat heißt initial zusammenhängend, wenn jeder Zustand von dem Startzustand q_{0} über ein w ∈ Σ^{∗} erreicht werden kann.

Bemerkung

Beide Eigenschaften können für einen deterministischen Automaten angenommen werden. Um einen vollständigen Automaten zu erhalten, konstruieren wir einen neuen Zustand, den Fangzustand. Ist für einen Zustand p und einen Buchstaben a ∈ Σ bisher keine ausgehende Kante vorhanden, so fügen wir eine neue Kante zum Fangzustand hinzu:

[figure: Neu; p; a; x ∈ Σ]

4 Deterministische Automaten  38  4.1 Die Potenzautomatenkonstruktion

Für einen initial zusammenhängenden Automaten betrachten wir nur die von dem Startzustand erreichbaren Zustände.

Satz 4.1 (Hauptsatz über endliche Automaten)

Sei L ⊆ Σ^{∗} regulär. Dann existiert ein initial zusammenhängender, vollständiger und deterministischer Automat A = (Q, Σ, δ, q_{o}, F) mit L(A) = L.

Beweis:

Der Beweis erfolgt mit der Potenzautomatenkonstruktion (englisch: subset construction) nach Rabin/Scott (1959) . Der so konstruierte Automat ist per definitionem vollständig.

Gegeben sei ein buchstabierender Automat A = (Q, Σ, δ, I, F) mit L = L(A).

Wir konstruieren nun einen vollständigen deterministischen Automaten A′ = (Q′, Σ, δ′, q′_{0}, F′) mit L(A) = L(A′) mit:

Q′ = ℘(Q) = {P |P ⊆ Q} Die neue Menge ist also die Potenzmenge der alten Zustandsmenge. Da die alte Zustandsmenge endlich war, ist auch die neue Menge endlich.

q′_{0} = I ∈ Q δ′(P, a) = {q ∈ Q|∃p ∈ P (p, a, q) ∈ δ}

Dies ist eine Funktion δ′ : ℘(Q) × Σ → ℘(Q). F′ = {P ⊆ Q′|P ∩ F ≠ ∅}.

Durch diese Angaben wird ein Automat A′ = (Q′, Σ, δ′, q′_{0}, F) definiert, der vollständig und deterministisch ist.

Wir müssen nun noch zeigen, daß L(A) = L(A′) ist, d. h. für ein z = a_{1} … a_{n} ∈ Σ^{∗}, n ≥ 0, a_{i} ∈ Σ die Äquivalenz z ∈ L(A) ⇔ z ∈ L(A′).

Dazu führen wir einen Induktionsbeweis nach der Länge n:

n = 0: In diesem Fall ist z = λ.

λ ∈ L(A) ⇔ I ∩ F ≠ ∅ ⇔ q′_{0} ∈ F′ ⇔ λ ∈ L(A′)

n ≥ 1: ”L(A) ⊆ L(A′)“:

Sei z ∈ L(A). Dann existiert ein Pfad

[figure: q_{1}; …; a_{1}; a_{2}; a_{n}; q_{n}; q_{0}]

mit q_{0} ∈ I und q_{n} ∈ F. Wir betrachten jetzt den eindeutig bestimmmten Pfad in A′

[figure: q′_{0}; Q_{1}; …; a_{n}; Q_{n}; a_{1}]

mit Q_{0} = q′_{0}, δ′(Q_{i−1}, a_{i}) = Q_{i} für alle 1 ≤ i ≤ n.

Behauptung: ∀i ∈ {0, …, n} q_{i} ∈ Q_{i}.

Dies ist wahr für q_{0} ∈ Q_{0} = q′_{0} = I und dann für alle i aufgrund der Definition von δ′. Insbesondere gilt:

q_{n} ∈ Q_{n}  , d. h.
Q_{n} ∩ F ≠ ∅ , d. h.
Q_{n} ∈ F′  , d. h.
z ∈ L(A′).

”L(A) ⊇ L(A′)“: Sei umgekehrt z = a_{1} … a_{n} ∈ L(A′) d. h. es gilt:

[figure: Q_{1}; …; a_{1}; a_{2}; a_{n}; Q_{n}; Q_{0}; Q_{n−1}; Q_{0} = q′_{0} = I]

Da Q_{n} ∈ F′ ist, gilt Q_{n} ∩ F ≠ ∅, d. h. ∃q_{n} ∈ Q_{n} ∩ F. Wir wählen ein solches q_{n} ∈ Q_{n} ∩ F, dann ein q_{n−1} = Q_{n−1} mit (q_{n−1}, a_{n}, q_{n}) ∈ δ usw. Allgemein wählen wir q_{n}, q_{n−1}, … q_{i}, q_{i−1} stets so, daß q_{i−1} ∈ Q_{i−1}, (q_{i−1}, a_{i}, q_{i}) ∈ δ gilt. Dann gilt q_{0} ∈ I und es existiert ein Pfad:

[figure: q_{1}; …; a_{1}; a_{2}; a_{n}; q_{n}; q_{0}]

in A. Damit ist gezeigt, daß z ∈ L(A) gilt und der Satz ist bewiesen, da wir in A′ nur den Teilautomaten zu betrachten brauchen, der die vom Startzustand aus erreichbaren Zustände enthält, um einen initial zusammenhängenden Automaten zu erhalten.

Beispiel:

Wir wollen nun mit den Normalformen aus dem letzten Kapitel und der Potenzautomatenkonstruktion einen Automaten in einen deterministischen Potenzautomaten umformen.

Umzuformen sei ein Automat mit

L = abcda^{∗} ∪ aa^{+} a) A_{1}: Ausgangsautomat

[figure: abcd; a; a; a; λ; 1; 5; 2; 3; 4]

b) A_{2}: Automat mit einem Startzustand

[figure: abcd; a; a; a; λ; λ; λ; q_{0}; 1; 2; 4; 4; 5]

c) A_{3}: Fast-buchstabierender Automat

[figure: abcd; a; a; a; λ; λ; λ; q_{0}; 1; 2; 3; 4; 5; a; d; b; c; 6; 7; 8]

d) A_{4}: Ersetzen von λ-Kanten

[figure: a; a; λ; q_{0}; 2; 3; 4; 5; 1; 6; 7; 8; b; c; d; a; λ; a; a; a; λ]

e) A_{5}: Buchstabierender Automat (Entfernung von λ-Kanten)

[figure: a; a; q_{0}; 2; 3; 4; 5; 1; 6; 7; 8; b; c; d; a; a; a; a]

f) A_{6}: Initialzusammenhängender Automat

g) A_{7}: Deterministischer Potenzautomat Wiederholung:

[figure: a; q_{0}; 4; 5; 6; 7; 8; b; c; d; a; a; a]

[figure: a; 8; 5; q_{0}; 4/6; 7; ∅; a; a; b; Σ\{a, b}; Σ\a; Σ\a; d; Σ\c; c; Σ\d; Σ]

uvw - Theorem Sei L ⊆ Σ^{∗} regulär. Dann existiert ein n ≥ 0 so, daß es für alle z ∈ L mit |z| ≥ n eine Zerlegung gibt, für die gilt z = uvw mit |uv| ≤ n, |v| ≥ 1, uv^{i}w ∈ L ∀i ≥ 0.

Beweis: ”Automatischer Beweis“

Sei L= L(A) für A = (Q, Σ, δ, I, F), wobei A buchstabierend ist: δ : Q × Σ → Q. Dann ist ein n = #Q wählbar: Sei z = a_{1} … a_{n} … a_{m} ∈ L, m ≥ n, a_{i} ∈ Σ. Dann existiert ein Pfad:

[figure: q_{1}; …; a_{1}; a_{2}; q_{0}; q_{n}; a_{n}; …; a_{m}; ∈ F; n + 1 Zustände]

Daher existiert j < k ≤ n mit

[figure: =; q_{j}; q_{k}]

Wir setzen u = a_{1} … a_{j}, v = a_{j+1} … a_{k}, w = q_{k+1} … q_{m}, |uv| = k ≤ n, |v| ≥ 1, j < k und uv^{∗}w ⊆ L wegen

[figure: u; w; v^{∗}; q_{j} = q_{k}]

Korollar 4.1 Sei A = (Q, Σ, δ, I, F) buchstabierend, n = #Q. Dann sind folgende Aussagen äquivalent:

i) Die Sprache L(A) hat unendlich viele Elemente.

ii) ∃z ∈ L(A) : n ≤ |z| < 2n Beweis:

i) ⇒ ii)

Sei L(A) unendlich. Dann existiert ein z ∈ L(A) mit |z| ≥ 2n.

Wir betrachten eine Zerlegung z = uvw mit uw ∈ L, 1 ≤ |v| ≤ n. Dann gilt n ≤ |uw| < |z|. Eine wiederholte Anwendung dieses Verfahrens liefert schließlich ein z ∈ L(A) mit n ≤ |z| < 2n.

ii) ⇒ i)

trivial aus dem uvw-Theorem.

Korollar 4.2 Sei G = (V, Σ, P, S) rechtslinear. Dann existiert effektiv eine äquivalente Grammatik G′′ = (V′, Σ, P′, S′,) mit P′ ⊆ (V × ΣV) ∪ (V × Σ) ∪ {S → λ}.

Zusatz

G′ ist so wählbar, daß gilt: ∀A ∈ V, a ∈ Σ existiert höchstens ein B mit A → aB ∈ P′.

Beweis:

Wähle A buchstabierend für den Zusatz A deterministisch.

Korollar 4.3 (Komplementabschluß aus der Potenzautomatenkonstruktion ) Sei L ⊆ Σ^{∗} regulär. Dann ist auch L̄ = Σ^{∗}\L regulär.

Beweis:

Sei L= L(A) für einen deterministischen Automaten A = (Q, Σ, δ, q_{0}, F) der vollständig ist. Dann gilt:

w ∉ L(A) gdw. es existiert ein Pfad

[figure: q; *; w; q_{0}]

mit q ∉ F.

Daher gilt L(Ā) = L̄ = Σ^{∗}\L mit Ā = (Q, Σ, δ, q_{0}, F̄) und F̄ = Q\F.

Korollar 4.4 Sind L_{1}, L_{2} ⊆ Σ^{∗} regulär. Dann ist auch L_{1} ∩ L_{2} regulär.

4 Deterministische Automaten  44  4.2 Rat. Ausdrücke, Satz von Kleene

Beweis:

i) L_{1} ∩ L_{2} = \overline{(L̄_{1} ∪ L̄_{2})} nach den Regeln von de Morgan.

ii) direkte Konstruktion: Produktautomat Sei A_{i} = (Q_{i}, Σ, δ, q_{0}, F_{i}) ein vollständig deterministischer Automat mit L(A_{i}) = L_{i}. Betrachte: Q = Q_{1} × Q_{2} δ : (Q_{1} × Q_{2}) × Σ → Q_{1} × Q_{2} ((q_{1}, q_{2}) , a) → (δ_{1} (q_{1}, a) , δ_{2} (Q_{2}, a)) q_{0} = (q_{0_{1}}, q_{0_{2}}) L ((Q, Σ, δ, q_{0}, F_{1} × F_{2})) = L_{1} ∩ L_{2}

4.2 Rationale Ausdrücke und der Satz von Kleene

Die Menge der rationalen Ausdrücke (über Σ) wird mit Rat(Σ^{∗}) bezeichnet und ist induktiv wie folgt definiert:

i) ∅, λ, a für a ∈ Σ sind rationale Ausdrücke und bezeichnen die Sprachen ∅, {λ}, {a} ⊆ Σ^{∗}.

ii) Sind r, s rationale Ausdrücke, die die Sprachen R, S ⊆ Σ^{∗} bezeichnen, so sind (r + s), (r ∗ s), r^{∗} rationale Ausdrücke, die die Sprachen R ∪ S, R · S, R^{∗} bezeichnen.

\underline{Abkürzung:}

r^{+} = rr^{∗}
R^{+} = RR^{∗}

Soll auf den Unterschied zwischen einem Ausdruck und der Sprache explizit hingewiesen werden, so verwenden wir L(r) für die Sprache zum Ausdruck r.

Erk(Σ^{∗}) := {L ⊆ Σ^{∗}| ∃ endlicher deterministischer Automat A über Σ
mit L(A) = L}
= erkennbare Sprachen über Σ
= reguläre Sprachen über Σ

Bemerkung

In der Literatur ist es manchmal üblich, auch von regulären Ausdrücken statt von rationalen Ausdrücken zu sprechen. In einer allgemeineren Theorie ist es jedoch sinnvoll, rational und regulär auseinander zu halten.

Satz 4.2 (Satz von Kleene)

Rat(Σ^{∗}) = Erk(Σ^{∗}) (= regulär)

Beweis:

Bereits gezeigt wurde ” ⊆ ”. Durch die Verallgemeinerung des Warshall-Algorithmus zur Bestimmmung der transitiven Hülle erhalten wir ”⊇“: Sei A = (Q, Σ, δ, I, F) mit L(A) = L. Œ gilt Q = {1, …, n}. Setze L_{ij}^{k} := {u ∈ Σ^{∗}|∃ Pfad

[figure: i_{1}; …; u_{1}; u_{2}; u_{3}; i_{2}; u_{n}; i; j]
u = u_{1} … u_{n}, u_{i} ∈ Σ^{∗} und {i_{1} … i_{n−1}} ⊆ {1, …, k}}.

Aufgrund von L(A) = ⋃_{(i,j)∈I×F} L_{ij}^{n} reicht es zu zeigen: Die Sprache L_{ij}^{n} ist rational für alle i, j.

Wir zeigen eine etwas stärkere Aussage, die eine Induktion ermöglicht:

L_{ij}^{k} ∈ Rat(Σ^{∗}) für alle k = 0, 1, 2, …, n. k = 0: L_{ij}^{0} = {u ∈ Σ^{∗}|(i, u, j) ∈ δ} ist endlich, also rational. k ≥ 1: L_{ij}^{k} = L_{ik}^{k−1} (L_{kk}^{k−1})^{∗} L_{kj}^{k−1} ∪ L_{ij}^{k−1} ist rational nach Induktion

[figure: i; k − 1; k; k − 1; k; k; k − 1; j; …; k − 1]

Definition 4.4 (Sternhöhe (Sh))

Die Sternhöhe für rationale Ausdrücke ist induktiv wie folgt definiert:

Sh(∅) = Sh(λ) = Sh(a) = 0 ∀a ∈ Σ
Sh(r + s) = Sh(r ∗ s) = max (Sh (r) , Sh (s))
Sh(r^{∗}) = Sh(r) + 1

Sh(r) gibt die Zahl der ineinander geschachtelten Sterne an. Sei L ⊆ Σ^{∗} regulär. Dann ist die Sternhöhe einer Sprache Sh(L) = min (Sh (r) |L (r) = L). Sh ist eine echte Hierarchie.

Bemerkung

Hashigushi bewies 1988, daß Sh(L) berechenbar ist (siehe [8]). Dieser Beweis ist extrem kompliziert und löst ein Problem aus dem Jahre 1963

4 Deterministische Automaten  46  4.3 Automaten m. rat. Kantenbesch.

4.3 Automaten mit einer rationalen Kantenbeschriftung

Wir erweitern die Klasse der endlichen Automaten, indem wir eine Kantenbeschriftung mit einem rationalen Ausdruck aus Rat(Σ^{∗}) erlauben. D. h. A = (Q, Σ, δ, I, F) mit einer endlichen Relation

δ ⊆ Q × Rat(Σ^{∗}) × Q.

Die akzeptierte Sprache ergibt sich dadurch, daß man einen Übergang

[figure: p; w; q]

erlaubt, falls (p, R, q) ∈ δ und w ∈ R gilt. D. h.

L(A) = {w ∈ Σ^{∗} | ∃ Zerlegung w = w_{1} … w_{n}, n ≥ 0, w_{i} ∈ R_{i} und Übergänge
(p_{i−1}, R_{i}, p_{i}) ∈ δ für 1 ≤ i ≤ n mit p_{0} ∈ I und p_{n} ∈ F }.

Der Beweis des Satzes von Kleene läßt sich auch direkt auf diesem Automatentyp ausführen und zeigt, daß L(A) regulär ist. Ein anderer Beweis läßt sich aus dem folgenden Spezialfall ableiten (Übung!). Wir zeigen diesen Spezialfall, da dies ein praktikables Top-Down-Verfahren ist, aus einem rationalen Ausdruck einen endlichen Automaten zu erhalten, das wenig λ-Kanten erzeugt.

Start: Sei R = L(A) mit A = [figure: R] .

Wir verfeinern jetzt rekursiv die Kanten von A, ohne die Sprache zu verändern, bis wir einen fast-buchstabierenden Automaten (mit genau einem Start- und genau einem Endzustand) erhalten.

Sei [figure: p; q; R] eine Kante von A.

Diese Kante wird wie folgt (durch Hinzunahme neuer Zustände) ersetzt:

für R = R_{1} ∪ R_{2} durch: [figure: p; q; R_{1}; R_{2}]

für R = R_{1} · R_{2} durch: [figure: p; q; R_{1}; R_{2}]

4 Deterministische Automaten  47  4.3 Automaten m. rat. Kantenbesch.

für R = R_{1}^{∗} durch: [figure: p; R_{1}; q; λ; λ] für R = R_{1}^{+} durch: [figure: p; R_{1}; q; R_{1}; λ] Beispiel:

Ausgehend von dem rationalen Ausdruck

[(ab^{∗}a) + ba^{∗}b]^{∗}(ab)^{∗}(b^{∗}a + a^{∗}b) konstruieren wir schrittweise nach dem obigen Verfahren einen endlichen Automaten.

[figure: λ; λ; ba^{∗}b; ab^{∗}a; λ; λ; ab; b^{∗}a; a^{∗}b]

[figure: λ; λ; b; b; a; a; a; λ; λ; λ; b; λ; λ; λ; a; b; λ; λ; b; λ; a; λ; a; b]

4 Deterministische Automaten  48  4.4 Verallgem. rat. Ausdruck

4.4 Verallgemeinerter rationaler Ausdruck

Jeder rationale Ausdruck ist auch ein verallgemeinerter rationaler Ausdruck. Ferner gilt: Ist r ein verallgemeinerter rationaler Ausdruck, so auch r̄ mit L(r̄) = L̄(r) = Σ^{∗}\L(r). Die Definition der Sternhöhe wird durch Sh(r̄) = Sh(r) erweitert. Analog erhalten wir eine verallgemeinerte Sternhöhe für formale Sprachen durch:

vSh(L) = min{Sh(r)| r ist verallgemeinerter rationaler Ausdruck mit L(r) = L}.

Es ist ein bekanntes offenes Problem, ob es Sprachen L ⊆ Σ^{∗} mit vSh(L) ≥ 2 gibt.

Definition 4.5 (Rechtsquotient / Linksquotient)

Seien L, K ⊆ Σ^{∗} formale Sprachen. Dann definieren wir:

Rechtsquotienten: LK^{−1} (= L/K) = {u ∈ Σ^{∗}|∃v ∈ K : uv ∈ L}
Linksquotienten: K^{−1}L (= K\L) = {v ∈ Σ^{∗}|∃u ∈ K : uv ∈ L}

Die Schreibweise für Rechtsquotienten bzw. Linksquotienten ist wie in der Bruchrechnung.

Satz 4.3 Sei L regulär und K ⊆ Σ^{∗} beliebig. Dann sind K^{−1}L ⊆ Σ^{∗} und LK^{−1} ⊆ Σ^{∗} regulär.

Beweis:

Für K^{−1}L (Für LK^{−1} läßt sich der Beweis symmetrisch führen oder man betrachtet die Spiegelwortoperation.):

Sei L= L(A) für A = (Q, Σ, δ, I, F).

Wir betrachten einen Automaten A′ = (Q, Σ, δ, I′, F) mit

[figure: ∗; q; }; u; q_{0}; ∈ I; I′ ∈ {q ∈ Q|∃u ∈ K und ein Pfad]

Es gilt v ∈ K^{−1}L gdw. es einen mit v beschrifteten Pfad von einem Zustand in I′ in einen Endzustand gibt:

[figure: v^{∗}; q′; ∈ I′]

4 Deterministische Automaten  49  4.5 Minimierung

Bemerkung

Sei L ∈ Σ^{∗} regulär fest (etwa L = Σ^{∗}).

Dann gibt es kein efffektives Verfahren, das für jede rekursiv aufzählbare Sprache K den Automaten A′ konstruiert. Dies würde nämlich sonst ermöglichen K auf Leerheit zu testen, was, wie wir später sehen werden, bereits für kontextsensitive Sprachen unmöglich ist.

[figure: a ∈ Σ; A′ :]

[figure: a ∈ Σ, für K ≠ ∅; a ∈ Σ, für K = ∅]

Aus dem nächsten Abschnitt wird sich unmittelbar ergeben:

Satz 4.4 Sind L, K ⊆ Σ^{∗} beide regulär, dann finden wir effektiv ein A′ mit

L(A′) = K^{−1}L bzw. L(A′) = LK^{−1}.

4.5 Minimierung von endlichen Automaten

Definition 4.6 (Die Abbildung δ^{∗})

Sei A = (Q, Σ, δ, q_{0}, F) ein vollständiger deterministischer Automat. Dann definiere die Abbildung δ^{∗} : Q × Σ^{∗} → Q induktiv durch:

i) δ^{∗}(q, λ) = q ∀q ∈ Q ii) δ^{∗}(q, ua) = δ(δ^{∗}(q, u), a) für u ∈ Σ^{∗} und a ∈ Σ

Bedeutung: δ^{∗}(p, w) = q gdw. folgender Pfad existiert:

[figure: w ∗; p; q]

Kurzschreibweise:

Wir schreiben bequemer statt δ^{∗}(q, w) einfach q · w.

Es gilt:

\begin{aligned}q · λ & = & q & ∀q ∈ Q \\ (q · u) · v & = & q(u · v) & ∀q ∈ Q, u, v ∈ Σ^{∗} \\ q · a & = & δ(q, a) & ∀q ∈ Q, a ∈ Σ \end{aligned}

Wir könnten daher auch sagen, daß das Monoid Σ^{∗} auf der Menge Q operiert.

Definition 4.7 (Äquivalenzrelation R_{A})

Ein Automat A definiert in natürlicher Weise eine Äquivalenzrelation R_{A} ⊆ Σ^{∗} × Σ^{∗} durch: u R_{A} v gdw. q_{0}u = q_{0}v.

Diese Relation ist rechtsinvariant, d.h. es gilt:

u R_{A} v ⟹ ∀w ∈ Σ^{∗} : uw R_{A} vw

Es macht daher Sinn zu schreiben:

[u]w = [uw] mit [u] = {v ∈ Σ^{∗}|u R_{A} v}

Sei R ⊆ Σ^{∗} × Σ^{∗} eine beliebige rechtsinvariante Äquivalenzrelation. Für u ∈ Σ^{∗} schreiben wir:

[u] := {v ∈ Σ^{∗}|u R v}

Es sei L = ⋃_{u∈L}[u] ⊆ Σ^{∗}. Dann definieren wir den folgenden deterministischen, initial zusammenhängenden Automaten A = (Q, Σ, δ, q_{0}, F) mit L(A) = L:

\begin{aligned}Q & = & \{[u]|u ∈ Σ^{∗}\} \\ δ & : & Q × Σ → Q, ([u], a) ↦ [ua] \\ q_{0} & = & [λ] \\ F & = & \{[u]|u ∈ L\} \end{aligned}

Es gilt dann L(A) = L wegen [λ]u = [u] ∈ F gdw u ∈ L.

Bemerkung

Die erzeugte Sprache L ist regulär, falls die Äquivalenzrelation R von endlichem Index ist! Für jedes L ⊆ Σ^{∗} gibt es eine kanonische rechtsinvariante Äquivalenzrelation R_{L} ⊆ Σ^{∗} × Σ^{∗}.

Definition 4.8 (Äquivalenzrelation R_{L})

Sei L ⊆ Σ^{∗}. Dann setzen wir

u R_{L} v, falls L(u) = L(v) mit L(x) = x^{−1}L = {y ∈ Σ^{∗}|xy ∈ L}.

Satz 4.5 R_{L} ist eine Äquivalenzrelation (trivial), die rechtsinvariant ist.

Beweis:

Zu zeigen ist: L(x) = L(y) ⟹ L(xu) = L(yu).

Dies folgt wegen:

w ∈ L(xu) ⟺ xuw ∈ L ⟺ uw ∈ L(x) = L(y) ⟺ yuw ∈ L ⟺ w ∈ L(yu).

Definition 4.9 (Minimaler Automat)

Wir erhalten so den minimalen Automaten A_{L} = (Q_{L}, Σ, δ_{L}, q_{0L}, F_{L}) zu L ∈ Σ^{∗} mit:

\begin{aligned}Q_{L} & = & \{L(x)|x ∈ Σ^{∗}\} \\ δ_{L} & : & Q_{L} × Σ → Q_{L}, (L(x), y) ↦ L(xy) \\ q_{0L} & = & L(λ) = L \\ F_{L} & = & \{L(x)|x ∈ L\} = \{L(x)|λ ∈ L(x)\}. \end{aligned}

Daher gilt: L(x) = L(y) ⟹ (x ∈ L ⟺ y ∈ L).

Satz 4.6 Sei A = (Q, Σ, δ, q_{0}, F) ein vollständiger und deterministischer Automat mit L(A) = L. Dann gilt:

#Q_{L} ≤ #Q (# =Anzahl der Zustände).

Beweis:

Œ kann A initial zusammenhängend gewählt werden, d.h.

∀q ∈ Q ∃u ∈ Σ^{∗} mit q = q_{0}u

Wir definieren folgende surjektive Abbildung:

\begin{aligned}Q & → & Q_{L} \\ q = q_{0}u & → & L(u) \end{aligned}

L(u) ist wohldefiniert wegen L(u) = L((Q, Σ, δ, q_{0}u, F)), also hängt L(u) nur von dem Zustand q_{0}u ab und nicht von der Wahl von u ∈ Σ^{∗}.

Anderer Zugang zum Automaten A_{L}:

Starte bei einem vollständigen, deterministischen und initial zusammenhängenden Automaten A = (Q, Σ, δ, q_{0}, F) mit L(A)=L.

Definition 4.10 (Leistung eines Zustands)

Die Leistung L(p) eines Zustands p ∈ Q ist definiert durch:

L(p) = L((Q, Σ, δ, p, F)), d. h. p ist Startzustand.

Definition 4.11 (Äquivalenz von Zuständen )

Zwei Zustände nennt man äquivalent, wenn sie dieselbe Leistung haben. Wir schreiben dann p R q, falls L(p) = L(q).

Zur Minimierung fassen wir äquivalente Zustände zusammen.

Beachte: Falls p = q_{0}u ist, dann gilt L(p) = L(u). Also ist A_{L} bis auf die Namensgebung für die Zustände der Automat Ā = (Q̄, Σ, δ̄, q̄_{0}, F̄) mit

\begin{aligned}Q̄ & = & \{[p]|p ∈ Q\} mit [p] = \{q ∈ Q|L(p) = L(q)\} \\ δ̄ & : & Q̄ × Σ → Q̄ mit ([p], a) → [δ(p, a)] \\ q̄_{0} & = & [q_{0}] \\ F̄ & = & \{[p]|p ∈ F \} \end{aligned}

Beachte: p R q ⟹ (p ∈ F ⟺ q ∈ F)

Um die Relation R zu berechnen, führen wir noch die k-Äquivalenz R_{k} ein:

Definition 4.12 (k-Äquivalenz von Zuständen )

Für k ≥ 0 und p, q ∈ Q setzen wir

p R_{k} q gdw ∀x ∈ Σ^{∗} mit |x| ≤ k gilt x ∈ L(p) ⟺ x ∈ L(q)

Für k = 0 gilt dann:

p R_{0} q gdw p, q ∈ F oder p, q ∈ Q\F.

Lemma 4.1 Sei k ≥ 1, dann gilt:

p R_{k} q gdw. p R_{0} q und ∀a ∈ Σ : pa R_{k−1} qa.

Beweis:

”⇒“ ist trivial, da

au ∈ L(p) ⟺ u ∈ L(pa)
für alle a ∈ Σ, u ∈ Σ^{∗} ist.

”⇐“ Sei x ∈ L(p), |x| ≤ k. Ist x = λ, so gilt x ∈ L(q) wegen p R_{0} q. Sonst schreiben wir x = au. Dann gilt u ∈ L(qa) wegen u ∈ L(pa) und pa R_{k−1} qa. Also gilt auch

x ∈ L(q).

Bemerkung

Es gelten:

i) R ⊆ R_{k+1} ⊆ R_{k} ⊆ … ⊆ R_{0}, und R = ⋂_{k≥0} R_{k} ii) k ≥ 1: p R_{k} q gdw. p R_{0} q und pa R_{k−1}qa ∀a ∈ Σ iii) R = R_{k} gdw R_{k+1} = R_{k} gdw. Index(R_{k})=Index(R_{k+1}). Hierbei bezeichnet der Index einer

Äquivalenzrelation die Zahl der Äquivalenzklassen. iv) ∃k ≤ (#Q) − 1 : R = R_{k+1} = R_{k}

Man beachte, daß iv) sofort aus iii) folgt. Die Relation R_{0} hat den Index 2, solange R_{k+1} ≠ R_{k} gilt, ist der Index von R_{k+1} echt größer als der von R_{k}. Der maximale Index ist #Q.

Satz 4.7 Sei n = #Q die Anzahl der Zustände und L(p) ≠ L(q), dann existiert

u ∈ Σ^{∗} : |u| ≤ n − 1 und u ∈ (L(p)\L(q) ∪ L(q)\L(p)).

Beweis:

Dies folgt direkt aus der Bemerkung iv).

Im folgenden stellen wir zwei Algorithmen vor, um einen gegebenen deterministischen endlichen Automaten zu minimieren. Die Aufgabe besteht darin, äquivalente Zustände, also Zustände mit gleicher Leistung, zu erkennen und zusammenzufassen.

4.5.1 Naiver Algorithmus

1. Markiere alle {p, q}, p, q ∈ Q mit p ∈ Q\F, q ∈ F.

2. Solange man ein unmarkiertes {p, q} und ein a ∈ Σ so findet, daß {pa, qa} schon markiert ist, markiere auch {p, q}.

3. Am Ende sind alle inäquivalenten Zustände markiert.

Beweis:

Im 1. Schritt werden alle {p, q} markiert, die nicht in der Relation R_{0} stehen. Im 2. Schritt können wir induktiv annehmen, daß pa und qa nicht in der Relation R stehen, wenn {pa, qa} markiert ist. Daher steht auch jedes nun markierte Paar {p, q} nicht in der Relation R. Es ist klar, daß die Schleife im 2. Schritt terminiert. Angenommen am Ende gäbe es ein unmarkiertes Paar {p, q} inäquivalenter Zustände. Dann gilt (p, q) ∉ R_{k} für ein k ≥ 0. Wir wählen ein solches Paar {p, q} mit minimalen k. Aufgrund vom 1. Schritt gilt p R_{0} q, also existiert ein a ∈ Σ mit (pa, qa) ∉ R_{k−1}, siehe obige Bemerkung ii). Nach Annahme der Minimalität von k ist {pa, qa} am Ende markiert. Dann wäre jedoch auch {p, q} markiert und wir erhalten einen Widerspruch.

Die Laufzeit des Algorithmus ist bei geeigneter Implementierung O(n^{2}) mit n = #Q.

Beispiel:

[figure: 1; 2; 3; 4; 5; 6; 7; 8; 0; 0; 1; 0; 0; 0; 1; 0; 1; 1; 0; 0; 1; 1; 1; 1]

Abbildung 4.1: Beispiel eines endlichen Automaten

Die Anwendung des obigen naiven Algorithmus auf den Automaten, wie er in Abbildung 4.1 dargestellt ist, ergibt folgende Tabelle, in der alle nicht äquivalenten Zustände markiert sind:

1 2 3 4 5 6 7
2 *
3 * *
4 * * *
5  * * *
6 * * *  *
7 * * * * * *
8 *  * * * * *

In der Lösung zu Übungsaufgabe 12 werden alle Schritte zur Berechnung des Tableaus noch einmal ausführlich gezeigt.

Die nichtmarkierten Felder des Tableaus ergeben die äquivalenten Zustände, also sind die Mengen {1, 5}, {2, 8}, {4, 6}, {3} und {7} Mengen von äquivalenten Zuständen.

Durch Zusammenfassen der äquivalenten Zustände erhält man den minimalen Automaten, dargestellt in Abbildung 4.2.

[figure: 1; 0; 1; 0; 0; 1; 1; 2,8; 7; 4,6; 1,5; 3; 0; 1; 0]

Abbildung 4.2: Beispiel eines minimalen Automaten

Bemerkung

Für größere Beispiele und für eine reale Implementierung ist dieser Algorithmus vollkommen ungeeignet. Er ist jedoch sehr einprägsam und daher gut geeignet zum Lernen für Prüfungen!

4.5.2 Algorithmus von Hopcroft (1971)

Dieser Algorithmus hat bei einer geeigneten Implementierung eine Laufzeit von O(n log n), ist jedoch komplizierter (siehe Hopcroft [4]).

Definition 4.13 (Partition)

Eine Partition von Q ist eine Menge

{B(0), …, B(n)} mit ⋃_{i=0}^{n} B(i) = Q, B(i) ∩ B(j) = ∅ ∀i ≠ j, B(i) ≠ ∅ ∀i

Sie heißt zulässig, wenn gilt p R q ⟹ ∃i : p, q ∈ B(i)

Seien B = {B(1), …, B(n)} und P = {P (1), …, P (m)} zwei Partitionen, so definiere die Schnittmenge:

B ∩ P = {B(i) ∩ P (j)|B(i) ∩ P (j) ≠ ∅, i = 1, …, n, j = 1, …, m}

Idee des Algorithmus:

\begin{aligned}B^{0} & = & \{Q\F, F \} \\ B^{k+1} & = & B^{k} ∩ ⋂_{a∈Σ} δ^{−1}(B^{k}, a) bis B^{k+1} = B^{k} \end{aligned}

Dann gilt: p R q gdw ∃i : p, q ∈ B_{i}^{k}.

Der Algorithmus von Hopcroft:

begin

B(0) := Q\F

B(1) := F

forall a ∈ Σ definiere:

Liste(a) := \{ \begin{matrix}\{0\} & falls |δ^{−1}(B(0), a)| ≤ |δ^{−1}(B(1), a)| \\ \{1\} & sonst \end{matrix}

endfor

k := 2

repeat

wähle ein i ∈ Liste(a) für ein a ∈ Σ.
Lösche i von der Liste(a).
while es gibt j < k mit (∅ ≠ (B(j) ∩ δ^{−1}(B(i), a)) ≠ B(j)) do

wähle ein solches j < k; B(k) := B(j) ∩ δ^{−1}(B(i), a); B(j) := B(j)\B(k); forall b ∈ Σ do

Liste(b) := \{ \begin{matrix}Liste(b) ∪ \{j\} & falls j ∉ Liste(b) und \\ & |δ^{−1}(B(j), b)| ≤ |δ^{−1}(B(k), b)| \\ Liste(b) ∪ \{k\} & sonst \end{matrix}

endfor k := k + 1;

endwhile until alle Listen sind leer. return {B(0), …, B(k)} ist die gesuchte Partition.

end

Behauptung: Der Algorithmus ist korrekt und terminiert!

Beweis:

Die Termination ist trivial, da irgendwann nicht mehr aufgespalten werden kann und dann die Listen nur noch gelöscht werden. Wir zeigen als nächstes, daß nur zulässige Partitionen erzeugt werden. Zu Anfang ist {B(0), B(1)} zulässig. Angenommen B(j) wird in B′(j) und B′′(j) aufgespalten. Angenommen es gäbe

p R q, mit {p, q} ⊆ B(j) und p ∈ B′(j), q ∈ B′′(j).

Dann wäre pa ∈ B(i) und qa ∉ B(i). Dies ist ein Widerspruch zur Zulässigkeit vor der Aufspaltung von B(j), da pa R qa gilt.

Zu zeigen verbleibt, daß inäquivalente Zustände getrennt werden. Angenommen es gäbe (p, q) ∉ R, die nicht getrennt werden. Für ein j gilt also am Ende {p, q} ⊆ B(j).

Mit Induktion kann man annehmen, daß für ein a ∈ Σ die Zustände p′ = pa und q′ = qa getrennt werden. Zu einem gewissen Zeitpunkt gilt: ∃i, k : p′ ∈ B(i), q′ ∈ B(k) und i ∈ Liste(a) oder k ∈ Liste(a). Dies gilt, wenn p′ und q′ getrennt werden, also evtl. ganz am Anfang. Œ sei i ∈ Liste(a). Es kann sich jetzt der Index i ändern, aber es gibt einen nächsten Zeitpunkt, an dem ein i′ der Liste(a) entnommen wird und zu diesem Zeitpunkt gilt p′ ∈ B(i). Dies liegt an der Asymmetrie zwischen j und k bei der Neuberechnung der Liste(b) in der forall-b ∈ Σ-Schleife. Dann ist p ∈ δ^{−1}(B(i′), a) und q ∉ δ^{−1}(B(i′), a). Wegen p, q ∈ B(j) gilt dann (∅ ≠ (B(j) ∩ δ^{−1}(B(i′), a)) ≠ B(j)). Also werden p und q getrennt!

Die Laufzeitanalyse des Hopcroft-Algorithmus

Wir betrachten die Partition {B(0), …, B(k)} nach t Zeitschritten. Seien L(b) die Listen zu diesem Zeitpunkt, b ∈ Σ. Definiere die Zahlen:

b_{l} = |δ^{−1}(B(l), b)|

Als Terminationsfunktion definieren wir T = ∑_{b∈Σ} T_{b} mit:

T_{b} = ∑_{l∈L(b)} b_{l} log(b_{l}) + ∑_{l∉L(b)} b_{l} log (\frac{b_{l}}{2} ) .

Wir zeigen die folgende Invariante (bei festem Σ): Es gibt eine Konstante K so, daß bei einem Eintritt in die m-te repeat-Schleife gilt:

K · T + t ≤ 2|Σ|Kn(1 + log(n))

Für m = 1 gilt:

T ≤ 2|Σ|n log(n)
t ∈ O(n).

Die Behauptung folgt sofort. Betrachte jetzt einen Eintritt in die m-repeat-Schleife, m ≥ 1 und den Zeitverbrauch, bzw. die Veränderung von T innerhalb dieser Schleife.

Angenommen in dieser Schleife wird ein Paar (B(i), a) gewählt mit a_{i} = |δ^{−1}(B(i), a)|. Die repeat-Schleife läßt sich so implementieren, daß innerhalb der Zeitverbrauch (über die ganze while-Schleife hinweg) durch O(a_{i}) begrenzt ist. (Hierfür müssen u. a. vorab alle Indizes j_{r} bestimmt werden, für die gilt: 0 ≤ j_{r} ≤ k und B(j_{r}) ∩ δ^{−1}(B(i), a) ≠ ∅.) Der Zeitverbrauch ist also K · a_{i} für ein geeignetes K. Demgegenüber verändert sich T, indem der Term a_{i} log(a_{i}) durch a_{i} log(\frac{a_{i}}{2} ) ersetzt wird. Dies hebt sich in der Formel auf, da a_{i} log(a_{i}) = a_{i} log(\frac{a_{i}}{2} ) + a_{i}. Sei T̂ der Wert von T nach dieser Ersetzung. Wir zeigen, daß T̂ nicht vergrößert wird. T̂ verändert sich innerhalb der forall-b ∈ Σ-Schleife. Betrachte ein b ∈ Σ.

1.Fall: Sei j ∈ L(b). Dann wird in T̂ der Term b_{i} log b_{i} ersetzt durch c log c+(b−c) log(b−c) mit c = |B(j) ∩ δ^{−1}(B(i), a)|. Wegen c, (b − c) < b gilt:

c log c + (b − c) log(b − c) < (c + (b − c)) log(b) ≤ b log b

.

2.Fall: Sei jetzt j ∉ L(b). Œ gilt:

c = |B(j) ∩ δ^{−1}(B(i), a)| ≤ (b − c) = |B(k)|.

Dann wird der Term b log(\frac{b}{2}) ersetzt durch c log c. D. h. T̂ wird nicht größer, da c ≤ \frac{b}{2}. Dies zeigt die Invariante und damit t ∈ O(n log n).

Beispiel:

Berechnung des minimalen Automaten zum Automaten aus Abbildung 4.1 auf Seite 54 mit dem Algorithmus von Hopcroft:

B(0) = Q\{3} ; B(1) = {3} Liste(0) = {1} Liste(1) = {1}

wähle 1 ∈ Liste(0) und lösche 1 aus Liste(0) B(0) = {6, 4} B(2) = {1, 2, 5, 7, 8} Liste(0) = {2}

wähle 1 ∈ Liste(1) und lösche 1 aus Liste(1) B(2) = {2, 8} B(3) = {1, 5, 7} Liste(1) = {2}

wähle 2 ∈ Liste(0) und lösche 2 aus Liste(0) B(3) = {1, 5} B(4) = {7}

Abarbeitung der Liste liefert keine neuen B(i). Der minimale Automat besteht aus folgender Menge von Zuständen:

\{\underbrace{\{6, 4\}}_{B(0)}, \underbrace{\{3\}}_{B(1)}, \underbrace{\{2, 8\}}_{B(2)}, \underbrace{\{1, 5\}}_{B(3)}, \underbrace{\{7\}}_{B(4)}\}

Dargestellt ist dieser minimale Automat in Abbildung 4.2 auf Seite 55.

4.5.3 Minimierung nach J.Brzozowski (1965)

Für einen Automaten A = (Q, Σ, δ, I, F) sei ϱ(A) = (Q, Σ, \overline{δ}, F, I) mit (p, a, q) ∈ \overline{δ} ⟺

(q, a, p) ∈ δ. Also L(ϱ(A)) =L(A)^{−} L(^{⟵} = {w^{←}| w ∈ L(A)} mit x_{1} … x_{n}^{−} x_{1}^{⟵} = x_{n} … x_{1}.

Es sei π(A) der vollständige initial zusammenhängende Automat, der bei der Potenzautomatenkonstruktion erzeugt wird.

Satz 4.8 πϱπϱ(A) ist der minimale Automat, der L(A) erkennt.

Beweis:

1. πϱπϱ(A) ist vollständig, initial zusammenhängend und deterministisch

2. L(πϱπϱ(A)) = L(A)

1) und 2) sind trivial. πϱ(A) = B ist vollständig, initial zusammenhängend und deterministisch. Deshalb:

3. Zu zeigen ist nur: πϱ(B) ist reduziert, d. h. keine zwei Zustände sind äquivalent.

Seien S, S′ Zustände von πϱ(B) mit

L(S) = {w ∈ Σ^{∗} | q_{0,B}w ∈ S} = L(S′).

Hierbei sei q_{0,B} der Startzustand von B, also der einzige Endzustand von ϱ(B). Wähle ein p ∈ S. Dann existiert ein w ∈ Σ^{∗} mit q_{0,B}w = p, da B initial zusammenhängend ist.

Dann gilt: w ∈ L(S) = L(S′) und damit p = q_{0,B}w ∈ S′.

Dies zeigt S ⊆ S′ und aus Symmetrie: S = S′

Laufzeitanalyse: Für die Praxis ist dieses Verfahren vollkommen untauglich, denn: Ist A bereits deterministisch: πϱ(A) ist ein deterministischer Automat, der L(A)^{−} L(^{⟵} erkennt. Es gibt Fälle (siehe Übungen) in denen hierfür Ω(2^{|Q|}) Zustände gebraucht werden !

Der Automat πϱ(A) ist eine Zwischenkonstruktion, die im schlechtesten Fall exponentiellen Aufwand erfordert. Sie ist evtl. gut (?), falls A nicht deterministisch ist und sowieso der Potenzautomat gebildet werden muß.

5 Kontextfreie Sprachen

Wir wiederholen zunächst die Definition einer kontextfreien Grammatik und ein Beispiel für eine kontextfreie, nicht reguläre Sprache.

Definition 5.1 (Kontextfreie Grammatik )

Eine Grammatik G = (V, Σ, P, S) heißt kontextfrei, wenn gilt:

P ⊆ V × (V ∪ Σ)^{∗}

d.h. alle Regeln haben die Form:

A → α mit A ∈ V, α ∈ (V ∪ Σ)^{∗}.

Beispiel:

Gegeben sei L = {a^{n}b^{n}|n ≥ 0}.

Diese Sprache ist kontextfrei, aber nicht regulär; siehe Abschnitt 2.2.

Definition 5.2 (Ableitungsbaum)

Induktive Definition:

i) Jedes x ∈ V ∪ Σ ∪ {λ} ist ein Ableitungsbaum mit

– Höhe(x) = 0

– W urzel(x) = Rand(x) = x.

ii) Ist A → A_{1} … A_{n} ∈ P und sind B_{1}, …, B_{n} Ableitungsbäume mit

W urzel(B_{i}) = A_{i} für 1 ≤ i ≤ n

so ist der folgende (unten abgebildete) Baum B ein Ableitungsbaum mit:

– W urzel(B) = A

– Kinder der Wurzel A sind die Bäume B_{1}, …, B_{n} in dieser Reihenfolge – Rand(B) = Rand(B_{1}) … Rand(B_{n})

– Höhe(B) = 1 + max{Höhe(B_{i})|1 ≤ i ≤ n}.

[figure: A; B_{1}; B_{n}; …; B =]

5 Kontextfreie Sprachen  61

Beispiel:

Gegeben sei die Grammatik: S → aSb|aSbS|λ. Dann erhält man Ableitungsbäume, wie sie in Abbildung 5.1 dargestellt sind.

[figure: S; a; b; S; a; b; S; λ; S; λ; Höhe(B) = 1; Rand(B) = λ; Höhe(B) = 3; Rand(B) = a^{2}b^{2}]

Abbildung 5.1: Beispiele für Ableitungsbäume

Bemerkung

S(G) = {Rand(B)|B ist Ableitungsbaum mit W urzel(B) = S}. L(G) = {Rand(B)|B ist Ableitungsbaum mit W urzel(B) = S und Rand(B) ∈ Σ^{∗}}.

Bemerkung

Eine kontextfreie Grammatik heißt eindeutig, wenn jedes Wort aus Σ^{∗} höchstens einen Ableitungsbaum besitzt. Eine Sprache heißt eindeutig, wenn sie von einer eindeutigen Grammatik erzeugt wird. Aus Zeitgründen wird dieser Aspekt im folgenden nur ganz kurz in Abschnitt 6.1 behandelt werden.

Lemma 5.1 Sei G = (V, Σ, P, S) kontextfrei und m = max{|α| | A → α ∈ P } und B ein Ableitungsbaum, dann gilt:

|Rand(B)| ≤ m^{Höhe(B)}.

Beweis:

trivial durch Induktion!

5 Kontextfreie Sprachen  62  5.1 Pumpinglemma für k.f. Sprachen

5.1 Das Pumpinglemma von Bar-Hillel für kontextfreie Sprachen (uvwxy– Theorem)

Satz 5.1 (uvwxy–Theorem)

Sei L ⊆ Σ^{∗} eine kontextfreie Sprache, dann existiert ein n ≥ 0 so, daß für alle z ∈ L mit |z| ≥ n gilt: Es gibt eine Zerlegung z = uvwxy mit den folgenden Eigenschaften:

• |vwx| ≤ n

• |vx| ≥ 1

• uv^{i}wx^{i}y ∈ L ∀i ≥ 0

Beweis:

Wir wählen n so groß, daß gilt:

Rand(B) ≥ n ⟹ Höhe(B) ≥ #V + 1

Für z ∈ L existiert nach Lemma 5.1 mit |z| ≥ n ein Ableitungsbaum B mit minimaler Knotenzahl, Rand(B) = z, Höhe(B) ≥ #V + 1 und W urzel(B) = S. Auf dem längsten Pfad durch B existiert eine Variable A ∈ V die zweimal erscheint, da Höhe(B) ≥ #V + 1. Wähle in B einen Teilbaum minimaler Höhe, dessen Wurzel eine Variable A ∈ V ist und die im Innern wieder erscheint. Dann erhalten wir einen Ableitungsbaum wie in der Abbildung 5.2 mit einem Teilbaum wie in der Abbildung 5.3. Dieser Teilbaum hat dann eine Höhe, die kleiner oder gleich #V + 1 ist.

[figure: A; A; v; w; x; S; u; y]

Abbildung 5.2: Ableitungsbaum für z = uvwxy

Aus der Höhe des Baumes in Abbildung 5.3 folgt: |vwx| ≤ n.

[figure: A; A; v; w; x]

Abbildung 5.3: Ableitungsbaum für vwx

[figure: S; A; u; y; w]

Abbildung 5.4: Ableitungsbaum für uwy

Der Ableitungsbaum für uv^{i}wx^{i}y ∀i ≥ 2 ist in der Abbildung 5.5 dargestellt und für i = 0 in der Abbildung 5.4.

[figure: A; v; x; S; u; y; A; A; v; w; x; A; A; v; x; A; v; x; ⋮; ⋮; (i − 1)-mal; ⋮]

Abbildung 5.5: Ableitungsbaum für uv^{i}wx^{i}y

Daraus folgt uv^{i}wx^{i}y ∈ L ∀i ≥ 0. Jetzt ist noch zu zeigen, daß |vx| ≥ 1 ist. Annahme: vx = λ. Dann wäre z = uwy und der entsprechende Ableitungsbaum aus der Abbildung 5.4 hat weniger Knoten als der Ausgangsbaum. Dies ist ein Widerspruch, also ist vx ≠ λ.

5 Kontextfreie Sprachen  65  5.2 Abschlußeigensch. k.f. Sprachen

Beispiel: Anwendung des uvwxy-Theorems

Behauptung: {a^{n}b^{n}c^{n}|n ≥ 0} ist nicht kontextfrei.

Beweis:

Indirekter Beweis mit dem Pumpinglemma Angenommen L wäre kontextfrei. Dann existiert nach dem Pumpinglemma ein n > 0 so, daß für alle z ∈ L mit |z| ≥ n gilt: ∃u, v, w, x, y : z = uvwxy, |vx| > 1, |vwx| ≤ n und uvwxy ∈ L ∀i ≥ 0. Insbesondere gilt auch uwy ∈ L. Betrachte: z = a^{n}b^{n}c^{n} für dieses n, z = uvwxy wie oben. Wegen |vwx| ≤ n gilt vwx ∈ a^{∗}b^{∗} ∪ b^{∗}c^{∗}. Wegen |vx| > 1 gilt

\begin{matrix}& #_{a}(vx) ≠ & #_{b}(vx) \\ oder & #_{a}(vx) ≠ & #_{c}(vx) \\ oder & #_{b}(vx) ≠ & #_{c}(vx) \end{matrix} \} es folgt \{ \begin{matrix}& #_{a}(uwy) ≠ & #_{b}(uwy) \\ oder & #_{a}(uwy) ≠ & #_{c}(uwy) \\ oder & #_{b}(uwy) ≠ & #_{c}(uwy) \end{matrix}

Dies ist ein Widerspruch, da L ⊆ {w ∈ {a, b, c}^{∗} |#a(w) = #b(w) = #c(w)}.

Bemerkung

Der Beweis des letzten Beispiels zeigt ein stärkeres Resultat: Sei L ⊆ K ⊆ {w ∈ {a, b, c}^{∗} |#_{a}(w) = #_{b}(w) = #_{c}(w)}. Dann ist K nicht kontextfrei.

5.2 Einige Abschlußeigenschaften kontextfreier Sprachen

Satz 5.2 Seien L_{1}, L_{2} kontextfreie Sprachen. Dann sind kontextfrei:

i) L_{1} ∪ L_{2} ii) L_{1} · L_{2}

iii) L_{1}^{∗}

Beweis:

Sei G_{i} = (V_{i}, Σ, P_{i}, S_{i}) kontextfrei mit L_{i} = L(G_{i}) für i = 1, 2. Œ kann V_{1} ∩ V_{2} = ∅ gewählt werden.Wähle ein neues Startsymbol S. Dann betrachte für die oben genannten drei Fälle folgende Produktionen:

für i.) S → S_{1}|S_{2} ∪ P_{1} ∪ P_{2}
für ii.) S → S_{1}S_{2} ∪ P_{1} ∪ P_{2}
für iii.) S → S_{1}S|λ ∪ P_{1}.

Definition 5.3 (Substitution)

Eine Substitution ist eine Abbildung

σ : Σ → ℘(Σ^{′∗}), d. h. σ(a) ⊆ Σ^{∗} ∀a ∈ Σ, das Bild eines Buchstaben ist also eine formale Sprache. σ wird auf Σ^{∗} multiplikativ fortgesetzt durch

\begin{aligned}σ(a_{1} … a_{n}) & = & σ(a_{1}) … σ(a_{n}) für n ≥ 0 \\ σ(λ) & = & \{λ\} \end{aligned}

σ wird auf ℘(Σ) fortgesetzt durch

\begin{matrix}σ : ℘(Σ^{∗}) & → & ℘(Σ^{′∗}) \\ L & ↦ & ⋃_{w∈L} σ(w). \end{matrix}

Spezialfall: Ist σ(a) ∈ Σ′ ein Buchstabe für alle a ∈ Σ, so gilt:

σ : Σ^{∗} → Σ^{′∗} ⊆ ℘(Σ^{′∗})
w′ → {w}

und σ kann als ein Homomorphismus interpretiert werden:

σ : Σ^{∗} → Σ^{′∗}.

Beispiel:

\begin{aligned}σ : \{a, b\} & → & ℘(\{a, b, c\}^{∗}) \\ σ(a) & = & a^{∗}b^{∗} \\ σ(b) & = & b^{∗}c^{∗} \\ σ(ab) & = & a^{∗}b^{∗}b^{∗}c^{∗} = a^{∗}b^{∗}c^{∗} \\ σ(a^{∗}b^{∗}) & = & (a^{∗}b^{∗})^{∗}(b^{∗}c^{∗})^{∗} = (a + b)^{∗}(b + c)^{∗} \end{aligned}

Letzteres gilt wegen (a^{∗}b^{∗})^{∗} = (a + b)^{∗} = {a, b}^{∗}.

[figure: b; a; λ; λ; λ; a, b]

Abbildung 5.6: Links der Automat für (a^{∗}b^{∗})^{∗}, rechts der äquivalente Automat für {a, b}^{∗}

Satz 5.3 Sei L ⊆ Σ^{∗} kontextfrei und σ : Σ → ℘(Σ^{′∗}) eine kontextfreie Substitution, d. h. σ(a) ist kontextfrei ∀a ∈ Σ. Dann ist σ(L) kontextfrei.

Beweis:

Sei G = (V, Σ, P, S) kontextfrei mit L = L(G).

Sei G_{a} = (V_{a}, Σ′, P_{a}, S_{a}) kontextfrei mit σ(a) = L(G_{a}) ∀a ∈ Σ.

Dann sind Œ Σ, Σ′V, V_{a} für a ∈ Σ paarweise disjunkt.

Betrachte:

G′ = (V′, Σ′, P′, S)
V′ = V ∪ ⋃_{a∈Σ} V_{a} ∪ Σ
P′ = P ∪ {a → S_{a}|a ∈ Σ} ∪ ⋃_{a∈Σ} P_{a}

Bemerkung Korollar 5.1

[figure: S_{a_{1}}; w_{1}; a_{1}; S_{a_{n}}; a_{n}; S; a_{1} … a_{n}; w ∈ Σ^{∗}; in G:; S; w_{n}] Ein analoger Satz gilt für typerhaltende Substitutionen auch für Typ – 0 und Typ – 3 Grammatiken. Bei Typ – 1 gilt der Satz jedoch nur für λ-freie Substituion, d. h. λ ∉ σ(a) für a ∈ Σ.

Typ – i-Sprachen i = 0, 1, 2, 3 sind unter Homomorphismen abgeschlossen. Die Typ – 1 sind jedoch nur unter λ-freien Homomorphismen abgeschlossen, d. h. σ(a) ≠ λ ∀a ∈ Σ.

Der folgende Satz zeigt, daß Typ – 1 Sprachen i.a. nicht gegen löschende Homomorphismen abgeschlossen sind. (Wir werden später sehen, daß es Typ – 0 Sprachen gibt, die nicht vom Typ – 1 sind.)

Satz 5.4 Zu jeder Typ – 0 Sprache L ⊆ Σ^{∗} existiert effektiv eine Typ – 1 Sprache L_{1} ⊆ Σ_{1}^{∗} und ein Homomorphismus h : Σ_{1}^{∗} → Σ^{∗} (i.a. mit h(a) = λ für gewisse a ∈ Σ_{1}) und h(L_{1}) = L.

Beweis:

Sei L = L(G) für eine Typ – 0 Grammatik G = (V, Σ, P, S) mit P ⊆ (V × V^{+} ∪ V × Σ).

• Mit Hilfe eines neuen Symbols $ verwandeln wir zunächst alle Regeln der Form

A_{1} … A_{m} → B_{1} … B_{n} mit n < m

in monotone Regeln:

A_{1} … A_{m} → B_{1} … B_{n}$^{m−n}

• Ferner fügen wir die folgenden Regeln für alle A ∈ V hinzu:

$A → A$

Dies ergibt eine Typ – 1 Grammatik über (Σ ∪ $).

• Wir definieren jetzt h : (Σ ∪ $)^{∗} → Σ^{∗} durch

h(a) = a für a ∈ Σ und
h($) = λ.

Satz 5.5 Kontextfreie Sprachen (im Gegensatz zu Typ – 3 oder Typ – 1 Sprachen) sind weder abgeschlossen unter Komplementbildung noch unter Durchschnitt.

Beweis:

Wir betrachten dazu folgende 2 Sprachen:

L_{1} = {a^{m}b^{m}c^{n}|m, n ≥ 1}
L_{2} = {a^{m}b^{n}c^{n}|m, n ≥ 1}

L_{1} und L_{2} sind kontextfrei durch

L_{1} : S → ZC
C → cC|c
Z → aZb|ab
L_{2} : S → AY
A → aA|a
Y → bY c|bc

Durchschnitt: L_{1} ∩ L_{2} = {a^{n}b^{n}c^{n}|n ≥ 0} ist jedoch nicht kontextfrei.

Komplement: Nach den Regeln von De Morgan gilt: L_{1} ∩ L_{2} = \overline{(\overline{L_{1}} ∪ \overline{L_{2}})}. Ist eine Sprachklasse unter Vereinigung abgeschlossen, jedoch nicht unter Durchschnitt, so kann sie nicht unter der Komplementbildung abgeschlossen sein, da die obige Regel von De Morgan zeigt, daß sich der Durchschnitt durch Vereinigung und Komplement ausdrücken läßt. In dem Beispiel bleibt die Frage, ob schon \overline{L_{1}} oder \overline{L_{2}} die Familie der kontextfreien Sprachen verlassen. Dies ist hier nicht der Fall und zeigt der Beweis der folgenden Behauptung.

Bemerkung

Die Sprache L = \overline{\{a^{n}b^{n}c^{n}|n ≥ 0\}} ist kontextfrei.

Beweis:

Es gilt: L = R ∪ (L ∩ a^{∗}b^{∗}c^{∗}) mit R = \overline{a^{∗}b^{∗}c^{∗}} regulär. Daher reicht es zu zeigen:

• L ∩ a^{∗}b^{∗}c^{∗} ist kontextfrei , d. h.

• (\overline{L_{1}} ∪ \overline{L_{2}}) ∩ a^{∗}b^{∗}c^{∗} = (\overline{L_{1}} ∩ a^{∗}b^{∗}c^{∗}) ∪ (\overline{L_{2}} ∩ a^{∗}b^{∗}c^{∗}) ist kontextfrei , d. h.

• (\overline{L_{i}} ∩ a^{∗}b^{∗}c^{∗}) ist kontextfrei für i = 1, 2.

Wir zeigen dies für i = 1. Der Beweis für i = 2 läuft analog.

\overline{L_{1}} ∩ a^{∗}b^{∗}c^{∗} = \{a^{k}b^{m}c^{n}|k ≠ m\} = \{a^{k}b^{m}c^{n}|k > m\} ∪ \{a^{k}b^{m}c^{n}|k < m\}

Die Sprache {a^{k}b^{m}c^{n}|k > m} ist kontextfrei, wie sich aus der folgenden Grammatik ergibt (der Fall k < m ist analog):

S → aZC
C → cC|λ
Z → aZ|aZb|λ

5 Kontextfreie Sprachen  70  5.3 Red. k. f. Grammatiken

5.3 Reduktion kontextfreier Grammatiken

Definition 5.4 (produktives Symbol)

Sei G = (V, Σ, P, S) kontextfrei. Ein Symbol A ∈ V heißt produktiv wenn gilt:

∃w ∈ Σ^{∗} mit A⟹_{G}^{⋆}w.

Definition 5.5 (erreichbares Symbol)

Sei G = (V, Σ, P, S) kontextfrei. Ein Symbol A ∈ V heißt erreichbar wenn gilt:

∃α, β ∈ (V ∪ Σ)^{∗} mit S⟹_{G}^{⋆}αAβ.

Bemerkung

A ist produktiv und erreichbar, wenn A in einem Ableitungsbaum B erscheint mit

Wurzel (B) = S, Rand(B) ∈ Σ^{∗}.

Nur erreichbare und produktive Symbole sind von Interesse.

Definition 5.6 (reduzierte Grammatik)

Eine kontextfreie Grammatik heißt reduziert, wenn alle Variablen erreichbar und produktiv sind.

5.3.1 Entfernung unproduktiver Symbole und Test auf Leerheit

Satz 5.6 Sei G = (V, Σ, P, S) kontextfrei. Dann können wir testen, ob L(G) ≠ ∅ gilt. Ist L(G) ≠ ∅, so existiert effektiv eine äquivalente kontextfreie Grammatik G′ = (V′, Σ, P′, S), die nur produktive Symbole enthält. Ferner gilt V′ ⊆ V, P′ ⊆ P.

Beweis:

Wir bestimmen die Menge V_{prod} der produktiven Variablen wie folgt:

Definiere

\begin{aligned}V_{0} & := & \{A ∈ V |∃w ∈ Σ^{∗} : A → w ∈ P \} \\ V_{i+1} & := & \{A ∈ V |∃α ∈ (V_{i} ∪ Σ)^{∗} : A → α ∈ P \} \end{aligned}

Klar ist, daß V_{0} ⊆ V_{1} ⊆ V_{2} ⊆ … ⊆ V_{prod} = ⋃_{i≥0} V_{i} ⊆ V gilt.

Ferner existiert ein i so, daß gilt V_{i} = V_{i+1} = Vprod, daher ist V_{prod} effektiv berechenbar. Man beachte: S ∈ V_{prod} genau dann, wenn L(G) ≠ ∅ gilt. Das heißt wir können die Leerheit von L(G) testen.

Sei jetzt L(G) ≠ ∅, d. h. S ∈ V_{prod}. Dann ersetzen wir G durch die äquivalente Grammatik G′ = (V′, Σ, P′, S) mit

V′ = V_{prod}
P′ = P ∩ (V_{prod} × (Vprod ∪ Σ)^{∗})

[figure: S; ∈ Σ^{∗}; ∈ Σ^{∗}; A_{1}; A_{n}; A; ⋯]

Die Gleichheit L(G) = L(G′) ergibt sich dadurch, daß Ableitungsbäume mit Rand in Σ^{∗} nur produktive Symbole enthalten können, siehe auch obige Abbildung.

5.3.2 Entfernung unerreichbarer Symbole

Satz 5.7 Sei G = (V, Σ, P, S) kontextfrei. Dann existiert effektiv eine kontextfreie Grammatik G′ = (V′, Σ, P′, S) in der alle Symbole erreichbar sind und es gilt L(G) = L(G′).

Beweis:

Definiere V_{0} = {S} und für i ≥ 1 definiere induktiv

V_{i} = {B ∈ V |B ∈ V_{i−1} oder ∃A ∈ V_{i−1}, α, β ∈ (V ∪ Σ)^{∗} : A → αBβ ∈ P }
Verr = ⋃_{i≥0} V_{i} …

Klar ist, daß V_{0} ⊆ V_{1} ⊆ V_{2} ⊆ Verr ⊆ V gilt. #V endlich ⇒ ∃i : V_{i} = V_{i+1} = Verr Verr enthält genau die erreichbaren Symbole.

[figure: S; A; A_{1}; A_{2}; A_{3}; A_{4}; ∈ V_{1}; ∈ V_{2}; ∈ V_{3}; ∈ V_{4}; ∈ V_{err}]

Setze

V′ = Verr
P′ = P ∩ (Verr × (Verr ∪ Σ)^{∗}).

Satz 5.8 Sei G = (V, Σ, P, S) kontextfrei und L(G) ≠ ∅. Dann existiert effektiv eine äquivalente reduzierte Grammatik G′ = (V′, Σ, P′, S) mit V′ ⊆ V und P′ ⊆ P.

Beweis:

Zuerst die unproduktiven Symbole entfernen. Es gilt dann:

L(G) ≠ ∅ ⇔ S ist produktiv und G′ enthält nur produktive Symbole.

Dann entfernen wir die unerreichbaren Symbole wie eben. Am Ende sind alle Symbole erreichbar und produktiv.

[figure: S; A; w ∈ Σ^{∗}]

Alle Symbole in dem unteren Teilbaum bleiben dabei erreichbar, d. h. ist A erreichbar und war vorher produktiv, so bleibt A produktiv, auch wenn unerreichbare Symbole entfernt werden.

Bemerkung

Bei dem Reduktionsalgorithmus ist es wichtig, daß zuerst die unproduktiven und dann die unerreichbaren Symbole entfernt werden. Es ist nämlich möglich, daß ein Symbol produktiv ist, aber vom Axiom aus nur über unproduktive Symbole erreicht wird. Betrachte hierfür auch das folgende Beispiel.

Beispiel:

Sei folgende Grammatik gegeben:

S → AB|λ
A → a.

In dieser Grammatik sind alle Symbole erreichbar. Werden also zuerst die unerreichbaren Symbole entfernt, so verändert sich die Grammatik gar nicht. Die Entfernung der unproduktiven Symbole liefert dann die nicht reduzierte Grammatik

S → λ
A → a.

Korollar 5.2 Sei G = (V, Σ, P, S) kontextfrei A ∈ V. Dann ist entscheidbar, ob A⟹_{G}^{⋆}λ gilt.

Beweis:

Entscheide, ob L((V ∪ Σ, ∅, P, A)) leer ist.

Beachte: ∅^{∗} = {λ}.

5.3.3 Entfernung von λ-Regeln

Definition 5.7 (nullierbar und λ-Regel)

Ein Symbol A heißt nullierbar, wenn A⟹_{G}^{⋆}λ gilt.

Eine Regel der Form A → λ heißt λ-Regel.

Satz 5.9 Sei G = (G, Σ, P, S) kontextfrei. Dann existiert effektiv eine kontextfreie Grammatik G′ = (V, Σ, P′, S) ohne λ-Regeln und mit L(G′) = L(G)\{λ}.

Beweis:

Transformiere G zunächst nach folgendem Verfahren: Solange es für ein 1 ≤ i ≤ n eine Regel

A → A_{1} … A_{n} ∈ P mit A_{i} nullierbar und
A → A_{1} … A_{i−1}A_{i+1} … A_{n} ∉ P gibt, füge diese Regel
A → A_{1} … A_{i−1}A_{i+1} … A_{n} zu P hinzu.

Dieses Verfahren terminiert und verändert die erzeugte Sprache nicht. Am Ende gilt:

A⟹_{G}^{⋆}λ gdw. A → λ ∈ P

Streiche alle Regeln der Form A → λ aus P und erhalte so G′.

[figure: G:; λ; A_{1}; A_{i}; A_{n}; A; ⋯; ⋯; A_{1}; A_{i−1}; A_{i+1}; A_{n}; A; ⋯; ⋯]

5.3.4 Entfernung von Kettenproduktionen

Kettenproduktionen sind Regeln der Form A → B.

Satz 5.10 Sei G = (V, Σ, P, S) kontextfrei. Dann existiert effektiv eine äquivalente kontextfreie Grammatik G′ = (V, Σ, P′, S) ohne Kettenproduktionen und ohne λ-Regeln, falls λ ∉ L(G). Falls λ ∈ L(G), so ist eine einzige λ-Regel S → λ erlaubt, das Startsymbol S erscheint dann aber auf keiner rechten Seite.

5 Kontextfreie Sprachen  75  5.4 Chomsky-Normalform

Beweis:

Zunächst zeigen wir, daß es reicht, die Kettenproduktionen zu eliminiern. Hierfür beginnen wir mit einer Grammatik G′ ohne λ-Regeln für L(G)\{λ} mit dem Startsymbol S′. Falls λ ∉ L(G), so nehmen wir G′ = G und S′ = S an. Ansonsten nehmen wir G′ = (V, Σ, P, S′) und G = (V, Σ, P ∪ {S⟶_{p}S′|λ}, S) an. Œ enthält G also keine verbotenen λ-Regeln und es müssen nur die Kettenproduktionen aus G eliminiert werden. Für A ∈ V definieren wir

R(A) = {α ∈ (V ∪ Σ)^{+}|∃A⟶_{p}A_{1}⟶_{p} … ⟶_{p}A_{n}⟶_{p}α, A_{i} ∈ V, |α| ≥ 2}

und definieren dann P_{1} als

P_{1} = P ∪ {A → α|A ∈ V, α ∈ R(A)}

(Es kommen keine neuen λ-Regeln hinzu und die erzeugte Sprache bleibt unverändert.) Schließlich definieren wir

P′ = P_{1}\{A → B|A → B ∈ P }

Die erzeugte Sprache bleibt unverändert.

Falls λ ∈ L(G) sein sollte, betrachten wir zunächst die Grammatik, die L(G)\{λ} erzeugt und keine λ-Regeln hat. Dann verfahren wir wie oben und fügen am Ende gegebenenfalls die Regel S → λ hinzu.

Korollar 5.3 Jede kontextfreie Sprache läßt sich auch von einer monotonen (mit im Wesentlichen nur verlängernden Regeln) Typ – 1 Grammatik erzeugen. Jede kontextfreie Sprache ist also insbesondere kontextsensitiv.

5.4 Chomsky-Normalform

Definition 5.8 (kontextfreie Grammatik in Chomsky-Normalform) Eine kontextfreie Grammatik G = (V, Σ, P, S) heißt in Chomsky-Normalform, wenn alle Regeln die folgende Form haben:

A → BC
A → a für A, B, C ∈ V, a ∈ Σ.

Satz 5.11 Zu jeder λ-freien, nichtleeren kontextfreien Sprache L ⊆ Σ^{∗} existiert effektiv eine erzeugende reduzierte Grammatik in Chomsky-Normalform.

Beweis:

Œ sei L = L(G) mit G reduziert, keine λ-Regeln, keine Kettenproduktionen d. h. P ⊆ (V × V V V^{∗}) ∪ (V × Σ). Sei A → A_{1} … A_{m} ∈ P eine Regel und m ≥ 3.

Ersetze diese Regel durch die folgenden Regeln:

A → A_{1}[A_{2} … A_{m}]
[A_{i} … A_{m}] → A_{i}[A_{i+1} … A_{m}] 2 ≤ i ≤ m − 2
[A_{m−1}A_{m}] → A_{m−1}A_{m}

Hierbei bezeichnen [A_{i} … A_{m}] für 2 ≤ i ≤ m − 1 neue Symbole, d. h. […] stellt ein einziges Zeichen dar.

Beispiel:

S → SSZ|abZ|Y |SS|ab|aSb
Y′ → aSb
Z → P Q|RS|T P |Q
P → λ
Q → λ
T → T U|Ua
U → b
R → T
produktiv:  U, T, Q , P, Z, S, Y
nicht produktiv:  R
erreichbar:  S, Z, Y, P, Q
nullierbare Symbole: P, Q, Z

jetzt:

S → SS|ab|aSb
↓
S → SS|AB|ASB
A → a
B → b
↓ Chomsky-Normalform
S → SS|AB|A[SB]
[SB] → SB
A → a
B → b
L(G) = {a^{n}b^{n}|n ≥ 1}^{+}

5 Kontextfreie Sprachen  77  5.5 Der C-Y-K Algorithmus

5.5 Der Cocke-Younger-Kasami Algorithmus

Problem: Gegeben ist eine kontextfreie Grammatik G = (V, Σ, P, S) und ein Wort

w = x_{1} … x_{n} ∈ Σ^{∗}

Frage: Gilt w ∈ L(G) ? Œ liegt G = (V, Σ, P, S) in Chomsky – Normalform vor mit λ ∉ L(G). Naiver Ansatz:

Probiere alle Ableitungsbäume mit |Rand(B)| ≤ n durch.

Dieser ”Algorithmus“ ist schlecht, da er exponentiellen Aufwand erfordert.

Idee: C-Y-K Algorithmus:

Bestimme A⟹_{G}^{⋆}w = x_{1} … x_{n} wie folgt (siehe Abbildung 5.7):

n = 1 : A → x_{1} ∈ P
n > 1 : A⟹^{⋆}x_{1} … x_{n} gdw. ∃A → BC ∈ P und

∃k : 1 ≤ k < n mit B⟹_{G}^{⋆}x_{1} … x_{k}, C⟹_{G}^{⋆}x_{k+1} … x_{n}

[figure: C; B; S; x_{k}; x_{k+1}; x_{n}; x_{1}]

Abbildung 5.7: Ableitungsbaum für x_{1} … x_{n}

Setze V_{i−1,j} := {A ∈ V |A⟹_{G}^{⋆}x_{i} … x_{j}}, i ≤ j

Bemerkung

Die Indexwahl erweist sich als günstig für eine Matrixdarstellung.

5 Kontextfreie Sprachen  78  5.5 Der C-Y-K Algorithmus

Es gilt: w ∈ L(G) gdw. S ∈ V_{o,n} Der C-Y-K Algorithmus

Berechnung der V_{i,j} für i < j:

1. Teil – Initialisierung: for i = 1 to m do

V_{i−1,i} = {A ∈ V |A → x_{i} ∈ P } endfor

Betrachte (0, …, n) × (0, …, n) – Matrix, bei der das Feld(0, 0) leer bleibt und für die Hauptdiagonale gilt:

Feld(i, i) = x_{i}, 1 ≤ i ≤ n

d.h. V_{i−1,i} steht in dem Feld direkt über Feld(i, i).

\underline{2. Teil:} for m := 2 to n do

for 0 ≤ i ≤ n − m, j = i + m do

V_{i,j} := {A ∈ V |∃k : i < k < j, A → BC ∈ P, B ∈ V_{i,k}, C ∈ V_{k,j}}

endfor endfor

Zum Schluß ist V_{0,n} berechnet und w ∈ L(G) gdw. S ∈ V_{0,n}

Laufzeit des Algorithmus: O(n^{3}) (falls G fest und w variabel ist mit n = |w|)

Der C-Y-K Algorithmus läßt sich in eine Matrixmultiplikationsaufgabe umdeuten (siehe Valiant-Algorithmus in dem Buch von Harrison [8])

Grundidee:

Definition 5.9 Seien U, W ⊆ V, dann definiere folgende binäre Operationen:

U ∗ W := {A ∈ V |∃B ∈ U, C ∈ W : A → BC ∈ P }
U + W := U ∪ W, dann gilt (U_{1} + U_{2}) ∗ W = U_{1} ∗ W + U_{2} ∗ W

Berechnung der V_{i,j}:

V_{i,j} = ∑_{k=1}^{n} V_{i,k} ∗ V_{k,j} mit V_{k,j} = ∅ für k ≥ j, V_{i−1,i} wie eben.

Dann gilt für j − i ≥ 2:

V_{i,j} = ∑_{k=i+1}^{j−1} V_{i,k} ∗ V_{k,j}

Beispiel:

Gegeben ist folgende kontextfreie Grammatik:

\begin{aligned}S & → & AB|BC \\ A & → & BA|a \\ B & → & CC|b \\ C & → & AB|a \end{aligned}

und die Zeichenkette w = ba^{2}ba. Durch Abarbeitung des C-Y-K Algorithmus erhält man folgende Tabelle der V_{i,j}:

0  1  2  3  4  5
0 ∗  B  S, A  ∅  ∅ S, A, C
1  b  A, C  B  B S, A, C
2  a  A, C S, C  B
3  a  B  S, A
4  b  A, C
5  a

Da S ein Element von V_{0,5} ist, gehört w = ba^{2}ba zu der Sprache, die von obiger Grammatik erzeugt wird. Der zugehörige Ableitungsbaum ist in Abbildung 5.8 dargestellt. (Natürlich ergibt sich aus der Tabelle auch A⟹_{G}^{⋆}ba^{2}ba und C⟹_{G}^{⋆}ba^{2}ba.)

[figure: S; B; C; A; b; B; C; a; C; A; B; a; a; b]

Abbildung 5.8: Ableitungsbaum für ba^{2}ba

5 Kontextfreie Sprachen  80  5.6 Greibach-Normalform

5.6 Greibach-Normalform

Definition 5.10 (Greibach-Normalform)

Eine kontextfreie Grammatik G = (V, Σ, P, S) heißt in Greibach-Normalform, wenn alle Regeln die folgende Gestalt haben:

A → aB_{1} … B_{n} mit n ≥ 0, A, B ∈ V

Satz 5.12 Sei L ⊆ Σ^{∗} eine kontextfreie Sprache, λ ∉ L, dann existiert eine erzeugende kontextfreie Grammatik in Greibach-Normalform.

Beweis:

Wir folgen dem Artikel von Turakainen, siehe [5]: Œ liegt G = (V, Σ, P, S) in Chomsky-Normalform vor mit L(G) = L. Wir zeigen sogar quadratische GNF (Greibach-Normalform), d.h. alle Regeln haben die Form:

A → aB_{1} … B_{n} mit 0 ≤ n ≤ 2

Betrachte für A ∈ V, a ∈ Σ die folgende Sprache:

R_{A,a} = {α ∈ V^{∗}|A⟹_{G}^{⋆}aα so, daß a ∈ Σ und während der Ableitung

jeweils das erste Zeichen ersetzt wurde}

Wir zeigen zunächst, daß R_{A,a} regulär ist: Ersetze in P die Regeln A → a durch Â → a und A → BC durch Â → B̂C für B, C ∈ V. Nenne diese Regelmenge P̂. Dann gilt:

R_{A,a} = L((V̂ ∪ {a}, P̂ ∪ {a → λ}, Â))

Also wird R_{A,a} von einer linkslinearen Grammatik erzeugt und damit ist R_{A,a} wie behauptet regulär. R_{A,a}^{−λ} = R_{A,a}\{λ} ist auch regulär und wird von einer rechtslinearen Grammatik G_{A,a} = (V_{A,a}, V, P_{A,a}, S_{A,a}) erzeugt. (Man beachte den Wechsel von einer links– zu einer rechtslinearen Grammatik.)

Œ sind alle Mengen V_{A,a}, V, Σ, … paarweise disjunkt.

Bilde G′ = (V′, Σ, P′, S) mit L(G′) = L wie folgt:

V′ = {S} ∪ ⋃_{(A,a)∈V ×Σ} V_{A,a}

Bilde P′ durch:

S → aS_{S,a} falls R_{S,a}^{−λ} ≠ ∅
S → a  falls λ ∈ R_{S,a}
Y → bS_{B,b}Z falls Y → BZ ∈ P_{A,a}, R_{B,b}^{−λ} ≠ ∅
Y → bZ  falls Y → BZ ∈ P_{A,a}, λ ∈ R_{B,b}

Hierbei gilt: A, B ∈ V, a, b ∈ Σ, Y ∈ V_{A,a}, Z ∈ V_{A,a} ∪ {λ}

5 Kontextfreie Sprachen  81  5.6 Greibach-Normalform

Mit Induktion zeigt man leicht: L(G) = L(G′) Beispiel:

Gegeben sei folgende Grammatik zur Sprache L(G) = {a^{n}b^{n}|n ≥ 1}:

\begin{aligned}Ŝ & → & ŜS|ÂC|ÂB \\ Ĉ & → & ŜB \\ Â & → & a \\ B̂ & → & b \end{aligned}

[figure: Z_{a} → Â = 1; Ŝ = 2; Ĉ = 3; Z_{b} → B̂ = 4; B, C; B; S]

Abbildung 5.9: Beispielautomat zur Greibach-Normalform

Zur Berechnung der R_{X,x} bilde die folgenden Regeln mit neuen Symbolen Z_{a}, Z_{b}.

\begin{aligned}Z_{a} & → & Â \\ Z_{b} & → & B̂ \\ Â & → & CŜ|BŜ \\ Ŝ & → & SŜ|BĈ \\ X̂ & → & λ \end{aligned}

Der entsprechende Automat ist in Abbildung 5.9 dargestellt. Beobachtung: R_{A,a} = R_{B,b} = {λ} und alle anderen enthalten kein λ Ferner gilt: R_{A,b} = R_{B,a} = R_{C,b} = R_{S,b} = ∅

G_{S,a} : S_{S,a} → BS_{2}|CS_{2}|B|C
S_{2} → SS_{2}|S
G_{C,a} : S_{C,a} → BC_{2}|CC_{2}
C_{2} → SC_{2}|B

5 Kontextfreie Sprachen  82  5.7 GNF (anderes Verfahren)

Bestimmung von G′:

\begin{aligned}S & → & aS_{S,a} \\ S_{S,a} & → & bS_{2}|aS_{C,a}S_{2}|b|aS_{C,a} \\ S_{2} & → & aS_{S,a}S_{2}|aS_{S,a} \\ S_{C,a} & → & bC_{2}|aS_{C,a}C_{2} \\ C_{2} & → & aS_{S,a}C_{2}|b \end{aligned}

Schreibe X = S_{S,a}, Y = S_{2}, P = S_{C,a}, Q = C_{2}. Wir erhalten so die Grammatik in quadratischer Greibach-Normalform:

\begin{aligned}S & → & aX \\ X & → & bY |aP Y |b|aP \\ Y & → & aXY |aX \\ P & → & bQ|aP Q \\ Q & → & aXQ|b \end{aligned}

5.7 Greibach-Normalform (anderes Verfahren)

Zur Herstellung der Greibach-Normalform kann man folgende Umformungen verwenden:

I. Sei A ⟶ α_{1}Bα_{2} eine Produktion und B ⟶ β_{1}|β_{2}| … |β_{r} die Menge aller B-Produktionen. Dann kann man A ⟶ α_{1}Bα_{2} entfernen und A ⟶ α_{1}β_{1}α_{2}|α_{1}β_{2}α_{2}| … |α_{1}β_{r}α_{2} hinzufügen, ohne daß sich die erzeugte Sprache ändert.

II. Ist g = (V, T, P, S) eine kontextfreie Grammatik; die Menge aller A-Produktionen wird unterteilt in

A ⟶ Aα_{1}|Aα_{2}| … |Aα_{r} und A ⟶ β_{1}|β_{2}| … |β_{s}.

G_{1} = (V ∪ {B}, T, P_{1}, S) entsteht durch Hinzufügen der Variablen B und durch Ersetzen aller A-Produktionen:

\begin{matrix}A ⟶ β_{i} \\ A ⟶ β_{i}B \end{matrix} \} 1 ≤ i ≤ s

\begin{matrix}B ⟶ α_{i} \\ B ⟶ α_{i}B \end{matrix} \} 1 ≤ i ≤ r

Damit ergeben sich folgende Schritte, die an einem Beispiel illustriert werden:

A_{1} ⟶ A_{2}A_{3}

A_{2} ⟶ A_{3}A_{1}|b

A_{3} ⟶ A_{1}A_{2}|a

Durch rückwärtiges Einsetzen aller Möglichkeiten kann man für A_{k} ⟶ A_{j}γ erreichen, daß j ≥ k ist.

A_{1} ⟶ A_{2}A_{3}

5 Kontextfreie Sprachen  83  5.7 GNF (anderes Verfahren)

A_{2} ⟶ A_{3}A_{1}|b

A_{3} ⟶ A_{2}A_{3}A_{2}|a ⇝ A_{3} ⟶ A_{3}A_{1}A_{3}A_{2} ; A_{3} ⟶ bA_{3}A_{2} ; A_{3} ⟶ a

Für j = k wird (II) angewendet:

\begin{matrix}A_{1} ⟶ A_{2}A_{3} \\ A_{2} ⟶ A_{3}A_{1}|b \end{matrix}

A_{3} ⟶ bA_{3}A_{2} A_{3} ⟶ bA_{3}A_{2}B_{3} A_{3} ⟶ a A_{3} ⟶ aB_{3} B_{3} ⟶ A_{1}A_{3}A_{2}

\begin{matrix}α_{1} = A_{1}A_{3}A_{2} \\ β_{1} = bA_{3}A_{2} \\ β_{2} = a \end{matrix}

Jetzt hat man Produktionen folgenden Typs:

1. A_{i} ⟶ A_{j}γ mit j > i

2. A_{i} ⟶ aγ, a ∈ T

3. B_{i} ⟶ γ, γ ∈ (V ∪ {B_{1}, …, B_{i−1}})^{∗} Für den größten Index m, also für A_{m}, scheidet 1. aus, also steht ein Terminal an erster Stelle; ist j > i, so folgen weitere Einsetzungen: Alle A_{3} ⟶ … haben ein Terminal am Anfang, also kann man damit A_{2} ⟶ A_{3} … umformen;

A_{1} ⟶ A_{2}A_{3}

A_{2} ⟶ b
\begin{matrix}A_{2} ⟶ bA_{3}A_{2}A_{1} \\ A_{2} ⟶ bA_{3}A_{2}B_{3}A_{1} \\ A_{2} ⟶ aA_{1} \\ A_{2} ⟶ aB_{3}A_{1} \end{matrix}  ⟸  \begin{matrix}A_{3} ⟶ bA_{3}A_{2} \\ A_{3} ⟶ bA_{3}A_{2}B_{3} \\ A_{3} ⟶ a \\ A_{3} ⟶ aB_{3} \end{matrix}

Nun haben alle A_{2} die richtige Form und werden für A_{1} verwendet:

A_{1} ⟶ bA_{3}

A_{1} ⟶ bA_{3}A_{2}A_{1}A_{3}
A_{1} ⟶ bA_{3}A_{2}B_{3}A_{1}A_{3}
A_{1} ⟶ aA_{1}A_{3}
A_{1} ⟶ aB_{3}A_{1}A_{3}

Nun setzt man noch in B_{3} ⟶ A_{1}A_{3}A_{2} und in B_{3} ⟶ A_{1}A_{3}A_{2}B_{3} die fünf Möglichkeiten für A_{1} ein und erhält zehn korrekte Produktionen mit B_{3} auf der linken Seite.

6 Kellerautomaten

6.1 Kellerautomaten und kontextfreie Sprachen

Definition 6.1 (Kellerautomat)

Ein Kellerautomat ist ein Tupel

M = (Q, Σ, Γ, δ, q_{0}, $, F)

mit

Q = endliche Menge von Zuständen
Σ = Eingabealphabet
Γ = Kelleralphabet (Achtung Σ ⊆ Γ ist erlaubt)
δ ⊆ Q × (Σ ∪ {λ}) × Γ × Q × Γ^{∗}
= eine endliche Menge von Übergängen,
q_{0} ∈ Q
= Startzustand
$ ∈ Γ
= Kellerbodenzeichen
F ⊆ Menge von Endzuständen

Die Idee eines Kellerautomaten ist in der Abbildung 6.1 wiedergegeben. Ähnlich wie beim endlichen Automaten läßt sich die Spezifikation eines Kellerautomaten M = (Q, Σ, Γ, δ, q_{0}, $, F) durch einen gerichteten Graphen darstellen, wobei Übergänge (q, a, x, q′, y) wie in der Abbildung 6.2 gezeichnet werden.

6 Kellerautomaten  85 6.1 Kellerautomaten und k. f. Sprachen

endliche Kontrolle

[figure] q

a_{1} a_{2} a_{3}

X

⋮ $

Keller

PUSH & POP Eingabe ONE-WAY-READ ONLY

Abbildung 6.1: Graphische Darstellung eines Kellerautomaten

[figure: (a, x, y); q; q′; für (q, a, x, q′, y) ∈ δ]

Abbildung 6.2: Graphische Darstellung eines Übergangs

Definition 6.2 (Konfiguration)

Eine Konfiguration ist ein Tripel (q, w, γ) ∈ Q × Σ^{∗} × Γ^{∗}.

Dabei bedeutet

q  der augenblickliche Zustand,
w ∈ Σ^{∗} die noch zu lesende Eingabe und
γ ∈ Γ^{∗} der augenblickliche Kellerinhalt.

Das oberste Element des Kellers in w steht dabei links in γ.

Definition 6.3 (Start- und Folgekonfiguration)

Die Startkonfiguration auf eine Eingabe w ∈ Σ^{∗} ist das Tripel:

Start(w) = (q_{0}, w, $).

Seien (q, w, γ), (q′, w′, γ′) Konfigurationen. Dann heißt (q′, w′, γ′) eine Folgekonfiguration von (q, w, γ), wenn gilt:

w = aw′, γ = xγ′′, γ′ = yγ′′ für einen Übergang (q, a, x, q′, y) ∈ δ.

Man beachte: a ∈ Σ ∪ {λ}, x ∈ Γ, y ∈ Γ^{∗} Schreibweise: (q, w, γ) |_{\overline{M}} (q′, w′, γ′)

|\frac{⋆}{M} bezeichnet die reflexive transitive Hülle von |_{\overline{M}} .

Definition 6.4 (Mit Endzustand akzeptierte Sprache L(M))

Die (mit Endzustand) akzeptierte Sprache ist

L(M) = \{w ∈ Σ^{∗}|(q_{0}, w, $) |\frac{⋆}{M} (q_{f}, λ, γ) für ein q_{f} ∈ F, γ ∈ Γ^{∗}\}

Definition 6.5 (Mit leerem Keller akzeptierte Sprache N(M))

Die mit leerem Keller akzeptierte Sprache ist

N(M) = \{w ∈ Σ^{∗}|(q_{0}, w, $) |\frac{⋆}{M} (q, λ, λ) für ein q ∈ Q\}

Beispiel:

Gegeben sei folgender Kellerautomat:

[figure: q; r; s; (λ, $, λ); (λ, z, z), z ∈ \{a, b, $\}; (x, x, λ), x ∈ \{a, b\}; \begin{matrix}(x, $, x$), x ∈ \{a, b\} \\ (x, y, xy), x, y ∈ \{a, b\} \end{matrix}]

Für L(M) und N(M) gilt dann:

L(M) = N(M) = {ww^{R}|w ∈ {a, b}^{∗}}
= {w_{1} … w_{n}w_{n} … w_{1}|w_{i} ∈ {a, b}}

Der Automat arbeitet auf die Eingabe w_{1} … w_{n}w_{n} … w_{1} nicht-deterministisch wie folgt:

(q, w_{1} … w_{n}w_{n} … w_{1}, $) |\frac{⋆}{M} (q, w_{i+1}w_{i+2} … w_{n}w_{n} … w_{1}, w_{i} … w_{1}$)
|\frac{⋆}{M} (q, w_{n} … w_{1}, w_{n} … w_{1}$)
|_{\overline{M}} (r, w_{n} … w_{1}, w_{n} … w_{1}$)
|\frac{⋆}{M} (r, w_{i} … w_{1}, w_{i} … w_{1}$)
|\frac{⋆}{M} (r, λ, $)
|_{\overline{M}} (s, λ, λ)

Dabei ist s ein Endzustand. Keine andere Rechnung ist erfolgreich!

Definition 6.6 (Deterministischer Kellerautomat)

Ein Kellerautomat M = (Q, Σ, Γ, q_{0}, δ, $, F) heißt deterministisch, wenn gilt:

(q, a, x, q_{1}, γ_{1}) ∈ δ, (q, a′, x, q_{2}, γ_{2}) ∈ δ, a′ ∈ {a, λ} ⇒ a = a′, q_{1} = q_{2}, γ_{1} = γ_{2} Bemerkung

Ein Kellerautomat M ist genau dann deterministisch, wenn es zu jeder Konfiguration höchstens eine Folgekonfiguration gibt.

Deterministische Kellerautomaten werden erst im nächsten Abschnitt genauer behandelt.

Satz 6.1 Sei L = L(M) (bzw. L = N(M)) für einen Kellerautomaten M = (Q, Σ, q_{0}, δ, $, F). Dann existiert effektiv ein Kellerautomat M′ mit N(M′) = L (bzw. L(M′) = L)

Beweis:

1. Sei L= L(M). Der Automat M′ mit L(M) = N(M′) kann dann wie folgt konstruiert werden: Wähle neue Zustände q′_{0} und q_{e}, ein neues Kellerbodenzeichen c| ∉ Γ und füge folgende neue Übergänge zu den alten hinzu:

(q′_{0}, λ, c| , q_{0}, $c| )
(q_{f}, λ, x, q_{e}, λ) für alle q_{f} ∈ F, x ∈ Γ
(q_{e}, λ, x, q_{e}, λ)  für alle x ∈ (Γ ∪ c| )

[figure: q′_{0}; q_{e}; M; q_{0}; q_{f} ∈ F; (λ, c| , $c| ); (λ, x, λ); (λ, x, λ); M′:]

Abbildung 6.3: Konstruktion von M′ mit L(M) = L(M′) = N(M′)

Für M′ = ({q′_{0}, q_{e}} ∪ Q, Σ, Γ ∪ {c| }, q′_{0}, δ′, c| , {q_{e}}) gilt dann L(M) = L(M′) = N(M′).

2. Sei jetzt L = N(M) mit M = (Q, Σ, Γ, δ, q_{0}, ∅).

Beachte: Eine Spezifikation von F ist überflüssig. Wir wählen daher F = ∅ Füge neue Zustände q′_{0} und q_{e}, ein neues Kellerbodenzeichen c| und Übergänge (q′_{0}, λ, c| , q_{0}, $c| ) und (q, λ, c| , q_{e}, λ) ∀q ∈ Q ein. Dabei ist q_{0} der neue Startzustand und q_{e} der neue Endzustand. Dann gilt für M′ = ({q′_{0}, q_{e}} ∪ Q, Σ, Γ ∪ {c| }, δ′, q′_{0}, {q_{e}}) N(M) = N(M′) = L(M′). Abbildung 6.4 zeigt den Automaten M′.

Definition 6.7 (präfixfrei)

L ⊆ Σ^{∗} heißt präfixfrei, wenn gilt LΣ^{+} ∩ L = ∅, d.h. uv ∈ L, v ≠ λ ⇒ u ∉ L

[figure: q′_{0}; q_{e}; M; q_{0}; q ∈ Q; (λ, c| , $c| ); (λ, c| , λ); M′:]

Abbildung 6.4: Kellerautomat M′ mit N(M) = L(M′) = N(M′)

Bemerkung

• Für den aus M konstruierten Automaten M′ (Abbildung 6.4) mit N(M) = L(M′) = N(M′) gilt:

M deterministisch ⇒ M′ deterministisch

• Der aus M konstruierte Automat M′ (Abbildung 6.3) mit L(M) = N(M′) = L(M′) ist im allgemeinen nicht deterministisch, auch wenn M deterministisch war! Wenn L = L(M) präfixfrei ist und M deterministisch, dann gilt Œ

(q, a, x, q′, γ) ∈ δ ⇒ q ∉ F.

Obige Konstruktionen ergeben dann:

∃M : L = L(M), M det., L präfixfrei gdw. ∃ M : L = N(M), M det.

Beispiel:

Gegeben sei folgender Automat:

[figure: q; s; (b, a, λ); \begin{matrix}(a, $, a) \\ (a, a, aa) \end{matrix}; M:; (b, a, λ)]

Dann gilt:

N(M) = {a^{n}b^{n}|n ≥ 1}
L(M) = {a^{m}b^{n}|1 ≤ n ≤ m}

Die Sprachen L(M) und N(M) sind also nicht gleich! Zum Beispiel gilt:

(q, a^{2}b, $) ⊢ (q, ab, a) ⊢ (q, b, aa) ⊢ (s, λ, a).

In diesem Fall wurde zwar ein Endzustand erreicht, der Keller ist jedoch nicht leer.

Dieser Automat läßt sich erweitern zu:

[figure: q; r; s; (λ, $, λ); (b, a, λ); (b, a, λ); \begin{matrix}(a, $, a$) \\ (a, a, aa) \end{matrix}]

Dann gilt: L(M′) = N(M′) = {a^{n}b^{n}|n ≥ 1}

Definition 6.8 (Linksableitung)

Sei G = (V, Σ, P, S) kontextfrei. Dann heißt

α_{0}⟹_{G}α_{1}⟹_{G} … ⟹_{G}α_{n}

eine Linksableitung, wenn in jedem Schritt α_{i}⟹_{G}α_{i+1} das am weitesten links stehende Nichtterminal ersetzt wurde, d. h.

α_{i} = γAδ⟹_{A→β}α_{i+1} = γβδ mit γ ∈ Σ^{∗}

Für Linksableitungen α_{0}⟹_{G}^{⋆}α_{n} schreibt man auch α_{0}⟹_{links}^{∗}α_{n}.

Bemerkung

Linksableitungen entsprechen 1 : 1 Ableitungsbäumen (bzw. Wäldern, falls |α_{0}| > 1). Es gilt

somit L(G) = {w ∈ Σ^{∗}|S ⟹_{links}^{∗}w}.

Mitteilung

Eine kontextfreie Grammatik G heißt eindeutig , wenn es zu jedem w ∈ L(G) genau eine Linksableitung, d. h. genau einen Ableitungsbaum B gibt mit Wurzel(B) = S, Rand(B) = w.

L ⊆ Σ^{∗} heißt eindeutig kontextfrei, wenn es eine eindeutige kontextfreie Grammatik G mit L=L(G) gibt. Sonst heißt sie mehrdeutig kontextfrei. Ein Beispiel für eine mehrdeutige kontextfreie Sprache ist die Sprache:

\begin{aligned}L & = & L_{1} ∪ L_{2} mit \\ L_{1} & = & \{a^{m}b^{n}c^{n}d^{m}|m, n ≥ 0\} \\ L_{2} & = & \{a^{m}b^{m}c^{n}d^{n}|m, n ≥ 0\} \end{aligned}

Dann hat a^{m}b^{m}c^{m}d^{m} ∈ L_{1} ∩ L_{2} ⊆ L für ein genügend groß gewähltes m notwendigerweise 2 Ableitungsbäume. Dies zeigt Abbildung 6.5.

[figure: a^{m}; d^{m}; b^{n}; c^{n}; a^{m}; b^{m}; c^{n}; d^{n}]
Abbildung 6.5: 2 Ableitungsbäume für a^{m}b^{m}c^{m}d^{m}

Beweis: Siehe Standardlehrbuch.

Das Ziel dieses Abschnittes ist der Beweis des folgenden Satzes:

Satz 6.2 Eine Sprache ist genau dann kontextfrei, wenn sie von einem Kellerautomaten akzeptiert wird.

Wir beweisen diesen Satz in zwei Schritten und zeigen zunächst:

Satz 6.3 Sei L = L(G), G = (V, Σ, P, S) kontextfrei. Dann existiert effektiv ein Kellerautomat M = (Q, Σ, Γ, q_{0}, δ, $, ∅) mit L = N(M).

Beweis:

Der Kellerautomat wird wie folgt definiert:

Q = {q_{0}} (nur ein Zustand)
Γ = V ∪ Σ
$ = S und
δ : (q_{0}, λ, A, q_{0}, α)  , falls A → α ∈ P
(q_{0}, a, a, q_{0}, λ)  , falls a ∈ Σ

Eine graphische Darstellung zeigt Abbildung 6.6.

[figure: q_{0}; \begin{matrix}(λ, A, α) \\ (a, a, λ) \end{matrix}]

Abbildung 6.6: Kellerautomat zu G mit L = N(M)

6 Kellerautomaten  91 6.1 Kellerautomaten und k. f. Sprachen

Wir zeigen im folgenden mehr als oben behauptet wurde:

(q_{0}, w, α) |\frac{⋆}{M} (q_{0}, λ, λ) gdw. α⟹_{G}^{⋆}w ∀α ∈ (V ∪ Σ)^{∗}, w ∈ Σ^{∗}

Zu zeigen wäre dies eigentlich nur für α = S.

a.) Behauptung: (q_{0}, w, α) |\frac{⋆}{M} (q_{0}, λ, λ) ⟹ α⟹_{G}^{⋆}w

Beweis mit Induktion nach i: Sei (q_{0}, w, α) |\frac{i}{M} (q_{0}, λ, λ). i = 0 : In diesem Fall ist w = α = λ. Dann gilt

α = λ⟹_{G}^{⋆}λ = w

i > 0 : In diesem Fall gilt α ≠ λ. Es gibt 2 Fälle:

1.) α = aα′ mit a ∈ Σ Dann gilt:

(q_{0}, w, aα′) |_{\overline{M}}  (q_{0}, w′, α′) mit w = aw′
|\frac{i−1}{M} (q_{0}, λ, λ)  α′⟹_{G}^{⋆}w′ nach Induktion

Dann gilt auch α = aα′⟹_{G}^{⋆}aw′ = w.

2.) α = Aα′ mit A ∈ V

Dann gilt:

(q_{0}, w, Aα′) |_{\overline{M}}  (q_{0}, w, βα′) für ein A → β ∈ P
|\frac{i−1}{M} (q_{0}, λ, λ) βα′⟹_{G}^{⋆}w nach Induktion.

Dann gilt auch α = Aα′⟹_{G}βα′⟹_{G}^{⋆}w.

b.) Behauptung: α⟹_{G}^{⋆}w ⟹ (q_{0}, w, α) |\frac{⋆}{M} (q_{0}, λ, λ)

Beweis mit Induktion nach i: Sei α⟹_{G}^{i}w. i = 0 : Dann ist α = w ∈ Σ^{∗}

(q_{0}, w, α) = (q_{0}, w, w) |\frac{|w|}{M} (q_{0}, λ, λ) i ≥ 1 : α⟹_{G}^{i}w. Dann gilt Œ α = w_{1}Aα′, w_{1} ∈ Σ^{∗}. (Es reicht Linksableitung zu

betrachten.)

\begin{aligned}α & ⟹_{G} & α_{1} = w_{1}βα′, A → β ∈ P \\ & ⟹_{G}^{i−1} & w = w_{1}w′ \end{aligned}

(q_{0}, w, α) = (q_{0}, w_{1}w′, α) = (q_{0}, w_{1}w′, w_{1}Aα′)
|\frac{|w_{1}|}{M} (q_{0}, w′, Aα′)
|_{\overline{M}}  (q_{0}, w′, βα′)
|\frac{⋆}{M}  (q_{0}, λ, λ), da βα′⟹_{G}^{i−1}w′.

Bemerkung

Der Kellerautomat simuliert ”Top-Down“ eine Linksableitung.

Beispiel:

Der Kellerautomat zu S → aSb|ab ist:

[figure]

[figure]

[figure]

(λ, S, aSb)

(λ, S, ab) (nicht deterministisch) (a, a, λ) (b, b, λ)

Bemerkung

Ist A → aα ∈ P mit a ∈ Σ, dann kann

[figure: (λ, A, aα); durch; (a, A, α)]

ersetzt werden. Ist insbesondere G = (V, Σ, P, S) in GNF, d.h. alle Regeln sind von der Form A → aα mit a ∈ Σ, α ∈ V^{∗}, dann sehen alle Übergänge wie folgt aus: (q_{0}, a, A, q_{0}, α). Es gilt also Œ δ ⊆ Q × Σ × Γ × Q × Γ^{∗}. Das zeigt, daß kontextfreie Sprachen sich nicht-deterministisch in linearer Zeit erkennen lassen, also: C. F. ⊆ NTIME(n).

Satz 6.4 Sei M = (Q, Σ, Γ, q_{0}, δ, $, ∅) ein Kellerautomat. Dann existiert effektiv eine kontextfreie Grammatik G = (V, Σ, P, S) mit L(G) = N(M).

Beweis:

Konstruiere die kontextfreie Grammatik G = (V, Σ, P, S) mit L = N(M) = L(G) wie folgt: V = {S} ∪ {[pAq]|p, q ∈ Q, A ∈ Γ}. Dabei besteht P aus:

1. S → [q_{0}$q] für alle q ∈ Q

(Idee : (q_{0}, w, $) |\frac{⋆}{M} (q, λ, λ) gdw. [q_{0}, $, q]⟹_{G}^{⋆}w

2. [q, A, q_{m+1}] → a[q_{1}, B_{1}, q_{2}] … [q_{m}B_{m}q_{m+1}] für alle m ≥ 0, q, q_{1}, … q_{m+1} ∈ Q, a ∈ Σ ∪ {λ} falls (q, a, A, q_{1}, B_{1} … B_{m}) ∈ δ. Für m = 0 ist (q, a, A, q_{1}, λ) ∈ δ und [q, A, q_{1}] → a ∈ P mit a ∈ Σ ∪ {λ} Wir zeigen:

Für alle n ≥ 1, i ≥ 1, p, q ∈ Q, A_{1}, …, A_{n} ∈ Γ, w ∈ Σ^{∗} gilt die Äquivalenz:

∃p_{1} … p_{n+1} ∈ Q, p = p_{1}, p_{n+1} = q, [p_{1}A_{1}p_{2}][p_{2}A_{2}p_{3}] … [p_{n}A_{n}p_{n+1}]⟹_{G}^{i}w

gdw. (p, w, A_{1} … A_{n}) |\frac{i}{M} (q, λ, λ)

”⇒“

i = 1 : Dann ist n = 1, [p_{1}A_{1}p_{2}]⟹^{1}a ∈ Σ ∪ {λ}, (p_{1}, a, A, p_{2}, λ) ∈ δ mit w = a

und (p_{1}, a, A_{1}) |\frac{1}{M} (p_{2}, λ, λ)

i > 1 : Betrachte: Linksableitung. Es existiert eine Regel

[p_{1}, A, \underbrace{p_{2}}_{q_{m}+1}] → a[q_{1}B_{1}q_{2}] … [q_{m}B_{m} \underbrace{q_{m+1}}_{p_{2}}] ∈ P,

die als erstes angewandt wurde und

a[q_{1}B_{1}q_{2}] … [q_{m}B_{m}p_{2}][p_{2}A_{2}p_{3}] … [p_{n}A_{n}p_{n+1}]⟹_{G}^{i−1}w = aw′.

Nach Induktion gilt (q_{1}, w′, B_{1} … B_{m}A_{2} … A_{n}) |\frac{i−1}{M} (p_{n+1}, λ, λ) = (q, λ, λ) Beachte: für m = 0 gilt q_{1} = p_{2}.

”⇐“

i = 1 : (p, w, A_{1} … A_{n}) |\frac{1}{M} (q, λ, λ).

Dann ist w = a ∈ Σ ∪ {λ}, n = 1, (p, a, A_{1}, q, λ) ∈ δ und [pa_{1}q] → a ∈ P.

i > 1 : Dann existiert ein Übergang r = (p, a, A_{1}, q_{1}, B_{1} … B_{m}) ∈ δ, der als erstes

gewählt wird. Schreibe w = aw′.

(p, w, A_{1} … A_{n}) |\frac{1}{M}  (q_{1}, w′, B_{1} … B_{m}A_{2} … A_{n})
|\frac{i−1}{M} (q, λ, λ)

Mit Induktion folgt: ∃q_{1}, …, q_{m}, q_{m+1}, p_{2}, …, p_{n+1} so, daß q_{m+1} = p_{2}, p_{n+1} = q und

a[q_{1}B_{1}q_{2}] … [q_{m}B_{m}q_{m+1}][p_{2}A_{2}p_{3}] … [p_{n}A_{n}p_{n+1}]⟹_{G}^{i−1}aw′

Ersetze r durch die entsprechende Regel: [p_{1}A_{1}p_{2}] → [q_{1}B_{1}q_{2}] … [q_{m}B_{m}q_{m+1}] mit p_{1} = p. Dies ergibt die Behauptung.

6 Kellerautomaten  94  6.2 Deterministische Kellerautomaten

Beispiel:

L = N(M) = {a^{n}b^{n}|n ≥ 1}

Der Kellerautomat sieht folgendermaßen aus:

[figure: p; (b, a, λ); \begin{matrix}(a, $, a) \\ (a, a, aa) \end{matrix}; (b, a, λ); q]

\begin{aligned}S & → & [p$, p]|[p$q] \\ [p$q_{2}] & → & a[paq_{2}], q_{2} ∈ \{p, q\} \\ [paq_{3}] & → & a[paq_{2}][q_{2}aq_{3}]q_{2}, q_{3} ∈ \{p, q\} \\ [paq] & → & b \\ [qaq] & → & b \end{aligned}

Der Keller kann nur in q geleert werden, d.h. [p$p] ist unproduktiv und wird nicht weiter beachtet. Produktiv sind [qaq], [paq], [p$q], S.

Schreibe nun B für [qaq], C für [paq] und S für [p$q]. Dann ergibt sich

\begin{aligned}S & → & aC \\ C & → & aCB|b \\ B & → & b \end{aligned}

Schließlich kann die Regel für B in C eingesetzt werden, womit sich folgende Grammatik ergibt:

\begin{aligned}S & → & aC \\ C & → & aCb|b \end{aligned}

6.2 Deterministische Kellerautomaten

Sei M = (Q, Σ, Γ, δ, q_{0}, F, $) ein Kellerautomat. In diesem Abschnitt untersuchen wir deterministische Automaten gemäß der Definition 6.6 auf Seite 86. Der Automat M ist danach deterministisch, wenn gilt

\begin{matrix}(q, a, x, q_{1}, γ_{1}), (q, a′, x, q_{2}, γ_{2}) ∈ δ, \\ a′ ∈ \{λ, a\} ⇒ a = a′, q_{1} = q_{2}, γ_{1} = γ_{2} \end{matrix}

Falls M deterministisch ist, dann ist für jede Konfiguration (q, w, γ) höchstens eine Folgekonfiguration definiert, d.h. alle Rechnungen sind eindeutig.

Definition 6.9 (λ-Kante / λ-Übergang)

Kanten der Form (p, λ, x, q, γ) ∈ δ heißen λ-Kanten, die entsprechenden Übergänge heißen λ-Übergänge.

Definition 6.10 (deterministisch kontextfreie Sprache)

Eine Sprache L ⊆ Σ^{∗} heißt deterministisch kontextfrei, wenn ein deterministischer Kellerautomat M mit L = L(M) existiert.

Satz 6.5 Sei L ⊆ Σ^{∗} deterministisch kontextfrei, dann existiert effektiv ein deterministischer Kellerautomat M̄ mit L(M̄) = L̄ = Σ^{∗}\L

Aus dem Beweis wird herauskommen:

L deterministisch kontextfrei ⇒ L ∈ DTIME(O(n)) Intuition: vertausche Q\F mit F. Diese Idee ist jedoch zunächst nicht durchführbar:

Probleme

1. Ein Wort kann abgelehnt werden, weil

a) die Rechnung wegen leerem Keller abbricht

b) die Eingabe w nicht ganz gelesen wird, da keine Folgekonfiguration in der Rechnung definiert ist

c) die Rechnung in eine Endlosschleife von λ-Übergängen gerät

2. Ein Wort kann auch in folgender Situation akzeptiert werden

(q_{0}, w, $) |^{\underline{⋆}} (q, λ, γ) |^{\underline{⋆}} (q_{1} (∉ F), λ, γ_{1}) |^{\underline{⋆}} (q_{2} (∈ F), λ, γ_{2})

Auch hier ist eine Vertauschung von Q\F mit F fehlerhaft.

Abarbeitung der Probleme

zu 1a) Führe einen neuen Startzustand q′_{0}, ein neues Zeichen c| und neue Übergänge wie folgt ein :

[figure: q′_{0}; q_{0}; (λ, $, $c| )]

M_{2} = (Q ∪ {q′_{0}}, Σ, Γ ∪ {c| }, δ, q′_{0}, F, $)

Œ leert M ab jetzt nie seinen Keller, d.h. 1a) ist gelöst. zu 1b) Folgekonfigurationen sind immer definiert durch folgende Konstruktion:

Führe einen neuen Zustand d (”d“ wie ”dead“) und eine neue Kante

[figure: p; (a, x, x′); d; (b, y, y) , ∀b ∈ Σ, ∀y ∈ Γ]

ein, falls in dem ursprünglichen Automaten keine Folgekonfiguration von (p, a, x) definiert war, p ∈ Q, a ∈ Σ, x ∈ Γ. Der Automat

M_{1} = (Q ∪ {d}, Σ, Γ, q_{0}, δ_{1}, F, $)

löst das Problem 1a). (”d ist ein Fangzustand wie bei endlichen Automaten“)

Œ M ist ab jetzt vollständig und leert nie den Keller, also sind für M 1a) und 1b) gelöst.

zu 1c) Sei (q, w, xγ′) eine Konfiguration mit q ∈ Q, w ∈ Σ^{∗}, x ∈ Γ, γ′ ∈ Γ^{∗}

Folgendes ist möglich:

I a) Es gibt unendlich viele Folgekonfigurationen von λ-Übergängen (ohne daß der Keller kürzer als |xγ′| wird) und dabei wird ein Endzustand durchlaufen.

b) wie Ia) ohne Durchlaufen eines Endzustandes

II nicht Ia) und nicht Ib).

Beobachtung

Situation Ia) oder Ib) tritt genau dann auf wenn dies für die Konfiguration (q, λ, x) gilt.

Führe zwei neue Zustände d, f ein (wenn M schon einen toten Fangzustand hat, kann dieser für d gewählt werden).

Falls bei (q, λ, x) die Situation Ia) vorliegt, ersetze die für ein q′ ∈ Q, x′ ∈ Γ^{+} existierende Kante

[figure: q; q′; (λ, x, x′)]

durch die neuen Kanten

[figure: q; f; (λ, x, x); d; (b, y, y); (b, y, y); , b ∈ Σ, y ∈ Γ]

Falls bei (q, λ, x) die Situation Ib) vorliegt, ersetze die Kante

[figure: q; q′; (λ, x, x′)]

durch die Kanten

[figure: q; (λ, x, x); d; (b, y, y); , b ∈ Σ, y ∈ Γ]

Setze

M_{3} = (Q ∪ {d, f}, Σ, Γ, δ′, q′_{0}, F ∪ {f}, $)

mit δ′ wie oben erklärt.

Wir haben folgendes erreicht:

• M_{3} leert nie seinen Keller

• Für die Konfiguration (q, w, γ) ist höchstens ein Folgezustand definiert und genau einer falls w ∈ Σ^{+}

• Für (q, w, γ) existiert stets ein q′ ∈ Q, γ′ ∈ Γ^{∗} mit (q, w, γ) |^{\underline{⋆}} (q′, λ, γ′), ohne daß eine Folgekonfoguration definiert ist. Insbesondere wird die Eingabe ganz gelesen. Dies liegt daran :

Bei M_{3} tritt nur noch Situation II auf. Aber nach endlich vielen Schritten wird die Eingabe kürzer oder der Keller kleiner.

Wir müssen noch zeigen, daß man effektiv zwischen den Situationen Ia), Ib) und II unterscheiden kann. Aufgrund der obigen Beobachtung reicht es, eine Konfiguration (q, λ, x) mit q ∈ Q, x ∈ Γ zu betrachten. Wir modifizieren zunächst M zu einem Kellerautomaten M′ wie folgt:

Definiere einen neuen Zustand Kl (wie Keller-leeren) und ersetze alle Kanten

[figure: p; p′; (a, y, γ); ∈ δ mit a ∈ Σ.]

durch

[figure: p; (λ, y, λ); Kl; (λ, y, λ); , y ∈ Γ.]

Der neue Automat M′ = (Q ∪ {Kl}, Σ, Γ, δ′, q_{0}, F, $) ist vollständig und es gibt nur λ-Übergänge. Man sieht leicht, daß sich M′ bezüglich den Situationen Ia, Ib, II auf die Konfiguration (q, λ, x) genauso verhält wie der ursprüngliche Automat M. Definiere jetzt einen Kellerautomaten M(q, x) durch

M(q, x) = (Q ∪ {Kl}, Σ, Γ, δ′, q, F, x). Der Automat M(q, x) unterscheidet sich von M′ nur durch einen anderen Startzustand (jetzt: q) und durch ein neues Kellerbodenzeichen (jetzt: x). Beobachtung

Es sind äquivalent:

1. Auf (q, w, xγ′) folgen in M unendlich viele λ-Übergänge, bei denen der Keller nie kürzer als |xγ′| ist (Situation Ia) oder Ib)).

2. Auf (q, λ, x) folgen in M′ unendlich viele Konfigurationen.

3. Es gilt: λ ∉ N(M(q, x))

Dies zeigt:

• λ ∈ N(M(q, x)) ⟺ II Sei also λ ∉ N(M(q, x)), dann gilt:

• λ ∈ L(M(q, x)) ⟺ Ia

• λ ∉ L(M(q, x)) ⟺ Ib Dies zeigt, daß man effektiv zwischen Ia) Ib) und II) unterscheiden kann. Einschub

Der Satz 6.5 ist noch nicht bewiesen. Wir können jedoch jetzt schon das folgende Resultat aus der Konstruktion von M_{3} ableiten.

Satz 6.6 Sei L ⊆ Σ^{∗} deterministisch kontextfrei. Dann gibt es einen Algorithmus, der auf Eingabe von w ∈ Σ^{∗} mit |w| = n in der Zeit O(n) entscheidet, ob w ∈ L gilt.

Beweis:

M_{3} zeigt:

Es gibt eine Konstante c > 0 so, daß für jede Konfiguration von (q, w, γ) eine Rechnung

(q, w, γ) |\frac{i}{M_{3}} (q′, w′, γ′) existiert, mit i ≤ c und (|w′| < |w| oder |γ′| < |γ|).

Sei k ≥ Max{|γ_{2}| − 1 | (q_{1}, a, x, q_{2}, γ_{2}) ∈ δ}. Dann gilt ferner :

|γ′| − |γ| ≤ kc < kc + 1

Definiere eine Gewichtsfunktion g

g : Σ ∪ Γ → \{0} (Œ gilt Σ ∩ Γ = ∅)

durch

g(a) = kc + 1 für a ∈ Σ
g(x) = 1 für x ∈ Γ

Setze g multiplikativ auf (Σ ∪ Γ)^{∗} fort

g(w_{1} … w_{n}) = ∑_{i=1}^{n} g(w_{i})

Definiere g(q, w, γ) durch

g(q, w, γ) = g(wγ) = g(w) + g(γ)

Dann existiert für alle (q, w, γ) die Rechnung

(q, w, γ) |\frac{i}{M_{3}} (q′, w′, γ′)

mit i ≤ c und g(q, w, γ) > g(q′, w′, γ′)

Daher sind auf (q, w, γ) höchstens c · g(wγ) Rechenschritte möglich.

Insbesondere gilt: Für alle q ∈ Q, w ∈ Σ^{∗} existiert ein m ≤ c · g(w) = c · (kc + 1) · |w| ∈ O(n) mit

(q, w, $) |\frac{m}{M_{3}} (q′, λ, γ′)

und es ist keine Folgekonfiguration von (q′, λ, γ′) definiert.

Bei M_{3} besteht noch das Problem II

Das heißt, nach dem Lesen der Eingabe, kann noch eine gewisse Zahl von λ-Übergängen gemacht werden. Hierbei werden eventuell Endzustände und Nicht-Endzutände durchlaufen. Wir können annehmen:

(q, w, $) |\frac{⋆}{M} (q′, w′, γ′), w′ = λ
|_{\overline{M}} (q_{1}, λ, γ_{1})
⋮
|_{\overline{M}} (q_{n}, λ, γ_{n})

und auf (q_{n}, λ, γ_{n}) ist keine Folgekonfiguration definiert.

Es gilt:

w ∈ L(M) ⟺ {q_{1}, …, q_{n}} ∩ F ≠ ∅

\underline{Idee:} Falls q_{i} ∈ F (bzw. q_{i} ∉ F) gebe dies weiter

Œ M leert nie seinen Keller mit M = (Q, Σ, Γ, δ, q_{0}, F, $).

Jede Rechnung von M ist endlich. Jede Eingabe wird ganz gelesen.

Definiere M̄ wie folgt:

Q̄ = Q × {0, 1, 2}, 3 Kopien von Q
F̄ = Q × {2}
q̄_{0} = (q_{0}, i_{0}), mit i_{0} = 0 falls q_{0} ∉ F, i_{0} = 1 sonst

Definition der Übergänge von M̄:

[figure: (λ, x, γ); p, 0; q, i; und; (λ, x, γ); p, 1; q, 1; definiere; (λ, x, γ); p; q; ∈ δ; Für; mit i = 0 falls q ∉ F; und i = 1 sonst]

Die Folge dieser Definition ist: Sei (q, λ, γ) |\frac{⋆}{M} (q′, λ, γ′) und i = 0 falls q ∉ F, i = 1 sonst.

Dann sind äquivalent:

a) Die Rechnung (q, λ, γ) |\frac{⋆}{M} (q′, λ, γ′) durchläuft einen Endzustand.

b) Es gibt folgende Rechnung in M̄: ((q, i), λ, γ) |\frac{⋆}{M̄} ((q, 1), λ, γ′)

[figure: (λ, x, x); p, 0; p, 2; (a, x, γ); p, 1; q, i; definiere; (a, x, γ); p; q; ∈ δ mit a ∈ Σ; Für; mit i = 0 falls q ∈ F; und i = 1 sonst; (a, x, γ)]

Beachte: Ist (p, a, x, q, γ) ∈ δ für ein a ∈ Σ, so ist kein λ-Übergang (p, λ, x, q′, λ′) definiert.

Setze M̄ = (Q̄, Σ, Γ, δ̄, (q_{0}, i_{0}), Q × {2}, $) mit δ̄ wie oben.

Behauptung: L(M̄) = Σ^{∗}\L Beweis:

Sei w ∈ Σ^{∗}. Wir behandeln den Fall w ≠ λ. Die geringfügige Modifikation für w = λ sei dem Leser überlassen. Dann gibt es genau die Rechnung

(q_{0}, w, $) |\frac{⋆}{M} (q′, w′, γ′), w′ ≠ λ
|_{\overline{M}} (q_{1}, λ, γ_{1})
⋮
|_{\overline{M}} (q_{n}, λ, γ_{n})

und auf (q_{n}, λ, γ_{n}) ist keine Folgekonfiguration definiert.

Dies ergibt die folgende Rechnung in M̄

((q_{0}, i_{0}), w, $) |\frac{⋆}{M̄}  ((q′, i′), w′, γ′), (w′ ≠ λ, evtl. i′ = 2)
|\frac{kein λ-Übergang}{M̄} ((q_{1}, i_{1}), λ, γ_{1}) mit

i_{1} = 0, falls q_{1} ∉ F, i_{1} = 1 sonst.

⋮
|_{\overline{M̄}}  ((q_{n}, i_{n}), λ, γ_{n}) mit

i_{n} = 0 ⇔ {q_{1}, …, q_{n}} ∩ F ≠ ∅ ⇔ w ∉ L(M)

|_{\overline{M̄}}  ((q_{n}, 2), λ, γ_{n})

,falls i_{n} = 0, sonst war für M̄ auf ((q_{n}, 1), λ, γ_{n}) keine Folgekonfiguration definiert.

Damit ist der Beweis von Satz 6.5 abgeschlossen.

Korollar 6.1 ∃L ⊆ Σ^{∗} kontextfrei, aber nicht deterministisch kontextfrei, |Σ| ≥ 2.

Beweis:

Betrachte: L = \overline{\{a^{n}b^{n}c^{n}|n ≥ 0\}}. Diese Sprache ist nach dem früher gezeigten kontextfrei, ihr Komplement {a^{n}b^{n}c^{n}|n ≥ 0} jedoch nicht. Also kann L nicht deterministisch kontextfrei sein.

Bemerkung

Dieses Argument ist auf die Sprache {ww^{R}|w ∈ {a, b}^{∗}} nicht anwendbar, vergleiche mit dem Satz 6.10.

6 Kellerautomaten  102  6.3 Weitere Abschlußeigenschaften

6.3 Weitere Abschlußeigenschaften kontextfreier und deterministisch kontextfreier Sprachen

Satz 6.7 Sei L ⊆ Σ^{∗} (deterministisch) kontextfrei und R ⊆ Σ^{∗} regulär. Dann ist L∩R (deterministisch) kontextfrei.

Beweis:

Sei M = (Q, Σ, Γ, δ, q_{0}, F, $) ein (deterministischer) Kellerautomat mit L(M) = L und A = (Q′, Σ′, δ′, q′_{0}, F′) ein buchstabierender (und deterministischer) endlicher Automat mit L(A) = R.

Betrachte den folgenden Automaten:

(Q × Q′, Σ, Γ, δ̃, (q_{0}, q′_{0}), F × F′, $)

wobei δ̃ sich aus δ und δ′ wie folgt ergibt:

[figure: (λ, x, γ); p, p′; q, p′; (λ, x, γ); p; q; (a, x, γ); p, p′; q, q′; a; p′; q′; (a, x, γ); p; q; Für; ∈ δ mit a ∈ Σ; ∈ δ′ mit a ∈ Σ definiere; Für; ∈ δ definiere ∀p′ ∈ Q′ Kanten:; und]

Satz 6.8 Sei L ⊆ Σ^{∗} (deterministisch) kontextfrei und h : Σ^{′∗} → Σ^{∗} ein Homomorphismus. Dann ist h^{−1}(L) (deterministisch) kontextfrei.

Beweis:

Sei L = L(M) für einen (deterministischen) Kellerautomaten. Der Automat M′ wird mit w′ ∈ L(M′) ⇔ h(w′) ∈ L(M) und mit Hilfe eines Puffers realisiert, der h(w′) ”stückweise“zwischenspeichert. Die Puffergröße ist durch max{|h(a′)||a′ ∈ Σ′} beschränkt. Die arbeitsweise von M′ auf eine Eingabe w′ = a_{1} … a_{n}, n ≥ 0 basiert auf dem folgenden Programmstück:

Zu Anfang ist der Puffer leer.

for i = 1 to n do Schreibe h(a_{i}) in den Puffer; Simuliere Rechnung von M auf dem Wort im Puffer bis dieser leer ist

endfor

Am Ende der Eingabe hat M die Eingabe h(a_{1} … a_{n}) simuliert Akzeptiere, wenn M auf h(a_{1} … a_{n}) akzeptiert

endliche Kontrolle

[figure] q

a_{1} a_{2} a_{3}

X

⋮ $

Keller

PUSH & POP Eingabe ONE-WAY-READONLY Puffer Wenn der Puffer leer ist, schreibe das Bild h(a_{i}) hinein. Simuliere M über dem Puffer.

Abbildung 6.7: Die Arbeitsweise des Automaten zur Erkennung von h^{−1}(L)

Definition 6.11 (MIN(L))

Sei L ⊆ Σ^{∗} eine formale Sprache. Dann ist MIN(L) definiert durch

MIN(L) = {w ∈ L|w = uv, u ∈ L ⇒ v = λ}

d.h. MIN(L) enthält die Wörter aus L die keinen echten Präfix haben, der ebenfalls zu L gehört.

Satz 6.9 Sei L ⊆ Σ^{∗} deterministisch kontextfrei. Dann ist MIN(L) deterministisch kontextfrei.

Beweis:

Sei M = (Q, Σ, Γ, δ, q_{0}, F, $) mit L(M) = L. Modifiziere M so, daß alle ausgehenden Kanten von Endzuständen gestrichen werden.

Satz 6.10 Es gibt kontextfreie Sprachen deren Komplement ist kontextfrei, sie sind aber nicht deterministisch kontextfrei.

Beweis:

Betrachte: L = {ww^{R}|w ∈ {a, b}^{∗}} mit (a_{1} … a_{n})^{R} = (a_{n} … a_{1}).

L ist kontextfrei: S → aSa|bSb|λ. L̄ = {a, b}^{∗}\L ist kontextfrei (siehe Übungen).

Angenommen L wäre deterministisch kontextfrei.

Betrachte:

\begin{aligned}L_{1} & = & L ∩ (ab)^{+}(ba)^{∗}(ab)^{∗}(ba)^{+} \\ & = & \{(ab)^{m}(ba)^{n}(ab)^{n}(ba)^{m}|m ≥ 1, n ≥ 0\} \end{aligned}

Diese Sprache ist deterministisch kontextfrei (Schnitt mit einer regulären Menge).

Betrachte:

\begin{aligned}L_{2} & = & MIN(L_{1}) \\ & = & \{(ab)^{m}(ba)^{n}(ab)^{n}(ba)^{m}|0 ≤ n < m\} \end{aligned}

Diese Sprache ist deterministisch und kontextfrei wegen dem Abschluß unter MIN.

Betrachte:

\begin{aligned}h & : & \{a, b\}^{∗} → \{a, b\}^{∗} \\ h(a) & = & ab \\ h(b) & = & ba \\ L_{3} & = & h^{−1}(L_{2}) = \{a^{m}b^{n}a^{n}b^{m}|0 ≤ n < m\} \end{aligned}

Wegen dem Abschluß unter dem inversem Homomorphismus müßte L_{3} kontextfrei sein. Dies ist ein Widerspruch.

6 Kellerautomaten  105  6.4 LR(k)-Grammatiken

6.4 LR(k)-Grammatiken und deterministische Bottom-Up-Analyse

Im ganzen Abschnitt bezeichne G = (V, Σ, P, S) eine reduzierte kontextfreie Grammatik mit

P ⊆ V × ((V ∪ Σ)\{S})^{∗}

In der Darstellung folgen wir Harrison [8] und Hopcroft/Ullman [4]. Achtung: Harrison [8] verlangt nur S⟹_{G}^{+} / S. Dies führt zu einer etwas größeren LR(0)- Sprachfamilie.

Wir betrachten im wesentlichen nur Rechtsableitungen: α⟹_{R}^{⋆}β bedeutet, daß in jedem Ableitungsschritt die am weitesten rechts stehende Variable ersetzt wird.

Definition 6.12 (Griff)

Ein Griff für ein γ ∈ (V ∪ Σ)^{∗} ist ein Paar (p, i) ∈ P × so, daß gilt:

S⟹_{R}^{⋆}δAw⟹_{R}δαw = γ

für ein w ∈ Σ^{∗} mit p = A → α ∈ P und i = |δα| ∈

Idee: Zur Bottom-Up-Analyse von γ muß man im nächsten Schritt nur den Griff kennen.

Definition 6.13 (LR(k)-Grammatik)

G heißt LR(k)-Grammatik, falls ∀δ, δ′, α, α′ ∈ (V ∪ Σ)^{∗}, A, A′ ∈ V, w, w′, x ∈ Σ^{∗} gilt:

i) S⟹_{R}^{⋆}δAw⟹_{R}δαw

ii) S⟹_{R}^{⋆}δ′A′w′⟹_{R}δ′α′w′ = δαx

iii) ^{(k)}w = ^{(k)}x impliziert:

iv) A = A′, α = α′, δ = δ′

Hierbei bezeichnet

(k)a_{1} … a_{n} = \{ \begin{matrix}a_{1} … a_{n} & falls n < k \\ a_{1} … a_{k} & sonst \end{matrix}

für a_{1} … a_{n} ∈ (V ∪ Σ)^{∗}, n ≥ 0, a_{i} ∈ (V ∪ Σ).

Bemerkung

i) Es reicht die LR(k)-Bedingung für |δα| ≤ |δ′α′| zu fordern.

ii) G ist LR(k) ⟹ G ist LR(k + i) ∀i > 0. iii) Für festes k ist es entscheidbar, ob G eine LR(k)-Grammatik ist (Beweis später nur für

LR(0)).

Es ist unentscheidbar, ob G eine LR(k)-Grammatik für ein k ≥ 0 ist (ohne Beweis).

Beweis: zu Punkt i)

Sei |δ′α′| < |δα|, dann ∃x′ ∈ Σ^{∗} : δαw = δ′α′x′ Vertausche die Rolle von ”Strich“ und ”Nicht-Strich“.

Satz 6.11 (Eindeutigkeit)

Jede LR(k)-Grammatik ist eindeutig.

Beweis:

Induktion über die Anzahl der Ableitungsschritte: Sei γ ∈ (V ∪ Σ)^{∗}, dann betrachte die Rechtsableitungen

S⟹_{R}^{m}γ und S⟹_{R}^{n}γ

m = 0: wegen S⟹^{+} / S gilt n = 0, γ = S

Sei jetzt 1 ≤ m, dann gilt Œ m ≤ n und es existieren folgende Ableitungen:

S⟹_{R}^{m−1}δAw⟹_{R}δαw = γ

S⟹_{R}^{n−1}δ′A′w′⟹_{R}δ′α′w′ = γ

Aus der LR(k)-Eigenschaft folgt A = A′, δ = δ′, α = α′ und w = w′. Nach Induktion sind

S⟹_{R}^{m−1}δAw und S⟹_{R}^{n−1}δ′A′w′ = δAw

dieselben Ableitungen, damit ergibt sich die Behauptung.

6.4.1 LR(0)-Grammatiken

Definition 6.14 (LR(0)-Element)

Ein LR(0)-Element ist eine ”Regel mit Punkt“:

A → α.β für A → αβ ∈ P

Definition 6.15 (Gültigkeit)

Ein LR(0)-Element A → α.β heißt gültig für γ ∈ (V ∪ Σ)^{∗} wenn gilt:

S⟹_{R}^{⋆}δAw⟹_{R}δαβw = γβw

für gewisse δ ∈ (V ∪ Σ)^{∗}, w ∈ Σ^{∗}.

Bemerkung

i) A → .αβ ist gültig für γ gdw A → α.β ist gültig für γα.

ii) Ist A → α.β gültig für γ, so existiert ein w ∈ Σ^{∗} so, daß (A → αβ, |γβ|) ein Griff ist für γβw.

Satz 6.12 Folgende Aussagen sind äquivalent:

a) G ist LR(0)

b) Für alle γ ∈ (V ∪ Σ)^{∗} gilt:

Sind A → α. und A′ → α′.β′ gültig für γ, so ist
• β′ ∈ V (V ∪ Σ)^{∗} oder
• β′ = λ, A = A′ und α = α′

Bemerkung

Teil b) ist die Definition einer LR(0)-Grammatik bei [4].

Beweis:

\underline{1. Teil: a) ⟹ b)}

Seien A → α. und A′ → α′.β′ gültig für γ ∈ (V ∪ Σ)^{∗} Dann gilt:

i) S⟹_{R}^{⋆}δAw⟹_{R}δαw = γw

ii) S⟹_{R}^{⋆}δ′A′w′⟹_{R}δ′α′β′w′ = γβ′w′

1. Fall: Sei β′ ∈ Σ^{∗}. Dann ist δ′α′β′w′ = δαx für ein x ∈ Σ^{∗} LR(0)-Eigenschaft: A = A′, δ = δ′, α = α′β′. Wegen γ = δ′α′ = δ′α′β′ gilt dann β′ = λ.

2. Fall: Sei β′ ∉ Σ^{∗}. Angenommen es wäre β′ ∉ V (V ∪ Σ^{∗}). Dann gilt β′ ∈ y′_{1}(V ∪ Σ)^{∗} mit y′_{1} ∈ Σ^{+}.

Betrachte: S⟹_{R}^{⋆}γβ′w⟹_{R}^{⋆}γy_{1}By_{2}⟹_{R}γy_{1}zy_{2}

mit y_{1}zy_{2} ∈ Σ^{∗} und |y_{1}| > 0, B ∈ V

Die LR(0)-Eigenschaft impliziert |γ| = |γy_{1}|. Dies ist ein Widerspruch!

\underline{2. Teil: b) ⟹ a)} Gegeben seien folgende Rechtsableitungen mit |δα| ≤ |δ′α′| (siehe obige Bemerkung vor Satz 6.15)

i) S⟹_{R}^{⋆}δAw⟹_{R}δαw

ii) S⟹_{R}^{⋆}δ′A′w′⟹_{R}δ′α′w′ ∈ δαΣ^{∗}

Dann ist A → α. gültig für γ = δα.

1. Fall: Sei |δ′| ≤ |γ|, dann gilt: α′ = α′_{1}α′_{2} und A′ → α′_{1}.α′_{2} ist gültig für γ = δ′α′_{1} und es gilt α′_{2} ∈ Σ^{∗} Daraus folgt dann α′_{2} = λ, A = A′, α = α′_{1} = α′_{1}α′_{2} und dann auch δ = δ′, damit die LR(0)-Eigenschaft.

2. Fall: Sei |δ′| > |γ|, dann gilt: δ′ = γy mit y ∈ Σ^{∗}.

Betrachte die Stelle in der Ableitung, die δ′ erzeugt hat:

S⟹_{R}^{⋆}γ_{1}Bz⟹_{R}γ_{1}β_{1}yβ′_{2}⟹_{R}^{⋆}δ′A′w′

mit γ_{1}β_{1}y = δ′ = γy

Es gilt β′_{2}z⟹_{R}^{⋆}A′w, daher β′_{2} ∉ Σ^{∗}

B → β_{1}.yβ′_{2} ist gültig für γ.

Wegen yβ′_{2} ∉ (V (V ∪ Σ)^{∗} ∪ Σ^{∗}) erhalten wir einen Widerspruch!

Satz 6.13 Sei Q = {A → α.β|A → αβ ∈ P } dann existiert ein endlicher Automat M = (Q, V ∪ Σ, δ, I, ∅) mit

I  = {S → .β|S → β ∈ P } und
δ^{∗}(I, γ) = Menge der Zustände die durch Lesen von γ erreicht werden können
= {A → α.β|A → α.β ist gültig für γ}

Bemerkung

Aus den Sätzen 6.12 und 6.13 folgt direkt, daß es entscheidbar ist, ob eine Grammatik LR(0) ist.

Beweis:

Konstruktion von M Die Zustandsmengen Q und I liegen bereits fest.

⋆) Beachte: A → α.β ∈ I ⟹ A = S, α = λ ⟹ A → α.β ist gültig für λ.

Füge für alle A → αBβ, B → β′ ∈ P die folgenden λ-Kanten ein.

[figure: A → α.Bβ; B → .β′; λ]

⋆⋆) Beachte: Ist A → α.Bβ gültig für γ, so ist auch B → .β′ gültig für γ.

Für alle x ∈ (V ∪ Σ) und alle Regeln A → αxβ ∈ P füge x-Kanten ein:

[figure: A → α.xβ; A → αx.β; x]

⋆ ⋆ ⋆) Beachte: Ist A → α.xβ gültig für γ, so auch A → αx.β für γx. Aufgrund von ⋆), ⋆⋆) und ⋆ ⋆ ⋆) gilt:

δ^{∗}(I, γ) ⊆ {A → α.β|A → α.β ist gültig für γ} Sei A → α.β gültig für γ, dann gilt:

∃w ∈ Σ^{∗} und S⟹_{R}^{m}δAw⟹_{R}δαβw mit δα = γ

Zu zeigen ist A → α.β ∈ δ^{∗}(I, γ): Induktion nach m: m = 0 : Dann gilt: δ = λ = w, A = S und

A → .αβ ∈ I (A → .αβ ist Startzustand) mit α = γ Es existiert daher der folgende Pfad:

[figure: A → .αβ; A → α.β; α; ⋆]

m > 0 : Dann gilt: ∃n < m und

S⟹_{R}^{n}δ′Bv ⟹ δ′δ′′Aβ′v⟹_{R}^{+}δ′δ′′Aw mit δ = δ′δ′′

Nach Induktion existiert ein q_{0} ∈ I und der Pfad:

[figure: A → α.β; B → δ′′.Aβ′; A → .αβ; λ; δ = δ′δ′′; q_{0}; ⋆; α; ⋆]

Wir erhalten dann:

[figure: A → α.β; ∈ δ^{∗}(I, γ) wegen δα = γ]

Beispiel:

Gegeben ist die Sprache L = a(ba)^{∗}a mit L = L(G) für G:

\begin{aligned}S & → & aAa \\ A & → & Ba|λ \\ B & → & Ab \end{aligned}

[figure: A → Ba.; A → B.a; a; S → .aAa; B → Ab.; S → aAa.; b; a; \begin{matrix}S → & aA.a \\ B → & A.b \end{matrix}; A; a; B; \begin{matrix}S → & a.Aa \\ A → & .Ba \\ A → & . \\ B → & .Ab \end{matrix}]

Abbildung 6.8: Automat zu L = a(ba)^{∗}a

Frage: Besitzt G die LR(0)-Eigenschaft? Lösung durch die Konstruktion des Automaten M (genauer: Potenzautomat von M). Aus dem konstruierten Automaten in Abbildung 6.8 folgt: G ist LR(0).

Definition 6.16 (Vollständigkeit)

Elemente der Form A → α. heißen vollständig.

Bemerkung

Im obigen Beispiel ist A → . vollständig und die Elemente der Form A′ → α′.β′ mit β′ ∈ V (V ∪ Σ)^{∗} sind gültig.

Satz 6.14 Sei G eine LR(0)-Grammatik, G = (V, Σ, P, S), dann existiert ein deterministischer Kellerautomat, der L(G) mit leerem Keller erkennt.

Beweis:

Betrachte das Kelleralphabet V ∪ Σ ∪ ℘(Q) wobei M = (Q, V ∪ Σ, δ, I, ∅) der Automat von eben sei. Kellerbodenzeichen: I = s_{0} = {S → .β|S → β ∈ P } ⊆ Q Startzustand des Kellerautomaten sei q_{0}.

Im Folgenden sei w ∈ Σ^{∗} und die Startkonfiguration sei (q_{0}, w, s_{0}).

Bezeichnung: Wir sagen, daß eine Konfiguration der Form (q_{0}, v, s_{k}γ_{k} … s_{1}γ_{1}s_{0}) die Invariante ⋆) erfüllt, wenn gilt:

1) k ≥ 0, γ_{i} ∈ (V ∪ Σ)\{S}, s_{i} ⊆ Q, s_{i} = δ(s_{i−1}, γ_{i}) für 1 ≤ i ≤ k

2) ∃u ∈ Σ^{∗} : uv = w und γ_{1} … γ_{k}⟹_{R}^{⋆}u

3) A → α. ∈ s_{i} ⟹ i = k oder γ_{i+1} ∈ V

4) w ∉ L(G) oder S⟹_{R}^{⋆}γ_{1} … γ_{k}v

Beachte: Die Startkonfiguration (q_{0}, w, s_{0}) erfüllt ⋆) mit k = 0.

Sei jetzt (q_{0}, v, s_{k}γ_{k} … s_{1}γ_{1}s_{0}) eine Folgekonfiguration von (q_{0}, w, s_{0}) die ⋆) erfüllt.

I. Sei A → α. ∈ s_{k} mit A ≠ S, dann ist A → α. gültig für γ = γ_{1} … γ_{k}. Es gilt: γ = γ_{1} … γ_{i}α Arbeitsweise: Gehe deterministisch in die folgende Konfiguration durch λ-Übergänge:

(q_{0}, v, δ(s_{i}, A)As_{i}γ_{i} … s_{1}γ_{1}s_{0})

Diese Konfiguration erfüllt ⋆).

Beweis:

1) erfüllt!

2) γ_{1} … γ_{i}A⟹_{R}γ_{1} … γ_{k} = γ_{1} … γ_{i}α⟹_{R}^{⋆}u mit uv = w

3) erfüllt!

4) Sei w ∈ L(G), dann gilt: S⟹_{R}^{⋆}γ_{1} … γ_{k}v⟹_{R}^{⋆}w

A → α. ist gültig für γ = γ_{1} … γ_{k}. Die LR(0)-Eigenschaft von G liefert

S⟹_{R}^{⋆}γ_{1} … γ_{i}Av⟹_{R}γv⟹_{R}^{⋆}w

II. Sei S → α. ∈ s_{k}. Arbeitsweise: Leere den Keller durch λ-Übergänge! zu zeigen: w ∈ L(G) ⟺ v = λ Aus w ∈ L(G) folgt:

S⟹_{R}^{⋆}γ_{1} … γ_{k}v⟹_{R}^{⋆}w

Da S → α. gültig ist für γ = γ_{1} … γ_{k}, gilt dann γ = α und v = λ. Angenommen v ≠ λ (hier geht ein, daß S nie rechts erscheint), dann wird gelten:

S⟹_{R}^{m}γv = αv

m = 0 : unmöglich für v ≠ λ

m > 0 : S⟹_{R}^{m−1}δ′A′w′⟹_{R}δ′α′w′ = αv ∈ αΣ^{∗}

Die LR(0)-Eigenschaft ergibt: δ′ = λ, α′ = α = γ, A′ = S Dann gilt auch w′ = λ, also auch v = λ → Widerspruch!

Daraus folgt: w ∈ L(G) ⟹ v = λ ⟹ S⟹_{R}α = γ⟹_{R}^{⋆}u = w ⟹ w ∈ L(G)

III. s_{k} enthält kein vollständiges Element der Form A → α. . Arbeitsweise: Lese das nächste Eingabezeichen in den Keller. Angenommen es gilt v = λ. Dann bricht die Rechnung hier erfolglos ab. Ist w ∉ L(G), so ist das richtig. Angenommen es wäre v = λ und w ∈ L(G). Dann gilt:

S⟹_{R}^{⋆}γ_{1} … γ_{k}⟹_{R}^{⋆}w

Schreibe γ_{1} … γ_{k} = γ′αw′ für A → α ∈ P, w′ ∈ Σ^{∗} so, daß gilt:

S⟹_{R}^{⋆}γ′Aw′⟹_{R}γ′αw′

Dann ist γ′α = γ_{1} … γ_{i} für ein i ≤ k und A → α. ∈ s_{i}. Da A → α. ein vollständiges Element ist und bei III s_{k} kein vollständiges Element enthält, ist also i < k und γ_{i+1} ∈ Σ im Widerspruch zur Invarianten ⋆). Wir können also v = av′ annehmen mit a ∈ Σ. Arbeitsweise: Gehe dann deterministisch in die folgende Konfiguration, die ⋆) erfüllt:

(q_{0}, v′, δ(s_{k}, a)as_{k}γ_{k} … s_{1}γ_{1}s_{0})

Damit ist die Arbeitsweise des Kellerautomaten beschrieben. Wir geraten von der Startkonfiguration also immer wieder in Konfigurationen, die ⋆) erfüllen, – oder die Rechnung bricht ab. Bricht die Rechnung mit leerem Keller ab, so ist w ∈ L(G), bricht sie erfolglos ab, so ist w ∉ L(G).

Satz 6.15 Sei L ⊆ Σ^{∗}. Dann sind die folgenden beiden Aussagen äquivalent:

i.) L läßt sich von einer LR(0) Grammatik erzeugen.

ii.) L ist eine präfixfreie deterministische kontextfreie Sprache.

Beweis:

i) ⇒ ii): Dies wurde eben gezeigt.

ii) ⇒ i): Man kann zeigen, daß die kontextfreie Grammatik aus einem deterministischen Kellerautomaten, der leeren Keller erkennt, gerade eine LR(0) Grammatik ist. Für genauere Angaben siehe Lehrbuch.

Korollar 6.2 Sei L ⊆ Σ^{∗}. Dann sind die folgenden beiden Aussagen äquivalent:

i.) L ist von einer LR(1) Grammatik erzeugbar.

ii.) L ist eine deterministische kontextfreie Sprache.

Beweis:

i) ⇒ ii): Aus einer LR(k)-Grammatik läßt sich ein deterministischer Kellerautomat analog zur obigen Konstruktion herleiten.

ii) ⇒ i): Sei L deterministisch kontextfrei und $ ein neues Symbol. Dann ist L$ präfixfrei und deterministisch kontextfrei. Also existiert eine LR(0)-Grammatik für L$. Aus dieser Tatsache erhält man unmittelbar eine LR(1) Grammatik für L.

Korollar 6.3 Für die Sprachen gilt:

präfixfrei det. kontextfrei = LR(0) LR(1) = LR(2) =…=LR(k) =det. kontextfrei

7 Turingmaschinen

Definition 7.1 (Turingmaschine (nach Alan Turing, 1936)) Eine Turingmaschine ist ein Tupel

M = (Q, Σ, Γ, δ, q_{0}, F,b̄).
Dabei ist Q  eine endliche Menge von Zuständen, Σ  das Eingabealphabet, Γ  das Bandalphabet mit Σ ⊆ Γ δ  eine endliche Überführungsrelation δ ⊆ Q × Γ × Q × Γ × {L, R, M}, q_{0} ∈ Q der Standzustand, F ⊆ Q die Menge der Endzustände und b̄ ∈ Γ\Σ ein Leerfeldsymbol (Blank).

Abbildung 7.1 zeigt eine Turingmaschine.

[figure: endliche Kontrolle; q; Schreib-/Lesekopf; Arbeitsband; x; ⋯; γ_{k}; γ_{1}; b̄; b̄; b̄; b̄; b̄; b̄]

Abbildung 7.1: Turingmaschine

Arbeitsweise

M sei im Zustand q und x ∈ Γ wird gelesen. Existiert ein (q, x, q′, x′, D) ∈ δ mit D ∈ {L, R, M}, so ist der folgende Übergang möglich:

D=L: x′ wird auf das Feld über dem der Kopf steht geschrieben, d.h. x wird durch x′ überschrieben. Der Kopf wird nach links bewegt.

D=R: x wird wie bei D=L durch x′ überschrieben. Der Kopf wird aber nach rechts bewegt.

D=M: x wird wieder durch x′4 überschrieben. Der Kopf wird aber nicht bewegt.

Dann wird jeweils in den Zustand q′ übergegangen.

Startkonfiguration

Die Startkonfiguration auf einer Eingabe w ∈ Σ^{∗} mit w = a_{1} … a_{n}, a_{i} ∈ Σ zeigt Abbildung 7.2. Die Turingmaschine ist im Zustand q_{0}, die Eingabe steht auf n Feldern auf dem Band, links und rechts der Eingabe ist das Band leer (dort stehen ”Blanks“). Ist n ≥ 1, so befindet sich der Kopf über a_{1}, – für n = 0 über einem Blank.

[figure: endliche Kontrolle; q_{0}; ⋯; a_{2}; a_{1}; b̄; a_{n}; b̄]

Abbildung 7.2: Startkonfiguration einer Turingmaschine

Wir akzeptieren w ∈ Σ^{∗} und schreiben w ∈ L(M), wenn die Startkonfiguration in eine Konfiguration übergehen kann, die einen Endzustand enthält.

Bequeme Schreibweise

Es ist bequem, Konfigurationen der Turingmaschine durch Wörter der Form uqv ∈ Γ^{∗}QΓ^{∗} zu beschreiben. Dabei bezeichnet u die Bandhälfte links vom Kopf, q den momentanen Zustand, v die Bandhälfte rechts von u. Der Lesekopf befindet sich also über dem ersten Zeichen von v. Dabei dürfen links und rechts beliebig viele Blanksymbole hingeschrieben oder fortgelassen werden. Dies definiert eine Äquivalenzrelation auf Γ^{∗}QΓ^{∗}, die wir mit ≡ bezeichnen. Für eine Konfiguration der Form uqλ ≡ uq bedeutet dies, der Kopf liest ein b̄ und rechts davon sind ebenfalls nur b̄ s.

Startkonfiguration:

q_{0}w ≡ b̄ q_{0}wb̄ ≡ … ≡ b̄ …b̄ q_{0}wb̄ …b̄

δ läßt sich dann durch folgende Regeln ausdrücken:

Für (q, x, q′, x′, R) ∈ δ schreibe die Regel: qx → x′q′.

Für (q, x, q′, x′, M) ∈ δ schreibe die Regel: qx → q′x′.

Für (q, x, q′, x′, L) ∈ δ schreibe für alle y ∈ Γ die Regeln: yqx → q′yx′.

Für uqv ∈ Γ^{∗}QΓ^{∗} schreibe uqv |_{\overline{M}} u′q′v′, falls sich u′q′v′ durch eine Regelanwendung ergibt. Genauer: Sei R ⊆ Γ^{∗}QΓ^{∗} ×Γ^{∗}QΓ^{∗} die oben beschriebene Regelmenge. Dann schreiben wir

uqv |_{\overline{M}} u′q′v′ für u, u′, v, v′ ∈ Γ^{∗}, q, q′ ∈ Q

falls u′′, v′′ ∈ Γ^{∗} existieren mit b̄ uqvb̄ ⟹_{R}u′′q′v′′ und b̄^{∗}u′′q′v′′b̄^{∗} = b̄^{∗}u′q′v′b̄^{∗}

Beachte: uqv ≡ b̄^{m}uqvb̄^{n} ∀m, n, L(M) = \{w ∈ Σ^{∗}|q_{0}w |\frac{⋆}{M} uqv mit q ∈ F \}

Die Eingabe muß nicht notwendig gelesen werden.

Definition 7.2 (Deterministische Turingmaschine)

Eine Turingmaschine heißt deterministisch, wenn δ : Q × Γ → Q × Γ × {L, R, M} eine partiell definierte Funktion ist, d.h. für jede Konfiguration ist höchstens eine Folgekonfiguration definiert.

Satz 7.1 Sei L(M) für eine Turingmaschine M = (Q, Σ, Γ, δ, q_{0}, F,b̄). Dann existiert effektiv eine Typ – 0-Grammatik G = (V, Σ, P, S) mit L(G) = L.

Beweis:

Sei V = Γ ∪ Q ∪ {S}, S ein neues Symbol. Übersetze wie eben δ in ein Regelsystem R ⊆ V^{∗} × V^{∗} so, daß gilt

w ∈ L(M) ⟺ b̄^{m}q_{0}wb̄^{n}⟹_{R}^{∗}uqv ∈ Γ^{∗}F Γ^{∗} für gewisse m, n ≥ 0

Es ist leicht die Turingmaschine oder R so zu modifizieren, daß Œ m = n = 1 gilt. Dies nehmen wir jetzt an. Für q ∈ F führe zusätzliche Regeln der Form

q → S und xS → S, Sx → S ∀x ∈ Γ

ein. Nenne das neue System R’. dann gilt:

w ∈ L(M) ⟺ b̄ q_{0}wb̄ ⟹_{R′}^{∗}S.

Drehe alle Regeln von R’ um. Dann erhalten wir eine Typ – 0-Grammatik G’ mit Terminalalphabet Γ ∪ {b̄ } ∪ Q und

L(G′) ∩ b̄ q_{0}Σ^{∗}b̄ = {b̄ q_{0}wb̄ |w ∈ L(M)}.

Schließlich läßt sich G’ mit Standardmethoden effektiv in ein G umformen mit L(G) = L(M).

7 Turingmaschinen  117  7.1 Varianten des TM-Modells

7.1 Varianten des Turingmaschinen-Modells

i) Nur halbseitig unendliches Band (Damit verliert man keine Berechnungsmächtigkeit)

ii) Mehrere Bänder sind erlaubt

[figure: a_{1}; a_{i}; a_{n}; x_{1}; x_{2}; x_{3}; y_{1}; y_{2}; y_{3}; z_{1}; z_{2}; z_{3}; endliche Kontrolle; q]

Satz 7.2 Jede Mehrband-Turingmaschine läßt sich effektiv durch eine Einband-Turingmaschine simulieren.

Beweis:

Spurtechnik:

Statt k Bänder, unterteile ein Band in k Spuren, markiere die Lesekopfposition durch Sonderzeichen, etwa durch “Buchstaben mit Dach“.

[figure: a_{1}; â_{i}; a_{n}; x_{1}; x_{2}; x̂_{3}; ŷ_{1}; y_{2}; y_{3}; z_{1}; ẑ_{2}; z_{3}]

Ein k-Tupel aus Γ^{k} wird als ein Zeichen aufgefaßt.

Bemerkung

Obige Simulation überführt eine deterministische Mehrband-Turingmaschine in eine deterministische 1-Band-Turingmaschine.

Korollar 7.1 Jede \underline{nicht} deterministische Turingmaschine läßt sich effektiv durch eine \underline{deterministische} Turingmaschine simulieren.

Beweis:

(Idee: Durchsuche systematisch den Berechnungsbaum) Sei M eine beliebige (1-Band-) Turingmaschine Œ : Für jede Konfiguration existieren höchstens 2 Folgekonfigurationen (sonst Hilfskonfiguration). Damit lassen sich 0, 1-Ziffernfolgen in natürlicher Weise als Berechnungspfade interpretieren. Konstruiere eine deterministische 3-Band-Turingmaschine wie folgt:

Eingabe w ∈ Σ^{∗} steht auf Band 1

Schreibe auf Band 2 die 0, 1-Ziffernfolgen 0, 1, 00, 01, 10, 11, 000, … Nachdem jeweils eine Ziffernfolge hingeschrieben wurde, wird die entsprechende Berechnung von M deterministisch auf Band 3 simuliert. Akzeptiere, wenn eine akzeptierende Konfiguration von M gefunden wurde.

[figure: M; w]

Abbildung 7.3: Durchsuchung des Berechnungsbaumes

Im letzten Schritt verwandle M′ in eine 1-Band-Turingmaschine.

Satz 7.3 Sei G eine Typ – 0 Grammatik, dann existiert effektiv eine Turingmaschine M mit L(G) = L(M).

Beweis:

Sei G eine Grammatik, konstruiere M wie folgt mit 2-Bändern:

Eingabe w ∈ Σ^{∗} stehe auf Band 1.

Auf Band 2 berechne eine beliebige Ableitung S⟹_{G}^{⋆}v ∈ Σ^{∗}

(Ist L(G) leer, so bleibt die Berechnung hier erfolglos hängen, ansonsten erlauben wir beliebigen Nichtdeterminismus) Vergleiche die Eingabe w mit dem abgeleiteten Wort v ∈ Σ^{∗}. Akzeptiere, wenn w = v

Bemerkung

Man beachte den extremen Nichtdeterminismus, der die obige einfache Konstruktion ermöglicht. Will man eine deterministische Turingmaschine konstruieren, so ist dies natürlich möglich, jedoch viel aufwendiger. Vergleiche mit Korollar 7.1.

Korollar 7.2 (Zusammenfassung)

Äquivalent sind für eine Sprache L ⊆ Σ^{∗}:

i) L ist vom Typ – 0

ii) L ist rekursiv aufzählbar (oder kurz: aufzählbar)

iii) L = L(M) für eine nichtdeterministische Mehrband-Turingmaschine

iv) L = L(M) für eine deterministische 1-Band-Turingmaschine (mit halbseitig unendlichem Band)

Definition 7.3 (entscheidbare Sprache)

Eine Sprache L ⊆ Σ^{∗} heißt entscheidbar, wenn es eine deterministische Turingmaschine M gibt mit L = L(M) und M hält auf jede Eingabe w ∈ Σ^{∗}, d. h. für jede Eingabe w ∈ Σ^{∗} gerät die deterministische Turingmaschine M in eine Konfiguration für die keine Folgekonfiguration definiert ist.

Bemerkung

Eine Sprache L ⊆ Σ^{∗} ist genau dann entscheidbar, wenn es eine determinitstische Turingmaschine M gibt mit 2 ausgezeichneten Zuständen ”ja“ und ”nein“ so, daß M auf eine Eingabe w ∈ Σ^{∗} in ”ja“ hält, falls w ∈ L und in ”nein“ sonst.

Korollar 7.3 äquivalent sind:

i) L ⊆ Σ^{∗} ist entscheidbar

7 Turingmaschinen  120  7.2 Universelle Turingmaschinen

ii) L̄ = Σ^{∗}\L ist entscheidbar Beweis:

Vertausche die Bedeutung von ”ja“ und ”nein“.

Satz 7.4 Sei L ⊆ Σ^{∗}, dann sind äquivalent:

i) L ist entscheidbar

ii) L und L̄ = Σ^{∗}\L sind aufzählbar

Beweis:

(Idee: Produktautomatenkonstruktion)

i) ⇒ ii) trivial aus der Definition und dem letzten Korollar. ii) ⇒ i) Seien M und M̄ deterministische Turingmaschinen mit L(M) = L und L(M̄) = L̄

Verwende 2 Bänder. Die Eingabe w wird zu Anfang auf beide Bänder geschrieben. Auf Band 1 simuliere die Rechnung von M, parallel auf Band 2 die Rechnung von M̄.

Halte, wenn eine Rechnung in einen Endzustand übergeht. Geschieht dies bei Band 1, ist w akzeptiert.

7.2 Universelle Turingmaschinen

In diesem Abschitt sei Σ = {0, 1}.

Bemerkung

Das Prinzip von Codierungen wird als bekannt vorausgesetzt. Außerdem nehmen wir an, daß eine feste (hier nicht näher spezifizierte) Standardcodierung gewählt wird. Jede Turingmaschine M = (Q, Σ, Γ, δ, g_{0}, F, t_{0}) läßt sich nach Σ^{∗} codieren. Wir bezeichnen die Codierung mit spitzen Klammern, d. h. ist M eine Turingmaschine, so ist < M >∈ Σ^{∗} = {0, 1}^{∗} (oder eine natürliche Zahl). ”Alles“ läßt sich codieren! Die Codierung eines Wortpaares (v, w) ∈ Σ^{∗}×Σ^{∗} wird mit < v, w >∈ Σ^{∗} bezeichnet. Ist u ∈ Σ^{∗} und M eine Turingmaschine, so steht < u, M > für das Wort < u, < M >>, usw.

Satz 7.5 Es gibt effektiv eine (deterministische) Turingmaschine M_{u} die die folgende Universalsprache L_{u} akzeptiert:

L_{u} = {< u, M > |M ist eine Turingmaschine mit u ∈ L(M)}

Beweis:

Wir schreiben einen Interpreter für Turingmaschinen. Der Interpreter M_{u} hat zwei Bänder und arbeitet auf Eingabe aus Σ^{∗} wie folgt:

1. Schritt: M_{u} überprüft, ob die Eingabe von der Form < u, M > ist.

2. Schritt: M_{u} simuliert auf Band 2 eine Rechnung von M auf u und akzeptiert, wenn M akzeptiert hätte.

(3. Schritt: Mache M_{u} noch deterministisch)

Korollar 7.4 Die Familie der rekursiv aufzählbaren Sprachen ist nicht unter der Komplementbildung abgeschlossen. Es gibt keine Turingmaschine, die die Diagonalsprache L_{D} = {< M > | < M >∉ L(M)} akzeptiert.

Beweis:

Wir bemerken zunächst, daß L_{D} = {< M > | < M >∉ L(M)} nicht aufzählbar ist. Denn wäre L_{D} = L(M_{D}) für eine Turingmaschine M_{D}, so wäre

< M_{D} >∈ L_{D} = L(M_{D}) ⇔ < M_{D} >∉ L(M_{D})

Dies ist ein Widerspruch. Die Diagonalsprache L_{D} ist also nicht aufzählbar.

Angenommen das Komplement von L_{u} wäre aufzählbar. Dann könnten wir L_{D} aufzählen, indem wir auf eine Eingabe der Form u =< M > die Kodierung < u, M > berechnen und akzeptieren, wenn < u, M >=<< M >, M > nicht zu L_{u} gehört.

Korollar 7.5 Die rekursiv aufzählbare Sprache L_{u} ist unentscheidbar.

Bemerkung

Kontextsensitive Sprachen sind entscheidbar. Das liegt daran, daß sie durch monotone Grammatiken erzeugt werden können.

Korollar 7.6 Die Chomsky-Hierarchie ist echt.

Satz 7.6 Es gibt eine entscheidbare Sprache, die nicht kontextsensitiv ist.

7 Turingmaschinen  122  7.3 TM als Funktionsberechner

Beweis:

Sei G die Menge aller kontextsensitiven Grammatiken über Σ. Dann ist

L_{G} = {< G > |G ist kontextsensitiv mit < G >∉ L(G)} entscheidbar. Angenommen L_{G} wäre kontextsensitiv. Dann existiert ein G_{0} mit

L_{G} = L(G_{0}) und < G_{0} >∈ L(G_{0}) = L_{G} ⇔ < G_{0} >∉ L(G_{0}). Dies ist ein Widerspruch.

Bemerkung

Der Begriff der ”Menge aller (kontextsensitiven) Grammatiken über Σ“ ist gerechtfertigt, da man ein abzählbares Standardalphabet von Variablen wählen kann.

Übersicht

Typ – 0 Sprachen  det. Turingmaschine = nicht det. Turingmaschine
⊇

entscheidbar = rekursiv

⊇

Typ – 1 Sprachen  kontextsensitiv = linear beschränkte Automaten
⊇
Typ – 2 Sprachen  nicht deterministische Kellerautomaten
⊇
det. kontextfreie Sprachen det. Kellerautomaten
⊇
Typ – 3 Sprachen  regulär endliche Automaten
⊇

endliche Sprachen

Bemerkung

Linear beschränkte Automaten werden erst später eingeführt.

7.3 Turingmaschinen als Funktionsberechner

Wir erweitern das Turingmaschinen-Modell um ein Ausgabeband, auf dem von links nach rechts nur geschrieben werden darf.

Ist eine Turingmaschine M mit Ausgabeband deterministisch und werden auf das Ausgabeband Zeichen aus Σ′ geschrieben, so läßt sich M als eine partiell definierte Funktion f_{M} : Σ^{∗} → Σ^{′∗} wie folgt deuten:

Definitionsbereich: {w ∈ Σ^{∗}|M hält auf w} und

f_{M}(w) = Inschrift auf dem Ausgabeband nach dem Halten der deterministischen Maschine M.

Definition 7.4 (Turingberechenbar)

Eine partiell definierte Funktion f : Σ^{∗} → Σ^{′∗} heißt (Turing-) berechenbar, wenn f = f_{M} für eine deterministische Turingmaschine Mist.

Churchsche These:

Jede in einem intuitiven Sinne berechenbare Funktion ist Turing-berechenbar.

Erweiterung: Intuitiv effizient berechenbar = effizient Turing-berechenbar.

Definition 7.5 (reduzierbar)

Seien L_{1} ⊆ Σ_{1}^{∗}, L_{2} ⊆ Σ_{2}^{∗} formale Sprachen. Dann heißt L_{1} auf L_{2} reduzierbar (geschrieben L_{1} ≤ L_{2}), wenn es eine total definierte turingberechenbare Funktion f : Σ_{1}^{∗} → Σ_{2}^{∗} gibt mit w ∈ L_{1} ⇔ f(w) ∈ L_{2}.

Bemerkung

”≤“ ist reflexiv und transitiv und es gilt L_{1} ≤ L_{2} ⇔ L̄_{1} ≤ L̄_{2} (wobei L̄_{i} = Σ_{i}^{∗}\L_{i}).

Satz 7.7 Sei L_{1} ≤ L_{2}. Ist L_{2} aufzählbar (bzw. entscheidbar), so auch L_{1}.

Beweis:

Sei M_{2} eine deterministische Turingmaschine mit L(M_{2}) = L_{2}. Konstruiere eine deterministische Turingmaschine M_{1} mit L(M_{1}) = L_{1} wie folgt: Auf eine Eingabe w ∈ Σ_{1}^{∗} berechnet M_{1} den Funktionswert f(w). Danach wird M_{2} auf f(w) simuliert. Beachte, daß M_{1} immer hält, wenn M_{2} immer hält.

Bemerkung

Wir haben die Kontraposition von Satz 7.7 implizit schon im Beweis von Korollar 7.4 benutzt: Zunächst haben wir L_{D} als nicht aufzählbar nachgewiesen und dann L_{D} ≤ \overline{L_{u}} = Σ^{∗} \ L_{u} gezeigt.

Korollar 7.7 Folgende zwei Aussagen sind äquivalent:

i.) L ist aufzählbar.

ii.) L ≤ L_{u} = Universalsprache

7 Turingmaschinen  124  7.4 Die Busy-Beaver-Funktion

Beweis:

ii.) ⇒ i.) Dies zeigt Satz 7.7.

i.) ⇒ ii.) Sei L = L(M). Wähle f(w) :=< w, M >. Die Abbildung f ist totaldefiniert und Turingberechenbar (trivial). Es gilt

w ∈ L ⇔ w ∈ L(M) ⇔ < w, M >∈ L_{u} ⇔ f(w) ∈ L_{u}

Korollar 7.8 Folgende zwei Aussagen sind äquivalent:

i.) L ist entscheidbar.

ii.) L ≤ {ja, nein} (={0,1})

Satz 7.8 (Normalformsatz)

Folgende zwei Aussagen sind äquivalent:

i.) L ist aufzählbar.

ii.) ∃R ⊆ Σ^{∗} entscheidbar mit L = {x ∈ Σ^{∗}|∃y :< x, y >∈ R}

Beweis:

• i.) ⇒ ii.) Sei L=L(M). Definiere R = {< x, y > |M akzeptiert x in |y|-Schritten} Dann ist R entscheidbar und L(M) = {x|∃y :< x, y >∈ R}.

• ii.) ⇒ i.) Sei M_{R} eine Turingmaschine mit L(M_{R}) = R. Konstruiere eine Turingmaschine M mit L(M) = L wie folgt: Auf Eingabe x ∈ Σ^{∗} rate ein beliebiges y ∈ Σ^{∗}, d. h. schreibe ein beliebiges y auf ein zweites Band (oder hinter x). Akzeptiere falls < x, y >∈ L(M_{R}).

7.4 Die Busy-Beaver-Funktion

Definition 7.6 (Busy-Beaver-Funktion)

Wir definieren die Busy-Beaver-Funktion b : → wie folgt:

b(n) = max { m| ∃ eine Turingmaschine M = (Q, ∅, {1,b̄ }, δ, q_{0}, F,b̄)

7 Turingmaschinen  125  7.5 Der Satz von Rice

mit höchstens n Zuständen und M hält auf einem leeren Band, d. h. auf die Eingabe λ ∈ ∅^{∗}, in einer Endkonfiguration mit m Einsen.} Satz 7.9

Die Busy-Beaver-Funktion b ist unberechenbar, genauer gilt sogar: Für jede berechenbare Funktion f existiert effektiv ein n_{0} > 0 so, daß b(n) > f(n) ∀n ≥ n_{0}.

Beweis:

Sei f eine total definierte Turing-berechenbare Funktion und f = f_{M} für eine Turingmaschine M mit k Zuständen. Für jedes genügend große n ∈ gibt es eine Turingmaschine M_{n} mit ⌊\frac{n}{2}⌋ Zuständen, die auf die leere Eingabe mit n Einsen hält. (Beachte, daß ⌊\frac{n}{2}⌋ sehr hoch gegriffen wurde, O(log(n)) Zustände würden genügen.) Für genügend große n ∈ gibt es daher eine Turingmaschine M′_{n} mit weniger als n Zuständen, die auf dem leeren Band mit f(n) Einsen hält. (M′_{n} berechnet zunächst 1^{n} und simuliert dann M auf 1^{n}.) Mit einem Zustand mehr erhalten wir eine Turingmaschine M′′_{n}, die auf dem leeren Band mit (f(n) + 1) Einsen hält. Daher gilt f(n) < f(n) + 1 ≤ b(n) für genügend große n ∈ . (Beachte, daß das in dem Satz erwähnte n sich aus M berechnen läßt).

Bemerkung

Bekannt sind b(0) = 0, b(1), b(2), b(3), b(4) und eventuell b(5). Der Wert b(6) ist noch nicht bekannt, aber sehr groß. Siehe auch den kürzlich erschienenen Beitrag von H. Marxen und J. Buntrock: Attacking the Busy Beaver 5, EATCS – Bulletin \underline{40}, 247-251 (Februar 1990).

7.5 Der Satz von Rice

Satz 7.10 (Satz von Rice)

Jede nicht–triviale Eigenschaft aufzählbarer Sprachen ist unentscheidbar.

Beweis:

Wir wollen uns zuerst klar werden, was dieser Satz bedeutet. Eine Eigenschaft aufzählbarer Sprachen ist eine Abbildung

P : {L ⊆ Σ^{∗}| ∃ Turingmaschine M: L(M) = M} → {true, false}

Nicht–trivial bedeutet dann:

∃ L_{0}, L_{1} ⊆ Σ^{∗} : \{ \begin{matrix}P (L_{0}) & = & false \\ P (L_{1}) & = & true \end{matrix}

Aufzählbare Sprachen werden durch eine Turingmaschine oder auch durch Typ – 0 Grammatiken gegeben. Das heißt zu P betrachten wir die folgende Sprache:

L_{p} = { < M > ∈ {0, 1}^{∗} | M ist Turingmaschine mit P (L(M)) = true}

Die Aussage des Satzes ist dann: L_{p} ist eine unentscheidbare Sprache.

Sei jetzt U eine beliebige, aber feste Turingmaschine mit unentscheidbarem Wortproblem (d. h., L(U) ist unentscheidbar), etwa U = universelle Turingmaschine.

Œ ist P (∅) = false, da gilt:

P ist entscheidbar ⟺ ¬P entscheidbar

Sei L_{1} eine beliebige, aber feste Sprache mit P (L_{1}) = true und M_{1} eine Turingmaschine mit L(M_{1}) = L_{1}. Zu w ∈ Σ^{∗} konstruieren wir jetzt eine Turingmaschine M_{w} wie folgt:

[figure: u; U; w; M_{1}; ja; ja; ja; Eingabe; M_{w}]

Das heißt :

L(M_{w}) = {u ∈ Σ^{∗}| u ∈ L_{1} und w ∈ L(U)}

Es gilt also

L(M_{w}) = L_{1} , falls w ∈ L(U)
L(M_{w}) = ∅ , falls w ∉ L(U)

und deshalb

P (L(M_{w})) = true , falls w ∈ L(U)
P (L(M_{w})) = false , falls w ∉ L(U)

Angenommen L_{p} wäre entscheidbar. Dann könnten wir entscheiden, ob P (L(M_{w})) gilt. Das heißt, wir könnten entscheiden, ob w ∈ L(U) gilt. Dies ist ein Widerspruch.

( Formal : Die Abbildung

\begin{aligned}f : & Σ^{∗} & → & \{0, 1\}^{∗} \\ & w & ↦ & < M_{w} > \end{aligned}

ist total und Turing-berechenbar und w ∈ L(U) ⟺ f(w) ∈ L_{p} )

Korollar 7.9 Die folgenden Fragen sind unentscheidbar:

Eingabe: < M > Kodierung einer Turingmaschine

Fragen: Ist L(M) = ∅, endlich, Σ^{∗}, regulär, …, kontextsensitiv, entscheidbar etc. ?

Satz 7.11 (Unentscheidbarkeit des Halteproblems )

Es ist unentscheidbar, ob eine Turingmaschine M mit leerem Eingabeband hält.

8 Turingmaschinen (andere Definition) 127

Beweis:

Zu w ∈ Σ^{∗} und einer Turingmaschine U mit L(U) unentscheidbar, konstruieren wir eine Turingmaschine M_{w} wie folgt :

Auf die leere Eingabe simuliert M_{w} eine Rechnung von U auf w. Durch das Hinzufügen von Endlosschleifen sorgen wir dafür, daß M_{w} hält gdw. w ∈ L(U).

Bemerkung

Der Satz von Rice läßt sich für sogenannte Indexmengen sehr leicht verallgemeinern. Der obige Satz 7.11 ist dann ein Spezialfall dieser Verallgemeinerung.

8 Turingmaschinen (andere Definition)

Alan Turing (1912–1954) Ziele sind

• Erkennung komplizierterer Sprachen

• nicht nur Sprachakzeptanz, sondern Realisierung von Funktionen über Strings auf

Strings, Numerierung von Strings Turingmaschinen lassen sich dann nicht mehr wesentlich erweitern, sondern bilden einen relativen Abschluß. Jede Formalisierung der Idee ”Rechenverfahren“ oder ”Algorithmus“ ist äquivalent zur Turingmaschine. Drei Kriterien sind zu erfüllen:

• es sollen Automaten sein (Konstruktion und Funktion analog zu früher);

• sie sollen so einfach wie möglich sein;

• sie sollen so allgemein wie möglich sein.

8.1 Aufbau und Arbeitsweise

Definition 8.1

Eine Turingmaschine ist ein Quadrupel (K, Σ, δ, s), wobei gilt:

• K ist eine endliche Menge von Zuständen ohne den Haltezustand h,

• Σ ist ein Alphabet mit Leerzeichen # ohne die Symbole L und R,

• s ∈ K Anfangszustand,

• δ Funktion von K × Σ in (K ∪ {h}) × (Σ ∪ {L, R}).

8 Turingmaschinen (andere Definition) 128  8.1 Aufbau und Arbeitsweise

[figure: q_{0}; q_{1}; q_{2}; q_{3}; h; a; b; a; a; unendliches Band, nach links begrenzt; Lese-/Schreib-Kopf (in beide Richtungen beweglich); Steuereinheit mit endlich vielen Zuständen]

Abbildung 8.1: Turingmaschine

Abbildung 8.1 zeigt eine Turingmaschine.

Der Lese-/Schreibkopf kann Symbole lesen und schreiben; die Steuereinheit arbeitet in diskreten Schritten:

i) alter Zustand und Eingabesymbol → neuer Zustand;

ii) entweder Überschreiben des gelesenen Symbols oder Bewegung des Kopfes nach links (L) oder rechts (R).

Bewegung über das linke Ende hinaus: Maschine hört auf zu arbeiten.

Eingabe: Eingabestring am Ende des Bandes aufgeschrieben, der Rest enthält #; Finalzustände sind nicht notwendig, da die Maschine Nachrichten auf das Band schreiben kann. Der Haltezustand h kennzeichnet das Ende einer Berechnung.

Beispiel:

i) M = (K, Σ, δ, s) mit K = {q_{0}, q_{1}}, Σ = {a, #}, s = q_{0}.

a  #
q_{0} (q_{1}, #) (h, #)
q_{1} (q_{0}, a) (q_{0}, R)

M löscht alle a vor dem ersten Leerzeichen und hält dort an.

δ(q_{1}, a) wird nicht gebraucht. ii) K = {q_{0}}, Σ = {a, #}, s = q_{0}, (q_{0}, a) → (q_{0}, L), (q_{0}, #) → (h, #). M bewegt sich nach links und hält beim ersten Leerzeichen. Sind nur a auf dem Band, so wird der linke Rand erreicht ohne Halt (M hängt).

Konfiguration

Die Konfiguration definiert den aktuellen Zustand den Bandinhalt und die Position des Kopfes; der Bandinhalt wird durch einen String angegeben, der aus drei Teilen besteht:

• Zeichen links vom Kopf (evtl. ∅)

• aktuelles Zeichen

• Zeichen rechts vom Kopf (evtl. ∅)

(nur Zeichen ≠ # am Ende)

Also ist jede Konfiguration ein Element der Menge

(K ∪ {h}) × Σ^{∗} × Σ × (Σ^{∗} (Σ − {#}) ∪ {ε})

Beispiel:

(q, ε, a, aba), (h, ##, #, #a), (q, #a#, #, ε) sind Konfigurationen.

Vereinfachung der Schreibweise:

(q, \underline{a}aba), (h, ##\underline{#}#a), (q, #a#\underline{#}).

Übergang

Der Übergang zwischen den Konfigurationen ist, anschaulich dargestellt, eine Konfiguration und die nach Anwendung von δ entstandene Konfiguration; hängende Konfiguration: am linken Bandende.

8 Turingmaschinen (andere Definition) 130 8.2 Berechnungen mit Turingmaschinen

Beispiel:

w, u ∈ Σ^{∗}, u endet nicht mit #, a, b ∈ Σ.

i) δ(q_{1}, a) = (q_{2}, b)

(q_{1}, w\underline{a}u) |_{\overline{M}} (q_{2}, w\underline{b}u)

ii) δ(q_{1}, a) = (q_{2}, L)

(q_{1}, wb\underline{a}u) |_{\overline{M}} (q_{2}, w\underline{b}au)
(q_{1}, wb\underline{#}) |_{\overline{M}} (q_{2}, w\underline{b})

iii) δ(q_{1}, a) = (q_{2}, R)

(q_{1}, w\underline{a}bu) |_{\overline{M}} (q_{2}, wa\underline{b}u)
(q_{1}, w\underline{a}) |_{\overline{M}} (q_{2}, wa\underline{#})

Definition 8.2 |\frac{⋆}{M} ist der reflexive, transitive Abschluß von |_{\overline{M}} ; Eine Berechnung ist eine Folge von Konfigurationen C_{0}, C_{1}, …, C_{n}(n ≥ 0) mit C_{0} |_{\overline{M}} C_{1} |_{\overline{M}} C_{2} |_{\overline{M}} … |_{\overline{M}} C_{n}. (n ist die Länge der Berechnung)

Beispiel:

M aus obigem Beispiel (S. 128).

(q_{0}, \underline{a}aaa) ⊢ (q_{1}, \underline{#}aaa) ⊢ (q_{0}, #\underline{a}aa) ⊢ (q_{1}, #\underline{#}aa)

⊢ (q_{0}, ##\underline{a}a) ⊢ (q_{1}, ##\underline{#}a) ⊢ (q_{0}, ###\underline{a}) ⊢ (q_{1}, ###\underline{#})
⊢ (q_{0}, ####\underline{#}) ⊢ (h, ####\underline{#})

Berechnung mit neun Schritten.

8.2 Berechnungen mit Turingmaschinen

Im weiteren werden folgende Konventionen benutzt:

Der Eingabestring hat auf jeder Seite ein Leerzeichen und steht am linken Bandende; der Kopf steht auf dem Leerzeichen rechts neben dem Eingabestring; die Arbeit beginnt im Startzustand s.

M hält bei der Eingabe w ⇔ (s, #w\underline{#}) erreicht eine Halt-Konfiguration.

Definition 8.3 Σ_{0}, Σ_{1} Alphabete; # ∉ Σ_{0}, Σ_{1}; f sei eine Funktion von Σ_{0}^{∗} in Σ_{1}^{∗}. Eine Turingmaschine M = (K, Σ, δ, s) berechnet f, falls für Σ_{0}, Σ_{1} ⊆ Σ und w ∈ Σ_{0}^{∗}, f(w) = u

(s, #w\underline{#}) |\frac{⋆}{M} (h, #u\underline{#}).

Existiert eine solche Turingmaschine, so ist f eine Turing-berechenbare Funktion.

Beispiel:

Σ_{0} = Σ_{1} = {a, b}; f : Σ_{0}^{∗} → Σ_{1}^{∗} mit: in jedem Wort w werden a und b gegeneinander ausgetauscht.

M muß also das Wort nach links durchlaufen und die Vertauschung durchführen, anschließend Rückkehr nach rechts.

\begin{aligned}& a & b & # \\ q_{0} & (q_{1}, L) & (q_{1}, L) & (q_{1}, L) \\ q_{1} & (q_{0}, b) & (q_{0}, a) & (q_{2}, R) \\ q_{2} & (q_{2}, R) & (q_{2}, R) & (h, #) \end{aligned} (q_{0}, #aab\underline{#}) |\frac{⋆}{M} (h, #bba\underline{#})

auch f(ε) wird korrekt berechnet: (q_{0}, #\underline{#}) ⊢ (h, #\underline{#})

Korrekte Arbeitsweise für beliebige w ⇒ f ist Turing-berechenbar.

Verallgemeinerung auf mehrstellige Funktionen

f sei eine Funktion von (Σ_{0}^{∗})^{k} in Σ_{1}^{∗} mit k ≥ 0; f(w_{1}, …, w_{k}) = u (s, #w_{1}#w_{2}# … #w_{k}\underline{#}) |\frac{⋆}{M} (h, #u#) ⇒ f ist Turing-berechenbar.

Behandlung der natürlichen Zahlen

| sei ein Symbol ≠ #; n wird dargestellt durch die Kette |^{n} 0 : leere Kette; f : → wird von einer Turingmaschine M berechnet, falls M die Funktion f′ : {|}^{∗} → {|}^{∗} mit

f′(|^{n}) = |^{f(n)} berechnet.

Die Erweiterung auf Funktionen f(n_{1}, …, n_{k}) ist naheliegend und geschieht analog zu oben.

Beispiel:

f sei die Nachfolgerfunktion f(n) = n + 1 für alle n ∈ .

M schreibt | in die Anfangszelle, geht nach rechts und stoppt.

M = (K, Σ, δ, s) mit K = {q_{0}}, Σ = {|, #}, s = q_{0}
δ(q_{0}, |) = (h, R)
δ(q_{0}, #) = (q_{0}, |)
(q_{0}, #||\underline{#}) ⊢ (q_{0}, #||\underline{|}) ⊢ (h, #|||\underline{#})

Startet M in einer unzulässigen Konfiguration, ist das Verhalten anders!

n = 0 wird korrekt behandelt.

Turing-Entscheidbarkeit

Sei Σ_{0} ein Alphabet ohne #; Y, N zwei feste Symbole, die nicht in Σ_{0} liegen. Die Sprache L ⊆ Σ_{0}^{∗} ist Turing-entscheidbar gdw die charakteristische Funktion

XL : Σ_{0}^{∗} → {Y, N} mit

XL(w) = \{ \begin{matrix}Y, falls w ∈ L \\ N, falls w ∉ L \end{matrix}

Turing-berechenbar ist. M entscheidet L.

Beispiel:

Σ_{0} = {a}, L = {w ∈ Σ_{0}^{∗}| |w| ist gerade}, K = {q_{0}, …, q_{6}}, Σ = {a, Y, N, #}, s = q_{0}

#  a  Y  N
q_{0} (q_{1}, L)  ·  ·  ·
q_{1} (q_{4}, R) (q_{2}, #)  ·  ·
q_{2} (q_{3}, L)  ·  ·  ·
q_{3} (q_{6}, R) (q_{0}, #)  ·  ·
q_{4} (q_{5}, Y)  ·  ·  ·
q_{5}  ·  ·  (h, R) (h, R)
q_{6} (q_{5}, N)  ·  ·  ·

(q_{0}, #a^{n}\underline{#}) |\frac{⋆}{M} (h, #Y \underline{#}), falls n gerade.

(q_{0}, #a^{n}\underline{#}) |\frac{⋆}{M} (h, #N\underline{#}), falls n ungerade.

8 Turingmaschinen (andere Definition) 133 8.3 Kombination von Turingmaschinen

Verwendung einer Turingmaschine als Sprachakzeptor

Eine Turingmaschine M akzeptiert einen String w ∈ Σ_{0}^{∗}, falls M bei der Eingabe w hält. M akzeptiert die Sprache L ⊆ Σ_{0}^{∗} gdw L = {w ∈ Σ_{0}^{∗} | M akzeptiert w}. L wird Turingakzeptiert.

Beispiel:

Σ_{0} = {a, b}, L = {w ∈ Σ_{0}^{∗} | w enthält wenigstens ein a}.

M = (K, Σ, δ, s) mit K = {q_{0}}, Σ = {a, b, #}, s = q_{0}

\begin{aligned}& a & b & # \\ q_{0} & (h, a) & (q_{0}, L) & (q_{0}, L) \end{aligned}

8.3 Kombination von Turingmaschinen

Ziel ist jetzt die Konstruktion leistungsfähiger Maschinen, in die kleinere Maschinen als Moduln oder Unterprogrammen eingehen können. Außerdem wird eine graphische Darstellung für diese größeren Maschinen entwickelt.

Verkettung von Turingmaschinen

M sei eine Turingmaschine, (q_{i}, w_{i}\underline{a_{i}}u_{i}) seien Konfigurationen von M.

Gilt  (q_{1}, w_{1}\underline{a_{1}}u_{1}) |\frac{⋆}{M} (q_{2}, ww_{2}\underline{a_{2}}u_{2}) für bestimmtes w
und  (q_{2}, w_{2}\underline{a_{2}}u_{2}) |\frac{⋆}{M} (q_{3}, w_{3}\underline{a_{3}}u_{3}),
dann ist (q_{1}, w_{1}\underline{a_{1}}u_{1}) |\frac{⋆}{M} (q3, ww_{3}\underline{a_{3}}u_{3}).

Wird eine Berechnung durch eine Turingmaschine ausgeführt, ohne daß sie nach links über ein Feld hinausgeht, so ist es gleichgültig, ob dieses Feld ganz links auf dem Band ist oder weiter rechts liegt. In diesem Fall bleibt der Inhalt links von diesem Feld ungeändert.

Damit kann man eine Turingmaschine M_{1} zu einem Teil von M_{2} machen:

M_{2} liefert die Eingabe für M_{1} am rechten Ende des nichtleeren Teils des Bandes und übergibt die Steuerung an M_{1} mit Kopf neben dem Ende der Kette; dann arbeitet M_{1} und gibt die Steuerung bei Arbeitsende zurück. Stehen frühere Ergebnisse von M_{2} links auf dem Band vor dieser Eingabe, so bleiben sie ungeändert.

Voraussetzung: Man kann stets eine Kopie einer Turingmaschine M erzeugen, die keine gemeinsamen Zustände enthält.

Basismaschinen

i) Es gibt |Σ| symbolschreibende Maschinen, eine für jedes Symbol in Σ.

W_{a} = (K, Σ, δ, s) mit K = {q}, s = q, δ(q, b) = (h, a) für jedes b ∈ Σ.

Anstelle von W_{a} schreibt man einfach a.

ii) Kopfbewegende Maschinen bewegen den Kopf ein Feld nach links oder rechts und halten dann.

V_{L} = ({q}, Σ, δ_{L}, q) mit δ_{L}(q, a) = (h, L) für jedes a ∈ Σ.

V_{R} = ({q}, Σ, δ_{R}, q) mit δ_{R}(q, a) = (h, R) für jedes a ∈ Σ.

iii) Kombinationsregeln: Erste Maschine arbeitet bis zum Halt; dann startet die zweite Maschine im Startzustand mit Band und Kopf, wie sie die erste Maschine zurückgelassen hat.

Darstellung: > M_{1} ⟶ M_{2}.

Die Verbindung zwischen zwei Maschinen kann abhängen von dem Symbol in dem Feld, bei dem die erste Maschine halten würde:

[figure: > M_{1}; a; M_{2}; b; M_{3}]

Definition 8.4 Ein Maschinenschema ist ein Tripel (M, η, M_{0}) mit M: endliche Menge von Turingmaschinen mit einem gemeinsamen Alphabet Σ und disjunkten Zustandsmengen; M_{0} ∈ M: Anfangsmaschine; η: Funktion von einer Teilmenge von (M × Σ) in M.

Definition 8.5 Sei M = {M_{0}, …, M_{m}}, m ≥ 0 mit M_{i} = (K_{i}, Σ, δ_{i}, s_{i}); q_{0}, …, q_{m} seien neue Zustände, die in keinem K_{i} enthalten sind; das Maschinenschema (M, η, M_{0}) repräsentiert eine Turingmaschine M = (K, Σ, δ, s) mit

K = K_{0} ∪ … ∪ K_{m} ∪ {q_{0}, …, q_{m}}
s = s_{0}

Die q_{i} sind temporäre Stoppunkte zwischen den verschiedenen Maschinen.

(a) 0 ≤ i ≤ m, q ∈ K_{i}, a ∈ Σ, δ_{i}(q, a) = (p, b), p ≠ h :

δ(q, a) = δ_{i}(q, a) = (p, b)

arbeitet wie M_{i}

(b) 0 ≤ i ≤ m, q ∈ K_{i}, a ∈ Σ, δ_{i}(q, a) = (h, b) :

δ(q, a) = (q_{i}, b)

temporärer Stopp

(c) 0 ≤ i ≤ m, a ∈ Σ, η(M_{i}, a) nicht definiert:

δ(q_{i}, a) = (h, a)

Halt, falls keine Folgemaschine

(d) 0 ≤ i ≤ m, a ∈ Σ, η(M_{i}, a) = M_{j}, δ_{j}(s_{j}, a) = (p, b) :

δ(q_{i}, a) = \{ \begin{matrix}(p, b) & für & p ≠ h \\ (q_{j}, b) & für & p = h \end{matrix}

erste Operation der Folgemaschine

Dabei müssen die M_{i} nicht notwendig voneinander verschieden sein.

Beispiel:

i) M = {M_{0}} mit M_{0} = R = ({q}, Σ, δ_{R}, q).

Maschinenschema (M, η, M_{0}) mit η(M_{0}, a) = \{ \begin{matrix}M_{0} & für a ≠ # \\ nicht definiert & für a = # \end{matrix}

(M, η, M_{0}) stellt eine Maschine R_{#} dar mit

R_{#} = ({q, q_{0}}, Σ, δ, q) und

δ(q, a) = (q_{0}, R) für jedes a ∈ Σ

δ(q_{0}, a) = \{ \begin{matrix}(q_{0}, R) & für & a ≠ # \\ (h, a) & für & a = # \end{matrix}

Diese Maschine bewegt sich ein Feld nach rechts und sucht dann nach rechts ein Leerzeichen und hält dort.

[figure: > R; a; b; c; graphische Darstellung]

ii) > R ⟶^{a} R zwei Kopien von R Bewegung um ein Feld nach rechts; falls dort a steht, dann zweite Bewegung nach rechts.

iii) Abgekürzte Darstellungen:

> R ⟶^{a,b,c,#} R; ist Σ = {a, b, c, #}, dann: > R ⟶ R

oder auch Nebeneinanderschreibung: RR bzw. R^{2} σ̄: beliebiges Symbol ≠ σ

[figure: > R; ¯#; ⇔; > R; σ ≠ #]

iv)

> R

[figure]

# a ≠ #

La

Bewegung bis zum ersten nichtleeren Feld; kopiert dieses Symbol auf das Feld links daneben v) Maschinen zum Finden markierter Felder

> R

[figure]

¯#

> L

[figure]

¯#

R_{#}: erstes Leerfeld nach rechts bestimmt L_{#}: erstes Leerfeld nach links bestimmt

> R

[figure]

#

> L

[figure]

#

R ¯#: erstes nichtleeres Feld nach rechts L ¯#: erstes nichtleeres Feld nach links

vi) Kopiermaschine C

(s, #w\underline{#}) |\frac{∗}{C} (h, #w#w\underline{#})

Kopie eines Wortes

[figure: > L_{#}; R; σ ≠ #; #R_{#}^{2}σL_{#}^{2}σ; #; R_{#}]
Eingabe:  #abc\underline{#}
mit L_{#} :  \underline{#}abc#
mit R :  #\underline{a}bc#
a ≠ #, # geschrieben:  #\underline{#}bc#
zwei Leerzeichen gesucht:  ##bc#\underline{#}
a geschrieben:  ##bc#\underline{a}
zwei Leerzeichen nach links: #\underline{#}bc#a
a geschrieben:  #\underline{a}bc#a

und weiter: #a\underline{b}c#a ⟶ #a\underline{#}c#a ⟶ #a#c#a\underline{#} ⟶ #a#c#a\underline{b} ⟶ #a\underline{#}c#ab ⟶

#a\underline{b}c#ab ⟶ #ab\underline{c}#ab ⟶ … ⟶ #ab\underline{c}#abc ⟶ #abc\underline{#}abc ⟶ #abc#abc\underline{#} Halt.

Es wird stets das rechteste Wort kopiert: #u#v#w\underline{#} wird transformiert in #u#v#w#w\underline{#}. C funktioniert nicht korrekt, wenn am Anfang nichtleere Felder rechts vom Kopf vorkommen. vii) Linksverschiebung S_{L}: verschiebt ein Wort ohne Leerzeichen ein Feld nach links.

[figure: > L_{#}; R; σ ≠ #; LσR; #; L_{#}]

Rechtsverschiebung S_{R}: analog.

viii) Alphabet Σ mit #, Σ_{0} = Σ − {#}, f(w) = ww für jedes w ∈ Σ_{0}^{∗} wird durch die Maschine CS_{L} berechnet.

ix) f(w) = ww^{R}

[figure: > L; σ ≠ #; #R_{#}σL_{#}σ; #; R_{#}]

#σ_{1} … σ_{n}\underline{#} wird transformiert in #σ_{1} … σ_{n}σ_{n} … σ_{1}\underline{#}.

x) Σ_{0} = {a, b}, L = {w ∈ Σ_{0}^{∗}|w = w^{R}}, L wird durch die nachstehende Turingmaschine entschieden:

[figure: > S_{R}L_{#}LaRR; σ ≠ #; #R_{#}L; σ; #L_{#}; #; L ¯##RY R; #; τ ≠ σ, #; #L; ¯#; #; L ¯##RNR]

Die Maschine transformiert #w\underline{#} in a\underline{#}w und löscht an beiden Enden des Wortes Buchstaben. Je nach Gleichheit bzw. Ungleichheit wird am Ende Y oder N auf das Band geschrieben. xi) Σ_{0} = {a, b, c}, L = {w ∈ Σ_{0}^{∗}|w hat gleiche Zahl von a, b, c}, L wird akzeptiert

von nachfolgender Maschine:

[figure: > L; d; b, c; L; b, c, d; a; dR_{#}L; a, c, d; b; dR_{#}L; a, b, d; c; dR_{#}; a; #; #; #; #]

In jedem Durchlauf wird ein a, ein b und ein c gelöscht und durch d ersetzt; bleiben nur d zurück, wird akzeptiert.

xii) Subtraktion: x ÷ y = \{ \begin{matrix}x − y & für x ≥ y \\ 0 & für x < y \end{matrix}

Vorgehensweise analog; Darstellung von Zahlen n, m durch |^{n} und |^{m}; Löschen von | an beiden Enden — Auswertung. #|^{n}#|^{m} wird in a|^{n}a|^{m} transformiert; L_{a}, R_{a} suchen a.

[figure: > L_{#}aL_{#}aR_{a}R; |; R_{#}L#L_{a}L ¯#; |; #; #; L#L_{a}#R; |; a; R_{a}#R; |; #; #; L_{a}#R]

8 Turingmaschinen (andere Definition) 140  8.4 Erweiterung von Turingmaschinen

xiii) F (n, m) = n · m Idee: Maschine prüft, ob n = 0 oder m = 0; dann leere Kette als Ausgabe; ansonsten wird |^{m} n–mal kopiert.

[figure: > aL_{#}L; |; #; L; |; aR_{a}#CaL_{a}#; #; R_{a}; R; |; #; a; #L_{a}#; #; aR_{a}#; L¯|; #; |R_{#}L_{#}; a; #R_{#}]

Übungsaufgabe: Realisierung von Beispielen

8.4 Erweiterung von Turingmaschinen

Es gibt eine Reihe von Möglichkeiten, Turingmaschinen ”leistungsfähiger“ zu machen — all dies fügt aber zu den berechenbaren Funktionen oder entscheidbaren Sprachen nichts hinzu; möglich sind:

• unendliches Band in beiden Richtungen;

• mehrere Bänder;

• mehrere Köpfe;

• zweidimensionales Band;

• Kombination dieser Eigenschaften.

Die Eigenschaften der erweiterten Maschine können immer durch Maschinen vom Standardtyp simuliert werden. Analog zu früher können auch nichtdeterministische Turingmaschinen betrachtet und ebenfalls auf den Standardtyp reduziert werden.

Im folgenden werden alle diese Typen aus Gründen der Anschaulichkeit gleichberechtigt verwendet.

8 Turingmaschinen (andere Definition) 141  8.5 Unlösbare Probleme

8.5 Unlösbare Probleme

Satz 8.1

Die folgenden Probleme über Turingmaschinen sind unlösbar:

i) Gegeben Maschine M und Wort w; hält M bei Eingabe w? H(M, w) ist nicht entscheidbar

ii) Gegeben feste Maschine M und Wort w; hält M bei Eingabe w?

H(w) ist nicht entscheidbar

iii) Gegeben Maschine M; hält M bei leerem Band?

H(M) ist nicht entscheidbar

iv) Gegeben Maschine M; gibt es überhaupt ein Wort, für das M hält?

H(M) ist nicht entscheidbar

v) Gegeben Maschine M; hält M bei jedem Eingabewort? vi) Gegeben zwei Maschinen M_{1}, M_{2}; halten sie bei den gleichen Eingabewörtern?

L(M_{1}) = L(M_{2})

vii) Gegeben Maschine M; ist L(M) regulär, kontextfrei, Turing-entscheidbar?

Beweis:

Allgemeine Methode: Zurückführung auf bereits bekannten Widerspruch (Reduktion)! i) bereits bewiesen ii) bereits bewiesen iii) Angenommen, M_{0} entscheidet L = {p(M)|M akzeptiert ϵ}. Ist Maschine M und

Wort w gegeben, so kann M_{w} konstruiert werden:

M_{w} schreibt w auf das leere Band und simuliert dann M:

M_{w} = a_{1}Ra_{2}R … Ra_{n}RM.

Mit M_{0} kann man K_{0} entscheiden (Widerspruch!) p(M_{w}) als Eingabe an M_{0} : M_{0} hält mit Y ⟶ M_{w} akzeptiert ϵ, M akzeptiert w. Hält M_{0} mit N ⟶ M_{0} akzeptiert ϵ nicht ⟶ M akzeptiert w nicht. Also könnte M_{0} benutzt werden, um festzustellen, ob eine beliebige Maschine ein beliebiges Wort akzeptiert.

iv) E sei die frühere Löschmaschine:

#w\underline{#} wird in \underline{#} transformiert; T_{1} sei eine Maschine, die #p(M)\underline{#} in #p(ERM)\underline{#} transformiert (das Wort w wird ausradiert).

Wenn eine Maschine M_{1} {p(M)|M hält bei einer Eingabe} akzeptiert, so akzeptiert T_{1} M_{1} {p(M)|M akzeptiert ϵ}.

v) wie 4.

⋮

Fast alle Fragen über Turingmaschinen können nicht durch Algorithmen behandelt werden. Typisch ist 5.:

Für keine Programmiersprache gibt es einen Algorithmus, der bestimmt, ob eine Instruktionsfolge immer endet und eine korrekte Antwort liefert.

Das bedeutet auch, daß das Problem der Programmverifikation im allgemeinen unlösbar ist. Ähnliche Probleme treten auch bei anderen Darstellungen auf.

9 lin. beschr. Automat und Typ – 1 Spr. 143

9 Linear beschränkter Automat und Typ – 1 Sprachen

Definition 9.1 (Linear beschränkter Automat und Typ – 1 Sprachen) Ein linear beschränkter Automat (LBA) ist ein Tupel M = (Q, Σ, Γ, δ, q_{0}, F, $, c| ) wobei Q, Σ, Γ, δ, q_{0}, F wie bei einer Turingmaschine erklärt sind (Blanks werden nicht gebraucht). $, c| sind Symbole, die den linken und rechten Rand des Arbeitsbandes markieren. Sie dürfen nicht überschrieben werden und der Kopf darf links nicht über das $–Zeichen und rechts nicht über das c| –Zeichen hinwegbewegt werden.

Die akzeptierte Sprache eines linear beschränkten Automaten M ist

L(M) = \{w ∈ Σ^{∗} | $q_{0}wc| |\frac{⋆}{M} $uq_{f}vc| mit q_{f} ∈ F \}.

$ a_{1} a_{2} a_{n} c|

mögliche Kopfbewegungen

endliche Kontrolle

[figure]

[figure]

[figure]

[figure]

[figure]

Abbildung 9.1: Linear beschränkter Automat

Die Symbole $, c| werden nur zur Identifikation des Anfangs und Endes der Eingabe benutzt. Der Arbeitsplatzbereich ist also linear in der Eingabelänge.

Satz 9.1 Sei L ⊆ Σ^{∗} kontextsensitiv gegeben durch eine Typ – 1 Grammatik G, dann existiert effektiv ein linear beschränkter Automat M mit L(M) = L = L(G).

Beweis:

Gilt λ ∈ L, d. h. S → λ ist eine Regel, so akzeptieren wir die Startkonfiguration $q_{0}c| .

Sei jetzt w ∈ Σ^{∗} mit |w| ≥ 1. Dann arbeitet der linear beschränkte Automat nicht deterministisch wie folgt:

i) Unterteile das Eingabe-Band in zwei Spuren und schreibe w = a_{1} … a_{n} auf die obere Spur. Wir erhalten :

$ a_{1} a_{2}  a_{n} c|

ii) Auf der unteren Spur berechnen wir nicht–deterministisch mit Hilfe der monotonen Regeln von G ein beliebiges v ∈ Σ^{∗} mit S⟹_{G}^{⋆}v und |v| ≤ |w|

iii) Akzeptiere w, falls v = w. Dann gilt L(M) = L(G)

Satz 9.2 Sei M ein linear beschränkter Automat. Dann existiert effektiv eine Typ – 1 Grammatik G mit L(G) = L(M).

Beweis:

Der Beweis ist im Prinzip einfach. Ein kleines Problem ist es, (beschränkte) Löschungen in der Grammatik zu vermeiden. Wir lösen dies hier durch die folgende technische Vorbemerkung:

Sei L = L(G), dann gilt :

L = L_{1} ∪ L_{2}, wobei \{ \begin{matrix}L_{1} & = & \{w ∈ L| |w| < 5\} \\ L_{2} & = & \{w ∈ L| |w| ≥ 5\} \end{matrix}

L_{1} ist endlich und effektiv angebbar. Die Typ – 1 Sprachen sind unter Vereinigung abgeschlossen. Daher gilt Œ L = L_{2}, d. h. alle Wörter aus L haben mindestens die Länge 5.

Für x, y, z ∈ Σ führen wir neue Symbole der Form [x][xy][xyz] ein und erhalten so ein Alphabet Σ′.

Es ist leicht einen linear beschränkten Automaten M′ zu konstruieren mit

L(M′) = {[a_{1}a_{2}a_{3}][a_{4}] … [a_{n−2}][a_{n−1}a_{n}] ∈ Σ′ | a_{1} … a_{n} ∈ L}

(Fasse die ersten drei und letzten beiden Felder des Arbeitsbandes von M jeweils zu einem Feld von M′ zusammen)

d. h.

[a_{1}a_{2}a_{3}][a_{4}] … [a_{n−2}][a_{n−1}a_{n}] ∈ L(M′)

gdw.

$q_{0}a_{1}a_{2}a_{3} … a_{n−1}a_{n}c| |_{\overline{M}} $uq_{f}vc| mit |uv| = n − 3 und q_{f} ∈ F

Die Arbeitsweise von M′ läßt sich effektiv (analog zum Typ – 0 Fall) durch monotone Regeln beschreiben.

Das heißt wir finden effektiv ein G′ mit G′ vom Typ – 1 und

L(G′) = {$q_{0}[a_{1}a_{2}a_{3}][a_{4}] … [a_{n−2}][a_{n−1}a_{n}]c| | a_{1} … a_{n} ∈ L}

Erweitere G′ um die folgenden monotonen Regeln für alle x, y, z ∈ Σ:

\begin{aligned}$q_{0}[xyz] & → & xyz \\ [xy]c| & → & xy \\ [x] & → & x \end{aligned}

Damit erhalten wir die gesuchte Grammatik G mit L(G)=L(M).

Ein offenes und ein gelöstes Problem

i) Das folgende Problem von Kuroda aus dem Jahre 1964 ist noch offen:

1. LBA - Problem : Gibt es zu einem linear beschränkten Automaten M einen determinierenden linear beschränkten Automaten (DLBA) M′ mit L(M) = L(M′)?

In der Komplexitätstheorie wird dies zu der Frage, ob DSPACE(f) = NSPACE(f) für geeignete f, hier f(n) = n, ist.

ii) Das 2. LBA - Problem von Kuroda (1964) wurde 1987 von N. Immerman (USA) [6] und dem Studenten R.Szelepcsényi [7] unabhänig gelöst. Es gilt, daß kontextsensitive Sprachen unter Komplement abgeschlossen sind.

Tatsächlich haben sie (etwas) allgemeiner gezeigt: Co-NSPACE(f) = NSPACE(f) ∀f ≥ log. Für den Beweis verweisen wir auf die Vorlesung über Komplexitätstheorie.

Schluß: Zwei Wahrheiten — Worte und Wörter

i) (Nicht nur) wer sich für ”Formale Sprachen“ interessiert, sollte eine Vorlesung über Komplexitätstheorie besuchen.

ii) Daß ein Problem allgemein als ”schwierig“ klassifiziert wird, bedeutet nicht, daß es mit studentischen Mitteln unlösbar ist.

Anhang

A Abkürzungstabelle

Häufige Abkürzungen

CNF  Chomsky–Normalform
det.  deterministisch
endl.  endlich
∃  es existiert
∀  für alle
gdw.  genau dann wenn
Œ  ohne Einschränkung

o. B. d. A. ohne Beschränkung der Allgemeinheit

k. f.  kontextfrei
k. s.  kontextsensitiv
KA  Kellerautomat
GNF  Greibach–Normalform
LBA  linear beschränkter Automat
L. v. B. H. Lemma von Bar-Hillel
TM  Turingmaschine

Häufige Symbole

a, b, c, … häufig für Buchstaben (a, b, c ∈ Σ)

A, B, C, …

häufig  für  Variablen
(A, B, C ∈ V)

α, β, γ, … häufig für Zeichenketten (α, β, γ ∈ (V ∪ Σ)^{∗})

A  Automat (Q, Σ, δ, I, F)
b̄  Blank
c|  Cent
δ  endliche Relation
F  Menge von Finalzuständen
G  Grammatik
I  Menge von Startzuständen
Γ  Bandalphabet
L  Sprache

mit Endzustand akzeptierender Kellerautomat

λ  leeres Wort
M  Monoid

Kellerautomat (Q, Σ, Γ, q_{0}, δ, $, F) Turingmaschine (Q, Σ, Γ, δ, q_{0}, F,b̄)

N mit leeren Keller akzeptierender Kellerautomat

P  Produktion
Q  Zustandsmenge
q  Zustand
q_{0}  Startzustand
S  Satzformsprache

Startsymbol

$  Kellerbodenzeichen, Dollar
Σ  Eingabealphabet, a, b, c ∈ Σ
u, v, w, … häufig für Wörter

(u, v, w ∈ Σ^{∗})

V  Variable, A, B, C ∈ V

B Übungsaufgaben

gestellt von K. Reinhardt und V. Diekert

1. Geben Sie Grammatiken für die folgenden Sprachen an:

(i) {a^{n} | n ∈ }

(ii) {a^{n}b^{n} | n ∈ }

(iii) {a^{n}b^{n}c^{n} | n ∈ }

(iv) {x ∈ {a, b}^{∗} | #_{a}(x) = #_{b}(x)}

(v) {x ∈ {a, b, c}^{∗} | #_{a}(x) = #_{b}(x) = #_{c}(x)}

#_{a}(x) ist die Anzahl der Vorkommen von a in x. Welchen Chomsky - Typ haben Ihre Grammatiken?

2. Für die Sprache

L_{d} = { x | |x| > 0, x ist eine zusammenhängende Folge in der Dezimaldar-

stellung von 1/7 hinter dem Komma } über Σ_{2} = { 0, 1, …, 9 },

gebe man eine Grammatik G mit L(G) = L_{d} von möglichst großem Chomsky - Typ an.

3. Sei G = ( {A, B, S}, {0, 1}, P, S) eine Grammatik mit P = { S → 0AB, 1B → 0, B → SA, B → 01, A1 → SB1, A0 → S0B }. Man zeige, daß L(G) = ∅.

4. Man gebe eine reguläre Grammatik für die Sprache L = { 0^{n}1^{m} | n, m ≥ 0, n gerade ⇔ m ungerade } über Σ = {0, 1} an und weise die Korrektheit nach.

5. Eine Grammatik heißt monoton, wenn für jede ihrer Produktionen α → β die Bedingung |α| ≤ |β| gilt und kontextsensitiv, wenn jede Produktion die Form αAγ → αβγ mit A ∈ V und β ∈ (V ∪ Σ)^{+} hat.

Man zeige, daß eine Sprache genau dann monoton ist, wenn sie kontextsensitiv ist.

Hinweis: Bei der Konstruktion einer kontextsensitiven Grammatik sind für die Simulation einer monotonen Produktion mehrere neue Produktionen und Variablen zu verwenden.

6. Sie wollen eine Regel der Form AB → CD einer monotonen Grammatik durch die kontextsensitiven Regeln AB → LB, LB → LD, LD → CD simulieren, wobei L eine neues Symbol ist. Der Haushaltsausschuß bewilligt jedoch nur die Regeln AB → CB, CB → CD. Was sagen Sie dazu?

7. Sie ersetzen in einer monotonen Grammatik eine Regel r von der Form A_{1}...A_{m} →

B_{1}...B_{n} mit 1 ≤ m ≤ n durch die folgenden Regeln:

r′_{0} = A_{1} → R_{1},
r′_{i} = R_{i}A_{i+1} → B_{i}R_{i+1} für 1 ≤ i < m,
r′_{j} = R_{j} → B_{j}R_{j+1}  für m ≤ j < n,
r′_{n} = R_{n} → B_{n},

wobei R_{1}, ..., R_{n} neue Symbole seien. Geben Sie eine Variante dieser Ersetzung an, die keine Kettenproduktion erzeugt. (Achten Sie auf die verschiedenen Fälle !) Stimmt Ihre Elemination von Kettenprodukten mit dem allgemeinen Verfahren aus der Vorlesung überein?

8. Sei G = ( V, Σ, P, S) eine Grammatik und es sei jeweils A, B ∈ V und u ∈ Σ^{∗}. Man zeige:

(i) Haben alle Produktionen die Form A → Bu oder A → u, so lässt sich L(G) auch durch eine rechtslineare Grammatik erzeugen.

(ii) Haben alle Produktionen die Form A → Bu oder A → uB oder A → u, so ist L(G) i.a. nicht regulär.

9. Man zeige, daß L = { a^{n}b^{k}c^{m} | n, k, m > 0 und n = 2k − m } nicht regulär ist.

10. Man gebe einen endlichen Automaten an, der die Sprache

L_{d} = { x | |x| > 0, x ist eine zusammenhängende Folge in der Dezimaldar-

stellung von 1/7 hinter dem Komma } über Σ_{2} = { 0, 1, …, 9 },

von Aufgabe 2 akzeptiert.

11. L_{1} sei die Menge der Dezimaldarstellungen derjenigen natürlichen Zahlen über Σ_{1} = {0, 1, …, 9} ( ohne führende Nullen ) die durch 3 teilbar sind.

Man gebe einen endlichen Automaten an, der die Sprache L_{1} akzeptiert und weise dessen Korrektheit nach.

12. Man gebe einen minimalen endlichen Automaten an, der die Sprache L = { 0^{n}1^{m} | n, m ≥ 0, n gerade ⇔ m ungerade } von Aufgabe 4 akzeptiert und weise die Minimalität nach.

13. Sei Σ_{2} = {0, 1}^{3}. Für s = s_{1} … s_{n} ∈ Σ_{2}^{+} (n ≥ 1) mit

s_{i} = ( \begin{matrix}x_{i} \\ y_{i} \\ z_{i} \end{matrix} ); x_{i}, y_{i}, z_{i} ∈ \{0, 1\} (1 ≤ i ≤ n)

sei x = x_{1} … x_{n}, y = y_{1} … y_{n} und z = z_{1} … z_{n}. Die Sprache L_{2} über Σ_{2} ist definiert durch s ∈ L_{2} :⇔ x + y = z, dabei sei “ + “ die binäre Addition. Man gebe einen endlichen Automaten an, der L_{2} akzeptiert und weise dessen Korrektheit nach.

14. Geben Sie einen nichtdeterministischen endlichen Automaten an, der für festes y ∈

Σ^{∗}, Σ = {0, 1}, alle Wörter akzeptiert, in denen y vorkommt, d.h.

L = { x ∈ Σ^{∗} | x = y_{1}yy_{2}, y_{1}, y_{2} ∈ Σ^{∗} }

15. Sei M = ( {z_{0}, z_{1}, z_{2}}, {a, b}, δ, z_{0}, {z_{2}}) ein nichtdeterministischer endlicher Auto-

mat mit folgenden Anweisungen in δ :

(z_{0}, b, z_{0})  (z_{1}, a, z_{0})  (z_{2}, a, z_{0})
(z_{0}, a, z_{1})  (z_{1}, a, z_{1})  (z_{2}, b, z_{1})
(z_{0}, a, z_{2})  (z_{2}, a, z_{2})

Geben Sie einen deterministischen endlichen Automaten an, der L(M) akzeptiert.

16. Die Sprache L über dem Alphabet Σ = {0, 1} sei definiert durch

x ∈ L :⇔ x = 0y10 oder x = 0y11, wobei y ∈ Σ^{∗}. Auf Σ^{∗} ist die Äquivalenzrelation R_{L} folgendermaßen definiert:

xR_{L}y :⇔ ∀z ∈ Σ^{∗} (xz ∈ L ⇔ yz ∈ L)

a) Konstruieren Sie den minimalen Automaten, der L darstellt.

b) Geben Sie die Äquivalenzklassen von R_{L} an und zeigen sie, daß sie paarweise verschieden sind.

(Teil a und b können in beliebiger Reihenfolge gelöst werden.)

17. Geben Sie rationale (reguläre) Ausdrücke an, die L_{1} und L_{2} über Σ = {a, b} be-

schreiben:

L_{1} := { x | x enthält > 1 a ⇔ x enthält ≤ 1 b }

L_{2} := { x | x enthält eine gerade Anzahl von a’s und von b’s }.

18. Man gebe die Sprachen L_{3}, L_{4} und L_{5}, die durch die regulären Ausdrücke L_{3} := {(b + c)^{∗}a(b^{∗}a + c^{∗}a)^{∗}(b + c)^{∗} + (b + c)^{∗}},

L_{4} := {(a(ab + ba)^{∗}b + b(ab + ba)^{∗}a)^{∗}} und

L_{5} := {(a(a(ab + ba)^{∗}b + b(ab + ba)^{∗}a)^{∗}b + b(a(ab + ba)^{∗}b + b(ab + ba)^{∗}a)^{∗}a)^{∗}} beschrieben sind, und die dazugehörigen endlichen Automaten an.

19. Für L ⊆ Σ^{∗} ist L^{R} := { x ∈ Σ^{∗} | x^{R} ∈ L }, dabei ist x^{R} := x_{n} … x_{2}x_{1} die Spiegelung von x = x_{1}x_{2} … x_{n} ∈ Σ_{1}^{∗} . Man zeige: Ist L kontextfrei, so auch L^{R}.

20. Man zeige, daß die folgenden Sprachen kontextfrei, aber nicht regulär sind: a) L_{1} = { a^{n}b^{m} | n ≠ m ∈ },

b) L_{2} = { a^{i} b^{j} c^{k} | i ≤ k oder j ≤ k, i, j, k ≥ 1 },

c) L_{3} = { b_{n} & b_{n+1}^{R} | n ≥ 1 } über dem Alphabet {0, 1, &} , dabei ist b_{n} ∈ {0, 1}^{+} die Binärdarstellung von n (ohne führende Nullen) und x^{R} wie in Aufgabe 18.

d) L_{4} = { x ∈ {a, b}^{+} | die Anzahl der a’s ist gleich der Anzahl b’s in x },

e) \overline{L}_{4},

f) L_{5} = { x ∈ {0, 1}^{+} | x ≠ ww , für w ∈ {0, 1}^{+} }.

21. Man zeige, daß die folgenden Sprachen nicht kontextfrei sind:

a) L_{1} = { a^{n^{2}} | n ∈ }

b) L_{2} = { a^{p} | p ∈ prim },

c) L_{3} = { a^{i}b^{j} | i^{2} ≥ j , für i, j > 0 },

d) L_{4} = { b_{n} & b_{n+1} | n ≥ 1 },

e) \overline{L}_{5}, für L_{5} von Aufgabe 19.

22. Sei L = { b a b aa b aaa b … b a^{n−1} b a^{n} b | n ≥ 1 }. Zeigen Sie mittels einer geeigneten Substitution und L_{1} von Aufgabe 21, daß L nicht kontextfrei ist.

23. Zeige mittels eines Gegenbeispiels, daß die kontextfreien Sprachen nicht unter Komplementbildung abgeschlossen sind.

24. Mittels L = { a^{i} b^{j} c^{k}d^{l} | i = 0 oder j = k = l, i, j, k, l ∈ } zeige man, daß die Umkehrung des Lemmas von Bar-Hillel für reguläre und für kontextfreie Sprachen i.a. falsch ist. Hinweis: Der Durchschnitt einer kontextfreien mit einer regulären Sprache ist kontextfrei.

25. Gegeben sei die Grammatik G = ( {S, A}, {0, 1}, P, S) mit

P = { S → A0 | 0, A → SS | 1 }. Man gebe eine zu G äquivalente Grammatik in Greibach-Normalform an.

26. Gegeben sei die Grammatik G = ({S, A, B, C, D}, {a, b, c, d}, P, S) mit P = {S → AB | aBbBA | aACBd, A → DSc | cDBCd | b, B → CaD | DDD, C → CaD | DAC, D → AB | ϵ}. Bringe die Grammatik gemäß den 5 Schritten der Vorlesung in Chomsky-Normalform.

27. Man zeige, daß für L = { w ∈ {1}^{∗} | ∃p, q ∈ |w| = q^{2} + p , mit 0 < p < q } gilt: Weder L noch \overline{L} besitzen eine unendliche kontextfreie Teilmenge.

28. Geben Sie Kellerautomaten an, die die folgenden Sprachen akzeptieren:

a) L_{1} = { a^{m_{1}} b a^{m_{2}}b … b a^{m_{n}} | n ≥ 2, m_{1}, …, m_{n} ≥ 0 und es gibt 1 ≤ i, j ≤ n mit m_{i} ≠ m_{j} },

b) L_{2} = { a^{n}b^{m} | m ≤ n ≤ 2m, n, m ∈ },

c) L_{3} = { x ∈ {a, b}^{+} | #b’s in x ≤ #a’s in x ≤ 2 #b’s in x },

d) L_{4} = { b_{n} & b_{3n}^{R} | n ≥ 1 }.

29. Konstruieren Sie zu dem Kellerautomaten aus Aufgabe 28 b) gemäß dem Verfahren aus der Vorlesung eine kontextfreie Grammatik.

30. Sei L = N(M) für einen Kellerautomaten M, der nie mehr als k Zeichen im Keller hat, für ein festes k ∈ . Zeigen Sie , daß L regulär ist.

31. Man zeige: Zu jedem Kellerautomaten M gibt es einen Kellerautomaten M′ ohne λ−Übergänge, (d.h. ohne Übergänge, bei denen kein Zeichen von der Eingabe gelesen wird) mit L(M) = L(M′).

32. Sei Σ = {a} ein einelementiges Alphabet. Zeigen Sie:

a) Jede kontextfreie Sprache über Σ ist regulär.

b) Es gelten die Umkehrungen der Lemmas von Bar-Hillel für reguläre und kontextfreie Sprachen über Σ.

Hinweis: Sei L eine Sprache über Σ, die die Behauptung des Lemmas von Bar-Hillel für kontextfreie Sprachen erfüllt. Zeigen Sie zunächst, daß dann die Behauptungen (i), (ii) und (iii) gelten:

(i) Es gibt ein n ∈ , so daß für alle x ∈ L mit |x| ≥ n gilt:

∃u, v ∈ Σ^{∗} x = uv , 0 < |v| ≤ n und uv^{i} ∈ L ∀i ≥ 0.

(ii) Für n wie in (i) sei p := kgV (1, 2, …, n). Dann gilt für alle x ∈ L mit |x| ≥ n :

xa^{ip} ∈ L ∀i ≥ 0.

(iii) Für p, n wie in (ii) und 0 ≤ r < p sei \overline{r} = \{ x ∈ Σ^{∗} | |x| = tp + r \},

die Wörter, deren Länge in der Restklasse r modulo p liegen. Dann gilt für jedes r mit 0 ≤ r < p entweder

• \overline{r} ist bis auf endlich viele Wörter in L enthalten, oder

• \overline{r} und L haben höchstens Wörter der Länge < n gemeinsam.

33. Zeigen Sie, daß jede deterministisch kontextfreie Sprache von einem deterministischen Kellerautomaten erkannt werden kann, der nur bei pop-Aktionen λ-Übergänge hat, d.h. alle Übergänge haben die Form

(q, a, k) → (p, γ) a ≠ λ oder (q, λ, k) → (p, λ)

34. Zeigen Sie, daß die deterministisch kontextfreien Sprachen nicht gegenüber der Reverse-Operation ^{R} abgeschlossen sind.

Hinweis: Zeigen Sie, daß die Sprache

L = {dc^{i}b^{i}a^{j} | i, j ≥ 0} ∪ {c^{i}b^{j}a^{j} | i, j ≥ 0}

deterministisch kontextfrei ist, L^{R} jedoch nicht, indem Sie angeben, wie ein deterministischer Kellerautomat, der L^{R} erkennen könnte, umgebaut werden kann zu einem Kellerautomaten, der {a^{n}b^{n}c^{n}d | n ≥ 0} erkennt.

35. Zeigen Sie, daß die deterministisch kontextfreien Sprachen nicht gegenüber Homomorphismen abgeschlossen sind.

36. Zeigen Sie, daß eine deterministisch kontextfreie Sprache existiert, die nicht von einem deterministischen Kellerautomaten ohne λ-Übergänge erkannt werden kann. Dazu:

a) Zeigen Sie, dass die Sprache

L = {a^{i}b^{j}c^{i} | i, j ≥ 0} ∪ {a^{i}b^{j}d^{j} | i, j ≥ 0}

deterministisch kontextfrei ist. b) Zeigen Sie, daß L nicht von einem deterministischen Kellerautomaten ohne

λ-Übergänge erkannt werden kann. (schwierig)

37. Konstruieren Sie entsprechend der Vorlesung für die Grammatik

S → Z$, Z → ZZ|aZb|ab

einen nichtdeterministischen endlichen Automaten M = (Q, V, δ, I, ∅) mit

δ(I, γ) = {A → α.β | A → α.β ist gültig für γ} ∀γ ∈ V^{∗}.

Prüfen Sie mit Hilfe von M, ob die Grammatik eine LR(0)-Grammatik ist.

38. Geben Sie kontextsensitve Grammatiken und linear beschränkte Automaten für die folgenden Sprachen :

a) { ww | w ∈ {0, 1}^{+} }

b) { b_{n} & 1^{n} | n ∈ }

c) { a^{2^{n}} | n ∈ }

d) { a^{n^{2}} | n ∈ }

39. Beschreibe eine Turingmaschine C_{2} (durch ein Maschinenschema), die das zweite Wort von rechts nach rechts kopiert, d.h. die Transformation

(s, #v#w\underline{#}) ⟶_{C_{2}}^{∗}(h, #v#w#v\underline{#}) durchführt.

40. Beschreibe eine Turingmaschine, die die Funktionen g(n, m) = m^{n} auf den natürlichen Zahlen berechnet.

Hinweis: Die Maschine zur Berechnung der Funktion f(n, m) = n × m aus der Vorlesung und die Maschine C_{2} aus der vorherigen Aufgabe können verwendet werden.

41. Beschreibe eine Turingmaschine, die eine Binärcodierung durchführt, d.h. auf Eingabe #|^{n}# rechnet, bis #b_{n}# auf dem Band steht und dann stoppt.

42. Zeigen Sie, daß die Sprachen

U_{0} := { < M >|< M >∈ L(M) } und
H_{0} := { < M >| M(< M >) stoppt } und
E := { < M >| L(M) ≠ ∅ }

rekursiv aufzählbar, aber nicht rekursiv sind. (M(x) ist die Rechnung von M auf Eingabe x.)

43. Zeigen Sie, daß die Sprache { < M >| L(M) = Σ^{∗} } nicht rekursiv aufzählbar ist.

44. Geben Sie Normalformen für U_{0}, H_{0} und

N := { < M >| {x | M(x) stoppt } ≠ ∅ }

an. Unter einer Normalform einer r.a. Menge X versteht man eine Darstellung x ∈ X ⇔ ∃...(x, ...) ∈ R mit R rekursiv.

45. Eine Funktion f : Σ^{∗} → Σ^{∗} heißt schwach monoton wachsend bezüglich der Länge, falls |x| ≤ |y| ⇒ |f(x)| ≤ |f(y)|.

Zeigen Sie, daß für L ⊆ Σ^{∗} gilt:

L ist rekursiv ⇔ L = rng(f), für eine bezüglich der Länge schwach monoton wachsende rekursive Funktion f.

C Lösungen zu den Übungsaufgaben

gelöst von K. Reinhardt

1. (i) S → a|aS (Typ – 3)

(ii) S → ab|aSb (Typ – 2)

(iii) \begin{matrix}S → & aSBc|abc \\ cB → & Bc \\ aB → & ab \\ bB → & bb \end{matrix}

(Typ – 1)

(iv) S → ab|ba|aSb|bSa|SS (Typ – 2)

(v) \begin{matrix}S → & aBC|aSBC \\ BC → & CB \\ CB → & BC \\ aB → & Ba \\ aC → & Ca \\ B → & b \\ C → & c \end{matrix}

(Typ – 1)

2. \frac{1}{7} = 0, \overline{142857} …

\begin{matrix}S → & 1|1E|4|4V |2|2Z|8|8A|5|5F |7|7I \\ E → & 4|4V \\ V → & 2|2Z \\ Z → & 8|8A \\ A → & 5|5F \\ F → & 7|7I \\ I → & 1|1E \end{matrix}

Diese Grammatik ist vom Typ – 3.

3. Durch Induktion über die Ableitungsschritte wird gezeigt:

∀β ∈ {A, B, S, 0, 1}^{∗} (S⟹_{G}^{⋆}β → S oder A kommt in β vor)

Induktionsanfang: S kommt in S vor. Induktionsbehauptung: Sei S⟹_{G}^{⋆}α und α ≠ S, so existiert β mit S⟹_{G}^{⋆}β und β⟹_{G}α, damit kommt S oder A in β vor. Da jede Produktion in P, bei der S oder A links vorkommt, rechts wieder S oder A enthält, kommt wieder S oder A in α vor.

Daher ist L(G) = ∅

4. \begin{matrix}S → & 0A|1B|1|0 \\ B → & 1C \\ A → & 0S|1C \\ C → & 1B|1 \end{matrix}

zu zeigen: L = L(G) L ⊆ L(G): Sei x = 0^{n}1^{m} ∈ L, n gerade, m ungerade, so gibt es die Ableitung

S ⇒ 0A ⇒ 00S⟹^{n−2}000^{n−2}S ⇒ 0^{n}1B

⇒ 0^{n}11C⟹^{m−3}0^{n}1^{m−1}C ⇒ 0^{n}1^{m}

Sonderfälle mit kleinem n oder m oder n ungerade: analog!

L(G) ⊆ L: Gelte S⟹^{⋆}α so folgt durch Induktion α ∈ {0^{2n}S, 0^{2n+1}A, 0^{2n+1}, 0^{2n}1^{2m+1}, 0^{2n}1^{2m+1}B,

0^{2n+1}1^{2m+1}C, 0^{2n}1^{2m}C, 0^{2n+1}1^{2m}B, 0^{2n+1}1^{2m}|m, n ∈ _{0}}

5. Jede monotone Produktion A_{1} … A_{r} → B_{1} … B_{s} mit r ≤ s wird durch folgende

kontextsensitive Produktionen ersetzt, wobei L und R neue Variablen sind.

A_{1} … A_{r}  → LA_{2} … A_{r}
LA_{2} … A_{r}  → LA_{2} … A_{r−1}R
LA_{2} … A_{r−1}R → LB_{2}A_{3} … A_{r−1}R
⋮
LB_{2} … B_{r−1}R → B_{1} … B_{r−1}R
B_{1} … B_{r−1}R → B_{1} … B_{r−1}B_{r} … B_{s}

6. Gegenbeispiel ist G_{alt} mit

P_{alt} = {S → AB, AB → CD, CB → Cb, Cb → cb} mit der Eigenschaft: L(G_{alt}) = ∅. Aus dieser wird G_{neu} mit

P_{neu} = {S → AB, AB → CB, CB → CD, CB → Cb, Cb → cb} mit L(G_{neu}) = {cb} ≠ L(G_{alt}) wegen

S ⇒ AB ⇒ CB ⇒ Cb ⇒ cb

7. Ersetze A_{1} → R_{1} und R_{1}A_{2} → B_{1}R_{2} durch A_{1}A_{2} → B_{1}R_{2} und R_{n−1} → B_{n−1}R_{n} und R_{n} → B_{n} durch R_{n−1} → B_{n−1}B_{n} für 1 < m < n. Spezialfälle: m = 1, n ≠ 1: Ersetze A_{1} → R_{1} und R_{1} → B_{1}R_{2} durch A_{1} → B_{1}R_{2} für m < n. m = n, n ≠ 1: Ersetze R_{n−1}A_{n} → B_{n−1}R_{n} und R_{n} → B_{n} durch R_{n−1}A_{n} → B_{n−1}B_{n}

für 1 < m.

m = n = 1: Bei m = n = 1 ist gemäß Vorlesung A_{1} → R_{1} und R_{1} → B_{1} durch A_{1}C → B_{1}C und CA_{1} → CB_{1} für alle C ∈ V zu ersetzen.

8. i.) Gegeben sei G mit G : A → Bu oder A → u Zu zeigen: Es existiert eine Grammatik G′ : A → uB oder A → u mit L(G) = L(G′).

P (G′) = {S → u|S → u ∈ P (G)} ∪ {S → uA|A → u ∈ P (G)} ∪

{B → u|S → Bu ∈ P (G)} ∪ {B → uA|A → Bu ∈ P (G)}

S⟹_{G′}^{n}α gdw. S ⟹_{G′}x_{1}A⟹_{G′}^{k}x_{1} … x_{k+1}B⟹_{G′}x_{1} … x_{k+2}C

⟹_{G′}^{n−k−3}x_{1} … x_{n−1}D⟹_{G′}x_{1} … x_{n}

gdw. S ⟹_{G}Dx_{n} ⟹_{G}^{n−k−3}Cx_{k+3} … x_{n}⟹_{G}Bx_{k+2} … x_{n}

⟹_{G}^{k}Ax_{2} … x_{n}⟹_{G}x_{1} … x_{n}

gdw. S ⟹_{G}^{n}α

ii.) P = {S → aB, B → b|Sb} erzeugt L(G) = {a^{n}b^{n}|n > 0}, das nach Vorlesung nicht regulär ist.

9. zu zeigen: L = {a^{n}b^{k}c^{m}|n, k, m > 0 und n = 2k − m} ist nicht regulär.

Indirekten Beweis:

Annahme: Sei L regulär. ∃n > 0, a^{n}b^{n}c^{n} ∈ L, |a^{n}b^{n}c^{n}| ≥ n.

Nach dem Pumpinglemma kann dann a^{n}b^{n}c^{n} = uvw identifiziert werden. Da mit |uv| ≤ n und |v| > 1 sein müssen, folgt v = a^{j}, j ≥ 1. Dann gilt jedoch uv^{0}w = a^{n−j}b^{n}c^{n} ∉ L. Nach dem Pumpinglemma müßte auch uv^{0}w ∈ L sein. Dies ist ein Widerspruch. Folglich kann L nicht regulär sein.

10. Folgender Automat löst die Aufgabe:

11. Seien

¯1 = {1, 4, 7}
¯2 = {2, 5, 8}
¯3 = {0, 3, 6, 9}

[figure: 1; 7; 5; 8; 2; 4; 2; 8; 5; 7; 1; 4; Z_{0}; Z_{3}; Z_{2}; Z_{1}; Z_{6}; Z_{5}; Z_{4}]

[figure: q_{4}; q_{2}; q_{1}; 0; Σ_{n}; Σ_{n}; ¯0\{0}; ¯0; ¯0; ¯0; ¯1; ¯2; ¯2; ¯1; ¯1; ¯1; ¯2; ¯2; q_{0}; q_{n}; q_{3}]

Behauptung

Sei x ∈ Σ_{1}^{+} und x beginnt nicht mit 0. Dann gilt: δ̂(q_{n}, x) = q_{i} ⇔ x ≡ i mod 3.

Beweis

Induktion über die Länge von x:

|x| = 1: Induktionsanfang ist erfüllt.

|x| = n + 1: x = x_{1} … x_{n} Nach Induktionsvoraussetzung gilt δ̂(q_{n}, x_{1} … x_{n}) = q_{i} ⇔ x_{1} … x_{n} ≡ i mod 3 Es folgt daher: δ̂(q_{n}, x_{1} … x_{n+1}) = δ(δ̂(q_{n}, x_{1} … x_{n}), x_{n+1}) = δ(q_{i}, x_{n+1}) = q_{j} ⇔ i + x_{n+1} ≡ j mod 3 x ist durch 3 teilbar gdw. δ̂(q_{n}, x) = q_{0} gdw. Automat akzeptiert. x = 0 wird akzeptiert, bei führender 0 wird verworfen (q_{3}, q_{4}).

12. Automat

[figure: 0; 0; 1; 1; 1; 1; 0; 0; r; 0,1; q_{3}; q_{4}; q_{0}; q_{1}; q_{2}]

C Lösungen zu den Übungsaufgaben  158
q_{0} X_{1} X_{1} X_{4} X_{3}
q_{1}  X_{5} X_{1} X_{1}
q_{2}  X_{1} X_{1}
q_{3}  X_{2}

q_{4}

q_{1} q_{2} q_{3} q_{4}
1. Schritt: X_{1}: Paare akzeptierender / nicht akzeptierender Zustände (q_{2}, q_{4})
2. Schritt: X_{2}: δ(q_{3}, 1) = q_{2}, δ(q_{4}, 1) = q_{4} mit X_{1} gekennzeichnet
X_{3}: δ(q_{0}, 1) = q_{2}, δ(q_{4}, 1) = q_{4} mit X_{1} gekennzeichnet
X_{4}: δ(q_{0}, 0) = q_{1}, δ(q_{3}, 0) = q_{4} (q_{1}, q_{4}) hat X_{1}
3. Schritt: X_{5}: δ(q_{2}, 0) = q_{4}, δ(q_{1}, 0) = q_{0} (q_{4}, q_{0}) hat X_{3}

13. Sei oÜ= \{(\begin{matrix}0 \\ 1 \\ 1 \end{matrix}) , (\begin{matrix}1 \\ 0 \\ 1 \end{matrix}) , (\begin{matrix}0 \\ 0 \\ 0 \end{matrix})\} und mÜ= \{(\begin{matrix}0 \\ 1 \\ 0 \end{matrix}) , (\begin{matrix}1 \\ 0 \\ 0 \end{matrix}) , (\begin{matrix}1 \\ 1 \\ 1 \end{matrix})\}

[figure: q_{f}; q_{1}; q_{2}; q_{0}; Σ; oÜ; mÜ; mÜ (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}); oÜ (\begin{matrix}0 \\ 0 \\ 1 \end{matrix}); (\begin{matrix}0 \\ 0 \\ 1 \end{matrix}); (\begin{matrix}0 \\ 0 \\ 1 \end{matrix}); (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}); (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}); mÜ; oÜ]

Behauptung: s ∈ T (M) ⟺ s ist Additionswort Beweis durch Induktion über die Anzahl k der Stellen s_{i} = (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}) in s. Induktionsanfang: k = 0 : S ist Additionswort ⟺ s_{i} ∈ oÜ für 1 ≤ i ≤ n ⟺ δ^{∗}(q_{0}, s) = q_{1} ⟺ s ∈ T (M)

C Lösungen zu den Übungsaufgaben  159

Induktionsschluß: k > 0 : Sei s = t_{1} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}) t_{2} und in t_{1} kommt (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}) nicht vor. Es gilt: s ist Additionswort ⟺ t_{1} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}) ist Additionswort und t_{2} ist Additionswort oder t_{2} = λ, da von t_{2} kein Übertrag kommen kann.

t_{1} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix}) ist Additionswort ⟺ t_{1} = u_{1} (\begin{matrix}0 \\ 0 \\ 1 \end{matrix}) u_{2} mit u_{1} ∈ oÜ^{∗}, u_{2} ∈ mÜ^{∗}, da (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})

nicht in t_{1} vorkommen kann. Somit gilt: s ist Additionswort ⟺

δ^{∗} (q_{0}, t_{1} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})) = δ^{∗} (q_{1}, t_{1} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})) = δ^{∗} (q_{1}, (\begin{matrix}0 \\ 0 \\ 1 \end{matrix}) u_{2} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})) = δ^{∗} (q_{2}, u_{2} (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})) =

δ^{∗} (q_{2}, (\begin{matrix}1 \\ 1 \\ 0 \end{matrix})) = q_{1} und δ^{∗} (q_{1}, t_{1}) = q_{1} ⟺ δ^{∗} (q_{0}, s) = q_{1} ⟺ s ∈ T (M)

14. Sei y = y_{1} … y_{n}

[figure: q_{0}; Σ; y_{1}; q_{1}; y_{2}; ⋯; y_{n}; q_{n}; Σ]

15.

[figure: {z_{0}, z_{1}}; {z_{1}, z_{2}}; {z_{0}, z_{1}, z_{2}}; a; a; {z_{0}}; b; a; b; a; a; {z_{1}}; b; ∅; a, b; b; b]

16. a)

[figure: 0,1; 1; 1; λ; 0; 0; 0; 1; 0; 0; 1; 01; 010; 1; 0; 011; 1]

b) Äquivalenzklassen von R_{L}:

[λ]

[0] = {0, 00} ∪ {0y00|y ∈ Σ^{∗}}
[1] = {1y|y ∈ Σ^{∗}}
[01] = {0y01|y ∈ Σ^{∗}} ∪ {01}
[010] = {0y10|y ∈ Σ^{∗}}
[011] = {0y11|y ∈ Σ^{∗}}

Es gibt genau 6 Äquivalenzklassen, d.h. der Automat ist minimal, da er mindestens so viele Zustände besitzen muß, wie es Äquivalenzklassen gibt.

x\y λ 0 1 01 010
0 10
1 010 10
01 0 0 0
010 λ λ λ λ
011 λ λ λ λ 1

Wähle z ∈ Σ^{∗} so, daß xz ∈ L ⟺ yz ∉ L

17. L_{1} = {aa^{+} + baa^{+} + aa^{+}b + a^{+}ba^{+} + bb^{+} + abb^{+} + bb^{+}a + b^{+}ab^{+}}

L_{2} = {(aa + bb + (ab + ba)(aa + bb)^{∗}(ab + ba))^{∗}}

18.

19. Sei L = L(G) und G Œ in Chomsky-Normalform G = (V, Σ, P, S). Dann gilt

L^{R} = L(G′)

mit

G′ = (V, Σ, P′, S)
P′ = {A → a|A → a ∈ P } ∪ {A → CB|A → BC ∈ P }

Beweis:

Durch die Induktion über die Ableitungsschritte gilt:

S ⟹_{P}^{n} α_{1}Aα_{2} ⇒ P α_{1}aα_{2} gdw. S ⟹_{P′}^{n} α_{2}^{R}Aα_{1}^{R} ⇒ P′ α_{2}^{R}aα_{1}^{R} und
S ⟹_{P}^{n} α_{1}Aα_{2} ⇒ P α_{1}BCα_{2} gdw. S ⟹_{P′}^{n} α_{2}^{R}Aα_{1}^{R} ⇒ P′ α_{2}^{R}CBα_{1}^{R}

mit Induktionsvoraussetzung.

20. Nach Myhill – Nerode ist eine Sprache nicht regulär, wenn sie unendlich viele Äqui-

valenzklassen besitzt, für die hier jeweils die paarweise Inäquivalenz gezeigt wird.

a)

S → A|B|aSb
A → aA|a
B → bB|b

[a^{m}] ≠ [a^{n}] für m ≠ n, da a^{m}b^{m} ∉ L, aber a^{n}b^{m} ∈ L b)

S → A|B
A → aAc|Ac|aCc
c → b|bC
B → aB|aD
D → bc|bDc|Dc

[a^{n}b]b^{n}c^{n} ≠ [a^{m}b]b^{n}c^{n} für n < m, a^{n}bb^{n}c^{n} ∈ L, a^{m}bb^{n}c^{n} ∉ L c)

S → 1A01|1B1
A → 1A0|&
B → 1B1|0B0|0A1
S → 0&1

d) S → SS|aSb|bSa|ab|ba [a^{n}] ≠ [a^{m}] für n ≠ m, a^{n}b^{n} ∈ L, a^{n}b^{m} ∉ L

e)

S → a|b|CS|SC|aA|Aa|bB|Bb
C → CC|aCb|bCa|ab|ba
A → AA|a|C
B → BB|b|C
S ⇒ CS ⇒ CaA⟹^{⋆}CaA^{1+n+1+k}⟹^{⋆}CaCA^{n}CA^{k}⟹_{G}^{⋆}CaCa^{n}Ca^{k}

nicht regulär, da Komplement (d) nicht regulär f)

S → NE|EN|N|E
N → 0|T NT
E → 1|T ET
T → 0|1

21. a) a^{n^{2}} = uvwxy wegen 0 < |vx| ≤ n ist uv^{2}wx^{2}y ∉ L_{1} da |uv^{2}wx^{2}y| ≤ n^{2} + n ≤ (n + 1)^{2}

b) a^{p} = uvwxy p ≥ n, |vx| = k uv^{p+1}wx^{p+1}y = a^{p+pk} = a^{p(k+1)} ∉ L_{2}

c) a^{n}b^{n^{2}} = uvwxy 0 < |vx| ≤ n

(i) v, x ∈ {a}^{∗} ⇒ uwy ∉ L_{3} (ii) v, x ∈ {b}^{∗} ⇒ uv^{2}wx^{2}y ∉ L_{3} (iii) vx ∈ {a}^{+}{b}^{+} ⇒ uwy = a^{n−#_{a}(vx)}b^{n^{2}−#_{b}(vx)} ∉ L_{3}

da (n − |v|)^{2} ≤ (n − 1)^{2} = n^{2} − (2n − 1) < n^{2} − n ≤ n^{2} − |x|

d) 1^{n}0^{n}&1^{n}0^{n−1}1 = uvwxy da |vwx| ≤ n ⇒ vwy ∉ L_{4}, falls & nicht in w, stimmt die Länge oder die Anzahl der & nicht mehr

e) 1^{n}0^{n}1^{n}0^{n} = uvwxy

mit \begin{aligned}|vwx| ≤ n & ⇒ & 1^{n+|v|}0^{n+|x|}1^{n}0^{n} ∉ L, \\ & & 1^{n}0^{n+|v|}1^{n+|x|}0^{n} ∉ L, \\ & & 1^{n}0^{n}1^{n+|v|}0^{n+|x|} ∉ L, \end{aligned}

für gemischtes v oder x ist uv^{2}wx^{2}y ohnehin nicht in L.

22.

\begin{matrix}#a = & \frac{n(n+1)}{2} \\ #b = & n + 1 \end{matrix}

Sei φ Substitution mit φ(a) = aa und φ(b) = a, so x ∈ L gdw. φ(x) ∈ {a^{n^{2}}|n ≥ 2}

wegen ∑_{i+1}^{n} 2i + n + 1 = n(n + 1) + n + 1 = (n + 1)^{2}

⇒ φ′(L) = {a^{n^{2}}|n ≥ 2} ist nicht kontextfrei. ⇒ L ist nicht kontextfrei. Kontextfreie Sprachen sind bezüglich Substitution abgeschlossen, bezüglich Komplement nicht.

23.

24. L ∩ {ab^{j}c^{k}d^{l}|j, k, l ∈ } = {ab^{n}c^{n}d^{n}|n ∈ } ist nicht kotextfrei ⇒ L ist nicht kontextfrei. Ein Wort in L kann immer aufgepumpt werden:

1. Fall x = a^{i}b^{j}c^{j}d^{j} ∈ L Wähle v = a ⇒ uv^{i}w ∈ L ∀i bzw. wähle v = a, w = x = λ ⇒ uv^{i}wx^{i}y ∈ L

2. Fall x = b^{j}c^{k}d^{l} ∈ L ⇒ einen beliebigen Buchstaben aufpumpen.

25. Einsetzen von A und Ersetzen durch Variablen liefert die Form:

S → 0|EN|SSN
E → 1
N → 0
R_{E1} = R_{N0} = {λ}
R_{E0} = R_{N1} = ∅
R_{S0} = {(SN)^{n}|n ∈ }
R_{s1} = {N(SN)^{n}|n ∈ }
G_{S0} = ({A_{0}, A_{1}}, {N, S}, A_{0}, {A_{0} → SA_{1}, A_{1} → N|NA_{0}})
G_{S1} = ({A_{1}, A_{0}}, {N, S}, A_{1}, {A_{1} → SA_{1}, A_{1} → N|NA_{0}})
G_{1} = ({A, A_{0}, A_{1}}, Σ, A, P_{1})
P_{1} = {A → 0|0A_{0}|1A_{1},
A_{0} → 0A_{0}A_{1}|1A_{1}A_{1},
A_{1} → 0|0A_{0},
A_{0} → 0A_{1}}

26.

27. Annahme: ∃T ⊆ L(L̄), T kontextfrei und |T | = ∞ Nach L. v. B. H. (Lemma von Bar – Hillel, Pumpinglemma) existiert {w_{i}|i ∈ } ⊆ T mit |w_{i}| = n + im für n, m ∈ . Sei q ∈ mit q ∈ mit q > n, m.

T ⊆ L: Sei i_{0} ∈ maximal mit n + i_{0}m < q^{2} + q.

⇒ q^{2} + q ≤ n + (i_{0} + 1)m < q^{2} + q + m < q^{2} + 2q < (q + 1)^{2} ⇒ w_{i_{0}+1} ∉ L ⇒ w_{i_{0}+1} ∉ T ⇒ Widerspruch

T ⊆ L̄: Sei i_{0} ∈ maximal mit n + i_{0}m < q^{2} ⇒ q^{2} ≤ n + (i_{0} + 1)m < q^{2} + m < q^{2} + q ⇒ w_{i_{0}+1} ∈ L ⇒ w_{i_{0}+1} ∉ T ⇒ Widerspruch 28. a) m_{i} ≠ m_{j} ⇒ m_{i} ≠ m_{1} oder m_{j} ≠ m_{1}

M = ({q_{0}, q_{1}, q_{2}, q, q′}, {a, b}, {a, $}, δ, q_{0}, $, {q, q′})

\begin{matrix}q_{0} & a & k→ & q_{0} & ak k ∈ \{a, $\} \\ q_{0} & b & k→ & q_{1} & k|q_{2}k \end{matrix} \} a-Block einkellern
\begin{matrix}q_{1} & a & k→ & q_{1} & k \\ q_{1} & b & k→ & q_{1} & k|q_{2}k \end{matrix} \} beliebig viele a-Blöcke überlesen

\begin{matrix}q_{2} & a & a→ & q_{2} & λ \\ q_{2} & a & $→ & q & $ \\ q_{2} & b & a→ & q & a \\ q_{2} & λ & a→ & q′ \\ q & a & k→ & q & k \\ q & b & k→ & q & k \end{matrix} \}

Vergleich:

falls m_{1} ≠ m_{i} zu q gehen

falls i = n zu Ende lesen und akz

(q_{0}, aaba, $) |_{\overline{M}} (q_{0}, aba, a$)
|_{\overline{M}} (q_{0}, ba, aa$)
|_{\overline{M}} (q_{2}, a, aa$)
|_{\overline{M}} (q_{2}, λ, a$)
|_{\overline{M}} q′

b) M = ({q_{0}, q_{1}, q_{2}, q, }, {a, b}, {a, $}, δ, q_{0}, $, {q})

q_{0}ak→q_{0}ak } a-Block einkellern
\begin{matrix}q_{0}ba → & q_{1}λ|q_{2}λ \\ q_{1}ba → & q_{1}λ|q_{2}λ \\ q_{2}λa→ & q_{1}λ \end{matrix} \} für jedes b ein oder zwei a’s auskellern
q_{1}λ$→qλ } akzeptiere falls Keller leer

c) M = ({q_{0}, q_{1}, q, }, {a, b}, {a, b, $}, δ, q_{0}, $, {q})

q_{0}ak→q_{0}ak k ∈ {a, $} } a’s einkellern
q_{0}ba→q_{0}λ|q_{1}λ } ein oder zwei a’s auskellern
\begin{matrix}q_{0}b$→ & q_{0}b$|q_{0}bb$ \\ q_{0}bb→ & q_{0}bb|q_{0}bbb \end{matrix} \} ein oder zwei b’s einkellern
q_{0}ab→q_{0}λ } b auskellern
q_{0}λ$→q$ } akz falls Keller leer
\begin{matrix}q_{1}λa→ & q_{0}λ \\ q_{1}λ$→ & q_{0}b$ \end{matrix} \}

a auskellern, wenn nicht möglich b einkellern. d) M = ({q_{0}, q_{1}, q_{2}, q_{3}, q, }, {0, 1, &}, {0, 1, $}, δ, q_{0}, $, {q})

\begin{matrix}q_{0}ek → & q_{0}e, e ∈ \{0, 1\}, k ∈ \{0, 1, $\} \\ q_{0}&k→ & q_{1}k \\ q_{1}00 → & q_{1}λ \\ q_{1}11 → & q_{2}λ \\ q_{2}10 → & q_{1}λ \\ q_{2}01 → & q_{3}λ \\ q_{3}00 → & q_{2}λ \\ q_{3}11 → & q_{3}λ \\ q_{2}1$ → & q$ q ∈ E \\ q_{3}0$ → & q_{2}$ \end{matrix}

q_{1} : kein Übertrag q_{2} : entweder gemerkte 1 oder Übertrag q_{3} : gemerkte 1 und Übertrag

29. G = (V, {a, b}, P, S) V = {q_{0}, …, q} × {a, $} × {q_{0}, …, q} P = {S → [q_{0}, $, q′′], nach Regel I}

I) \{ \begin{matrix}q_{0}a$→ & q_{0}a$ \\ q_{0}aa→ & q_{0}a \end{matrix}
II) \{ \begin{matrix}q_{0}ba→ & q_{1}λ \\ q_{0}ba→ & q_{2}λ \end{matrix}
III) \{ \begin{matrix}q_{1}ba→ & q_{1}λ \\ q_{1}ba→ & q_{2}λ \end{matrix}
IV) { q_{1}λ$→qλ
V) { q_{2}λa→q_{1}λ

\underbrace{\begin{matrix}[q_{0}$q′′] → & a[q_{0}aq′] & [q′$q′′] \\ [q_{0}q′′ ] → & a[q_{0}aq′] & [q′aq′′] q′, q′′ ∈ \{q_{0}, q_{1}, q_{2}, q\} \end{matrix} \begin{matrix}[q_{0}aq_{1}] → & b \\ [q_{0}aq_{2}] → & b \\ [q_{1}aq_{1}] → & b \\ [q_{1}aq_{2}] → & b \\ [q_{1}$q ] → & λ \\ [q_{2}aq_{1}] → & λ \end{matrix} \} Spezialfall: m = 0}

∈P nach Regel II aufgrund linksstehendem Übergang

\underline{Regeln:}

zu I) S → [q_{0}, $, q′′] für jedes q′′ ∈ Q
zu II) [q, A, q_{m+1}] → a[q_{1}B_{1}q_{2}] … [q_{m}B_{m}q_{m+1}] für jedes q, q_{1}, q_{2}, …, q_{m+1} in a und a ∈ Σ ∪ {λ}, A, B_{1}, …, B_{m} ∈ Γ, so daß δ(q, a, A) = (q_{1}, B_{1}B_{2} … B_{m}), q, a, A → q_{1}, B_{1}B_{2} … B_{n} m = 0 : [q, A, q_{1}] → a

Beispiel:

[figure: b; a; a; S; aab; λ; λ; [q_{0}aq_{2}]; [q_{2}aq_{1}]; [q_{0}aq_{1}]; [q_{1}$q]; [q_{0}$q]]

30. Sei M = (Z, Σ, Γ, δ, z_{0}, S, ∅) ein Kellerautomat ohne λ-Übergänge mit: ∀x, x′ ∈ Σ^{∗} (t_{0}, x, S) |\frac{⋆}{M} (z, x′, γ) ⇒ |γ| ≤ k Setze

M′ := (Z′, Σ, δ′, z′_{0}, E′) mit Z′ := Z × ⋃_{i=0}^{R} Γ^{R},

z′_{0} := (z_{0}, S) \underline{δ′:} zaA → z′α ∈ δ ⇔ ((z, A, γ), a, (z′, α, γ)) ∈ δ′ ∀z, z′ ∈ Z, a ∈ Σ, A ∈ Γ und α, γ ∈ Γ^{∗} mit |Aγ|, |αγ| ≤ k. E′ := {(Z, λ)|z ∈ Z}. Dann gilt ∀x ∈ Σ^{∗}: ((z_{0}, S), x, (z, λ)) ∈ δ̂′ ⇔ (z_{0}, x, S) |\frac{⋆}{M} (z, λ, λ)

31. Sei L = N(M) für einen Kellerautomaten M = (Z, Σ, Γ, δ, z, S∅) ohne λ-Übergänge \underline{Idee:} Markiere das jeweils unterste Kellerzeichen von M, d. h. für den Kellerinhalt γ = βA ∈ Γ^{+}, β ∈ Γ^{∗}, A ∈ Γ Sei γ′ := β[A, S′] d. h. M′ = (Z ∪ {z_{e}}, Σ′, Γ ∪ Γ × {S′}, δ′, z_{0}, [S, S′], {z_{e}}) mit z_{e} ∉ z, δ′ ∉ Γ und

δ′ := δ′ ∪ {z_{1}a[A, S′] → z_{2}γ′|z_{1}aA → z_{2}γ ∈ δ für
z_{1}, z_{2} ∈ Z, a ∈ Σ, A ∈ Γ und γ ∈ Γ}
∪ {z_{1}a[A, S′] → z_{e}λ|z_{1}aA → z_{2}λ ∈ δ für
z_{1}, z_{2} ∈ Z, Σ′, A ∈ Γ}
∪ {z_{0}λ[S, S′] → z_{e}λ|z_{0}λS → zλ ∈ δ}

Dann gilt L(M′) = N(M). (Nach Vorlesung gibt es zu M_{1}, mit T (M_{1}) = L, M_{2} mit N(M_{2}) = L, dazu M wie oben.)

32. Sei L ⊆ {a}^{∗} und n ∈ , so daß ∀x ∈ L mit |x| ≥ n eine Zerlegung x = u_{0}v_{0}wx_{0}y existiert, mit 0 < |v_{0}wx_{0}| ≤ n und u_{0}v_{0}^{i}wx_{0}^{i}y ∈ l ∀i ≥ 0. \underline{(i):} Setze u := u_{0}wy und v := v_{0}x_{0}, dann gilt u_{0}v_{0}^{i}wx_{0}^{i}y = uv^{i} ∀i ≥ 0. \underline{(ii):} Sei x = uv eine Zerlegung wie in (i), d. h. 0 < |v| ≤ n ⇒ |v| teilt p nach Definition von p, d. h. p = |v| · t für ein t ∈ . Sei i ≥ 0 beliebig. Dann gilt: xa^{ip} = uva^{i|v|t} = uv^{it+1} ∈ L nach (i). \underline{(iii):} Sei x ∈ Σ^{∗} mit |x| ≥ n und x ∈ r̄ für ein r < p. Nach (ii) gilt x ∈ L ⇒ xa^{ip} ∈ L ∩ r̄ ∀i ≥ 0. Mit anderen Worten ist ein Wort x (|x| ≥ n) aus r̄ in L, dann auch alle längeren Wörter von r̄.

a) L △ ⋃_{∃|x|≥n x∈r̄∩L} r̄ ist endlich. Da r̄ regulär ist, ist auch L regulär.

b) L. v. B. H. war einzige Voraussetzung.

33. Werde L von einem deterministischen Kellerautomaten M = (Q, Σ, Γ, δ, q_{0}, F, $) erkannt, der Œ nie seinen Keller löscht, nur endliche Rechnungen hat und keine λ-Übergänge macht, wenn er sich in einem Endzustand befindet oder nur noch ein Zeichen im Keller ist. Für p ∈ Q, a ∈ Σ, x ∈ Γ sei

(p, λ, x) |_{\overline{M}} (q, λ, yγ′)

die maximale Rechnung mit y ∈ Γ, γ′ ∈ Γ^{∗}, q ∈ Q und δ(q, a, y) = (q_{a}, γ_{a}).

[figure: x λ; q; q_{a}; p_{x}; p; yγ′; y a γ_{a}; z a γ_{a}γ′_{z}; x λ λ]

Setze dann δ(p, λ, x) := (p_{x}, λ), δ(p_{x}, a, z) := (q_{a}, γ_{a}γ′z) für alle z ∈ Γ. Dabei sei p_{x} :∈ F gdw. q ∈ F. Ein vollständig nach dieser Methode umgebauter Automat hat die verlangte Form.

34. L kann von einem deterministischen Kellerautomaten erkannt werden, der wenn das Eingabewort mit d beginnt, die darauf folgenden c’s einkellert und mit der Anzahl der b’s vergleicht und ansonsten die c’s überliest, die b’s einkellert und mit der Anzahl der a’s vergleicht. Einen solchen Automaten zeigt folgende Abbildung.

[figure: q_{0}; q_{1}; q_{2}; q_{3}; q_{4}; q_{5}; q_{6}; q_{7}; q_{8}; $ d $; $ c $; $ c $; b b bb; b a λ; c c cc; c b λ; $ a $; $ c c$; c b λ; $ λ $; $ b b$; b a λ; $ λ $; $a$; $bb$]

Werde L^{R} von einem deterministischen Kellerautomaten M = (Q, Σ, Γ, δ, q_{0}, F, $) erkannt, der Œ keine λ-Übergänge macht, wenn er sich in einem Endzustand befindet. M befindet sich nach dem Lesen von α in einem Endzustand p und nach dem Lesen von αd in einem Endzustand q gdw. α = a^{n}b^{n}c^{n}, n ∈ . Somit erkennt M′ = (Q ∪ {q_{e}}, Σ, Γ, δ′, q_{0}, {q_{e}}, $) mit

δ′(p, d, z) := \{ \begin{matrix}(q_{e}, γ) falls δ(p, d, z) = (q, γ) und p, q ∈ F \\ δ(p, d, z) sonst \end{matrix}

die Sprache {a^{n}b^{n}c^{n}d | n ≥ 0}. Da diese jedoch nicht kontextfrei ist, kann M nicht existieren.

35. L = {a^{i}b^{j}c^{j}d | i, j ≥ 0} ∪ {e^{i}b^{i}c^{j} | i, j ≥ 0} ist deterministisch kontextfrei (e’s mit b’s vergleichen, falls vorhanden, sonst b’s mit c’s vergleichen). nicht jedoch h(L) mit h(e) = h(a) = a, h(b) = b, h(c) = c, h(d) = d, siehe (letzte Aufgabe).

36. a) L kann von einem deterministischen Kellerautomaten erkannt werden, der a’s und dann b’s einkellert, darauf folgende d’s mit der Anzahl der b’s vergleicht oder bei darauf folgenden c’s die b’s mit λ-Übergängen auskellert und danach die Anzahl der a’s und c’s vergleicht. Einen solchen Automaten zeigt folgende Abbildung.

[figure: q_{1}; q_{2}; q_{7}; q_{0}; $ a a$; q_{5}; b c λ; q_{6}; a c λ; $ λ $; a λ λ; q_{3}; a λ a; q_{4}; b d λ; a c λ; q_{8}; $ b b$; q_{10}; q_{9}; b d λ; $ λ $; a a aa; a b ba; b b bb; b d λ; b b bb; b λ λ; b d λ]

b) Ein deterministischer Kellerautomat ist nach Lesen von a^{i} in der Konfiguration δ(q_{0}, a^{i}) = (q(i), x_{i,1}...x_{i,n(i)}). Bezüglich diesem i ist nun der maximale Abbau des Kellerinhaltes bei nachfolgenden b′s wie folgt definiert:

m(i) := max_{j}{m | δ(q_{0}, a^{i}b^{j}) = (p(i), x_{i,m}...x_{i,n(i)})}

Sei j(i) := min{j | δ(q_{0}, a^{i}b^{j}) = (p(i), x_{i,m(i)}...x_{i,n(i)})} und f(i) := (p(i), x_{i,m(i)}) für δ(q_{0}, a^{i}b^{j}(i)) = (p(i), x_{i,m(i)}...x_{i,n(i)}). Da es nur endlich viele Zustände und Kellerzeichen gibt, gibt es k ≠ l mit f(k) = f(l). Damit beliebig viele d^{j} unterschieden werden können, gibt es unendlich viele obere Kellerinhalte γ(j′) mit

\begin{aligned}δ(q_{0}, a^{k}b^{j(k)+j′}) & = & (p, γ(j′)x_{k,m(k)}...x_{k,n(k)}) und \\ δ(q_{0}, a^{l}b^{j(l)+j′}) & = & (p, γ(j′)x_{l,m(l)}...x_{l,n(l)}). \end{aligned}

Daher gibt es ein j′ mit |γ(j′)| > max(k, l) und somit kann c^{k} und c^{l} nicht mehr unterschieden werden, da γ(j′) beim Lesen von c^{k} oder c^{l} nicht vollständig ausgekellert werden kann.

37. Der Automat hat die Form

[figure: Z; $; S → .Z$; S → Z.$; S → Z$.; λ; λ; λ; Z → .ab; Z → .ZZ; Z → .aZb; a; Z; λ; a; λ; λ; λ; λ; λ; Z → a.b; Z → Z.Z; Z → a.Zb; b; Z; Z; b; Z → ab.; Z → ZZ.; Z → aZ.b; Z → aZb.; λ; λ]

S kommt nie rechts in einer Produktion vor. In dem dazugehörigen deterministischen Automaten kommen jedoch in einem Zustand mit einer Produktion, die mit ’.’ endet, auch andere Produktionen vor. Damit ist die Definition für LR(0)- Grammatiken nicht erfüllt, und die Grammatik ist nicht LR(0).

[figure: $; Z; a; a; Z; a; a; Z; b; b; Z; Z; a; Z → ab.; Z → aZb.; S → S$.; S → Z.$; Z → Z.Z; Z → .ZZ; Z → .aZb; Z → .ab; Z → aZ.b; Z → Z.Z; Z → .ZZ; Z → .aZb; Z → .ab; Z → ZZ.; Z → Z.Z; Z → .ZZ; Z → .aZb; Z → .ab; Z → a.b; Z → a.Zb; Z → .ZZ; Z → .aZb; Z → .ab; S → .Z$; Z → .ZZ; Z → .aZb; Z → .ab]

38. a) Der nichtdeterministische LBA hat den Anfangszustand z, Endzustand z_{e}, Bandalphabet {0, 1, 2, #, $, c| }

z $ → z $ R
z i → z i R i ∈ {0, 1}
z i → z_{i} 2 L Anfang der 2. Hälfte raten
z_{i} j → z_{i} j L j ∈ {0, 1, 2} nach links gehen bis
z_{i} k → z′_{i} k R k ∈ {#, $} zum ersten Sonderzeichen
z′_{i} i → z_{2} # R Vergleich
z_{2} i → z_{2} i R Nach rechts
z_{2} 2 → z_{3} 2 R bis 2,
z_{3} 2 → z_{3} 2 R 2-er überlaufen,
z_{3} i → z_{i} 2 R nächstes Zeichen löschen und merken
z_{3} c| → z_{4} c| L Ende des 2. Wortes
z_{4} 2 → z_{4} 2 L 2-er überlaufen,
z_{4} # → z_{e} # L auch 1. Wort ist zu Ende.

Die Grammatik hat die Produktionen S → 00 | 11 | 0NS | 1ES | A0 | B1 E0 → 0E, E1 → 1E, N0 → 0N, N1 → 1N EA → A1, EB → B1, NA → A0, NB → B0 A → 0, B → 1

b)

S → SA | 1&1 1A → A11 &A → 0& | 1&1

c)

\begin{matrix}S → A | SB, A → a \\ AB → Aa, aB → Baa \end{matrix}

d)

S → ABC | a, B → ED | DBE DE → EaD, aE → Ea, AE → Aa DC → Ca, aC → Ca, AC → aa

oder

\begin{matrix}S → ABS | C, B, C, D → a \\ AB → DDBA, AD → DA, ABC → DDBC \end{matrix}

S⟹^{⋆}(AB)^{n}C⟹^{⋆}D^{2}BD^{4}B...D^{2n}BC⟹^{⋆}a^{k} mit k = ∑_{i=1}^{n}(2i + 1) + 1 = (n + 1)^{2}.

39.

40.

41.

q_{0} 1 → stop Binärwort fertig
q_{0} b̄ → q_{0} b̄ R
q_{0} 0 → q_{1} b̄ R Eine 0 löschen
q_{1} 0/1 → q_{1} 0/1 R Rechtes Ende aufsuchen
q_{1} b̄ → q_{2} b̄ L
q_{2} 0 → q_{3} 1 L Binäraddition um 1
q_{2} 1 → q_{2} 0 L
q_{2} b̄ → q_{0} 1 L Fertig, da keine 0 mehr
q_{3} 0 → q_{3} 0 L Linkes Ende aufsuchen
q_{3} b̄ → q_{1} b̄ R keine 0 mehr löschen, da führende 0 ersetzt
q_{3} 1 → q_{4} 1 L eine 0 ist zu löschen
q_{4} 0/1 → q_{4} 0/1 L Linkes Ende weitersuchen
q_{4} b̄ → q_{0} b̄ L Nächster Durchgang

42. Wegen x ∈ U_{0} (H_{0}) ⇔ (x, x) ∈ U (H) sind U_{0}, H_{0} rekursiv aufzählbar. < M >∈ E ⇔ ∃x ∈ Σ, s ∈ mit M akzeptiert x in s Schritten. Damit ist E rekursiv aufzählbar.

Wäre U_{0} rekursiv, so auch \overline{U_{0}}, aber \overline{U_{0}} = D. Wäre H_{0} rekursiv, so auch \overline{H_{0}}. Sei L(M\overline{H_{0}}) = \overline{H_{0}} und M\overline{H_{0}} eine Turingmaschine, die nur stoppt, wenn sie akzeptiert (bei Verwerfen in eine ∞- Schleife geht), so < M\overline{H_{0}} >∈ \overline{H_{0}} gdw < M\overline{H_{0}} >∉ \overline{H_{0}}, Widerspruch.

U_{0} kann reduziert werden auf E mittels einer Reduktion, die auf Eingabe < M > die Codierung eine Turingmaschine M′ erzeugt, die unabhänging von ihrer Eingabe M(< M >) berechnet. M′ enthält außer den Zuständen und Übergängen von M weitere, durch welche eine jegliche Eingabe gelöscht und < M > auf das Band geschrieben wird, bevor M′ in den alten Zuständen von M weiterläuft. Daher kann E nicht rekursiv sein.

43. \overline{H_{0}} ist nicht rekursiv aufzählbar und kann auf die Sprache reduziert werden mittels einer Reduktion, die auf Eingabe < M > die Codierung eine Turingmaschine M′ erzeugt, die die Eingabe x akzeptiert, wenn M(< M >) nach |x| Schritten noch nicht stoppt.

44.

< M >∈ U_{0} ⇔ ∃s ∈ : M(< M >) stoppt nach s Schritten und akzept.
< M >∈ H_{0} ⇔ ∃s ∈ : M(< M >) stoppt nach s Schritten
< M >∈ N ⇔ ∃s ∈ , y ∈ Σ : M(y) stoppt nach s Schritten

45. ’⇒’: f(x) := min{y ∈ L | ∀x′ < x y > f(x′)}(∪ max(L), falls |L| < ∞). f ist monoton und rekursiv.

’⇐’: Sei |L| = ∞, so kann L erkannt werden durch einen Algorithmus, der auf Eingabe y nacheinander die Werte f(λ), f(0), f(1), f(00), ... berechnet, bis f(x) = y (akzeptieren) oder f(x) > y (verwerfen). Da f monoton und unbeschränkt ist, terminiert der Algorithmus immer.

D Klausuraufgaben

Frühjahr 1990 gestellt von V. Diekert

1. \underline{Aufgabe} (5 Punkte)

Für p ≥ 2 sei L(p) die Sprache

L(p) = {w ∈ {a, b}^{∗} | #_{a}(w) − #_{b}(w) ≡ 2 (mod p)},

wobei #_{a}(w) die Anzahl der a in w und entsprechend #_{b}(w) die Anzahl der b in w bezeichne.

a) Konstruieren Sie einen endlichen Automaten A_{p} mit L(A_{p}) = L(p). (Es reicht,

eine graphische Darstellung anzugeben.)

1 Punkt

b) Geben Sie einen rationalen (bzw. regulären) Ausdruck an, der L(2) beschreibt. 1 Punkt

c) Geben Sie einen deterministischen Kellerautomaten M mit höchstens 6 Zuständen an mit L(M) = {w ∈ L(3) | #_{a}(w) ≥ #_{b}(w)} ∩ a^{∗}b^{∗}.

1 Punkt

d) Zeigen Sie, daß die obige Sprache {w ∈ L(3) | #_{a}(w) ≥ #_{b}(w)} ∩ a^{∗}b^{∗} nicht regulär ist. \underline{Hinweis:} Wenden Sie das Lemma von Bar-Hillel (uvw-Theorem) an.

2 Punkte

2. \underline{Aufgabe} (6 Punkte)

Sei G = (V, Σ, P, S) eine kontextfreie Grammatik mit V = {S, T, Q_{1}, Q_{2}, R}, Σ = {a, b} und der folgenden Regelmenge P:

\begin{aligned}S & → & aT a | bT b \\ T & → & aT a | bT b | λ | Q_{1}R \\ Q_{1} & → & a \\ Q_{2} & → & b \\ R & → & bR \end{aligned}

a) Welche Symbole sind nicht produktiv? (D.h., für welche A ∈ V gibt es kein w ∈ Σ^{∗} mit A⟹_{G}^{⋆}w?). 1 Punkt b) Welche Symbole sind unerreichbar? (D.h., für welche A ∈ V gibt es keine

γ, δ ∈ (V ∪ Σ)^{∗} mit S⟹_{G}^{⋆}γAδ?). 1 Punkt

c) Reduzieren Sie G, d.h., geben Sie eine äquivalente Grammatik an, die nur noch erreichbare und produktive Symbole enthält. 1 Punkt

d) Entfernen Sie die λ-Regeln. 1 Punkt e) Bringen Sie die Grammatik in Chomskysche Normalform, d.h., alle Regeln ha-

ben die Gestalt A → BC oder C → c.

2 Punkte

3. \underline{Aufgabe} (5 Punkte)

Geben Sie eine Typ-1-Grammatik mit L(G) = {t_{n}&1^{n} | n ≥ 1} an, wobei t_{n} die Darstellung einer natürlichen Zahl zur Basis 3 sei. Es gilt also L(G) = {1&1, 2&11, 10&111, ...} ⊆ {0, 1, 2, &}^{∗}.

\underline{Hinweis:} Die Sprache \{b_{n}&1^{n} | n ≥ 1\}, wobei b_{n} die binäre Darstellung sei, wird von der folgenden Grammatik erzeugt

S  → SA | 1&1

\underline{Kommentar:} b_{n} ∈ 1\{1, 0\}^{∗}, 1^{n} ∈ 1^{+}

1A → A11

\underline{Kommentar:} A läuft nach links und verdoppelt dabei die Einsen bis es auf das Zeichen & trifft.

&A → 0& | 1&1

\underline{Kommentar:} Das Anhängen einer Null verdoppelt eine Binärzahl, das Anhängen einer 1 verdoppelt und addiert eins hinzu.

4. \underline{Aufgabe} (4 Punkte)

Im folgenden bezeichnet ⟨w, M⟩ eine geeignete Kodierung eines Wortes w ∈ Σ^{∗} und einer nichtdeterministischen Turingmaschine M.

Zeigen Sie, daß die folgende Sprache unentscheidbar ist: {⟨w, M⟩ | M akzeptiert w nach einer geraden Anzahl von Schritten }

\underline{Hinweis:} Zeigen Sie, daß man jede Turingmaschine M effektiv in eine (nichtdeterministische) Turingmaschine M′ verwandeln kann mit L(M) = L(M′) = {w ∈ Σ^{∗} | M′ akzeptiert w in einer geraden Anzahl von Schritten }. Es reicht, einen einzigen Zustand hinzuzunehmen. Dies ist kein Zwang.

Bearbeitungszeit: 60 min

Herbst 1990

Löse Aufgabe 1 und zwei der Aufgaben 2 bis 4.

1. \underline{Aufgabe} (4 Punkte)

Gegeben sei das Halteproblem H = {(⟨M⟩, x) | M stoppt auf Eingabe x},

H′ = {(x, ⟨M⟩) | M stoppt auf Eingabe x}

und die symmetrische Differenz

L := HΔH′ = (H − H′) ∪ (H′ − H) zeige: L ist nicht rekursiv aufzählbar.

2. \underline{Aufgabe} (8 Punkte)

Sei Σ := {a, d, e, n, w}, L_{1} := {x ∈ Σ^{∗} | Wenn “wenn” in x vorkommt, dann auch “dann”. } und L_{2} := {x ∈ Σ^{∗} | Es kommen in x mindestens so viele “dann”’s vor wie “wenn”’s . }

a) Gib einen endlichen Automaten für L_{1} an. (1P)

b) Gib einen minimalen deterministischen endlichen Automaten für L_{1} an, zeige dessen Minimalität. (2P)

c) Zeige, daß L_{2} nicht regulär ist. (2P)

d) Zeige, daß L_{2} kontextfrei ist (3P)

3. \underline{Aufgabe} (8 Punkte) Sei L kontextfrei, L ⊆ Σ^{∗} und $ ∈ Σ. Zeige, daß die Sprache L′ = {v$w | w$v ∈ L} ebenfalls kontextfrei ist.

Hinweis: Führe neue Variablen für den Pfad vom Startsymbol zu $ im Ableitungsbaum eines Wortes in L ein und stülpe den Ableitungsbaum um.

4. \underline{Aufgabe} (8 Punkte) Sei L := {a^{(2^{(2^{n})})} | n ≥ 0}.

a) Zeige, daß L nicht kontextfrei ist. (3P)

b) Gib eine Typ-1 -Grammatik für L an. (5P)

Hinweis: Die Sprache {a^{(2^{n})} | n ≥ 0} wird durch die Grammatik S → A | SB, A → a, AB → Aa, aB → Baa

erzeugt, wobei Ableitungen der Form

S ⇒^{∗} AB^{n} ⇒ AaB^{n−1} ⇒ AaaaB^{n−2} ⇒^{∗} a^{(2^{n})}

vorkommen. Diese Technik kann doppelt angewendet werden.

Frühjahr 1991 gestellt von K. Reinhardt

Teilgebiete: Automatentheorie, Berechenbarkeit und Komplexitätstheorie

Lösen Sie Aufgaben, bei denen die Summe der Punkte insgesamt 40 ergibt. (In Abhängingkeit von der Prüfungsordnung kann die ’Numerik’ bzw. die ’Algorithmen und Datenstrukturen’ als eine Aufgabe zu 20 Punkten gewählt werden.)

Allgemein kann dies wie folgt formuliert werden: Gegeben sei die Prüfungseingabe

s; (p_{1}; a_{1}); ...; (p_{n}; a_{n}) wobei s und p_{i} für i = 1...n binär codierte positive Zahlen sind und a_{i} ∈ Σ^{∗} die i-te Aufgabe enthält. Ein Prüfling muß sich nun eine Teilmenge I ⊆ {1, ..., n} und damit die Aufgaben {a_{i} | i ∈ I} aussuchen, so daß Σ_{i∈I} p_{i} = s gilt.

i) \underline{Aufgabe} (5 Punkte) Zeigen Sie, daß es im allgemeinen NP -vollständig ist, zu entscheiden, ob ein solches I überhaupt existiert. Geben Sie Ihr für diese Prüfung gewähltes I an.

ii) \underline{Aufgabe} (5 Punkte) Zeigen Sie , daß ein Prüfling immer in polynomieller Zeit ein I finden kann, wenn ein solches existiert und P = NP ist. (Konstruktions auf Entscheidungsproblen reduzieren.)

iii) \underline{Aufgabe} (5 Punkte) Ein Prüfling möchte eine Zählfunktion benützen, die ihm sagt, wieviele mögliche I’s es zu einer Prüfungseingabe gibt. Wie ist der Wert der Zählfunktion für diese Prüfung? Zeigen Sie, daß P = NP falls die Zählfunktion immer in polynomieller Zeit berechnet werden kann.

iv) \underline{Aufgabe} (5 Punkte) Ein Prüfling kennt eine Turingmaschine M, für die es ein I nach obiger Bedingung gibt, so daß M auf Eingabe a_{i} eine korrekte Lösung l_{i} ausgibt, falls i ∈ I, aber nicht hält, falls i ∉ I; er kennt jedoch das I nicht.

a) Kann der Prüfling immer s Punkte erreichen, auch wenn er keine der vorkommenden Aufgaben selbst lösen kann? (Vorsicht Selbstanwendung)

b) Kann der Prüfling immer s Punkte erreichen, auch wenn er keine selbst gefundene Lösung angibt? (Hinweis: Begründung ähnlich zum Beweis von L und \overline{L} rekursiv aufzählbar ⇒ L rekursiv; Zeit und Platz sind hier nicht beschränkt.)

v) \underline{Aufgabe} (5 Punkte) Geben Sie einen endlichen Automaten über dem Alphabet Σ ∪ {0, 1,; , (,)} an, der eine Prüfungseingabe auf syntaktische Korrektheit überprüft. Es gelte Σ ∩ {0, 1,; , (,)} = ∅. Wie lautet der zugehörige reguläre (rationale) Ausdruck? vi) \underline{Aufgabe} (10 Punkte)

Es sei nun erlaubt, daß eine Aufgabe a_{i} statt einem Wort aus Σ^{∗} auch selbst eine Prüfungseingabe sein darf. Eine kontextfreie Grammatik dafür ist

S → S; (B; A) | S; (B; S) | B B → B0 | B1 | 1 A → Aa | a für alle a ∈ Σ

a) Bringen Sie die Grammatik in Greibach Normalform.

b) Bringen Sie die Grammatik in Chomsky Normalform.

vii) \underline{Aufgabe} (10 Punkte) Zeigen Sie, daß die Sprache aus Aufgabe 6 die Conclusion des Pumpinglemmas für reguläre Sprachen (uvw-Theorem) erfüllt, aber dennoch nicht regulär ist.

viii) \underline{Aufgabe} (10 Punkte) Gegeben seien die Sprachen L_{1} = {w_{1}#w_{2}#w_{2}^{R} | w_{1}, w_{2} ∈ {0, 1}^{∗}} und L_{2} = {w_{1}#w_{1}^{R}#w_{2} | w_{1}, w_{2} ∈ {0, 1}^{∗}}.

a) Zeigen Sie, daß L_{1} ∪ L_{2} kontextfrei ist.

b) Zeigen Sie, daß L_{1} ∩ L_{2} nicht kontextfrei ist.

c) Zeigen Sie, daß L_{1} ∩ L_{2} kontextsensitiv ist.

d) Sind Schnitt bzw. Vereinigung nicht regulärer Sprachen immer nicht regulär?

E Lösungen zu den Klausuraufgaben

Frühjahr 1990

1. a)

[figure: a; b; a; b; 1; 2; a; b; a; b; p−1; 0; a; b]

b) ((a + b)(a + b))^{∗} c)

[figure: (a, a, aa); (a, a, aa); (b, a, λ); (b, a, λ); (a, $, a$) (a, a, aa); (b, a, λ); (b, a, λ); 0; 2′; 2; 1′; 0′; 1; (b, a, λ); (b, a, λ)]

d) Anmerkung: Ist die Sprache L regulär, so gilt für ein n > 0 z = a^{n+2}b^{n} ∈ L z = vvw mit |v| ≥ 1 und |vv| ≤ n ⇒ v ∈ a^{+}

Fall 1: |vv| ≤ 2, so vv^{2}w = a^{n+|vv|+2}b^{n} ∉ L wegen #_{a} − #_{b} ≢ 2(mod3) Fall 2: |vv| > 2, so vv^{0}w = a^{n+2−|vv|}b^{n} ∉ L wegen #_{a} < #_{b} Widerspruch ⇒ L nicht regulär 2. a) R wegen R⟹_{G}^{⋆}α ⇒ R kommt in α vor

b) Q_{2}

c)

S → aT a|bT b,
T → aT a|bT b|λ

d)

S → aT a|bT b|aa|bb,
T → aT a|bT b|aa|bb

e)

S → AC|BD|AA|BB,
T → AC|BD|AA|BB,
D → T B,
C → T A,
A → a,
B → b

3.

S → SA|1&1|2&11
1A → A111
&A → 0&|1&1|2&11

4. Es ist zu zeigen, daß die Universalsprache U := {< w, M > |M akzeptiert w}, von der bekannt ist, daß sie unentscheidbar ist, auf die Sprache U_{g} reduzierbar ist, d. h. daß U ≤ U_{g} mittels einer effektiv berechenbaren Funktion f : < w, M >→< w, M′ >, die M = (Q, Σ, Γ, δ, q_{0},b̄ , E) umbaut zu M′ = (Q ∪ {Z_{z}}, Σ, Γ, δ′, q_{0},b̄ , E) mit δ′ = δ ∪ {(Z, a, Z_{z}, b, D), (Z_{z}, x, Z′, X, D)|Z, Z′ ∈ Q, a, b, x ∈ Γ, D ∈ {R, L}, Z′ ∈ E und (Z, a, Z′, b, D) ∈ δ}, bestimmt werden kann. M kann nicht-deterministisch einen Schritt direkt vor Erreichen eines Endzustandes einfügen und somit auch mit gerader Schrittzahl stoppen, wenn er mit ungerader Schrittzahl stoppen kann. Somit gilt < w, M >∈ U gdw. f(w, M) =< w, M′ >∈ U_{g}.

Herbst 1990

1. Bekanntlich ist das Halteproblem H rekursiv aufzählbar, aber nicht rekursiv. Somit ist \overline{H} nicht rekursiv aufzählbar, es gilt aber \overline{H} ≤_{m} L mittels der Reduktion f mit f(⟨M⟩, x) = (⟨M′⟩, ⟨M′′⟩), wobei M′ eine Turingmaschine ist, die unabhängig von der Eingabe M(x) simuliert, und M′′ eine Turingmaschine ist, die immer gleich stoppt. Es gilt: (⟨M⟩, x) ∈ \overline{H} gdw M(x) stoppt nicht gdw M′(⟨M′′⟩) stoppt nicht gdw f(⟨M⟩, x) ∈ L. Somit ist L nicht rekursiv aufzählbar.

2. a) Automat:

[figure: q_{0}; Σ\w; w; q_{1}; w; e; q_{2}; n; q_{3}; n; q_{4}; d; q_{5}; a; q_{6}; n; q_{7}; n; q_{8}; Σ; w; Σ\{w}; λ; (nicht deterministisch)]

b) Automat siehe Abb. E.1. Die Tabelle gibt für alle i, j ein z, sodaß δ̂(q_{i}, z) Endzustand ist gdw δ̂(q_{j}, z) kein Endzustand ist.

1  enn
2  nn  nn
3  n  n n
4  λ  λ λ λ
5  λ  λ λ λ ann
6  λ  λ λ λ nn nn
7  λ  λ λ λ n n n
8 wenn enn nn n λ λ λ λ
9 annwenn enn nn n λ λ λ λ wenn
10 nnwenn enn nn n λ λ λ λ wenn nnwenn
11 nwenn enn nn n λ λ λ λ wenn nwenn nwenn
0  1 2 3 4 5 6 7 8  9  10

c) Da (wenn)^{n}(dann)^{n} ∈ L_{2}, aber (wenn)^{m}(dann)^{n} ∉ L_{2} für m > n, gilt [(wenn)^{n}] ≠ [(wenn)^{m}] für m ≠ n. Nach Myhill-Nerode ist die Sprache daher nicht regulär, da sie unendlich viele Äquivalenzklassen besitzt, die paarweise verschieden sind.

E Lösungen zu den Klausuraufgaben  182

[figure: q_{0}; a, e, n; w; q_{1}; w; e; q_{2}; n; q_{3}; n; q_{4}; Σ\{d}; d; q_{5}; d; a; q_{6}; n; q_{7}; n; q_{8}; Σ; a, e; w; a, n; Σ\{n, d}; Σ\{a, d}; d; q_{9}; d; e, n; a; q_{10}; d; a, e; n; q_{11}; a, e; n; d; w]

Abbildung E.1: Lösung Aufgabe 2b)

d) Automat:

[figure: q_{0}; (k, Σ\{w}, k); (k, w, k); (k, d, k); q_{1}; (k, w, k); (k, {d, a, n}, k); (k, e, k); (k, d, k); q_{2}; (k, {d, e, a}, k); (k, w, k); (k, n, k); q_{3}; (d, n, λ) (w, n, ww) ($, n, $w) (k, {d, e, a}, k); (k, w, k); q_{4}; (k, a, k); q_{5}; (k, n, k); q_{6}; (d, n, dd) ($, n, $d) (w, n, λ)]

k ∈ {$, w, d}

Der (nichtdeterministische) Kellerautomat erkennt L_{2} mit leerem Keller, ein ”dann“ kann auch überlesen werden.

3. Die Lösung ist in Abb. E.2 veranschaulicht.

Sei L = L(G) mit G = (V, Σ, P, S), so ist L′ = L(G′)

mit G′ = (V ∪ V′, Σ, P′, S^{∗}) mit S^{∗} = A′ für A ⟶ $ ∈ P und

P′ = {A′ ⟶ B′C | B ⟶ CA ∈ P } ∪ {A′ ⟶ CB′ | B ⟶ AC ∈ P } ∪ {S′ ⟶ $}

4. a) a^{2^{2^{n}}} = uvwxy 0 < |vx| < n uv^{2}wx^{2}y = a^{(2^{2^{n}} +|vx|)} ∉ L wegen 2^{2^{n}} < 2^{2^{n}} + |vx| < 2^{2^{n+1}} ⇒ Widerspruch zum Lemma von Bar-Hillel ⇒ L nicht kontextfrei

b) S ⟶ A | SB, AB ⟶ AC, CB ⟶ BCC, A ⟶ DC, D ⟶ a, DC ⟶ Da, aC ⟶ Caa

S⟹^{⋆}AB^{n}⟹^{⋆}AC^{2^{n}−1} ⇒ DC^{2^{n}} ⟹^{⋆}Da^{2^{2^{n}} −1} ⇒ a^{2^{2^{n}}}

E Lösungen zu den Klausuraufgaben  184

[figure: S = A_{0}; W_{1}; w_{1}; ⋯; A_{1}; A_{2}; ⋯; ⋯; ⋯; A_{k−2}; A_{k−1}; W_{n}; w_{n}; A_{k}; $; V_{1}; v_{1}; ⋯; V_{m}; v_{m}; ⇒]

[figure: S^{∗} = A′_{k}; W_{n}; w_{n}; ⋯; A′_{k−1}; A′_{k−2}; ⋯; ⋯; ⋯; A′_{2}; A′_{1}; W_{1}; w_{1}; A′_{0}; $; V_{m}; v_{m}; ⋯; V_{1}; v_{1}]

Abbildung E.2: Lösung Aufgabe 3a)

F Literatur

Lehrbücher

[1] Wilfried Brauer, Automatentheorie, B.G. Teubner Stuttgart, 1984

Dieses Buch gibt eine einführende Darstellung der wichtigsten klassischen Grundmodelle, Konzepte, Konstruktionsmethoden und Resultate der Theorie endlicher Automaten (Aus dem Vorwort)

[2] Michael A. Harrison, Introduction to Formal Language Theory, Addison–Wesley Publishing Company, Inc., Reading, Mass, 1978

Sehr umfassende und ausführliche Darstellung des Stoffes, die weit über den Rahmen einer einführenden Vorlseung hinausgeht. Der im Skript nur erwähnte Valiant-Algorithmus zur Erkennung kontextfreier Sprachen wird ausführlich besprochen.

[3] John E. Hopcroft, Jeffrey D. Ullmann, Introduction to automata theory and computation, Addison–Wesley Publishing Company, Inc., Reading, Mass, 1979

”Das“ Standardlehrbuch. Es behandelt die wesentlichen Inhalte einer Vorlesung über Automatentheorie und formale Sprachen einschließlich der Grundbegriffe aus der Berechenbarkeitstheorie und Komplexitätstheorie.

Deutsche Ausgabe:

John E. Hopcroft, Jeffrey D. Ullmann, Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie, Addison–Wesley (Deutschland) GmbH, Bonn 1988

Eine billigere Ausgabe des englischen Originals. ”Billig“ ist hier auch im Sinne von ”preisgünstiger“ gemeint.

Zeitschriftenartikel

[4] John E. Hopcroft, An n log n Algorithm for Minimizing the states in a finite Automaton; in Z. Kohavi, A. Paz (Hrsgb.) Theory of Machines and Computations, Academic Press, New York, London, 189-196, 1971

[5] Paavo Turakainen, Characterizations of Simple Transducers and Principal semiAFLs in Terms of Morphismus and Inverse Morphismus, J.Inf.Process Cybern. EIK \underline{23}, 8/9, 403-413, 1987

[6] N. Immerman, Nondeterministic space is closed under complementation, SIAM J. Comp. \underline{17}, 935-939, 1988

[7] R. Szelepcsényi, The method of forced enumeration for nondeterministic automata, Ada Inf. \underline{26}, 279-284, 1988

[8] K. Hashigushi, Algorithms for determining relative star height and star height, Inf. & Comp., \underline{78}, 124-168, 1988

\underline{G INDEX 186}

G Index

Ableitung, 9

Linksableitung, 89 Ableitungsbaum, 60 Abschlußeigenschaften

deterministisch kontextfreier Sprachen,

102 kontextfreier Sprachen, 102

akzeptierte Sprache, 26 mit Endzustand, 85 mit leerem Keller, 86

Algorithmus von Cocke-Younger-Kasami, 77 von Hopcroft, 55

Laufzeitanalyse, 57 von J.Brzosowski, 58 zur Minimierung von endlichen Au-

tomaten, 53 Alphabet, 2 Äquivalenz

von Zuständen, 51 zweier Grammatiken, 9

Äquivalenzrelation R_{A}, 50 R_{L}, 50

Ausdruck

rational, 44

verallgemeinert, 48 Automat

buchstabierend, 33 fast-buchstabierend, 32 linear beschränkt, 143 minimal, 51 Minimierung, 49 Potenzautomaten-Konstruktion, 43

automatischer Beweis, 30

Bar-Hillel, 23 berechenbar, 123 Bottom-Up-Analyse, 105 buchstabierender Automat, 33 Busy-Beaver-Funktion, 124

Chomsky – Hierarchie, 11, 121 Chomsky-Normalform, 75

kontextfreie Grammmatik, 75 Churchsche These, 123 Cocke-Younger-Kasami Algorithmus, 77

Derivation

siehe Ableitung, 9 deterministisch

Kellerautomat, 86, 94

kontextfrei Sprache, 95 Turingmaschine, 116

deterministischer endlicher Automat, 37

Eindeutigkeit

einer LR(k)-Grammatik, 106 Element

LR(0), 106

Vollständigkeit, 110 Endlicher Automat, 25

andere übliche Definitionen, 27–35 deterministisch, 37 graphische Darstellung, 26 initial zusammenhängend, 37 nichtdeterministisch, 25 vollständig deterministisch, 37

Entfernung unerreichbarer Symbole, 71 unproduktiver Symbole, 70 von Kettenproduktionen, 74 von λ-Regeln, 73

entscheidbare Sprache, 119 Erk, 44 erkannte Sprache

siehe akzeptierte Sprache, 26 erreichbares Symbol, 70 erzeugende reduzierte Grammatik in CNF,

75 erzeugte Halbgruppe, 21 erzeugte Sprache, 9 erzeugter Untermonoid, 21

Fangzustand, 96 fast-buchstabierender Automat, 32 Folgekonfiguration, 85, 96 formale Sprache, 8 freies Monoid, 6 Funktionsberechner, 122

Gastwirt-Ratsel, 18 Grammatik, 8

eindeutig, 89

erzeugende reduzierte

Chomsky-Normalform, 75 kontextfrei, 60 reduziert, 70 linkslinear, 20 LR(0), 106 LR(k), 105 rechtslinear, 20

Graphische Darstellung einer Ableitung, 22 von Automaten, 26

Greibach-Normalform, 80 Griff, 105 Gültigkeit

eines LR(0)-Elements, 107

Halbgruppe, 21 Hashigushi, 45 Homomorphismus, 4

Immerman, N., 145 Indexmengen, 127 initial zusammenhängender endlicher Au-

tomat, 37 Isomorphismus, 4

k-Äquivalenz

von Zuständen, 52 Kellerautomat, 84

deterministisch, 86, 94 Kettenproduktion, 16

Entfernung, 74 klassische Typ – 0 Grammatik, 11 Kleene, S. C., 44 Kleene-Stern, 20 Komplement

einer kontextfreien Sprache, 104 Konfiguration, 85

Folgekonfiguration, 85 Startkonfiguration, 85

Konkatenation, 3 kontextfrei

deterministisch

Sprache, 95 Grammatik, 60 Grammatik in CNF, 75 Sprache, 60, 84

Komplement, 104 kontextsensitiv, 11 kontextsensitiv mit Auslöschung, 11 Kuroda, S. Y., 145

L^{i}, 20

λ-freie Substitution, 67

λ-Kante, 95 λ-Regeln

Entfernung, 73 λ-Übergang, 95, 96 Leistung

eines Zustands, 51 linear beschränkter Automat, 143 Linksableitung, 89 linkslinear, 12

Grammatik, 20 Linksquotient / Rechtsquotient, 48 LR(0)

Element, 106 Gültigkeit, 107 Vollständigkeit, 110

Grammatik, 106 LR(k)

Grammatik, 105 Eindeutigkeit, 106

mehrdeutig kontextfrei, 89

MIN(L), 103

minimaler Automat, 51

Minimierung Algorithmus von Hopcroft, 55 eines Automaten, 49 nach J.Brzozowski, 58 Naiver Algorithmus, 53

Monoid, 4 frei, 6 Untermonoid, 21

monoton, 11

Multiplikation auf Σ^{∗} siehe Konkatenation, 3

nicht abgeschlossene kontextfreie Sprache, nichtdeterministischer endlicher Automat,

25 Normalform

von Greibach, 80 Normalformen, 12 Normalformsatz, 17, 124 nullierbares Symbol, 73

Partition, 55 Potenzautomat, 38 Potenzautomaten-Konstruktion (Komple-

mentabschluß), 43 Potenzmenge, 5 präfixfrei, 87 primitive Wurzel

Eindeutigkeit, 7 produktives Symbol, 70 Pumpinglemma, 23, 62

Rabin/Scott, 38 Rat, 44 rationale Ausdrücke, 44 rationaler Abschluß, 29 rechtslinear, 12

Grammatik, 20 Rechtsquotient / Linksquotient, 48 reduzierbar, 123 reduzierte kontextfreie Grammatik, 70 reflexive transitive Hülle, 85 regulär, 21

Sprachen, 20 Reverse-Operation, 36 Rice, 125

Satzformsprache, 9 Sh=Sternhöhe, 45 Spiegelwort, 36 Sprache

deterministisch Abschlußeigenschaften, 102 kontextfrei, 95

eindeutig kontextfrei, 89

entscheidbar, 119 kontextfrei, 60, 84

Abschlußeigenschaften, 102 Komplement, 104 nicht abgeschlossen, 68 mit Endzustand akzeptiert, 85 mit leerem Keller akzeptiert, 86 Typ – 1, 143 Startkonfiguration, 85 Startzustand, 25 Sternhöhe, 45 Substitution, 66 λ-freie, 67 typerhaltend, 67

Symbol erreichbar, 70 nullierbar, 73 produktiv, 70 Szelepcsényi, N., 145

Turingberechenbar, 123 Turingmaschine, 114 Arbeitsweise, 114 deterministisch, 116 Funktionsberechner, 122 Startkonfiguration, 115 universell, 120 Varianten, 117

Typ – 0, 11 klassisch, 11 kontextsensitiv mit Auslöschung, 11

Typ – 1, 11 kontextsensitiv, 11 monoton, 11 Sprachen, 143

Typ – 2, 11 Typ – 3, 11

linkslinear, 12 rechtslinear, 12

Typ – i

abgeschlossen, 68 typerhaltende Substitution, 67

Unentscheidbarkeit des Halteproblems, 126 unerreichbares Symbol Entfernung, 71 universelle TM, 120 unproduktives Symbol Entfernung, 70

Untermonoid, 21 uvw–Theorem, 23 uvwxy–Theorem, 62

Varianten des TM-Modells, 117 verallgemeinerter rationaler Ausdruck, 48 vollständiger endlicher Automat, 37 Vollständigkeit

eines LR(0)-Elements, 110

Wörter Kombinatorik, 6 konjugierte, 6 transponierte, 6

Wort, 3 Länge, 3 primitives, 7

Zeichenvorrat

siehe Alphabet, 2 Zustand

Äquivalenz, 51 k-Äquivalenz, 52 Leistung, 51