Skript zur Vorlesung - Institut für Theoretische Informatik an der ...
Skript zur Vorlesung - Institut für Theoretische Informatik an der ...
Skript zur Vorlesung - Institut für Theoretische Informatik an der ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Skript</strong> <strong>zur</strong> <strong>Vorlesung</strong><br />
Formale Sprachen<br />
Wintersemester 2007/2008<br />
Prof. Dr. Heribert Vollmer<br />
vollmer@thi.uni-h<strong>an</strong>nover.de<br />
<strong>Institut</strong> <strong>für</strong> <strong>Theoretische</strong> <strong>Informatik</strong><br />
Universität H<strong>an</strong>nover
Inhaltsverzeichnis i<br />
Inhaltsverzeichnis<br />
1 Reguläre Sprachen 1<br />
1.1 Endliche Automaten: Definitionen und Beispiele . . . . . . . . . . . . . 1<br />
1.2 Der Satz von Myhill-Nerode . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
1.3 Minimalautomaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
1.4 Automaten und Halbgruppen . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
1.5 Endliche Automaten mit Ausgabe . . . . . . . . . . . . . . . . . . . . . 11<br />
1.6 Zwei-Weg-Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
2 Kontextfreie Sprachen 21<br />
2.1 Chomsky-Normalform und CYK-Algorithmus . . . . . . . . . . . . . . . 23<br />
2.2 Greibach-Normalform und Kellerautomaten . . . . . . . . . . . . . . . . 27<br />
2.3 Deterministisch-kontextfreie Sprachen . . . . . . . . . . . . . . . . . . . 34<br />
2.4 Entscheidbarkeitsfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />
3 Kontextsensitive Sprachen und Typ-0-Sprachen 46<br />
3.1 Maschinenmodelle <strong>für</strong> Typ-0- und Typ-1-Sprachen . . . . . . . . . . . . 47<br />
3.2 Entscheidbarkeit und Abschlußeigenschaften . . . . . . . . . . . . . . . . 49
1 Reguläre Sprachen 1<br />
1 Reguläre Sprachen<br />
1.1 Endliche Automaten: Definitionen und Beispiele<br />
Definition: Ein Alphabet ist eine endliche Menge von Symbolen, Buchstaben o<strong>der</strong><br />
Zeichen. Bezeichnung meist: Σ, Γ, ∆, . . ., Bezeichnung <strong>für</strong> Zeichen: a, b, c . . ..<br />
Ein Wort (o<strong>der</strong> eine Zeichenkette) über dem Alphabet Σ ist eine endliche Folge<br />
von Symbolen aus Σ. Bezeichnung meist mit u, v, w, x, y, z. Schreibweise: w =<br />
a1a2a3 . . . ak, wobei a1, . . . , ak in dieser Reihenfolge die Folgenwerte sind.<br />
Die Länge |w| eines Wortes w ist die Anzahl <strong>der</strong> Elemente in <strong>der</strong> Folge w.<br />
Ist Σ ein Alphabet, so ist Σ ∗ die Menge aller Wörter über Σ.<br />
Ist w ∈ Σ ∗ , a ∈ Σ, so ist |w| a die Anzahl <strong>der</strong> Vorkommen von a in w.<br />
Das leere Wort wird mit ε bezeichnet und es gilt |ε| = 0.<br />
Sind u, v ∈ Σ ∗ , so ist u ◦ v o<strong>der</strong> uv die Konkatenation (das Hinterein<strong>an</strong><strong>der</strong>schreiben)<br />
<strong>der</strong> Wörter u und v.<br />
Definition: Ein (deterministischer) endlicher Automat (kurz: DEA) ist ein 5-Tupel<br />
wobei<br />
M = (Z, Σ, δ, z0, E),<br />
– Z eine endliche Menge von Zuständen,<br />
– Σ ein Alphabet,<br />
– δ : Z × Σ → Z die Überführungsfunktion,<br />
– z0 ∈ Z <strong>der</strong> Startzust<strong>an</strong>d und<br />
– E ⊆ Z die Menge <strong>der</strong> Endzustände ist.<br />
Definiere ˆ δ : Z × Σ ∗ → Z, die erweiterte Überführungsfunktion, induktiv durch<br />
ˆδ(z, ε) = z<br />
ˆδ(z, ax) = ˆ δ(δ(z, a), x)<br />
<strong>für</strong> alle z ∈ Z, a ∈ Σ und x ∈ Σ ∗ . Schreibweise: zx o<strong>der</strong> z · x <strong>für</strong> ˆ δ(z, x).<br />
Die von M akzeptierte Sprache ist L(M) = {x ∈ Σ ∗ | ˆ δ(z0, x) ∈ E}.<br />
Definition: Ein nichtdeterministischer Automat (kurz: NEA) ist ein 5-Tupel<br />
wobei<br />
M = (Z, Σ, δ, z0, E),
1.1 Endliche Automaten: Definitionen und Beispiele 2<br />
– Z, Σ, z0 und E wie bei DEAen definiert sind und<br />
– δ : Z × Σ → P(Z) die Überführungsfunktion ist.<br />
Definiere ˆ δ : P(Z) × Σ ∗ → P(Z) durch<br />
<strong>für</strong> alle Y ⊆ Z, a ∈ Σ und x ∈ Σ ∗ .<br />
ˆδ(Y, ε) = Y<br />
ˆδ(Y, ax) = <br />
z∈Y<br />
ˆδ(δ(z, a), x)<br />
Die von M akzeptierte Sprache ist L(M) = {x ∈ Σ ∗ | ˆ δ({z0}, x) ∩ E = ∅}.<br />
Nichtdeterministische und deterministische endliche Automaten sind gleich mächtig:<br />
Je<strong>der</strong> DEA lässt sich als NEA schreiben. Für jeden NEA M = (Z, Σ, δ, z0, E) gibt es<br />
einen DEA M ′ mit L(M) = L(M ′ ), nämlich<br />
mit δ ′ (Y, a) = <br />
z∈Y δ(z, a).<br />
M ′ = (P(Z), Σ, δ ′ , {z0}, {Y ⊆ Z | Y ∩ E = ∅})<br />
Die Syntax von regulären Ausdrücken über Σ ist wie folgt definiert:<br />
– ∅ ist ein regulärer Ausdruck.<br />
– Für a ∈ Σ ist a ein regulärer Ausdruck.<br />
– Sind α und β reguläre Ausdrücke, so sind auch αβ, (α + β) und (α) ∗ reguläre<br />
Ausdrücke.<br />
Die von einem regulären Ausdruck α erk<strong>an</strong>nte Sprache L(α) ist wie folgt definiert:<br />
– L(∅) = ∅.<br />
– L(a) = {a} <strong>für</strong> alle a ∈ Σ.<br />
– L(α + β) = L(α) ∪ L(β) <strong>für</strong> reguläre Ausdrücke α, β.<br />
– L(αβ) = L(α) ◦ L(β) <strong>für</strong> reguläre Ausdrücke α, β, wobei<br />
L0 ◦ L1 = {w ∈ Σ ∗ | es gibt ein u ∈ L0 und ein v ∈ L1 mit w = uv}.<br />
– L(α ∗ ) = L(α) ∗ <strong>für</strong> einen regulären Ausdruck α, wobei<br />
L ∗ = <br />
L k mit L 0 = {ε} und L k+1 = L k ◦ L <strong>für</strong> k ≥ 0.<br />
k≥0
1.2 Der Satz von Myhill-Nerode 3<br />
M<strong>an</strong> betrachtet oft auch L + = <br />
k≥1 Lk .<br />
Satz: Sei L eine Sprache. Die folgenden Aussagen sind äquivalent:<br />
– L ist regulär, d. h. es gibt eine Typ-3-Grammatik, die L erzeugt.<br />
– Es gibt einen DEA M mit L = L(M).<br />
– Es gibt einen NEA M mit L = L(M).<br />
– Es gibt einen regulären Ausdruck α mit L = L(α).<br />
Satz (Pumping-Lemma <strong>für</strong> reguläre Sprachen): Sei L regulär. D<strong>an</strong>n gibt es eine Zahl<br />
n, sodass sich alle Wörter x ∈ L mit |x| ≥ n zerlegen lassen in x = uvw, sodass<br />
folgende Eigenschaften gelten:<br />
(i) |v| ≥ 1<br />
(ii) |uv| ≤ n<br />
(iii) Für alle i ∈ N gilt: uv i w ∈ L.<br />
Beispiel: Sei Σ = {a, b}.<br />
(i) (aa + ab + ba + bb) ∗ ist die Sprache aller Wörter mit gera<strong>der</strong> Länge.<br />
(ii) (a ∗ ba ∗ b) ∗ a ∗ ist die Sprache aller Wörter mit einer geraden Anzahl von b’s.<br />
(iii) L = {a n b n | n ≥ 0} ist nicht regulär.<br />
Angenommen L wäre regulär: Wähle n wie im Pumping-Lemma und betrachte<br />
x = a n b n . Es gilt |x| ≥ n. Wähle u, v und w mit |v| ≥ 1, |uv| ≤ n. D<strong>an</strong>n ist<br />
uv 2 w /∈ L und das ist ein Wi<strong>der</strong>spruch <strong>zur</strong> Annahme, dass L regulär ist.<br />
(iv) L = {w | |w| a = |w| b } ist nicht regulär.<br />
Angenommen L wäre regulär: a ∗ b ∗ ist regulär, also auch ist L ′ = L ∩ L(a ∗ b ∗ ) =<br />
{a n b n | n ≥ 0} regulär. L ′ ist jedoch nach (iii) nicht regulär.<br />
1.2 Der Satz von Myhill-Nerode<br />
Definition: Eine Relation ∼ ⊆ M × M auf einer Menge M heißt Äquivalenzrelation,<br />
falls gilt:<br />
(i) ∼ ist reflexiv, d. h. <strong>für</strong> alle x ∈ M gilt x ∼ x,<br />
(ii) ∼ ist symmetrisch, d. h. es gilt x ∼ y ⇒ y ∼ x <strong>für</strong> alle x, y ∈ M,<br />
(iii) ∼ ist tr<strong>an</strong>sitiv, d. h. es gilt x ∼ y und y ∼ z ⇒ x ∼ z <strong>für</strong> alle x, y, z ∈ M.
1.2 Der Satz von Myhill-Nerode 4<br />
[x]∼ = {y ∈ M | x ∼ y} ist die Äquivalenzklasse von x ∈ M. M/∼ ist die Menge aller<br />
Äquivalenzklassen von ∼. Der Index von ∼ ist die Kardinalität von M/∼.<br />
∼ heißt rechtsinvari<strong>an</strong>t, falls aus x ∼ y folgt, dass <strong>für</strong> alle u ∈ Σ ∗ gilt: xu ∼ yu.<br />
Beispiel: Σ = {0, 1}. Es sei x ∼ y gdw. |x| ≡ |y| (mod 2) gilt. Der Index von ∼ ist 2<br />
und ∼ ist rechtsinvari<strong>an</strong>t.<br />
Definition: Sei L ⊆ Σ ∗ . Die natürliche Äquivalenzrelation von L ist definiert durch<br />
x ∼L y gdw. <strong>für</strong> alle u ∈ Σ ∗ gilt: xu ∈ L ⇔ yu ∈ L.<br />
Satz: Sei L ⊆ Σ ∗ . Die folgenden Aussagen sind äquivalent:<br />
(i) L ist regulär.<br />
(ii) Es gibt eine rechtsinvari<strong>an</strong>te Äquivalenzrelation ≈ auf Σ ∗ mit endlichem Index,<br />
sodass L als Vereinigung von Äquivalenzklassen von ≈ geschrieben werden k<strong>an</strong>n.<br />
(iii) ∼L hat endlichen Index.<br />
Beweis: (i) ⇒ (ii): Sei L regulär. Sei L = L(M) <strong>für</strong> den DEA M = (Z, Σ, δ, z0, E).<br />
Wir nehmen o. B. d. A. <strong>an</strong>, dass alle Zustände aus Z vom Startzust<strong>an</strong>d z0 aus erreichbar<br />
sind. Definiere eine Relation ≈ über Σ ∗ wie folgt:<br />
x ≈ y ⇔ z0x = z0y,<br />
d. h. x ≈ y ⇔ ˆ δ(z0, x) = ˆ δ(z0, y) <strong>für</strong> x, y ∈ Σ ∗ . Wir weisen nach, dass ≈ die gewünschten<br />
Eigenschaften hat:<br />
– ≈ ist reflexiv, symmetrisch und tr<strong>an</strong>sitiv. Die Tr<strong>an</strong>sitivität gilt, da <strong>für</strong> x ≈ y und<br />
y ≈ u, u ∈ Σ ∗ beliebig ⇒ z0x = z0y und z0y = z0u ⇒ z0x = z0u, also x ≈ u.<br />
– ≈ ist rechtsinvari<strong>an</strong>t: Sei x ≈ y, also z0x = z0y. Sei u ∈ Σ ∗ beliebig. D<strong>an</strong>n ist<br />
z0(xu) = (z0x)u = (z0y)u = z0(yu), also xu ≈ yu.<br />
– Sei x ∈ Σ ∗ . D<strong>an</strong>n ist [x]≈ = {y ∈ Σ ∗ | z0x = z0y}. Für z ∈ Z definiere Lz =<br />
{x ∈ Σ∗ | z0x = z}. D<strong>an</strong>n sind die Mengen Lz Äquivalenzklassen von ≈ und<br />
<strong>für</strong> jede Äquivalenzklasse [x]≈ gibt es ein z mit [x]≈ = Lz. Die Anzahl <strong>der</strong><br />
Äquivalenzklassen von ≈ ist höchstens |Z|, also endlich.<br />
– L k<strong>an</strong>n geschrieben werden als L = <br />
z∈E Lz.<br />
Schreibweise <strong>für</strong> die oben konstruierte Äquivalenzrelation: ≈M .<br />
(ii) ⇒ (iii): Sei ≈ eine Äquivalenzrelation, die (ii) erfüllt. Wir zeigen, dass ≈ ist eine<br />
Verfeinerung von ∼L ist, d. h. <strong>für</strong> jedes Wort x ∈ Σ ∗ gilt:<br />
[x]≈ ⊆ [x]∼L.
1.2 Der Satz von Myhill-Nerode 5<br />
D<strong>an</strong>n ist <strong>der</strong> Index von ∼L nicht größer als <strong>der</strong> Index von ≈, also endlich. Betrachte<br />
ein [x]≈. Sei y ∈ [x]≈, also x ≈ y. D<strong>an</strong>n gilt <strong>für</strong> alle u ∈ Σ ∗ , dass xu ≈ yu, also xu ∈ L<br />
gdw. yu ∈ L. Also ist x ∼L y und daher y ∈ [x]∼L. Demnach ist [x]≈ ⊆ [x]∼L.<br />
(iii) ⇒ (i): Wir zeigen zunächst, dass ∼L rechtsinvari<strong>an</strong>t ist.<br />
Sei x ∼L y und v ∈ Σ ∗ . Zu zeigen ist xv ∼L yv, das heißt, dass <strong>für</strong> alle w ∈ Σ ∗ gilt:<br />
xvw ∈ L ⇔ yvw ∈ L. Da jedoch x ∼L y, gilt <strong>für</strong> alle u ∈ Σ ∗ , dass xu ∈ L ⇔ yu ∈ L.<br />
Obige Äquivalenz folgt direkt mit u = vw.<br />
Wir definieren nun einen DEA Mmin = (Zmin, Σ, δmin, z0min, Emin) wie folgt:<br />
– Zmin = Σ ∗ / ∼L, die Menge <strong>der</strong> Äquivalenzklassen von ∼L.<br />
– δmin([x]∼L , a) = [xa]∼L <strong>für</strong> alle [x]∼L ∈ Zmin, a ∈ Σ.<br />
δmin ist wohldefiniert, da ∼L rechtsinvari<strong>an</strong>t ist: gilt y ∈ [x]∼L , so ist xu ∼L yu<br />
<strong>für</strong> alle u ∈ Σ ∗ , also insbeson<strong>der</strong>e xa ∼L ya und [xa]∼L = [ya]∼L <strong>für</strong> a ∈ Σ.<br />
– z0min = [ε]∼L .<br />
– Emin = {[x]∼L | x ∈ L}.<br />
Mmin akzeptiert L, denn:<br />
x ∈ L(Mmin) ⇔ z0minx ∈ Emin ⇔ [ε]∼L · x ∈ Emin ⇔ [x]∼L<br />
<br />
=[εx]=[x]<br />
∈ Emin ⇔ x ∈ L<br />
Korollar (Satz von Myhill-Nerode, 1957/58): Eine Sprache L ⊆ Σ ∗ ist regulär gdw.<br />
∼L endlichen Index hat.<br />
Beispiel: L = {a n b n | n ≥ 0}<br />
Für i = j ist a i ≁L a j , denn a i b i ∈ L, aber a j b i /∈ L. Somit existieren unendlich viele<br />
verschiedene Äquivalenzklassen [ε], [a], [aa], [aaa], . . . und L ist nicht regulär.<br />
Beispiel: L = {x ∈ {0, 1} ∗ | x endet mit 00}<br />
– [ε]∼L = {x | x endet nicht mit 0}<br />
Sei x = y1 <strong>für</strong> ein y ∈ {0, 1} ∗ . D<strong>an</strong>n gilt x ∼L ε, denn <strong>für</strong> w ∈ Σ ∗ gilt:<br />
xw ∈ L ⇔ w = w ′ 00 <strong>für</strong> ein geeignetes w ′ ⇔ ε · w = w ∈ L.<br />
Sei x = y0 <strong>für</strong> ein y ∈ {0, 1} ∗ . D<strong>an</strong>n gilt x ≁L ε, denn x0 ∈ L und ε · 0 = 0 /∈ L.<br />
– [0]∼L = {x | x endet mit 0, aber nicht mit 00}<br />
– [00]∼L = {x | x endet mit 00}
1.3 Minimalautomaten 6<br />
Da [ε]∼L ∪ [0]∼L ∪ [00]∼L = {0, 1}∗ , sind dies alle Äquivalenzklassen. Damit ist <strong>der</strong><br />
Index von ∼L gleich 3 und L regulär. Der (minimaler) endlicher Automat Mmin <strong>für</strong> L<br />
ist:<br />
1<br />
0 0<br />
[ε] [0]<br />
1<br />
1<br />
δ Eingabezeichen<br />
0 1<br />
Zust<strong>an</strong>d<br />
[ε]∼L<br />
[0]∼L<br />
[00]∼L<br />
[0]∼L<br />
[00]∼L<br />
[000]∼L<br />
[ε1]∼L = [1]∼L = [ε]∼L<br />
[01]∼L = [ε]∼L<br />
= [00]∼L [001]∼L = [ε]∼L<br />
1.3 Minimalautomaten<br />
Satz: Sei L regulär. D<strong>an</strong>n gibt es einen bis auf Isomorphie eindeutigen deterministischen<br />
Minimalautomaten (d. h. DEA mit minimaler Anzahl von Zuständen), <strong>der</strong> L<br />
akzeptiert.<br />
Beweis: Wir zeigen, dass <strong>der</strong> Automat Mmin aus dem letzten Beweis <strong>der</strong> eindeutige<br />
Minimalautomat ist.<br />
(i) Mmin hat minimale Zust<strong>an</strong>ds<strong>an</strong>zahl.<br />
Im Beweis zeigte sich folgendes: Aus einem beliebigen DEA M = (Z, Σ, δ, z0, E)<br />
<strong>für</strong> L konstruieren wir ≈M mit Index ≤ |Z|. Außerdem gilt:<br />
[00]<br />
|Zmin| = Index von ∼L ≤ Index von ≈M ≤ |Z|.<br />
Mmin hat also nicht mehr Zustände als M.<br />
(ii) Mmin ist eindeutig. Wir zeigen:<br />
Ist M = (Z, Σ, δ, z0, E) ein DEA mit L(M) = L(Mmin) und |Z| = |Zmin|, so sind<br />
M und Mmin isomorph.<br />
Ist z ∈ Z, d<strong>an</strong>n wähle x ∈ Σ ∗ so, dass z0 · x = z (x muss existieren, da M wegen<br />
<strong>der</strong> Minimalität keine nicht erreichbaren Zustände besitzt). z entspricht in Mmin<br />
dem Zust<strong>an</strong>d zmin = z0min · x = [ε]∼L x.<br />
0
1.3 Minimalautomaten 7<br />
Der Isomorphismus z ↦→ zmin ist wohldefiniert, denn ist y = x mit z0x = z0y = z,<br />
d<strong>an</strong>n ist x ≈M y, also auch x ∼L y und damit<br />
z0min · x = [ε]∼L · x = [x]∼L = [y]∼L = z0min · y.<br />
M<strong>an</strong> zeigt leicht, dass die definierte Abbildung bijektiv ist.<br />
Algorithmus <strong>zur</strong> Bestimmung des Minimalautomaten:<br />
Gegeben: DEA M = (Z, Σ, δ, z0, E), o. B. d. A. seien alle Zustände in M vom Startzust<strong>an</strong>d<br />
aus erreichbar.<br />
(i) Stelle Tabelle aller Paare {z, z ′ } mit z = z ′ und z, z ′ ∈ Z auf.<br />
(ii) Markiere alle Paare {z, z ′ } mit z ∈ E und z ′ /∈ E.<br />
(iii) Wie<strong>der</strong>hole folgenden Schritt, sol<strong>an</strong>ge sich Än<strong>der</strong>ungen in <strong>der</strong> Tabelle ergeben:<br />
(iv) Falls es ein unmarkiertes Paar {z, z ′ } und ein a ∈ Σ gibt, sodass {δ(z, a), δ(z ′ , a)}<br />
markiert ist, so markiere {z, z ′ }.<br />
(v) Verschmelze unmarkierte Paare zu jeweils einem Zust<strong>an</strong>d.<br />
Der Algorithmus hat eine Laufzeit von O(|Z| 4 · |Σ|), also polynomielle Laufzeit in <strong>der</strong><br />
Länge <strong>der</strong> Kodierung des Eingabeautomatens. Durch eine geschicktere Implementierung<br />
mit priorisierten Warteschl<strong>an</strong>gen erreicht m<strong>an</strong> eine Laufzeit von O(|Z| 2 · |Σ|).<br />
Beispiel: Gegeben sei folgen<strong>der</strong> deterministischer Automat:<br />
1 1<br />
Dies führt auf folgende Tabelle:<br />
0 0<br />
z0 z1 z4<br />
z2<br />
0<br />
1<br />
1<br />
z3<br />
0<br />
0, 1
1.3 Minimalautomaten 8<br />
Es ergibt sich folgen<strong>der</strong> Minimalautomat:<br />
z0, z2<br />
z1<br />
z2<br />
z3<br />
z4<br />
0<br />
z0<br />
z1<br />
z1, z3<br />
1<br />
1 0, 1<br />
Korollar: Das Äquivalenzproblem <strong>für</strong> reguläre Sprachen, also das Problem<br />
ist in Polynomialzeit entscheidbar.<br />
Gegeben: DEAs M1, M2<br />
Frage: Ist L(M1) = L(M2)?<br />
Beweis: Folgen<strong>der</strong> Algorithmus leistet das Gewünschte:<br />
(i) M1min := Minimalautomat zu M1.<br />
(ii) M2min := Minimalautomat zu M2.<br />
(iii) Ausgabe ” ja“ gdw. M1min isomorph zu M2min.<br />
Im Falle von nichtdeterministischen endlichen Automaten gilt Folgendes:<br />
– Die Eindeutigkeit von minimalen nichtdeterministischen Automaten ist nicht gegeben.<br />
– Das Äquivalenzproblem <strong>für</strong> NEAs ist PSPACE-vollständig.<br />
– Das folgende Problem ist ebenfalls PSPACE-vollständig:<br />
Gegeben: NEA M, k ∈ N<br />
Frage: Gibt es einen NEA Mmin mit höchstens k Zuständen, sodass<br />
L(Mmin) = L(M)?<br />
z2<br />
0<br />
z3<br />
z4
1.4 Automaten und Halbgruppen 9<br />
1.4 Automaten und Halbgruppen<br />
Beobachtung: Zu jedem Alphabet Σ bildet Σ ∗ mit <strong>der</strong> Verknüpfung Konkatenation<br />
einen Monoid (d. h. das Assoziativgesetz gilt und ein Einselement existiert), und Σ +<br />
mit <strong>der</strong> Konkatenation eine Halbgruppe.<br />
Definition: Sei L ⊆ Σ ∗ . Definiere x ≡L y gdw. <strong>für</strong> alle u, v ∈ Σ ∗ gilt:<br />
uxv ∈ L ⇔ uyv ∈ L<br />
Beobachtung: ≡L ist eine Kongruenz auf Σ ∗ (d. h. x ≡L y ⇒ ∀u, v ∈ Σ ∗ : uxv ≡L<br />
uyv).<br />
Definition: Sei L ⊆ Σ ∗ .<br />
– ≡L heißt syntaktische Kongruenz von L.<br />
– Mon(L) = (Σ ∗ / ≡L, ◦) heißt syntaktisches Monoid von L mit <strong>der</strong> Operation<br />
[x]≡L ◦ [y]≡L = [x · y]≡L. Der zugehörige natürliche Homomorphismus<br />
heißt syntaktischer Homomorphismus.<br />
ηL : Σ ∗ → Mon(L), x ↦→ [x]≡L<br />
Beispiel: L = {w ∈ {0, 1} ∗ | |w| ≡ 0 (mod 2)}<br />
Es gilt: x ≡L y ⇔ |x| ≡ |y| (mod 2). Es gibt also zwei Äquivalenzklassen: [ε] und [0].<br />
◦ [ε] [0]<br />
[ε] [ε] [0]<br />
[0] [0] [ε]<br />
Mon(L) ist isomorph <strong>zur</strong> Gruppe <strong>der</strong> Ordnung 2.<br />
<br />
[ε], falls |x| gerade ist,<br />
ηL(x) =<br />
[0], sonst.<br />
Beispiel: L = {w ∈ {0, 1} ∗ | |w| 1 ≡ 0 (mod 2)}<br />
Es gilt: x ≡L y ⇔ |x| 1 ≡ |y| 1 (mod 2). Es gibt also die Äquivalenzklassen [ε] und [1].<br />
◦ [ε] [1]<br />
[ε] [ε] [1]<br />
[1] [1] [ε]<br />
Mon(L) ist erneut isomorph <strong>zur</strong> Gruppe <strong>der</strong> Ordnung 2.<br />
<br />
[ε], falls |x| 1 gerade ist,<br />
ηL(x) =<br />
[0], sonst.
1.4 Automaten und Halbgruppen 10<br />
Satz: Sei L ⊆ Σ ∗ . L ist regulär gdw. Mon(L) ist endlich.<br />
Beweis: ” ⇒“: Sei L = L(M) und M = (Z, Σ, δ, z0, E). Definiere die Äquivalenzrelation<br />
∼= auf Σ ∗ wie folgt:<br />
x ∼ = y ⇔ <strong>für</strong> alle z ∈ Z gilt: zx = zy<br />
Die Anzahl <strong>der</strong> Äquivalenzklassen von ∼ = ist ≤ |Z| |Z| (jede Äquivalenzklasse ist festgelegt<br />
durch eine Abbildung Z → Z). Wir zeigen: ∼ = ist eine Verfeinerung von ≡L, d. h.<br />
<strong>für</strong> jedes x ∈ Σ ∗ gilt: [x]∼ = ⊆ [y]≡L . D<strong>an</strong>n ist <strong>der</strong> Index von ≡L nicht größer als <strong>der</strong><br />
von ∼ =, also ist Mon(L) endlich.<br />
Sei x ∼ = y und seien u, v ∈ Σ ∗ . Ist uxv ∈ L, d<strong>an</strong>n gilt<br />
z0 · uxv = ((z0u)x)v = ((z0u)y)v = z0(uyv) ∈ E,<br />
also uyv ∈ L. Genauso k<strong>an</strong>n m<strong>an</strong> zeigen: uyv ∈ L ⇒ uxv ∈ L. Also: x ≡L y.<br />
” ⇐“: Sei nun Mon(L) endlich. Definiere DEA<br />
M = (Σ ∗ / ≡L, Σ, δ, [ε]≡L, {[w]≡L | w ∈ L}),<br />
wobei δ([w]≡L , a) = [wa]≡L . Es gilt also:<br />
Also ist L regulär.<br />
w ∈ L(M) ⇔ [ε]≡L · w ∈ E = [w]≡L ∈ E ⇔ w ∈ L.<br />
Definition: Sei M = (Z, Σ, δ, z0, E) ein DEA. Für w ∈ Σ ∗ definiere fw : Z → Z durch<br />
fw(z) = z · w.<br />
Die Menge aller solcher Abbildungen {fw | w ∈ Σ ∗ } bildet zusammen mit <strong>der</strong> Verknüpfung<br />
fx · fy = fxy ein Monoid, das so gen<strong>an</strong>nnte Tr<strong>an</strong>sitionsmonoid von M, und wird<br />
bezeichnet mit Mon(M).<br />
Satz: Ist M <strong>der</strong> Minimalautomat <strong>für</strong> L, so sind Mon(M) und Mon(L) isomorph.<br />
Beweis: Sei M = (Z, Σ, δ, z0, E) ein Minimalautomat <strong>für</strong> L. Es reicht zu zeigen: fx =<br />
fy gdw. x ≡L y. D<strong>an</strong>n sind Mon(M) und Mon(L) isomorph vermöge des folgenden<br />
Isomorphismus:<br />
π : Mon(M) → Mon(L), π(fx) = [x]≡L .<br />
” ⇒“: Sei fx = fy. Seien u und v beliebig. D<strong>an</strong>n gilt:<br />
uxv ∈ L ⇔ z0 · uxv ∈ E<br />
⇔ ((z0u)x)v ∈ E<br />
⇔ ((z0u)y)v ∈ E<br />
⇔ z0(uyv) ∈ E<br />
⇔ uyv ∈ L,
1.5 Endliche Automaten mit Ausgabe 11<br />
also x ≡L y. (M<strong>an</strong> beachte, dass hier die Minimalität von M nicht benötigt wird.)<br />
” ⇐“: Sei x ≡L y. Wähle z ∈ Z. Sei u ∈ Σ ∗ so, dass z0 · u = z. Existiert kein solches<br />
u, so ist z nicht erreichbar, also M nicht minimal. Setze z1 = fx(z) = zx = z0ux und<br />
z2 = fy(z) = zy = z0uy.<br />
Aus<br />
<br />
ux v ∈ L ⇔ uy<br />
<br />
v folgt<br />
=z1=z0ux<br />
=z2=z0uy<br />
z1v ∈ E ⇔ z2v ∈ E<br />
<strong>für</strong> alle v ∈ Σ ∗ . Da M minimal ist, folgt also z1 = z2. Da z ∈ Z beliebig gewählt war,<br />
folgt fx = fy.<br />
Bemerkung: Die Umkehrung des Satzes gilt nicht. Obige Beispiele betreffen verschiedene<br />
Sprachen, also mit verschiedenen Minimalautomaten, <strong>der</strong>en syntaktische Monoide<br />
gleich sind.<br />
1.5 Endliche Automaten mit Ausgabe<br />
Definition: Eine Moore-Maschine ist ein 6-Tupel<br />
wobei<br />
M = (Z, Σ, ∆, δ, λ, z0),<br />
– Z, Σ, δ und z0 sind wie bei DEAen definiert sind,<br />
– ∆ das Ausgabealphabet und<br />
– λ: Z → ∆ die Ausgabefunktion ist.<br />
Die Ausgabe von M bei Eingabe eines Wortes w = a1 . . . <strong>an</strong> ist<br />
TM (w) = λ(z0)λ(z1) . . . λ(zn),<br />
wobei zi = δ(zi−1, ai) <strong>für</strong> 1 ≤ i ≤ n. TM : Σ ∗ → ∆ ∗ heißt die von M berechnete<br />
Funktion.<br />
Definition: Eine Mealy-Maschine ist ein 6-Tupel<br />
wobei<br />
M = (Z, Σ, ∆, δ, λ, z0),<br />
– Z, Σ, ∆, δ und z0 sind wie bei Moore-Maschinen definiert sind und<br />
– λ: Z × Σ → ∆ die Ausgabefunktion ist.
1.5 Endliche Automaten mit Ausgabe 12<br />
Die Ausgabe von M bei Eingabe eines Wortes w = a1 . . . <strong>an</strong> ist<br />
TM (w) = λ(z0, a1)λ(z1, a2) . . . λ(zn−1, <strong>an</strong>),<br />
wobei zi = δ(zi−1, ai) <strong>für</strong> 1 ≤ i ≤ n. TM : Σ ∗ → ∆ ∗ heißt die von M berechnete<br />
Funktion.<br />
Bemerkung: – Ist M eine Moore-Maschine, so ist |Tn(w)| = |w| + 1.<br />
– Ist M eine Mealy-Maschine, so ist |Tn(w)| = |w|.<br />
Definition: Sei M eine Moore- o<strong>der</strong> Mealy-Maschine mit Ausgabealphabet ∆ =<br />
{0, 1}. Ein Wort w heißt von M akzeptiert, falls TM (w) = (0 + 1) ∗ 1.<br />
Beispiel: Betrachte die Sprache (0 + 1) ∗ (00 + 11). Folgen<strong>der</strong> Minimalautomat akzeptiert<br />
L:<br />
z0<br />
Folgende Mealy-Maschine akzeptiert L:<br />
Dabei bedeutet die Notation<br />
0<br />
1<br />
z0<br />
0<br />
0<br />
1<br />
0/0<br />
1/0<br />
1<br />
0<br />
0<br />
1<br />
1<br />
0<br />
0/0 1/0<br />
z z ′<br />
a/b<br />
dass δ(z, a) = z ′ und λ(z, a) = b <strong>für</strong> z, z ′ ∈ Z, a ∈ Σ, b ∈ ∆.<br />
Definition: Sei M = (Z, Σ, ∆, δ, λ, z0) eine Moore-Maschine und M ′ = (Z ′ , Σ, ∆, δ ′ ,<br />
λ ′ , z0 ′ ) eine Mealy-Maschine. Sei b = λ(z0) = TM (ε). M und M ′ heißen äquivalent,<br />
falls <strong>für</strong> alle w ∈ Σ ∗ gilt:<br />
b ◦ TM ′(w) = TM (w).<br />
1<br />
0/1<br />
1/1<br />
00<br />
11<br />
0<br />
1
1.5 Endliche Automaten mit Ausgabe 13<br />
Satz: Sei M1 = (Z, Σ, ∆, δ, λ, z0) eine Moore-Maschine. D<strong>an</strong>n gibt es eine äquivalente<br />
Mealy-Maschine M2.<br />
Beweis: Wir setzen M2 = (Z, Σ, ∆, δ, λ ′ , z0) mit λ ′ (z, a) = λ(δ(z, a)) <strong>für</strong> alle z ∈ Z<br />
und a ∈ Σ.<br />
Satz: Sei M1 = (Z, Σ, ∆, δ, λ, z0) eine Mealy-Maschine. D<strong>an</strong>n gibt es eine äquivalente<br />
Moore-Maschine M2.<br />
Beweis: Wir setzen M2 = (Z × ∆, Σ, ∆, δ ′ , λ ′ , z0 ′ ), wobei<br />
– z0 ′ = (z0, b0) <strong>für</strong> ein beliebiges b0 ∈ ∆,<br />
– δ ′ ((z, b), a) = (δ(z, a), λ(z, a)) <strong>für</strong> z ∈ Z, a ∈ Σ, b ∈ ∆ und<br />
– λ ′ ((z, b)) = b <strong>für</strong> z ∈ Z, b ∈ ∆.<br />
Beispiel: Betrachte wie<strong>der</strong> die Mealy-Maschine aus dem letzten Beispiel:<br />
z0<br />
0/0<br />
1/0<br />
Die äquivalente Moore-Maschine ist d<strong>an</strong>n:<br />
(z0, 0)<br />
0<br />
1<br />
1<br />
(0, 0)<br />
(1, 0)<br />
0<br />
0/0 1/0<br />
0<br />
1<br />
0<br />
1<br />
1<br />
0<br />
0/1<br />
1/1<br />
(0, 1)<br />
(1, 1)<br />
Diese Maschine ist isomorph zum Minimalautomaten aus dem vorherigen Beispiel.<br />
Wir möchten im Folgenden eine Charakterisierung <strong>der</strong> von Mealy-Maschinen berechenbaren<br />
Funktionen <strong>an</strong>geben.<br />
0<br />
1
1.5 Endliche Automaten mit Ausgabe 14<br />
Definition: Sei M = (Z, Σ, ∆, δ, λ, z0) eine Mealy-Maschine. Die erweiterte Ausgabefunktion<br />
ˆ λ ist definiert durch:<br />
ˆλ(z, ε) = ε <strong>für</strong> alle z ∈ Z,<br />
ˆλ(z, xa) = ˆ λ(z, x) ◦ λ( ˆ δ(z, x), a) <strong>für</strong> alle z ∈ Z, x ∈ Σ ∗ , a ∈ Σ.<br />
Bemerkung: Es gilt: TM (w) = ˆ λ(z0, w).<br />
Definition: Sei f : Σ ∗ → ∆ ∗ .<br />
– f heißt längenerhaltend, falls |f(w)| = |w| <strong>für</strong> alle w ∈ Σ ∗ .<br />
– f heißt sequentiell, falls <strong>für</strong> alle v, w ∈ Σ ∗ gilt:<br />
f(wv) hat als Präfix f(w),<br />
d. h. es existiert ein u ∈ ∆ ∗ , sodass f(wv) = f(w)u. Definiere fw : Σ ∗ → ∆ ∗ so,<br />
dass f(wv) = f(w) · fw(v), also in obiger Notation: fw(v) = u.<br />
– Ist f sequentiell, so ist das Gewicht von f die Anzahl <strong>der</strong> verschiedenen Funktionen<br />
fw über alle w ∈ Σ ∗ .<br />
Satz: Eine totale Funktion f : Σ ∗ → ∆ ∗ ist genau d<strong>an</strong>n von einer Mealy-Maschine<br />
berechenbar, wenn sie längenerhaltend, sequentiell und von endlichem Gewicht ist.<br />
Beweis: ” ⇒“: Sei M = (Z, Σ, ∆, δ, λ, z0) eine Mealy-Maschine mit f = TM . f ist<br />
längenerhaltend.<br />
Es gilt:<br />
f(wv) = TM (wv) = ˆ λ(z0, wv) Induktion<br />
= ˆ λ(z0, w) · ˆ λ( ˆ δ(z0, w), v) = f(w) · ˆ λ( ˆ δ(z0, w), v),<br />
also ist f sequentiell.<br />
Weiterhin ist fw(v) = ˆ λ( ˆ δ(z0, w) , v), folglich gibt es höchstens |Z| viele Funktionen fw.<br />
<br />
∈Z<br />
” ⇐ “: Sei f längenerhaltend, sequentiell und von endlichem Gewicht. Definiere M =<br />
(Z, Σ, ∆, δ, λ, z0) wie folgt:<br />
– Z = {fw | w ∈ Σ ∗ } (endlich, da f von endlichem Gewicht)<br />
– z0 = fε<br />
– δ(fw, a) = fwa <strong>für</strong> alle w ∈ Σ ∗ , a ∈ Σ<br />
(Für v, w ∈ Σ ∗ , v = w, aber fv = fw gilt: fwa<br />
– λ(fw, a) = fw(a) <strong>für</strong> alle w ∈ Σ ∗ und a ∈ Σ<br />
Induktion<br />
Induktion<br />
= (fw)a = (fv)a = fva.)
1.6 Zwei-Weg-Automaten 15<br />
Behauptung A: Für alle w ∈ Σ ∗ ist ˆ δ(fε, w) = fw.<br />
Beweis <strong>der</strong> Behauptung durch Induktion über |w|:<br />
|w| = 0: ˆ δ(fε, ε) = fε<br />
|w| > 0, w = xa <strong>für</strong> x ∈ Σ∗ und a ∈ Σ:<br />
ˆδ(fε, xa) = δ( ˆ δ(fε, x), a) Definition von ˆ δ<br />
= δ(fx, a) Nach Induktionsvoraussetzung<br />
= fxa<br />
Definition von δ<br />
Behauptung B: Für alle w ∈ Σ ∗ ist ˆ λ(fε, w) = f(w).<br />
Beweis <strong>der</strong> Behauptung durch Induktion über |w|:<br />
|w| = 0: ˆ λ(fε, ε) = ε = f(ε), nach Definition von ˆ λ und da f längenerhaltend ist.<br />
|w| > 0, w = xa <strong>für</strong> x ∈ Σ ∗ und a ∈ Σ:<br />
ˆλ(fε, xa) = ˆ λ(fε, x) ◦ λ( ˆ δ(fε, x), a) Definition von ˆ λ<br />
= f(x) ◦ λ( ˆ δ(fε, x), a) Nach Induktionsvoraussetzung<br />
= f(x) ◦ λ(fx, a) Behauptung A<br />
= f(x) ◦ fx(a) Definition von M<br />
= f(xa) f sequentiell<br />
Insgesamt folgt damit:<br />
<strong>für</strong> alle w ∈ Σ ∗ .<br />
1.6 Zwei-Weg-Automaten<br />
TM (w) = ˆ λ(z0, w) = ˆ λ(fε, w) = f(w)<br />
Das Berechnungsmodell <strong>der</strong> endlichen Automaten lässt nur Kopfbewegungen in eine<br />
Richtung zu. Ein Zwei-Weg-Automat stellt ein verallgemeinertes Berechnungsmodell<br />
dar, bei dem <strong>der</strong> Kopf auf <strong>der</strong> Eingabe in beiden Richtungen laufen darf. Die Eingabe<br />
darf links nicht verlassen werden. Die Rechnung endet, falls die Eingabe nach rechts<br />
verlassen wird. In diesem Fall wird akzeptiert, falls sich <strong>der</strong> Automat d<strong>an</strong>n in einem<br />
Endzust<strong>an</strong>d befindet.<br />
Es stellt sich die Frage, inwiefern diese Verallgemeinerung die Berechnungskraft erhöht.<br />
Definition: Ein deterministischer Zwei-Weg-Automat (kurz: 2DEA) ist ein 5-Tupel<br />
wobei<br />
M = (Z, Σ, δ, z0, E),<br />
– Z, Σ, z0 und E wie bei DEAen definiert sind und
1.6 Zwei-Weg-Automaten 16<br />
– δ : Z × Σ → Z × {L, R} die Überführungsfunktion ist.<br />
Eine Konfiguration von M ist ein Element aus Σ ∗ · Z · Σ ∗ . Eine Konfiguration wzx ∈<br />
Σ ∗ · Z · Σ ∗ repräsentiert dabei folgende Situation von M:<br />
– Eingabewort ist wx,<br />
– Zust<strong>an</strong>d ist z und<br />
– <strong>der</strong> Kopf steht auf dem ersten Zeichen von x.<br />
Ist x = ε, so hat <strong>der</strong> Kopf die Eingabe rechts verlassen.<br />
Wir definieren nun, wie M bei Eingabe w = a1 · · · <strong>an</strong> in einem Schritt von Konfiguration<br />
K in Konfiguration K ′ übergeht, in Zeichen K ⊢M K ′ :<br />
a1 · · · ai−1zaiai+1 · · · <strong>an</strong> ⊢M a1 · · · ai−1aiz ′ ai+1 · · · <strong>an</strong>, falls δ(z, ai) = (z ′ , R),<br />
a1 · · · ai−2ai−1zai · · · <strong>an</strong> ⊢M a1 · · · ai−2z ′ ai−1ai · · · <strong>an</strong>, falls δ(z, ai) = (z ′ , L), i ≥ 2.<br />
Bemerkung: In Konfiguration za1 · · · <strong>an</strong> ist keine Kopfbewegung nach links, in Konfiguration<br />
a1 · · · <strong>an</strong>z gar keine Kopfbewegung mehr möglich.<br />
Definition: Sei ⊢ ∗ M die reflexive und tr<strong>an</strong>sitive Hülle von ⊢M . Die von einem 2DEA<br />
M = (Z, Σ, δ, q0, E) akzeptierte Sprache L(M) ist definiert als<br />
L(M) = {w ∈ Σ ∗ | z0w ⊢ ∗ M wz <strong>für</strong> ein z ∈ E}.<br />
Beispiel: Sei M = ({z0, z1, z2}, {0, 1}, δ, z0, {z0, z1, z2}) ein 2DEA mit δ definiert wie<br />
folgt:<br />
δ 0 1<br />
z0 (z0, R) (z1, R)<br />
z1 (z1, R) (z2, L)<br />
z2 (z0, R) (z2, L)<br />
Bei Eingabe 101001 vollzieht M die Rechnung<br />
M akzeptiert, da z1 ∈ E.<br />
z0101001 ⊢M 1z101001<br />
⊢M 10z11001<br />
⊢M 1z201001<br />
⊢M 10z01001<br />
⊢M 101z1001<br />
⊢M 1010z101<br />
⊢M 10100z11<br />
⊢M 1010z201<br />
⊢M 10100z01<br />
⊢M 101001z1
1.6 Zwei-Weg-Automaten 17<br />
Rechnungen werden visualisiert durch den Pfad des Kopfes über <strong>der</strong> Eingabe, wobei<br />
wir <strong>für</strong> jede Bewegung von einem Symbol zum nächsten den moment<strong>an</strong>en Zust<strong>an</strong>d<br />
ausgeben:<br />
z0<br />
1 0 1 0 0 1<br />
z1<br />
z1<br />
z2<br />
z0 z1 z1 z1<br />
Betrachtet m<strong>an</strong> die Eingabe 101101 so vollzieht M die Rechnung<br />
z0<br />
z2<br />
z0<br />
1 0 1 1 0 1<br />
z1<br />
z1<br />
z2<br />
z0<br />
z2<br />
z0<br />
z1<br />
z2<br />
M gerät in eine Endlosschleife, da unter <strong>der</strong> zweiten Zellgrenze von links <strong>der</strong> gleiche<br />
Zust<strong>an</strong>d und die gleiche Kopfbewegung wie 4 Schritte zuvor auftreten.<br />
Bemerkung: Obiger Automat hat nur Endzustände, akzeptiert aber nicht die Sprache<br />
{0, 1} ∗ , son<strong>der</strong>n (0 + 1) ∗ 11(0 + 1) ∗ .<br />
Beobachtung: Ist L regulär, so gibt es einen 2DEA M mit L(M) = L.<br />
<br />
<br />
<br />
<br />
Beispiel: Sei Ln = akak−1 · · · <strong>an</strong> · · · a1 ai ∈ {0, 1} <strong>für</strong> 1 ≤ i ≤ k und <strong>an</strong> = 1 <strong>für</strong><br />
0 < n ∈ N.<br />
– Je<strong>der</strong> DEA M mit L(M) = Ln hat mindestens 2 n Zustände.<br />
(Myhill-Nerode: Für u, v ∈ {0, 1} n mit u = v gilt u ≁Ln v.)<br />
– Es gibt einen 2DEA M mit 2n − 1 Zuständen mit L(M) = Ln.<br />
(Übungsaufgabe)<br />
Wir nennen die Folgen von Zuständen unter einer Zellgrenze eine crossing sequence.<br />
Eine gültige crossing sequence (kurz: GCS) ist eine crossing sequence, die in einer<br />
akzeptierenden Rechnung vorkommt. GCS besitzen folgende Eigenschaften:<br />
z1
1.6 Zwei-Weg-Automaten 18<br />
– Eine GCS ist von ungera<strong>der</strong> Länge, wobei die Leserichtung des Kopfes rechts<br />
<strong>für</strong> ungerade und links <strong>für</strong> gerade Positionen ist (insgesamt muss <strong>der</strong> Kopf nach<br />
rechts aus <strong>der</strong> Eingabe herauslaufen).<br />
– Eine GCS enthält keinen Zust<strong>an</strong>d zweimal auf gera<strong>der</strong> Position o<strong>der</strong> zweimal auf<br />
ungera<strong>der</strong> Position. Folglich ist die Länge einer GCS < 2|Z|.<br />
Die Anzahl aller GCS ist damit < |Z| 2|Z| , also endlich!<br />
Eine crossing sequence c1 heißt rechtsverträglich <strong>zur</strong> crossing sequence c2 über a ∈ Σ,<br />
falls folgendes lokal möglich ist:<br />
Startet M von links über die zu c1 gehörige Zellgrenze, so k<strong>an</strong>n c1 als crossing<br />
sequence, a als gelesenes Zeichen und c2 als crossing sequence <strong>für</strong> die nächste<br />
Zellgrenze auftreten.<br />
Analog heißt c1 zu c2 über a linksverträglich, wenn M von rechts über die zu c2 gehörige<br />
a<br />
a<br />
Zellgrenze kommt. In Zeichen: c1 ↦→ c2, c1 ← c2.<br />
Formal:<br />
(1) Die leere Sequenz ist rechts- und linksverträglich <strong>zur</strong> leeren Sequenz: Wird die<br />
linke Zellgrenze nie erreicht, so auch die Rechte nicht.<br />
() a<br />
↦→ (), () a ← ()<br />
(2) Falls (z3, . . . , zk) a<br />
↦→ (z ′ 1, · · · , z ′ l ) und δ(z1, a) = (z2, L), so ist auch<br />
(z1, . . . , zk) a<br />
↦→ (z ′ 1, · · · , z ′ l)<br />
(3) Falls (z2, . . . , zk) a ← (z ′ 2, · · · , z ′ l ) und δ(z1, a) = (z ′ 1, R), so ist auch<br />
(z1, . . . , zk) a<br />
↦→ (z ′ 1, · · · , z ′ l)<br />
(4) Falls (z1, . . . , zk) a ← (z ′ 3, · · · , z ′ l ) und δ(z′ 1, a) = (z ′ 2, R), so ist auch<br />
(z1, . . . , zk) a ← (z ′ 1, · · · , z ′ l)<br />
(5) Falls (z2, . . . , zk) a<br />
↦→ (z ′ 2, · · · , z ′ l ) und δ(z′ 1, a) = (z1, L), so ist auch<br />
(z1, . . . , zk) a ← (z ′ 1, · · · , z ′ l)<br />
Satz: Sei L ⊆ Σ ∗ . Gibt es einen 2DEA M mit L(M) = L, so ist L regulär.
1.6 Zwei-Weg-Automaten 19<br />
z1<br />
z2<br />
z3<br />
zk<br />
a<br />
z ′ 1<br />
z ′ l<br />
Regel (2)<br />
z1<br />
zk<br />
a<br />
z ′ z<br />
3<br />
′ z<br />
2<br />
′ 1<br />
z ′ l<br />
Regel (4)<br />
z1<br />
z2<br />
zk<br />
$z_k$<br />
a<br />
z ′ 1<br />
z ′ 2<br />
z ′ l<br />
Regel (3)<br />
z1<br />
z2<br />
zk<br />
$z_k$<br />
a<br />
z ′ 1<br />
z ′ 2<br />
z ′ l<br />
Regel (5)<br />
Beweis: Sei M = (Z, Σ, δ, z0, E). Wir definieren einen NEA M ′ = (Z ′ , Σ, δ ′ , z ′ 0, E ′ ) wie<br />
folgt:<br />
– Z ′ = {c | c ist eine GCS},<br />
– z ′ 0 = (z0),<br />
– E ′ = {(z) | z ∈ E},<br />
– δ ′ (c, a) = {d | c a<br />
↦→ d}.<br />
Behauptung: L(M) = L(M ′ )<br />
Beweis <strong>der</strong> Behauptung: ” ⊆“: Sei w ∈ L(M), w = a1 · · · <strong>an</strong>, |w| = n. Betrachte die<br />
Folge c0, c1, . . . , cn aller crossing sequences <strong>der</strong> akzeptierenden Rechnung von M auf<br />
w. Es gilt:<br />
– c0 = (z0),<br />
– cn = (z) <strong>für</strong> ein z ∈ E,<br />
– ci−1<br />
ai<br />
↦→ ci <strong>für</strong> 1 ≤ i ≤ n.
1.6 Zwei-Weg-Automaten 20<br />
Also ist die Zust<strong>an</strong>dsfolge c0, . . . , cn eine akzeptierende Rechnung von M ′ auf w, also<br />
w ∈ L(M ′ ).<br />
” ⊇“: Sei w ∈ L(M ′ ), w = a1 · · · <strong>an</strong>. Sei c0, c1, . . . , cn die Folge von Zuständen auf einem<br />
akzeptierenden Pfad von M ′ auf w. Es gilt:<br />
– c0 = (z0),<br />
– cn = (z) <strong>für</strong> ein z ∈ E,<br />
– ci−1<br />
ai<br />
↦→ ci <strong>für</strong> 1 ≤ i ≤ n.<br />
Wie beweisen durch Induktion über i: Wenn M ′ durch Lesen von a1 · · · ai den Zust<strong>an</strong>d<br />
ci = (z1, . . . , zk), k ∈ N erreichen k<strong>an</strong>n, d<strong>an</strong>n gilt:<br />
(i) M in z0 gestartet bei Eingabe a1 · · · ai läuft zum ersten Mal rechts aus ai heraus<br />
im Zust<strong>an</strong>d z1.<br />
(ii) Für j = 2, 4, . . . , k − 1 gilt: M gestartet in zj auf Eingabezeichen ai bei Eingabewort<br />
a1 · · · ai läuft zum ersten Mal rechts aus ai heraus im Zust<strong>an</strong>d zj+1.<br />
Da cn = (z) <strong>für</strong> z ∈ E, wird d<strong>an</strong>n w von M akzeptiert.<br />
Induktion:<br />
i = 0: c0 = (z0), M beginnt seine Rechnung in z0.<br />
i > 0: M ′ erreiche den Zust<strong>an</strong>d ci = (z ′ 1, . . . , z ′ l ) durch Lesen <strong>der</strong> Eingabe a1 · · · ai.<br />
Der Vorgängerzust<strong>an</strong>d sei ci−1 = (z1, . . . , zk).<br />
ai<br />
Da k, l ungerade und ci−1 ↦→ ci existiert ein ungerades j, sodass gilt: M in<br />
Zust<strong>an</strong>d zj bei Eingabe ai bewegt sich nach rechts. Sei j1 das kleinste solche j<br />
(siehe Abbildung 1.1). Nach Definition von ↦→ (Regeln 3, 4) folgt d<strong>an</strong>n:<br />
Damit ist (i) beweisen.<br />
δ(zj1, ai) = (z ′ 1, R).<br />
Außerdem folgt nach Definition von ↦→, ←, dass (zj1+1, . . . , zk) ai<br />
, R) <strong>für</strong> j = 2, 4, . . . l − 1 (siehe Abbildung 1.2), so gilt (ii).<br />
Falls δ(z ′ j , ai) = (z ′ j+1<br />
← (z ′ 2, . . . , z ′ l ).<br />
An<strong>der</strong>nfalls gilt δ(z ′ j , ai) = (z, L) <strong>für</strong> ein z ∈ Z und ein 2 ≤ j ≤ k − 1<br />
(siehe Abbildung 1.3). Sei j2 das kleinste solche j. D<strong>an</strong>n ist z = zj1+1 und<br />
(zj1+2, . . . , zk) ai<br />
↦→ (z ′ j2+1 , . . . , z′ l ). Die Argumentation verläuft nun wie oben mit<br />
ci−1 = (zj1+2, . . . , zk) und ci = (zj2+1, . . . , z ′ l ).
2 Kontextfreie Sprachen 21<br />
z0<br />
a1<br />
z1<br />
z2<br />
zj1<br />
zk<br />
ai<br />
z ′ 1<br />
z ′ l<br />
z ′ l<br />
Abbildung 1.1<br />
<strong>an</strong><br />
z ∈E<br />
2 Kontextfreie Sprachen<br />
zj1<br />
ai<br />
z ′ z<br />
3<br />
′ z<br />
2<br />
′ 1<br />
z ′ 4<br />
z ′ 5<br />
z ′ l<br />
Abbildung 1.2<br />
zj1<br />
ai<br />
z ′ z<br />
3<br />
′ z<br />
2<br />
′ 1<br />
z ′ zj1+1 j2<br />
zj1+2 z ′ j2+1<br />
zk<br />
z ′ l<br />
Abbildung 1.3<br />
Kontextfreie Sprachen werden durch kontextfreie Grammatiken definiert. Eine kontextfreie<br />
Grammatik (kurz: kf. Grammatik, CFG) ist ein 4-Tupel<br />
wobei<br />
G = (V, Σ, P, S),<br />
– V eine endliche Menge von Variablen (Nicht-Terminalsymbolen),<br />
– Σ das Terminalalphabet, V ∩ Σ = ∅,<br />
– P ⊆ V × (V ∪ Σ) ∗ eine Menge von Produktionen/Regeln und<br />
– S ∈ V das Startsymbol ist.<br />
Eine kontexfreie Grammatik heißt in Normalform, falls<br />
P ⊆ (V × (V \ {S} ∪ Σ) + ) ∪ {S → ε}.<br />
Zu je<strong>der</strong> kontextfreien Grammatik gibt es eine kontextfreie Grammatik G ′ in Normalform<br />
mit L(G) = L(G ′ ).<br />
Schreibweisen:<br />
Für (α, β) ∈ P schreiben wir α → β ∈ P<br />
Für A → α1 ∈ P, . . . , A → αn ∈ P kurz: A → α1| · · · |αn ∈ P .<br />
α ⇒G β: β entsteht aus α durch Anwendung einer Regel aus P , d. h. α ⇒G β, falls<br />
es α1, α2 ∈ (V ∪ Σ) ∗ und A → γ ∈ P gibt, sodass α = α1Aα2 und β = α1γα2.<br />
⇒ ∗ G<br />
ist die reflexive und tr<strong>an</strong>sitive Hülle von ⇒G.
2 Kontextfreie Sprachen 22<br />
Eine Ableitung ist eine Folge von Satzformen, die aus <strong>der</strong> Startvariablen einer Grammatik<br />
ein Wort über <strong>der</strong>en Terminalalphabet ableitet, d. h. eine Folge<br />
S ⇒G w1 ⇒G w2 ⇒G . . . ⇒G wn mit wi ∈ (V ∪ Σ) ∗ , 1 ≤ i < n und wn ∈ Σ ∗ .<br />
Die von <strong>der</strong> kontextfreien Grammatik erzeugte Sprache ist<br />
L(G) = {w ∈ Σ ∗ | S ⇒ ∗ G w}.<br />
CFL ist die Klasse <strong>der</strong> kontextfreien Sprachen, d. h. die Klasse aller L(G) <strong>für</strong> kontextfreie<br />
Grammatiken G.<br />
Satz (Pumping-Lemma, uvwxy-Theorem): Sei L eine kontextfreie Sprache. D<strong>an</strong>n gibt<br />
es eine Zahl n, sodass sich alle Wörter z ∈ L mit |z| ≥ n zerlegen lassen in z = uvwxy,<br />
sodass folgende Eigenschaften erfüllt sind:<br />
(i) |vx| ≥ 1<br />
(ii) |vwx| ≤ n<br />
(iii) Für alle i ≥ 0 gilt: uv i wx i y ∈ L<br />
Beispiel: – Dyck-Sprache über dem Alphabet Σ:<br />
Setze Σ ′ = {ā | a ∈ Σ} ( ” Kopie“ von Σ) und ˆ Σ = Σ ∪ Σ ′ . D ∗ Σ<br />
von <strong>der</strong> Grammatik<br />
erzeugt wird, wobei<br />
G = ({S, T }, ˆ Σ, P, S)<br />
P = {S → T S|ε} ∪ {T → aSā | a ∈ Σ}.<br />
Sei z. B. Σ = {(, [, }. D∗ Σ<br />
Klammergebirge mit Klammern aus ˆ Σ. Ein Wort aus D∗ Σ ist<br />
(< []() > [])[< ()() >].<br />
– L = {w ∈ Σ ∗ | w = w R , d. h. w ist ein Palindrom} ∈ CFL:<br />
ist die Sprache, die<br />
ist die Sprache aller korrekten<br />
Die kontextfreie Grammatik G = ({S}, Σ, {S → aSa|a|ε a ∈ Σ}, S) erzeugt L.<br />
– L = {a k b k c k | k ≥ 0} ist nicht kontextfrei:<br />
Angenommen L wäre kontextfrei. D<strong>an</strong>n existiert n ∈ N wie im Pumping-Lemma.<br />
Wähle z = a n b n c n . Es gilt |z| = 3n ≥ n und z ∈ L. Sei z = uvwxy eine beliebige<br />
Zerlegung von z mit |vx| > 0 und |vwx| ≤ n.<br />
z = a . . . a b . . . b c . . . c = a n b n c n<br />
vwx =
2.1 Chomsky-Normalform und CYK-Algorithmus 23<br />
Daraus ergibt sich: In vwx kommen höchstens zwei <strong>der</strong> drei Buchstaben a, b und<br />
c vor. Es folgt<br />
uv 0 wx 0 y = uwy /∈ L<br />
und das ist ein Wi<strong>der</strong>spruch <strong>zur</strong> Annahme, dass L kontextfrei ist.<br />
Abschlusseigenschaften<br />
– L, L ′ ∈ CFL ⇒ L ∪ L ′ , L ◦ L ′ , L ∗ ∈ CFL:<br />
(Übungsaufgabe)<br />
– CFL ist abgeschlossen unter Homomorphismen und inversen Homomorphismen:<br />
(Übungsaufgabe)<br />
– CFL ist nicht abgeschlossen unter Durchschnitt:<br />
Sei L1 = {a n b n c m | n, m ≥ 0} und L2 = {a n b m c m | n, m ≥ 0}. Es ist L1, L2 ∈<br />
CFL, denn eine kontextfreie Grammatik <strong>für</strong> L1 ist G = ({S, A, B}, {a, b, c}, P, S)<br />
mit den Produktionen<br />
S → AB, A → aAb|ε, B → cB|ε.<br />
Für den Durchschnitt L1 ∩ L2 gilt jedoch L1 ∩ L2 = {a k b k c k | k ≥ 0} /∈ CFL<br />
(gemäß obigem Beispiel).<br />
– CFL ist nicht abgeschlossen unter Komplement:<br />
Annahme doch, d<strong>an</strong>n wäre CFL abgeschlossen unter Durchschnitt (nach de Morg<strong>an</strong>)<br />
und das ist ein Wi<strong>der</strong>spruch.<br />
2.1 Chomsky-Normalform und CYK-Algorithmus<br />
Definition: Eine kontextfreie Grammatik G = (V, Σ, P, S) mit ε /∈ L heißt in Chomsky-<br />
Normalform (CNF), falls alle Regeln von <strong>der</strong> Form<br />
<strong>für</strong> A, B, C ∈ V und a ∈ Σ sind.<br />
A → BC o<strong>der</strong> A → a<br />
Satz: Sei G eine kontextfreie Grammatik mit ε /∈ L(G). D<strong>an</strong>n gibt es eine kontextfreie<br />
Grammatik G ′ in CNF mit L(G) = L(G ′ ).<br />
Beweis: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik mit ε /∈ L(G). Wir geben<br />
einen Algorithmus <strong>an</strong>, <strong>der</strong> die Regelmenge von G so verän<strong>der</strong>t, dass nur noch Regeln<br />
<strong>der</strong> oben gegebenen Typen bleiben:<br />
Schritt I: Elimination von Regeln <strong>der</strong> Form A → B mit A, B ∈ V .
2.1 Chomsky-Normalform und CYK-Algorithmus 24<br />
(i) Gibt es Variablen B1, B2, . . . , Bk ∈ V mit<br />
B1 → B2, B2 → B3, . . . , Bk−1 → Bk, Bk → B1<br />
so ersetze in allen Regeln die Variablen B1, B2, . . . , Bk durch die neue Variable<br />
B und lösche obige Regeln.<br />
(ii) Nummeriere die Variablen in V so, dass V = {A1, . . . , An} und aus Ai → Aj ∈ P<br />
folgt, dass i < j.<br />
(iii) Für k = n − 1, n − 2, . . . , 1, führe folgenden Schritt (iv) durch:<br />
(iv) Falls es eine Regel Ak → Ak ′ ∈ P gibt mit k′ > k, d<strong>an</strong>n lösche Ak → Ak ′ und<br />
füge <strong>für</strong> jede Regel Ak ′ → α ∈ P eine Regel Ak → α zu P hinzu.<br />
Nun sind alle Regeln von <strong>der</strong> Form:<br />
A → a (<strong>für</strong> A ∈ V und a ∈ Σ) o<strong>der</strong> A → α (<strong>für</strong> A ∈ V und |α| ≥ 2)<br />
Schritt II: Beh<strong>an</strong>deln <strong>der</strong> Terminalzeichen.<br />
Für alle a ∈ Σ füge eine neue Variable Ba zu V und eine neue Regel Ba → a zu P<br />
hinzu. Ersetze nun in allen Regeln A → α (mit |α| ≥ 2) auf <strong>der</strong> rechten Seite das<br />
Zeichen a durch Ba.<br />
Nun sind alle Regeln von <strong>der</strong> Form:<br />
A → a (<strong>für</strong> A ∈ V, a ∈ Σ) o<strong>der</strong> A → B1B2 . . . Bk (<strong>für</strong> A, B1, B2, . . . , Bk ∈ V, k ≥ 2)<br />
Schritt III: Verkürzen <strong>der</strong> Regeln.<br />
Für jede Regel A → B1 . . . Bk mit k ≥ 3 füge neue Variablen C2, . . . , Ck−1 zu V hinzu<br />
und ersetze in P obige Regel durch<br />
Der CYK-Algorithmus<br />
A → B1C2<br />
C2 → B2C3<br />
.<br />
Ck−1 → Bk−1Bk<br />
Sei G = (V, Σ, P, S) eine kontextfreie Grammatik in CNF. Ist x = a, a ∈ Σ und<br />
A ⇒ ∗ x, so muss eine Regel A → a in P existieren.<br />
.
2.1 Chomsky-Normalform und CYK-Algorithmus 25<br />
Ist x = a1a2 . . . <strong>an</strong>, n ≥ 2 und A ⇒ ∗ x, so muss eine Regel A → BC und ein k mit<br />
1 ≤ k < n existieren, sodass B ⇒ ∗ a1 . . . ak und C ⇒ ∗ ak+1 . . . <strong>an</strong>.<br />
Notation: Für x ∈ Σ ∗ bezeichne xi,j das Teilwort von x, das <strong>an</strong> Position i beginnt und<br />
Länge j hat. Im obigen Absatz gilt also: B ⇒ ∗ x1,k und C ⇒ ∗ xk+1,n−k.<br />
Obige Beobachtung ist Grundlage des Algorithmus von Cooke, Younger und Kasami:<br />
Verwende ein Feld T [1 . . . n, 1 . . . n] mit <strong>der</strong> Bedeutung A ∈ T [i, j] gdw. A ⇒ ∗ xi,j.<br />
CYK-Algorithmus:<br />
Eingabe: x = a1 . . . <strong>an</strong><br />
Methode:<br />
for i = 1 to n do<br />
T [i, 1] := {A ∈ V | A → ai ∈ P };<br />
for j = 2 to n do<br />
for i = 1 to n + 1 − j do<br />
begin<br />
T [i, j] := ∅;<br />
for k = 1 to j − 1 do<br />
T [i, j] := T [i, j] ∪ {A ∈ V |A → BC, B ∈ T [i, k] ∧ C ∈ T [i + k, j − k]};<br />
end;<br />
if S ∈ T [1, n] then accept else reject;<br />
Satz: Das Wortproblem <strong>für</strong> kontextfreie Sprachen ist entscheidbar in Zeit O(n 3 ).<br />
Bemerkung: Mit dem so gen<strong>an</strong>nten Early-Algorithmus ist es möglich, das Wortproblem<br />
in O(n 2.6... ) zu lösen. Der Early-Algorithmus ist jedoch aufwendiger zu implementieren.<br />
Beispiel: Betrachte eine kontextfreie Grammatik in Chomsky-Normalform mit folgenden<br />
Regeln:<br />
Eingabe: x = baaba, n = |x| = 5<br />
S → AB|BC B → CC|b<br />
A → BA|a C → AB|a
2.1 Chomsky-Normalform und CYK-Algorithmus 26<br />
j ↓<br />
x = b a a b a<br />
i → 1 2 3 4 5<br />
1<br />
2<br />
3<br />
4<br />
5<br />
B A, C A, C B A, C<br />
S, A B S, C S, A<br />
∅ B B<br />
∅<br />
S,A,C<br />
S,A,C<br />
Es ist S ∈ T [1, 5], also gilt x ∈ L(G). Hieraus lässt sich die folgende Ableitung konstruieren:<br />
S ⇒ BC<br />
⇒ bC<br />
⇒ bAB<br />
⇒ baB<br />
⇒ baCC<br />
⇒ baABC<br />
⇒ baaBC<br />
⇒ baabC<br />
⇒ baaba<br />
Eine weitere mögliche Ableitung aus obiger Matrix ist:<br />
S ⇒ AB<br />
⇒ BAB<br />
⇒ ∗ baB<br />
⇒ baCC<br />
⇒ ∗ baaba<br />
B<br />
b<br />
S<br />
A<br />
A<br />
a<br />
b a<br />
A<br />
a<br />
S<br />
C<br />
B A C<br />
A<br />
B<br />
C C<br />
B<br />
a b<br />
B<br />
b<br />
B<br />
a<br />
C<br />
a
2.2 Greibach-Normalform und Kellerautomaten 27<br />
2.2 Greibach-Normalform und Kellerautomaten<br />
Kellerautomat M:<br />
Eingabeb<strong>an</strong>d<br />
a1 a2 . . .<br />
endliche Kontrolle<br />
(Zust<strong>an</strong>d)<br />
Lesekopf, bewegt sich<br />
nach rechts<br />
Keller<br />
D<br />
C<br />
B<br />
A<br />
#<br />
Lesekopf, steht immer auf<br />
dem obersten Kellersymbol<br />
Definition: Ein (nichtdeterministischer) Kellerautomat (kurz: KA, NKA) ist ein 7-<br />
Tupel<br />
M = (Z, Σ, Γ, δ, z0, #, E),<br />
wobei<br />
– Z die endliche Menge <strong>der</strong> Zustände,<br />
– Σ das Eingabealphabet,<br />
– Γ das Kelleralphabet,<br />
– z0 ∈ Z <strong>der</strong> Startzust<strong>an</strong>d,<br />
– # ∈ Γ das unterste Kellersymbol (bei Initialisierung),<br />
– E ⊆ Z die Menge <strong>der</strong> Endzustände und<br />
– δ : Z × (Σ ∪ {ε}) × Γ → Pe(Z × Γ ∗ ) die Überführungsfunktion mit Pe(M) =<br />
{M ′ ⊆ M | M ′ endlich} ist.<br />
Für z, z ′ ∈ Z, a ∈ Σ, A, B1, . . . , Bk ∈ Γ bedeutet δ(z, a, A) ∋ (z ′ , B1, . . . , Bk):<br />
Ist M im Zust<strong>an</strong>d z, liest das Eingabezeichen a in <strong>der</strong> Eingabe und ist A das oberste<br />
Kellersymbol, so k<strong>an</strong>n M in den Zust<strong>an</strong>d z ′ übergehen und das Kellersymbol A durch
2.2 Greibach-Normalform und Kellerautomaten 28<br />
die Symbole B1, . . . , Bk ersetzen (B1 wird oberstes Kellersymbol). Der Lesekopf bewegt<br />
sich dabei ein Feld auf dem Eingabeb<strong>an</strong>d nach rechts.<br />
Ist δ(z, ε, A) ∋ (z ′ , B1, . . . , Bk) so bewegt sich <strong>der</strong> Lesekopf dabei nicht.<br />
Die ” üblichen“ Kelleroperationen ergeben sich zu:<br />
Schreibweise: zaA → z ′ B1 . . . Bk.<br />
pop : B1 . . . Bk = ε<br />
push(B) : B1 . . . Bk = BA<br />
Definition: Eine Konfiguration eines Kellerautomaten ist ein Tripel<br />
K ∈ Z × Σ ∗ × Γ ∗ .<br />
Die Konfiguration K = (z, α, β) bedeutet, dass M sich im Zust<strong>an</strong>d z befindet, α <strong>der</strong><br />
noch zu lesende Teil <strong>der</strong> Eingabe und β <strong>der</strong> Kellerinhalt ist.<br />
Definiere die binäre Relation ⊢M (o<strong>der</strong> auch ⊢) auf <strong>der</strong> Menge aller Konfigurationen.<br />
Intuitiv bedeutet K ⊢ K ′ , dass K ′ aus K durch einen Schritt von M hervorgeht.<br />
Formal:<br />
(z, a1 . . . <strong>an</strong>, A1 . . . Am) ⊢M<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
(z ′ , a2 . . . <strong>an</strong>, B1 . . . BkA2 . . . Am),<br />
falls δ(z, a1, A1) ∋ (z ′ , B1 . . . Bk),<br />
(z ′ , a1 . . . <strong>an</strong>, B1 . . . BkA2 . . . Am),<br />
falls δ(z, ε, A1) ∋ (z ′ , B1 . . . Bk),<br />
wobei z, z ′ ∈ Z, a1, . . . , <strong>an</strong> ∈ Σ und A1, . . . , Am, B1, . . . , Bk ∈ Γ. Wir schreiben ⊢ ∗ M <strong>für</strong><br />
die reflexive und tr<strong>an</strong>sitive Hülle von ⊢M .<br />
Definition: Die von einem Kellerautomaten M per Endzust<strong>an</strong>d akzeptierte Sprache<br />
ist<br />
L(M) = {x ∈ Σ ∗ | (z0, x, #) ⊢ ∗ M (z, ε, γ) <strong>für</strong> ein z ∈ E, γ ∈ Γ ∗ }.<br />
Die von einem Kellerautomaten M mit leerem Keller akzeptierte Sprache ist<br />
N(M) = {x ∈ Σ ∗ | (z0, x, #) ⊢ ∗ M (z, ε, ε) <strong>für</strong> ein z ∈ Z}.<br />
Satz: Sei L ⊆ Σ ∗ . D<strong>an</strong>n sind folgende Aussagen äquivalent:<br />
(i) Es gibt einen Kellerautomaten M mit L = N(M).<br />
(ii) Es gibt einen Kellerautomaten M mit L = L(M).<br />
Beweis: (Übungsaufgabe)
2.2 Greibach-Normalform und Kellerautomaten 29<br />
Definition: Eine kontextfreie Grammatik G = (V, Σ, P, S) mit ε /∈ L(G) heißt in<br />
Greibach-Normalform (GNF), falls alle Regeln von <strong>der</strong> Form<br />
sind.<br />
A → aB1 . . . Bk<br />
(a ∈ Σ, A, B1, . . . , Bk ∈ V, k ≥ 0)<br />
Satz: Sei G kontextfrei mit ε /∈ L(G). D<strong>an</strong>n gibt es eine kontextfreie Grammatik G ′<br />
in Greibach-Normalform mit L(G) = L(G ′ ).<br />
Beweis: Vorüberlegung <strong>zur</strong> Linksrekursion:<br />
Eine Regel A → Aα heißt linksrekursiv. In Greibach-Normalform sind solche Regeln<br />
nicht erlaubt. Bereinige wie folgt:<br />
Sei A eine Variable mit linksrekursiven Regeln A → Aα1| . . . |Aαk und den weiteren<br />
nicht-linksrekursiven Regeln A → β1| . . . |βl. Folgende Ableitungen sind aus A möglich:<br />
mit i1, i2, . . . ∈ {1, . . . , k}, 1 ≤ j ≤ l.<br />
βj<br />
A<br />
Obige Regeln können also durch folgende Regeln ersetzt werden:<br />
mit einer neuen Variablen B.<br />
A<br />
A<br />
αi2<br />
A → β1| . . . |βl|β1B| . . . |βlB<br />
B → α1| . . . |αk|α1B| . . . |αkB,<br />
Sei nun G = (V, Σ, P, S) gegeben, o. B. d. A. sei G in Chomsky-Normalform und V =<br />
{A1, . . . , Am}.<br />
Schritt I: Modifiziere P so, dass aus Ai → Ajα ∈ P folgt, dass i < j.<br />
A<br />
αi1
2.2 Greibach-Normalform und Kellerautomaten 30<br />
Eingabe: G = (V, Σ, P, S)<br />
Methode:<br />
for i := 1, . . . , m do<br />
begin<br />
for j := 1, . . . , i − 1 do<br />
for all Ai → Ajα ∈ R do<br />
begin<br />
Seien Aj → β1| . . . |βl alle Regeln mit Aj auf <strong>der</strong> linken Seite;<br />
Lösche Ai → Ajα;<br />
Füge Ai → β1α| . . . |βlα zu P hinzu;<br />
end;<br />
Falls es linksrekursive Regeln Ai → Aiα gibt, d<strong>an</strong>n beseitige diese wie oben<br />
unter Einführung <strong>der</strong> neuen Variable Bi;<br />
end;<br />
Nun gilt <strong>für</strong> alle Regeln Ai → Ajα ∈ P , dass i < j. Insbeson<strong>der</strong>e gilt <strong>für</strong> Am → α ∈ P<br />
gilt, dass α mit einem Terminalzeichen beginnt.<br />
Schritt II: Bringe Ai-Regeln in die gewünschte Form.<br />
Eingabe: G = (V, Σ, P, S)<br />
Methode:<br />
for i := m − 1, . . . , 1 do<br />
for all Ai → Ajα ∈ P do<br />
begin<br />
Seien Aj → β1| . . . |βl alle Aj−Regeln;<br />
Streiche Ai → Ajα;<br />
Füge die Regeln Ai → β1α| . . . |βlα zu P hinzu;<br />
end;<br />
Schritt III: Bringe Bi-Regeln in gewünschte Form.<br />
Eingabe: G = (V, Σ, P, S)<br />
Methode:<br />
for i := 1, . . . , m do<br />
begin<br />
Ist Bi → Ajα ∈ P und sind Aj → β1| . . . |βl alle Aj−Regeln, so streiche<br />
Bi → Ajα und f\”uge Bi → β1α| . . . |βlα zu P hinzu;<br />
end;<br />
Definition: Eine Ableitung S ⇒ α1 ⇒ α2 ⇒ . . . ⇒ αn heißt Linksableitung, falls in<br />
jedem Ableitungsschritt αi ⇒ αi+1 (i = 1, . . . , n − 1) immer das erste (am weitesten<br />
links stehende) Nichtterminal in αi ersetzt wird.
2.2 Greibach-Normalform und Kellerautomaten 31<br />
Linksableitungen <strong>für</strong> Grammatiken in GNF haben die Gestalt<br />
S ⇒ aB1 . . . Bk ⇒ abC1 . . . ClB2 . . . Bk ⇒ abcD1 . . . DmC2 . . . ClB2 . . . Bk ⇒ . . . ,<br />
wobei a, b, c ∈ Σ, B1, . . . , Bk, C1, . . . , Cl, D1, . . . , Dm ∈ V und S die Startvariable ist.<br />
Satz: Eine Sprache L ist kontextfrei gdw. es einen Kellerautomaten M gibt mit L =<br />
N(M).<br />
Beweis: ” ⇒“: Sei L = L(G) <strong>für</strong> G = (V, Σ, P, S). O. B. d. A. sei G in Greibach-<br />
Normalform. Definiere M = ({z}, Σ, V, δ, z, S), wobei δ wie folgt gegeben ist:<br />
δ(z, a, A) ∋ (z, γ), falls A → aγ ∈ P.<br />
Behauptung: Für alle x ∈ Σ∗ und α ∈ V ∗ gilt: es existiert eine Linksableitung S ⇒∗ G xα<br />
gdw. (z, x, S) ⊢∗ M (z, ε, α)<br />
Beweis <strong>der</strong> Behauptung: ” ⇐“: Induktion über die Länge i <strong>der</strong> Rechnung von M:<br />
i = 0: x = ε und S = α: S ⇒ ∗ S<br />
i ≥ 1: Sei (z, x, S) ⊢ ∗ (z, ε, α) in i Schritten von M. Setze x = ya, y ∈ Σ ∗ , a ∈ Σ.<br />
Obige Rechnung lässt sich wie folgt aufspalten (M hat keine ε-Übergänge!):<br />
=x<br />
<br />
(z, ya , S) ⊢ ∗ (z, a, β) ⊢ (z, ε, α)<br />
<br />
(i−1)Schritte<br />
Also gilt auch: (z, y, S) ⊢ ∗ (z, ε, β) in (i − 1) Schritten. Nach Induktionsvoraussetzung<br />
folgt: S ⇒ ∗ yβ durch eine Linksableitung.<br />
Aus (z, a, β) ⊢ (z, ε, α) ergibt sich: β = Aγ <strong>für</strong> ein A ∈ V , γ ∈ V ∗ , A → aη ∈ P<br />
und α = ηγ. Zusammengenommen ergibt sich also folgende Linksableitung:<br />
S ⇒ ∗ yβ = yAγ ⇒ yaηγ = xα.<br />
” ⇒“: Induktion über die Länge i <strong>der</strong> Linksableitung S ⇒∗ xα:<br />
i = 0: S ⇒ ∗ S und xα = S: (z, ε, S) ⊢ ∗ (z, ε, S)<br />
i ≥ 1: S ⇒ ∗ xα k<strong>an</strong>n zerlegt werden in<br />
S ⇒ ∗ yAγ ⇒ yaηγ,<br />
<br />
(i−1) Schritte<br />
wobei A → aη ∈ P , x = ya und α = ηγ und a ∈ Σ, y ∈ Σ ∗ , A ∈ V , γ, η ∈ V ∗ .<br />
Nach Induktionsvoraussetzung folgt: (z, y, S) ⊢ ∗ (z, ε, Aγ).
2.2 Greibach-Normalform und Kellerautomaten 32<br />
Aus A → aη ∈ P ergibt sich δ(z, a, A) ∋ (z, η) nach Definition von δ.<br />
Zusammengenommen erhalten wir:<br />
(z, x, S) = (z, ya, S) ⊢ ∗ (z, a, Aγ) ⊢ (z, ε, ηγ) = (z, ε, α).<br />
Wähle nun in <strong>der</strong> Behauptung α = ε:<br />
x ∈ L(G) gdw. S ⇒ ∗ G x gdw. (z, x, S) ⊢ ∗ M (z, ε, ε) gdw. x ∈ N(M)<br />
<strong>für</strong> alle x ∈ Σ ∗ . Also gilt L(G) = N(M).<br />
(Behauptung) <br />
” ⇐“: Idee: Die Rechnung von M auf <strong>der</strong> Eingabe x soll durch eine Linksableitung<br />
simuliert werden. Nichtterminale einer Satzform sollen dabei dem Kellerinhalt von M<br />
zu diesem Rechenschritt entsprechen. Dazu verwenden wir die Nichtterminale [z, A, z ′ ]<br />
mit z, z ′ ∈ Z, A ∈ Γ, sodass<br />
(z, x, A) ⊢ ∗ M (z ′ , ε, ε) gdw. [z, A, z ′ ] ⇒ ∗ G x.<br />
Sei M = (Z, Σ, Γ, δ, z0, #, E) ein Kellerautomat (beachte: die Endzustände E von M<br />
werden hier nicht benötigt, da nur N(M) betrachtet wird). Definiere G = (V, Σ, P, S),<br />
wobei V = {S}∪(Z ×Γ×Z) (Tripelkonstruktion) und P aus folgenden Regeln besteht:<br />
(i) S → [z0, #, z] <strong>für</strong> alle z ∈ Z.<br />
(ii) [z, A, zm+1] → a[z1, B1, z2][z2, B2, z3] . . . [zm, Bm, zm+1] <strong>für</strong> alle z, z1, . . . , zm+1 ∈<br />
Z, a ∈ Σ ∪ {ε} und A, B1, . . . , Bm ∈ Γ, sodass<br />
δ(z, a, A) ∋ (z1, B1 . . . Bm).<br />
Ist m = 0, so lautet die Regel [z, A, z1] → a.<br />
Behauptung: Für alle z, z ′ ∈ Z, A ∈ Γ und x ∈ Σ ∗ gilt:<br />
[z, A, z ′ ] ⇒ ∗ x gdw. (z, x, A) ⊢ ∗ (z ′ , ε, ε).<br />
Beweis <strong>der</strong> Behauptung: ” ⇐“: Induktion über die Länge i <strong>der</strong> Rechnung von M:<br />
i = 1: Es gilt: (z, x, A) ⊢ (z ′ , ε, ε), also δ(z, x, A) ∋ (z ′ , ε), also [z, A, z ′ ] → x ∈ P , also<br />
[z, A, z ′ ] ⇒ x<br />
i > 1: Sei x = ay, y ∈ Σ ∗ , a ∈ Σ ∪ {ε} und<br />
(z, ay, A) ⊢ (z1, y, B1 . . . Bn) ⊢ ∗ (z ′ , ε, ε),<br />
also δ(z, a, A) ∋ (z1, B1 . . . Bn) <strong>für</strong> B1, . . . , Bn ∈ Γ.<br />
Zerlege y in y = y1y2 . . . yn (yi ∈ Σ ∗ ), sodass während <strong>der</strong> Verarbeitung von<br />
yi das Symbol Bi vom Keller verschwindet, also: y1 ist das kürzeste Präfix von<br />
y, nach dessen Verarbeitung <strong>der</strong> Kellerinhalt B2 . . . Bn ist, y1y2 ist das kürzeste<br />
Präfix von y, nach dessen Verarbeitung <strong>der</strong> Kellerinhalt B3 . . . Bn ist, usw.
2.2 Greibach-Normalform und Kellerautomaten 33<br />
Kellerhöhe<br />
n<br />
n − 1<br />
n − 2<br />
.<br />
.<br />
.<br />
1<br />
0<br />
y1<br />
y2<br />
. . .<br />
yn<br />
Eingabe<br />
Es gibt z2, . . . , zn+1 = z ′ in < i Schritten<br />
<br />
, sodass (zj, yj, Bj) ⊢ ∗ (zj+1, ε, ε) <strong>für</strong> 1 ≤ j ≤ n. Nach<br />
Induktionsvoraussetzung folgt d<strong>an</strong>n [zj, Bj, zj+1] ⇒∗ yj <strong>für</strong> 1 ≤ j ≤ n.<br />
Weiterhin ist δ(z, a, A) ∋ (z1, B1 . . . Bn) (1. Schritt <strong>der</strong> obigen Rechnung), also<br />
ist [z, A, zn+1] → a[z1, B1, z2][z2, B2, z3] . . . [zn, Bn, zn+1] ∈ P nach Definition<br />
von G.<br />
Zusammengenommen ergibt sich folgende Ableitung:<br />
[z, A, zn+1]<br />
⇒ a[z1, B1, z2][z2, B2, z3] . . . [zn, Bn, zn+1]<br />
<br />
=z ′<br />
⇒ ay1[z2, B2, z3] . . . [zn, Bn, zn+1]<br />
⇒ ∗ ay1y2 . . . yn = x<br />
” ⇒“: Induktion über die Länge i <strong>der</strong> Ableitung in G:<br />
i = 1: [z, A, z ′ ] ⇒ x, also [z, A, z ′ ] → x ∈ P , also δ(z, x, A) ∋ (z ′ , ε), also<br />
(z, x, A) ⊢ (z ′ , ε, ε).<br />
i > 1: Sei [z, A, z ′ ] ⇒ a[z1, B1, z2][z2, B2, z3] . . . [zn, Bn, zn+1] ⇒ ∗ x mit z ′ = zn+1.<br />
Schreibe x als x = ay1 . . . yn mit [zj, Bj, zj+1] ⇒ ∗ yj<br />
<br />
in < i Schritten<br />
<strong>für</strong> 1 ≤ j ≤ n.<br />
Nach Induktionvoraussetzung folgt d<strong>an</strong>n (zj, yj, Bj) ⊢ ∗ (zj+1, ε, ε) <strong>für</strong> 1 ≤ j ≤ n.<br />
Aus dem ersten Schritt <strong>der</strong> Ableitung folgt außerdem δ(z, a, A) ∋ (z1, B1 . . . Bn),<br />
also (z, a, A) ⊢ (z1, ε, B1 . . . Bn).
2.3 Deterministisch-kontextfreie Sprachen 34<br />
Zusammen ergibt sich folgende Rechnung:<br />
(z, ay1 . . . yn,<br />
A) ⊢ (z1, y1 . . . yn, B1 . . . Bn)<br />
<br />
=x ⊢∗ (z2, y2 . . . yn, B2 . . . Bn)<br />
⊢∗ (zn+1<br />
<br />
=z ′<br />
, ε, ε)<br />
Wähle in <strong>der</strong> Behauptung z = z0 und A = #. D<strong>an</strong>n gilt:<br />
[z0, #, z] ⇒ ∗ x gdw. (z0, x, #) ⊢ ∗ (z, ε, ε) <strong>für</strong> alle z ∈ Z.<br />
Da S → [z0, #, z ′ ] ∈ P <strong>für</strong> alle z ′ ∈ Z folgt also:<br />
x ∈ L(G) ⇔ S ⇒ ∗ x<br />
⇔ S ⇒ [z0, #, z] ⇒ ∗ x <strong>für</strong> ein z ∈ Z<br />
⇔ (z0, x, #) ⊢ ∗ (z, ε, ε) <strong>für</strong> ein z ∈ Z<br />
⇔ x ∈ N(M)<br />
(Behauptung) <br />
Korollar: (i) Jede kontextfreie Sprache k<strong>an</strong>n von einem Kellerautomaten mit nur<br />
einem Zust<strong>an</strong>d akzeptiert werden.<br />
(ii) Jede kontextfreie Sprache L mit ε /∈ L k<strong>an</strong>n von einem Kellerautomaten mit nur<br />
einem Zust<strong>an</strong>d akzeptiert werden, <strong>der</strong> keine ε-Übergänge besitzt.<br />
2.3 Deterministisch-kontextfreie Sprachen<br />
Definition: Ein Kellerautomat M = (Z, Σ, Γ, δ, z0, #, E) heißt deterministischer Kellerautomat<br />
(DKA), falls <strong>für</strong> alle z ∈ Z, a ∈ Σ, A ∈ Γ gilt:<br />
|δ(z, ε, A)| + |δ(z, a, A)| ≤ 1.<br />
Eine kontextfreie Sprache L heißt deterministisch kontextfrei (L ∈ DCFL), falls es<br />
einen DKA M mit L = L(M) gibt.<br />
Es gilt: {ww R | w ∈ {0, 1} ∗ } ∈ CFL \ DCFL. Also: DCFL CFL.<br />
Ziel: DCFL ist abgeschlossen unter Komplement.<br />
Idee: Der Maschinentyp ist deterministisch, daher k<strong>an</strong>n m<strong>an</strong> Endzustände und Nicht-<br />
Endzustände vertauschen.<br />
Probleme:
2.3 Deterministisch-kontextfreie Sprachen 35<br />
A Der DKA akzeptiert seine Eingabe nicht, weil er seine Eingabe nicht vollständig<br />
liest, erbleibt während <strong>der</strong> Rechnung stecken. Mögliche Ursachen: undefinierter<br />
Eintrag in <strong>der</strong> δ-Funktion, leerer Keller, Endlosschleife von ε-Übergängen.<br />
⇒ Beim Vertauschen von Endzuständen und Nicht-Endzuständen bleibt <strong>der</strong> Automat<br />
erneut stecken und akzeptiert nicht.<br />
B Der DKA akzeptiert x, macht aber nach dem Lesen <strong>der</strong> vollständigen Eingabe<br />
noch eine Folge von ε-Übergängen, wobei er sowohl Endzustände als auch Nicht-<br />
Endzustände <strong>an</strong>nimmt.<br />
⇒ Nach dem Vertauschen von Endzuständen und Nicht-Endzuständen wird x<br />
erneut akzeptiert.<br />
Satz: Das Komplement je<strong>der</strong> DCFL ist eine DCFL.<br />
Beweis: Sei L ∈ DCFL, L = L(M) <strong>für</strong> DKA M = (Z, Σ, Γ, δ, z0, #, E). O. B. d. A.<br />
nehmen wir <strong>an</strong>, dass M seine Eingabe stets g<strong>an</strong>z liest (Problem A, Übungsaufgabe).<br />
Zu Problem B: Definiere M ′ = (Z ′ , Σ, Γ, δ ′ , z0 ′ , #, E ′ ) wie folgt:<br />
– Z ′ = Z × {1, 2, 3}<br />
Idee: Die zweite Komponente merkt sich, ob seit dem Lesen des letzten Zeichens ein<br />
Endzust<strong>an</strong>d <strong>an</strong>genommen wurde (Zust<strong>an</strong>d ∈ Z × {1}) o<strong>der</strong> nicht (Zust<strong>an</strong>d ∈ Z × {2}).<br />
Vor dem Lesen des nächsten Zeichens wechseln wir von Z × {2} nach Z × {3}.<br />
– E ′ = Z × {3}<br />
– z0 ′ <br />
(z0, 1), falls z0 ∈ E<br />
=<br />
(z0, 2), falls z0 /∈ E<br />
Und δ ′ definiert wie folgt:<br />
(i) Falls δ(z, ε, A) = {(z ′ , γ)}, d<strong>an</strong>n<br />
δ ′ ((z, k), ε, A) = {((z ′ , k ′ ), γ)},<br />
wobei k ′ = 1, falls z ′ ∈ E o<strong>der</strong> k = 1, k ′ = 2 sonst.<br />
(ii) Falls δ(z, a, A) = {(z ′ , γ)} <strong>für</strong> a ∈ Σ, d<strong>an</strong>n<br />
und<br />
δ ′ ((z, 2), ε, A) = {((z, 3), A)}<br />
δ ′ ((z, 1), a, A) = δ ′ ((z, 3), a, A) = {((z ′ , k ′ ), γ)},<br />
wobei k ′ = 1, falls z ′ ∈ E, k ′ = 2 sonst.
2.4 Entscheidbarkeitsfragen 36<br />
Behauptung: Es gilt L(M) = L(M ′ ).<br />
Beweis <strong>der</strong> Behauptung: Sei a1 . . . <strong>an</strong> ∈ L(M). D<strong>an</strong>n nimmt M einen Zust<strong>an</strong>d aus E<br />
<strong>an</strong>, nachdem <strong>an</strong> gelesen wurde (evtl. erst nach einer Folge von ε-Übergängen). M ′<br />
wechselt d<strong>an</strong>n in einen Zust<strong>an</strong>d aus Z × {1}. Bei weiteren ε-Übergängen bleibt <strong>der</strong><br />
Zust<strong>an</strong>d von M ′ aus Z × {1}. ⇒ M ′ akzeptiert nicht.<br />
Sei nun a1 . . . <strong>an</strong> /∈ L(M). D<strong>an</strong>n sind alle Zustände, die M nach dem Lesen von <strong>an</strong><br />
<strong>an</strong>nimmt nicht aus E. D<strong>an</strong>n sind die entsprechenden Zustände von M ′ aus Z × {2}.<br />
Nach <strong>der</strong> Simulation <strong>der</strong> Bewegungen von M geht M ′ nun in einen Zust<strong>an</strong>d aus Z ×<br />
{3} = E ′ über. ⇒ M ′ akzeptiert.<br />
Bemerkung: – DCFL ist nicht unter Schnitt abgeschlossen<br />
(Seite 23f: es gilt L1, L2 ∈ DCFL).<br />
– DCFL ist nicht unter Vereinigung abgeschlossen.<br />
(Falls doch, d<strong>an</strong>n wäre DCFL nach de Morg<strong>an</strong> unter Schnitt abgeschlossen, denn<br />
L1 ∩ L2 = L1 ∪ L2.)<br />
Definition: Eine Sprache L ⊆ Σ ∗ hat die Präfixeigenschaft (L ist präfixfrei), falls <strong>für</strong><br />
alle w ∈ L gilt: kein echtes Präfix von w ist in L, d. h.<br />
w ∈ L ⇒ ∀u, v ∈ Σ + (w = uv ⇒ u /∈ L) .<br />
Es gilt: Die von deterministischen Kellerautomaten mit leerem Keller akzeptiertem<br />
Sprachen sind genau die deterministisch kontextfreien Sprachen mit Präfixeigenschaft,<br />
die sog. LR(0)-Sprachen (z. B. PASCAL).<br />
Es gilt: L ∈ DCFL ⊆ Σ ∗ ⇒ L ′ = L · {$} ∈ DCFL und präfixfrei <strong>für</strong> $ /∈ Σ.<br />
2.4 Entscheidbarkeitsfragen<br />
Das Postsche Korrespondenzproblem<br />
Sei Σ ein Alphabet, |Σ| ≥ 2. Das Postsche Korrespondenzproblem (PCP) über Σ ist<br />
definiert wie folgt:<br />
Gegeben: Eine endliche Folge von Paaren C = ((x1, y1), (x2, y2), . . . , (xk, yk))<br />
mit xi, yi ∈ Σ + <strong>für</strong> 1 ≤ i ≤ k.<br />
Frage: Gibt es i1, i2, . . . , in mit iµ ∈ {1, . . . , k}, 1 ≤ µ ≤ n, sodass<br />
xi1xi2 . . . xin = yi1yi2 . . . yin?
2.4 Entscheidbarkeitsfragen 37<br />
Im Fall einer positiven Antwort heißt C lösbar und die Folge (i1, . . . , in) heißt Lösung<br />
von C.<br />
Beispiel: Betrachte folgende Inst<strong>an</strong>z C = ((1, 101), (10, 00), (011, 11)) des Postschen<br />
Korrespondenzproblems.<br />
Schreibe die Folgeglie<strong>der</strong> unterein<strong>an</strong><strong>der</strong>:<br />
Es ergibt sich:<br />
1 10 011<br />
101 00 11<br />
i1 = 1 i2 = 3 i3 = 2 i4 = 3<br />
1 011 10 011<br />
101 11 00 11<br />
Eine Lösung ist damit: (1, 3, 2, 3), also C ∈ PCP.<br />
Beispiel: Ist das Postsche Korrespondenzproblem <strong>für</strong> folgende Inst<strong>an</strong>z lösbar?<br />
(Übungsaufgabe)<br />
001 01 01 10<br />
0 011 101 001<br />
Beobachtung: PCP ist rekursiv-aufzählbar. Betrachte folgenden Algorithmus:<br />
Eingabe: C = ((x1, y1), . . . , (xk, yk))<br />
Methode:<br />
for n := 1, 2, 3, . . .<br />
for alle Folgen i1, . . . , in ∈ {1, . . . , k}<br />
if xi1xi2 . . . xin = yi1yi2 . . . yin then Ausgabe ” C ist lösbar“ und stopp.<br />
Der Algorithmus stoppt gdw. C eine Lösung besitzt. Also ist dieser Algorithmus ein<br />
Semi-Entscheidungsalgorithmus <strong>für</strong> PCP und ist PCP rekursiv-aufzählbar.<br />
Ziel: PCP ist nicht entscheidbar.<br />
Definition: Das Halteproblem ist die Sprache<br />
H = {〈M, w〉 | M ist eine deterministische 1-B<strong>an</strong>d-TM, die bei Eingabe w hält}.<br />
H ist nicht entscheidbar. (Notation: 〈x〉 ist eine berechenbare Kodierung von x.)
2.4 Entscheidbarkeitsfragen 38<br />
Definition: Seien A ⊆ Σ ∗ , B ⊆ Γ ∗ Sprachen. A heißt reduzierbar auf B (in Zeichen:<br />
A ≤ B), falls es eine totale berechenbare Funktion f : Σ ∗ → Γ ∗ gibt, sodass <strong>für</strong> alle<br />
x ∈ Σ ∗ gilt:<br />
x ∈ A ⇔ f(x) ∈ B<br />
Ist A nicht entscheidbar, so ist B nicht entscheidbar. Ist B entscheidbar, so ist A<br />
entscheidbar.<br />
Ziel: H ≤ PCP<br />
Wir betrachten zunächst das modifiziertes Postsches Korrespondenzproblem (MPCP)<br />
und zeigen dessen Unentscheidbarkeit. Das Problem MPCP ist definiert wie folgt:<br />
Gegeben: C = ((x1, y1), . . . , (xk, yk)) wie bei PCP<br />
Frage: Gibt es eine Folge i2, . . . , in ∈ {1, . . . , k}, sodass x1xi2 . . . xin =<br />
y1yi2 . . . yin?<br />
Ziel: H ≤ MPCP ≤ PCP<br />
Lemma: H ≤ MPCP<br />
Beweis: Wir definieren eine totale berechenbare Funktion f, die Paare 〈M, w〉 in Inst<strong>an</strong>zen<br />
von MPCP überführt, sodass<br />
〈M, w〉 ∈ H ⇔ f(〈M, w〉) ∈ MPCP.<br />
Sei w ∈ Σ ∗ und M = (Z, Σ, Γ, δ, z0, , E) eine Turingmaschine, wobei<br />
– Z die Zust<strong>an</strong>dsmenge,<br />
– Σ das Eingabealphabet,<br />
– Γ, Σ ⊂ Γ das Arbeitsalphabet,<br />
– δ : Z × Σ → Z × Σ × {L, N, R} die Überführungsfunktion,<br />
– z0 ∈ Z <strong>der</strong> Startzust<strong>an</strong>d,<br />
– das Leersymbol und<br />
– und E ⊆ Z die Endzust<strong>an</strong>dsmenge ist.<br />
Sei o. B. d. A. δ(z, a) undefiniert <strong>für</strong> alle z ∈ E, a ∈ Σ und Z ∩ Γ = ∅.<br />
Eine Konfiguration von M ist ein Wort über Γ ∗ · Z · Γ ∗ , wobei uzv mit u, v ∈ Γ ∗ und<br />
z ∈ Z bedeutet:
2.4 Entscheidbarkeitsfragen 39<br />
– M ist im Zust<strong>an</strong>d z.<br />
– <strong>der</strong> B<strong>an</strong>dinhalt (Inhalt aller B<strong>an</strong>dzellen, die bisher besucht worden sind) ist uv.<br />
– Der Kopf von M steht auf dem ersten Zeichen von v.<br />
M akzeptiert w gdw. es gibt Konfigurationen K0, K1, . . . , Kt mit K0 = z0w, Kt ∈<br />
Γ ∗ · E · Γ ∗ und <strong>für</strong> 1 ≤ i < t geht Ki+1 durch einen Schritt von M aus Ki hervor.<br />
Wir konstruieren nun eine Inst<strong>an</strong>z C des MPCP durch Angabe von Paaren (xi, yi):<br />
Das Alphabet des MPCP ist Z ∪ Γ ∪ {#}, wobei # /∈ Z ∪ Γ.<br />
(i) ” Startregel“<br />
(x1, y1) = (##, ##z0w#)<br />
(ii) ” Überführungsregeln“<br />
Ist δ(z, a) = (z ′ , b, N), so nimm das Paar (za, z ′ b) auf.<br />
Ist δ(z, a) = (z ′ , b, R), so nimm das Paar (za, bz ′ ) auf.<br />
Ist δ(z, a) = (z ′ , b, L), so nimm das Paar (cza, z ′ cb) <strong>für</strong> alle c ∈ Σ und zusätzlich<br />
das Paar (#za, #z ′ b) auf.<br />
Ist δ(z, ) = (z ′ , b, N), so nimm zusätzlich (z#, z ′ b#) auf.<br />
Ist δ(z, ) = (z ′ , b, R), so nimm zusätzlich (z#, bz ′ #) auf.<br />
Ist δ(z, ) = (z ′ , b, L), so nimm zusätzlich (cz#, z ′ cb#) <strong>für</strong> alle c ∈ Σ auf.<br />
(iii) ” Kopierregeln“<br />
Für alle a ∈ Σ ∪ {#} nimm das Paar (a, a) auf.<br />
(iv) ” Löschregeln“<br />
Für alle z ∈ E und a ∈ Σ nimm folgende (az, z) und (za, z) auf.<br />
(v) ” Abschlussregeln“<br />
Für alle z ∈ E nimm das Paar (z##, #) auf.<br />
Behauptung: M stoppt bei Eingabe w ⇔ C hat eine Lösung.<br />
Beweis <strong>der</strong> Behauptung: ” ⇒“: M stoppt bei Eingabe w. D<strong>an</strong>n gibt es eine Folge<br />
K0, K1, . . . , Kt wie oben erläutert. Eine Lösung von C ergibt sich nun wie folgt:<br />
– Beginne mit (x1, y1)<br />
##<br />
##z0w#<br />
Der untere String ist immer länger als <strong>der</strong> obere. Wenn oberer und unterer String<br />
mit # enden, d<strong>an</strong>n ist <strong>der</strong> untere String genau eine Konfiguration länger als <strong>der</strong><br />
obere.
2.4 Entscheidbarkeitsfragen 40<br />
– Wende Kopier- und Überführungsregeln <strong>an</strong>, bis folgende Situation entsteht:<br />
## K0# K1# · · · Kt−1#<br />
## K0# K1# K2# · · · Kt#<br />
– Wende Lösch- und Kopierregeln <strong>an</strong>, bis folgende Situation entsteht:<br />
## K0# K1# · · · Kt−1# Kt# · · · #<br />
## K0# K1# K2# · · · Kt# · · · # z#<br />
wobei z ∈ E.<br />
– Wende passende Abschlussregel <strong>an</strong>:<br />
· · · # z# #<br />
· · · # z# #<br />
Insgesamt folgt damit C ∈ MPCP.<br />
” ⇐“: Besitzt C eine Lösung i1, . . . , in mit i1 = 1, so lässt sich mit ähnlichen Argumenten<br />
eine haltende Rechnung von M konstruieren.<br />
Korollar: MPCP ist unentscheidbar.<br />
Lemma: MPCP ≤ PCP.<br />
Beweis: Sei C eine Inst<strong>an</strong>z des MPCP über dem Alphabet Σ. Seien #, $ /∈ Σ. Für<br />
w = a1 . . . am ∈ Σ + , definiere<br />
# w # = #a1#a2# . . . #am#<br />
w # = a1#a2# . . . #am#<br />
# w = #a1#a2# . . . #am<br />
Ist nun C = ((x1, y1), . . . , (xk, yk)), so definiere f als<br />
f ist total und berechenbar.<br />
f(C) = (( # x #<br />
1 ,# y1), (x #<br />
1 ,# y1), . . . , (x #<br />
k ,# yk), ($, #$)).<br />
Behauptung: C ∈ MPCP ⇔ f(C) ∈ PCP.<br />
Beweis <strong>der</strong> Behauptung: ” ⇒“: Sei (i1, i2, . . . , in) mit i1 = 1 eine Lösung von C, d. h.<br />
xi1xi2 . . . xin = yi1yi2 . . . yin.<br />
D<strong>an</strong>n ist (1, i2 + 1, . . . , in + 1, k + 2) eine Lösung von f(C).<br />
” ⇐“: Ist (i1, . . . , in) eine Lösung von f(C), so muss gelten:<br />
i1 = 1, i2, . . . , in−1 ∈ {2, . . . , k + 1} und in = k + 2<br />
D<strong>an</strong>n ist (1, i2 − 1, . . . , in−1 − 1) eine Lösung von C.
2.4 Entscheidbarkeitsfragen 41<br />
Korollar: PCP ist unentscheidbar.<br />
Satz: Das PCP-Problem über Σ ist schon <strong>für</strong> |Σ| = 2 unentscheidbar.<br />
Beweis: Sei Σ ein beliebiges Alphabet, Σ = {b1, . . . , bm}. Für 1 ≤ j ≤ m definiere<br />
bj = 01 j . Für w ∈ Σ + , w = a1 . . . <strong>an</strong>, setze w = a1 . . . <strong>an</strong>. D<strong>an</strong>n gilt:<br />
((x1, y1), . . . , (xn, yn)) ∈ PCP (über Σ)<br />
⇔ ((x1, y1), . . . , (xn, yn)) ∈ PCP (über {0, 1})<br />
Bemerkung: – Das PCP über Σ mit |Σ| = 1 ist entscheidbar.<br />
– Sei PCPk das PCP-Problem eingeschränkt auf Eingaben mit genau k Paaren.<br />
D<strong>an</strong>n gilt:<br />
– Die Probleme PCP1 und PCP2 sind entscheidbar.<br />
– PCPk ist <strong>für</strong> k ≥ 7 unentscheidbar.<br />
– Die Entscheidbarkeit des PCPk <strong>für</strong> k ∈ {3, . . . , 6} ist offen.<br />
Entscheidbarkeit <strong>für</strong> kontextfreie Sprachen<br />
Satz: Das Schnittproblem <strong>für</strong> DCFL, also das Problem<br />
Gegeben: Kontextfreie Grammatiken G1, G2 mit L(G1), L(G2) ∈ DCFL.<br />
Frage: Ist L(G1) ∩ L(G2) = ∅?<br />
ist unentscheidbar.<br />
Beweis: Wir geben eine Reduktion des PCP auf das Schnittproblem <strong>für</strong> DCFL <strong>an</strong>. Sei<br />
C = ((x1, y1), . . . , (xn, yn)) ein Inst<strong>an</strong>z von PCP über Σ = {0, 1}. Definiere die Grammatik<br />
G1 über dem Alphabet Σ = {0, 1, $, a1, . . . , ak} als G1 = ({S, A, B}, Σ, P, S) mit<br />
folgenden Produktionen:<br />
(w R ist dabei das Wort w gespiegelt.)<br />
Die von G1 erzeugte Sprache ist:<br />
S → A$B<br />
A → a1Ax1| . . . |akAxk|a1x1| . . . |akxk<br />
B → y R 1 Ba1| . . . |y R k Bak|y R 1 a1| . . . |y R k ak<br />
L(G1) = ain . . . ai1xi1 . . . xin$y R jm . . . yR j1 aj1 . . . ajm<br />
<br />
n, m ≥ 1, iµ, jν ∈ {1, . . . , k} .<br />
Definiere die Grammatik G2 = ({S, T }, Σ, P, S) mit folgenden Produktionen:
2.4 Entscheidbarkeitsfragen 42<br />
Die von G2 erzeugte Sprache ist:<br />
S → a1Sa1| . . . |akSak|T<br />
T → 0T 0|1T 1|$<br />
L(G1) = uv$v R u R u ∈ {a1, . . . , <strong>an</strong>} ∗ , v ∈ {0, 1} ∗ .<br />
Offenbar ist L(G1), L(G2) ∈ DCFL.<br />
Es gilt:<br />
C besitzt die Lösung i1, . . . , in gdw.<br />
ain . . . ai1xi1 . . . xin$y R jn . . . yR j1 ai1 . . . ain ∈ L(G1) ∩ L(G2).<br />
C ↦→ 〈G1, G2〉 ist eine Reduktion von PCP auf das Schnittproblem <strong>für</strong> DCFL.<br />
Korollar: – Das Schnittproblem <strong>für</strong> CFL ist unentscheidbar.<br />
– Das Schnittproblem <strong>für</strong> deterministische Kellerautomaten, d. h. das Problem<br />
ist unentscheidbar.<br />
Gegeben: Deterministische Kellerautomaten M1, M2.<br />
Frage: Ist L(M1) ∩ L(M2) = ∅?<br />
Satz: Das Äquivalenzproblem <strong>für</strong> kontextfreie Sprachen, also das Problem<br />
ist unentscheidbar.<br />
Gegeben: Kontextfreie Grammatiken G1, G2.<br />
Frage: Ist L(G1) = L(G2)?<br />
Beweis: Reduktion vom Schnittproblem <strong>für</strong> determistische Kellerautomaten. Seien<br />
M1, M2 deterministische Kellerautomaten. D<strong>an</strong>n gilt:<br />
L(M1) ∩ L(M2) = ∅<br />
⇔ L(M1) ⊆ L(M2)<br />
⇔ L(M1) ⊆ L(M C 2 )<br />
⇔ L(M1) ∪ L(M C 2 ) = L(M C 2 )<br />
⇔ L(M3) = L(M C 2 ),<br />
L(M1)<br />
L(M2)<br />
wobei M C 2 DKA mit L(M C 2 ) = L(M2) und M3 ein KA mit L(M1) ∪ L(M C 2 ) ist. Also<br />
(M1, M2) /∈ Schnittproblem ⇔ (M3, M C 2 ) ∈ Äquivalenzproblem und (M1, M2) ↦→<br />
(M3, M C 2 ) ist die gewünschte Reduktion.
2.4 Entscheidbarkeitsfragen 43<br />
Bemerkung: Das Äquivalenzproblem <strong>für</strong> DCFL bzw. DKAen ist entscheidbar.<br />
Satz: Das Problem Non-empty Complement (NEC) <strong>für</strong> kontextfreie Sprachen, also<br />
das Problem<br />
ist unentscheidbar.<br />
Gegeben: Kontextfreie Grammatik über einem Alphabet Σ.<br />
Frage: Ist L(G) = Σ ∗ ?<br />
Beweis: Seien G1 und G2 wie im Beweis des Schnittproblems auf Seite 41. D<strong>an</strong>n gilt:<br />
C ∈ PCP ⇔ L(G1) ∩ L(G2) = ∅<br />
⇔ L(G1) ∩ L(G2) = Σ ∗<br />
⇔ L(G1) ∪ L(G2) = Σ ∗<br />
⇔ L(G4) = Σ ∗ ,<br />
wobei ist G4 eine kontextfreie Grammatik mit L(G4) = L(G1) ∪ L(G2) ist. Die Abbildung<br />
C ↦→ G4 reduziert PCP auf NEC.<br />
Satz: Das Problem<br />
ist unentscheidbar.<br />
Gegeben: Kontextfreie Grammatiken G1 und G2.<br />
Frage: Ist L(G1) ∩ L(G2) kontextfrei?<br />
Beweis: Sei C eine Inst<strong>an</strong>z des Postschen Korrespondenzproblems. Seien G1 und G2<br />
die Grammatiken aus dem Beweis <strong>der</strong> Unentscheidbarkeit des Schnittproblems von<br />
Seite 41.<br />
Behauptung: C ist lösbar gdw. L(G1) ∩ L(G2) /∈ CFL.<br />
D<strong>an</strong>n ist das Komplement des PCPs reduzierbar auf das Problem in <strong>der</strong> Aussage des<br />
Satzes.<br />
Beweis <strong>der</strong> Behauptung: Sei C nicht lösbar. D<strong>an</strong>n ist L(G1) ∩ L(G2) = ∅, also L(G1) ∩<br />
L(G2) ∈ CFL.<br />
Sei C lösbar. D<strong>an</strong>n besitzt C hat unendlich viele Lösungen, also |L(G1) ∩ L(G2)| = ∞.<br />
Sei L := L(G1) ∩ L(G2). Wir zeigen L /∈ CFL mit Hilfe des Pumping-Lemmas: Angenommen<br />
L sei kontextfrei, d<strong>an</strong>n existiert ein n ∈ N gemäß Pumping-Lemma. Wähle<br />
z ∈ L mit<br />
z = aim . . . ai1xi1 . . . xim$y R im . . . yR i1 ai1 . . . aim<br />
mit m > n. z existiert, da |L| = ∞. Damit gilt |z| > n. Sei z = uvwxy eine Zerlegung<br />
von z mit |vx| > 0 und |vwx| ≤ n.<br />
Wir zeigen: uwy /∈ L.
2.4 Entscheidbarkeitsfragen 44<br />
Fall 1: vx enthält das Zeichen $ ⇒ uwy enthält kein $, also z /∈ L.<br />
Fall 2: w enthält das Zeichen $ ⇒ vx ∈ {0, 1} ∗ , da |vwx| ≤ n ⇒ uwy /∈ L(G1), also<br />
uwy /∈ L.<br />
Fall 3: vwx enthält kein $ ⇒ v und x sind beide links vom $ o<strong>der</strong> beide rechts vom<br />
$ ⇒ uwy /∈ L(G2), also uwy /∈ L.<br />
Satz: Das Problem<br />
ist unentscheidbar.<br />
Gegeben: Kontextfreie Grammatik G.<br />
Frage: Ist L(G) kontextfrei?<br />
Beweis: Sei C eine Inst<strong>an</strong>z des PCPs, G1 und G2 wie oben definiert. Konstruiere<br />
eine kontextfreie Grammatik G4 mit L(G4) = L(G1) ∩ L(G2) (wie im Beweis <strong>für</strong> das<br />
NEC-Problem, Seite 43). D<strong>an</strong>n gilt:<br />
C ist nicht lösbar ⇔ L(G1) ∩ L(G2) ∈ CFL ⇔ L(G4) ∈ CFL<br />
(Reduktion vom Komplement des PCPs)<br />
Satz: Das Problem<br />
ist unentscheidbar.<br />
Gegeben: Kontextfreie Grammatik G.<br />
Frage: Ist L(G) regulär?<br />
Beweis: Seien C, G1, G2 und G4 definiert wie oben. D<strong>an</strong>n gilt:<br />
C ist nicht lösbar ⇔ L(G1) ∩ L(G2) = ∅<br />
⇔ L(G1) ∩ L(G2) ∈ REG<br />
⇔ L(G4) ∈ REG<br />
⇔ L(G4) ∈ REG,<br />
wobei REG die Klasse aller regulären Sprachen bezeichne.<br />
Satz: Das Problem<br />
Gegeben: Kontextfreie Grammatik G.<br />
Frage: Ist L(G) ∈ DCFL?
2.4 Entscheidbarkeitsfragen 45<br />
ist unentscheidbar.<br />
Beweis: Seien C, G1, G2 und G4 definiert wie oben. D<strong>an</strong>n gilt:<br />
C ist nicht lösbar ⇔ L(G1) ∩ L(G2) = ∅<br />
⇔ L(G1) ∩ L(G2) ∈ DCFL<br />
⇔ L(G4) ∈ DCFL<br />
⇔ L(G4) ∈ DCFL<br />
Entscheidbare Probleme <strong>für</strong> kontextfreie Sprachen<br />
Lemma: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik in Chomsky-Normalform.<br />
D<strong>an</strong>n gilt:<br />
(i) L(G) = ∅ ⇔ es gibt x ∈ L(G) mit |x| < 2 |V | .<br />
(ii) |L(G)| = ∞ ⇔ es gibt x ∈ L(G) mit 2 |V | ≤ |x| < 2 |V |+1 .<br />
Beweis: zu (i): Anwendung des Pumping-Lemmas <strong>für</strong> kontextfreie Sprachen. Konst<strong>an</strong>te<br />
n aus dem Pumping-Lemma ist gerade 2 |V | .<br />
” ⇐“: klar<br />
” ⇒“: Sei z ein kürzestes Wort in L(G). Wir zeigen: |z| < 2|V | .<br />
Annahme: |z| ≥ 2 |V | . D<strong>an</strong>n ist z nach dem Pumping-Lemma zerlegbar in z = uvwxy<br />
mit |vx| > 0 und |vwx| ≤ 2 |V | und uv i wx i y ∈ L <strong>für</strong> i ∈ N, insbeson<strong>der</strong>e also uwy ∈<br />
L(G).<br />
Aber |uwy| = |z| − |vx| < |z| und das ist ein Wi<strong>der</strong>spruch <strong>zur</strong> Wahl von z.<br />
zu (ii): siehe Übung.<br />
Satz: Das Leerheitsproblem <strong>für</strong> kontextfreie Sprachen, also das Problem<br />
ist entscheidbar.<br />
Gegeben: Kontextfreie Grammatik G.<br />
Frage: Ist L(G) = ∅?<br />
Beweis: Sei G eine kontextfreie Grammatik. Folgen<strong>der</strong> Algorithmus leistet das Gewünschte:<br />
(i) Bestimme G ′ in Chomsky-Normalform mit L(G) = L(G ′ ).
3 Kontextsensitive Sprachen und Typ-0-Sprachen 46<br />
(ii) Setze n := Anzahl <strong>der</strong> Nichtterminale in G ′ .<br />
(iii) Für alle z mit |z| < 2 n überprüfe, ob z ∈ L(G ′ ) (z.B. mit CYK-Algorithmus).<br />
(iv) Antwort ” ja“, falls kein z ∈ L(G) gefunden, sonst ” nein“.<br />
Satz: Das Endlichkeitsproblem <strong>für</strong> kontextfreie Sprachen, also das Problem<br />
ist entscheidbar.<br />
Gegeben: Kontextfreie Grammatik G.<br />
Frage: Ist |L(G)| = ∞?<br />
Beweis: Analog zum obigen Algorithmus mit Teil (ii) des vorhergehenden Lemmas.<br />
Übersicht <strong>der</strong> Entscheidbarkeitsprobleme<br />
( √ ˆ= entscheidbar)<br />
Wortproblem<br />
Leerheitsproblem<br />
Endlichkeitsproblem<br />
Äquivalenzproblem<br />
Schnittproblem<br />
Nichtleeres Komplement<br />
REG CFL<br />
√ √<br />
√ √<br />
√ √<br />
√<br />
√<br />
√<br />
3 Kontextsensitive Sprachen und Typ-0-Sprachen<br />
Sei G = (V, Σ, P, S) eine Grammatik. Ist P ⊆ (V ∪ Σ) + × (V ∪ Σ) ∗ , so ist G eine<br />
Typ-0-Grammatik.<br />
Gilt zusätzlich, dass aus (α, β) ∈ P stets |α| ≤ |β| folgt, so heißt G Typ-1-Grammatik<br />
o<strong>der</strong> kontextsensitive Grammatik (kurz: CSG). (Ausnahme: Die Regel S → ε ist erlaubt,<br />
falls S in keiner rechten Regelseite vorkommt.) CSL ist die Klasse aller kontextsensitiven<br />
Sprachen, d. h. <strong>der</strong> Sprachen, <strong>für</strong> die es eine Typ-1-Grammatik gibt.<br />
Ein linear-beschränkter Automat (LBA) ist eine nichtdeterministische Turingmaschine,<br />
die bei Eingabelänge n Platz ≤ n benötigt, d. h. <strong>der</strong>en Kopf den Bereich des B<strong>an</strong>des,<br />
in dem die Eingabe steht, niemals verlässt. Dazu sei <strong>an</strong>genommen, dass das rechte<br />
Eingabeende speziell markiert ist (siehe unten).
3.1 Maschinenmodelle <strong>für</strong> Typ-0- und Typ-1-Sprachen 47<br />
3.1 Maschinenmodelle <strong>für</strong> Typ-0- und Typ-1-Sprachen<br />
Satz: Eine Sprache hat eine Typ-1-Grammatik gdw. sie von einem LBA akzeptiert<br />
wird.<br />
Beweis: ” ⇒“: Sei L = L(G) mit G = (V, Σ, P, S). Folgen<strong>der</strong> Algorithmus bei Eingabe<br />
w ∈ Σ ∗ prüft, ob S ⇒ ∗ G w:<br />
Eingabe: w ∈ Σ ∗<br />
Methode:<br />
Wähle nichtdeterministisch Regel α → β;<br />
Wähle nichtdeterministisch Vorkommen von β auf dem Arbeitsb<strong>an</strong>d;<br />
Falls solch ein Vorkommen existiert: Ersetze β durch α;<br />
Falls nur noch S übrigbleibt: Akzeptiere;<br />
Ansonsten wie<strong>der</strong>hole obige Schritte.<br />
” ⇐“: Sei L = L(M) <strong>für</strong> einen linear beschänkten Automat M = (Z, Σ, Γ, δ, z0, , E),<br />
wobei<br />
– Z die Menge <strong>der</strong> Zustände,<br />
– Σ das Eingabealphabet,<br />
– Γ das Arbeitsalphabet mit Γ ⊇ Σ ∪ Σ ∪ {}, wobei Σ = {â | a ∈ Σ},<br />
– δ die Überg<strong>an</strong>gsfunktion,<br />
– z0 ∈ Z <strong>der</strong> Startzust<strong>an</strong>d,<br />
– ∈ Γ \ Σ das Leersymbol und<br />
– E ⊆ Z die Menge <strong>der</strong> Endzustände ist.<br />
Eine Konfiguration von M ist ein Wort aus Γ ∗ · (Z × Γ) · Γ ∗ . Dabei bedeutet u(z, a)v<br />
<strong>für</strong> a ∈ Σ u, v ∈ Σ ∗ und z ∈ Z: M ist im Zust<strong>an</strong>d z, <strong>der</strong> B<strong>an</strong>dinhalt ist uav und <strong>der</strong><br />
Kopf befindet sich auf dem Zeichen a.<br />
Beispiel:<br />
. . . a b c d . . .<br />
Diese Situation entspricht <strong>der</strong> Konfiguration a(z, b)cd. Es gilt |a(z, b)cd| = 4.<br />
z
3.1 Maschinenmodelle <strong>für</strong> Typ-0- und Typ-1-Sprachen 48<br />
Die Startkonfiguration von M bei Eingabe w = a1 . . . <strong>an</strong> ist (z0, a1)a2a3 . . . <strong>an</strong>−1ân (ân<br />
symbolisiert die Markierung des rechten R<strong>an</strong>des).<br />
Definiere G = (V, Σ, P, S) wie folgt: Definiere zunächst eine Regelmenge P ′ , die auf<br />
Konfigurationen genau die Arbeitsweise von M nachvollzieht. Der Überg<strong>an</strong>g<br />
δ(z, a) ∋ (z ′ , b, L) führt auf die Regel c(z, a) → (z ′ , c)b <strong>für</strong> alle c ∈ Γ \ {},<br />
δ(z, a) ∋ (z ′ , b, R) führt auf die Regel (z, a)c → b(z ′ , c) <strong>für</strong> alle c ∈ Γ \ {},<br />
δ(z, a) ∋ (z ′ , b, N) führt auf die Regel (z, a) → (z ′ , b).<br />
Es gilt also <strong>für</strong> Konfigurationen K, K ′ von M, dass K ⊢ K ′ gdw. K ⇒ ∗ K ′ mit Regeln<br />
aus P ′ .<br />
Sei ∆ = Γ ∪ (Z × Γ) ein Alphabet <strong>für</strong> Konfigurationen von M. Setze V = {S, A} ∪<br />
(∆ × Σ). D<strong>an</strong>n besteht die Regelmenge P aus folgenden Regeln:<br />
(i) S → ((z0, â), a) <strong>für</strong> a ∈ Σ<br />
S → A(â, a) <strong>für</strong> a ∈ Σ<br />
A → A(a, a) <strong>für</strong> a ∈ Σ<br />
A → ((z0, a), a) <strong>für</strong> a ∈ Σ<br />
Mit diesen Regeln können aus S alle Wörter <strong>der</strong> Form<br />
((z0, a1), a1)(a2, a2)(a3, a3) . . . (<strong>an</strong>−1, <strong>an</strong>−1)(ân, <strong>an</strong>)<br />
<strong>für</strong> a1, . . . , <strong>an</strong> ∈ Σ erzeugt werden.<br />
Die Folge <strong>der</strong> ersten Komponenten entspricht <strong>der</strong> Startkonfiguration von M auf<br />
a1 . . . <strong>an</strong>. Die Folge <strong>der</strong> zweiten Komponenten entspricht <strong>der</strong> Eingabe a1 . . . <strong>an</strong>.<br />
(ii) (A1, a)(A2, b) → (B1, a)(B2, b) <strong>für</strong> A1A2 → B1B2 ∈ P ′<br />
(A, a) → (B, a) <strong>für</strong> A → B ∈ P ′<br />
(A, B ∈ ∆ und a, b ∈ Σ, A, B, A1, A2, B1, B2 ∈ ∆)<br />
Mit diesen Regeln wird auf den ersten Komponenten eine Rechnung von M simuliert.<br />
Das Eingabewort in den zweiten Komponenten bleibt dabei unverän<strong>der</strong>t.<br />
(iii) ((z, a), b) → b <strong>für</strong> z ∈ E und a ∈ Γ, b ∈ Σ<br />
(a, b) → b <strong>für</strong> a ∈ Γ, b ∈ Σ<br />
Mit diesen Regeln können nach Erreichen einer Endkonfiguration alle ersten<br />
Komponenten gelöscht werden. Es bleibt a1 . . . <strong>an</strong> übrig.<br />
Falls also w ∈ L(M), d<strong>an</strong>n gilt S ⇒∗ G w. Die Umkehrung k<strong>an</strong>n <strong>an</strong>alog gezeigt werden.<br />
Insgesamt folgt somit L(M) = L(G).<br />
Korollar: Das Wortproblem <strong>für</strong> Typ-1-Grammatiken ist entscheidbar.<br />
Korollar: Eine Sprache hat eine Typ-0-Grammatik gdw. sie von einer Turingmaschine<br />
akzeptiert wird gdw. sie rekursiv-aufzählbar ist.
3.2 Entscheidbarkeit und Abschlußeigenschaften 49<br />
Beweis: ” ⇒“: Der Algorithmus im obigen Beweis ist ein Semi-Entscheidungsalgorithmus<br />
<strong>für</strong> die gegebene Typ-0-Sprache.<br />
” ⇐“: Grammatik wie oben aus <strong>der</strong> Turingmaschine konstruieren, wobei die Regeln unter<br />
Punkt (i) <strong>für</strong> alle c ∈ Γ erstellt und zusätzlich zu Punkt (iii) die Regeln ((z, a), ) →<br />
ε, (a, ) → ε <strong>für</strong> alle a ∈ Γ hinzugefügt werden müssen.<br />
3.2 Entscheidbarkeit und Abschlußeigenschaften<br />
Das Äquivalenz- und Schnittproblem <strong>für</strong> CSL sind nicht entscheidbar, da sie bereits <strong>für</strong><br />
CFL nicht entscheidbar sind. Betrachte das <strong>für</strong> CFL entscheidbare Leerheitsproblem:<br />
Satz: Das Leerheitsproblem <strong>für</strong> Typ-1-Sprachen ist unentscheidbar.<br />
Beweis: Reduktion vom Komplement des Schnittproblems.<br />
Gegeben seien zwei Typ-1-Grammatiken G1, G2. Konstruiere eine Typ-1-Grammatik<br />
G mit L(G) = L(G1) ∩ L(G2) (dies ist möglich, da CSL unter Schnitt abgeschlossen<br />
ist, s. u.). Es gilt also: (G1, G2) ∈ Schnittproblem ⇔ G /∈ Leerheitsproblem.<br />
Satz: Die Klasse CSL ist unter Vereinigung abgeschlossen.<br />
Beweis: Sei L1 = L(G1), L2 = L(G2) <strong>für</strong> Typ-1-Grammatiken Gi = (Vi, Σ, Pi, Si),<br />
i = 1, 2 und o. B. d. A. S /∈ V1 ∪ V2, V1 ∩ V2 = ∅. D<strong>an</strong>n gilt L1 ∪ L2 = L(G) <strong>für</strong> die<br />
kontextsensitive Grammatik G = (V1∪V2∪{S}, Σ, P1∪P2∪{S → S1, S → S2}, S).<br />
Satz: Die Klasse CSL ist unter Durchschnitt abgeschlossen.<br />
Beweis: Gegeben sei Li = L(Mi) <strong>für</strong> LBAen Mi, i = 1, 2. Definiere LBA M <strong>für</strong> L1 ∩L2<br />
wie folgt:<br />
Eingabe: w ∈ Σ ∗<br />
Methode:<br />
Simuliere M1 auf w; (mit Paaren wie oben, damit w erhalten bleibt)<br />
Simuliere M2 auf w;<br />
Akzeptiere, falls beide Simulationen akzeptieren;<br />
Wir wollen nun den Komplementabschluß von CSL untersuchen:<br />
Sei s: N → N. NSPACE(s) ist die Klasse <strong>der</strong> Sprachen, die von nichtdeterministischen<br />
Turingmaschinen in Platz O(s) akzeptiert werden. Also: CSL = NSPACE(n).<br />
coNSPACE(s) ist Klasse <strong>der</strong> Komplemente von Sprachen aus NSPACE(s). Die Frage,<br />
ob CSL unter Komplement abgeschlossen ist, ist also<br />
NSPACE(n) = coNSPACE(n)?
3.2 Entscheidbarkeit und Abschlußeigenschaften 50<br />
Wir werden diese Frage allgemeiner untersuchen:<br />
s: N → N heißt raumkonstruierbar, falls es eine deterministische Turingmaschine gibt,<br />
die bei Eingabe eines Wortes <strong>der</strong> Länge n genau s(n) Zellen benutzt.<br />
Für s(n) < n verwenden wir dazu Turingmaschinen mit Arbeitsb<strong>an</strong>d und getrenntem<br />
Eingabeb<strong>an</strong>d. Der Platzbedarf ist in diesem Fall die Anzahl <strong>der</strong> benutzten Zellen<br />
auf dem Arbeits<strong>an</strong>d. Für s(n) ≥ n fällt dieses Modell mit dem Modell <strong>der</strong> Einb<strong>an</strong>d-<br />
Turingmaschine zusammen (siehe <strong>Vorlesung</strong> ” Komplexität von Algorithmen“).<br />
Eine Konfiguration einer Turingmaschine mit getrenntem Eingabeb<strong>an</strong>d ist ein Tupel<br />
(Zust<strong>an</strong>d, Inhalt des Arbeitsb<strong>an</strong>des, Kopfposition auf dem Arbeitsb<strong>an</strong>d, Kopfposition<br />
auf dem Eingabeb<strong>an</strong>d).<br />
Für s(n) ≥ log n gilt damit:<br />
|Konfiguration von M bei Eingabelänge n| = O(s(n)).<br />
⇒ Anzahl aller solcher Konfigurationen = 2 O(s(n)) .<br />
⇒ Je<strong>der</strong> akzeptierende Pfad ist zeitbeschränkt durch 2 c·s(n) <strong>für</strong> c ∈ N .<br />
Satz (Immerm<strong>an</strong>n, Szelepczényi): Sei s(n) ≥ log n raumkonstruierbar. D<strong>an</strong>n gilt:<br />
NSPACE(s) = coNSPACE(s).<br />
Beweis: Sei A ∈ NSPACE(s). Sei M eine nichtdeterministische Turingmaschine wie<br />
oben, die A in Platz s akzeptiert. O. B. d. A. sei <strong>an</strong>genommen, alle Pfade von M haben<br />
die gleiche Länge 2 c·s(|x|) bei Eingabe x.<br />
K x start<br />
0 1 0 1 0<br />
accept reject<br />
= t<br />
Notation: K1 M, x K2, falls M bei Eingabe x in genau t Schritten die Konfiguration<br />
K2 aus <strong>der</strong> konfiguration K1 erreichen k<strong>an</strong>n.<br />
Wir nehmen <strong>an</strong>, wir kennen die Zahl<br />
n x M := |{K | K ist s(|x|) raumbeschränkt und K x start<br />
= N<br />
M, x K}|,
3.2 Entscheidbarkeit und Abschlußeigenschaften 51<br />
wobei N = s c·s(|x|) und K x start die Startkonfiguration von M bei Eingabe x ist. D<strong>an</strong>n<br />
akzeptiert folgende nichtdeterministische Turingmaschine die Sprache A:<br />
Eingabe: x<br />
Methode:<br />
K ′ := K x start; m := 0;<br />
for i := 0 to n x M do<br />
begin<br />
rate Konfiguration K mit K > K ′ (in einer lex. Reihenfolge, bei <strong>der</strong> K x start<br />
minimal ist) und K nicht akzeptierend;<br />
rate Pfad Π <strong>der</strong> Länge 2 c·s(|x|) ;<br />
if K x start<br />
K ′ := K;<br />
end;<br />
if m = n x M<br />
= 2 c·s(|x|)<br />
M, x<br />
Problem: Wie berechnet m<strong>an</strong> n x M ?<br />
K mit Π then m := m + 1;<br />
then halte akzeptierend else halte verwerfend;<br />
Sei M so normalisiert, dass es eine eindeutige akzeptierende Konfiguration Kakz =<br />
= 1<br />
(q+, ε, 1, 1) gibt. Weiterhin sei Kakz M, x Kakz <strong>der</strong> einzige Konfigurationsüberg<strong>an</strong>g aus<br />
Kakz, d. h. weitere Schritte führen nicht mehr aus Kakz heraus. Sei N = 2c·s(|x|) eine<br />
obere Schr<strong>an</strong>ke <strong>für</strong> die Anzahl <strong>der</strong> Konfigurationen bei Eingabe x, d<strong>an</strong>n gilt:<br />
M akzeptiert x gdw. K x start<br />
= N<br />
M, x Kakz.<br />
= t<br />
M, x<br />
Definiere nx M (t) := |{K | K ist s(|x|)-raumbeschänkt und Kx start K}| <strong>für</strong> 0 ≤ t ≤<br />
N. Es gilt: nx M = nxM (N). Wir konstruieren eine s-platzbeschränkte nichtdeterministische<br />
Turingmaschine, die nx M (t + 1) berechnet, falls sie nxM (t) gegeben hat (Induktives<br />
Zählen).<br />
Berechnung von nx M (0): nxM (0) = 1.<br />
Berechnung von nx M (t + 1): Sei nxM Konfiguration K, ob Kx = t + 1<br />
start M, x<br />
Wie k<strong>an</strong>n Kx = t + 1<br />
start M, x<br />
(t) gegeben. Prüfe <strong>für</strong> jede s(|x|)-raumbeschränkte<br />
K. Die Anzahl dieser K ist nxM (t + 1).<br />
K geprüft werden?<br />
Seien Ki1 , . . . , Kir alle Vorgängerkonfigurationen von K (r ist konst<strong>an</strong>t und wird<br />
durch M bestimmt). Prüfe, ob Kx = t<br />
start M, x Kiµ <strong>für</strong> ein 1 ≤ µ ≤ r.<br />
Wie k<strong>an</strong>n K x start<br />
= t<br />
M, x Kiµ geprüft werden? Beachte: nx M (t) ist bek<strong>an</strong>nt!<br />
Methode:<br />
m:=0;<br />
for all Konfigurationen K do<br />
begin<br />
rate nichtdeterministisch (A) o<strong>der</strong> (B):
3.2 Entscheidbarkeit und Abschlußeigenschaften 52<br />
(A): Simuliere t Schritte von M;<br />
= t<br />
M, x<br />
if Kx start K then m := m + 1;<br />
(B): tue garnichts;<br />
end;<br />
if m = nx M (t) then halte ablehnend;<br />
else Ausgabe ja“, falls Kiµ eine Konfiguration war, <strong>für</strong> die (A) geraten<br />
”<br />
wurde, <strong>an</strong><strong>der</strong>nfalls Ausgabe nein“;<br />
”<br />
Der Gesamtalgorithmus ergibt sich zu:<br />
Eingabe: x<br />
Methode:<br />
(∗Falls n = n x M<br />
(t), so gilt: reach(x,n,t,K)=true gdw. Kstart = t<br />
M, x K∗)<br />
function reach(x, n, t, K): boole<strong>an</strong>;<br />
begin<br />
m := 0; b := false;<br />
for all Konfigurationen K ′ do<br />
begin<br />
rate nichtdeterministisch (A) o<strong>der</strong> (B):<br />
(A): if K x start<br />
= t<br />
M, x K′ then (∗Simulation von t Schritten von M∗)<br />
begin<br />
m := m + 1;<br />
if K ′ = K then b := true;<br />
end;<br />
(B): nop;<br />
end;<br />
if m = n then return b else reject;<br />
end;<br />
(∗Hauptprogramm:∗)<br />
N := 2 c·s(|x|) ; n := 1;<br />
for t := 1 to N do (∗Schleifeninvari<strong>an</strong>te: n := n x M<br />
begin<br />
k := 0;<br />
for all Konfigurationen K do<br />
begin<br />
f := false;<br />
for all Vorgängerkonfigurationen K ′ von K do<br />
if reach(x, n, t − 1, K ′ ) then f := true;<br />
if f then k := k + 1;<br />
end; (∗k := n x M (t)∗)<br />
n := k;<br />
end; (∗n := n x M (N) = nx M ∗)<br />
if reach(x, n, N, Kakz) then reject else accept;<br />
(t − 1)∗)
3.2 Entscheidbarkeit und Abschlußeigenschaften 53<br />
Die Variablen N, K, K ′ , b, f, n, k, t haben einen Speicherbedarf von O(s), also benötigt<br />
<strong>der</strong> Gesamtalgorithmus ebenfalls O(s) Speicher.<br />
Korollar: – Sei A ⊆ Σ ∗ . D<strong>an</strong>n gilt: A ∈ CSL ⇔ A ∈ CSL.<br />
– NSPACE(n) = coNSPACE(n).<br />
– NL = coNL.<br />
Bemerkung: Es ist offen, ob deterministische LBAen nicht schon ausreichen, um alle<br />
kontextsensitiven Sprachen zu akzeptieren (das so gen<strong>an</strong>nte erste LBA-Problem). In<br />
komplexitätstheoretischer Notation ist dies also die Frage, ob NSPACE(n) = SPACE(n).