Theoretische Informatik II

Theoretische Informatik II
Vorlesungsskript
Theoretische Informatik II
Wintersemester 2004/2005
Prof. Dr. Johannes Köbler
Humboldt-Universität zu Berlin
Lehrstuhl Komplexität und Kryptografie
4. März 2005
Inhaltsverzeichnis
1 Reguläre Sprachen
1.1 Endliche Automaten
1.2 Nichtdeterministische endliche Automaten
1.3 Reguläre Ausdrücke
1.4 Das Pumping-Lemma
1.5 Minimierung von DFAs
1.6 Grammatiken
1
1
4
7
9
11
14
2 Kontextfreie Sprachen
2.1 Äquivalenz von kontextfreien Grammatiken und Kellerautomaten
2.2 Chomsky-Normalform Grammatiken
2.3 Syntaxbäume und Linksableitungen
2.4 Der CYK-Algorithmus
2.5 Das Pumping-Lemma
2.6 Deterministisch kontextfreie Sprachen
18
18
23
27
29
30
33
3 Kontextsensitive Sprachen
3.1 Kontextsensitive Grammatiken
3.2 Turingmaschinen
3.3 Linear beschränkte Automaten
38
38
39
42
4 Entscheidbare und rekursiv aufzählbare Sprachen
4.1 Kodierung (Gödelisierung) von Turingmaschinen
4.2 Das Postsche Korrespondenzproblem (PCP)
45
48
52
5 Komplexitätsklassen und NP-Vollständigkeit
5.1 Zeitkomplexität
5.2 Platzkomplexität
5.3 NP-Vollständigkeit und das P=NP Problem
59
59
60
61
1 Reguläre Sprachen
1.1 Endliche Automaten
Rechenmaschinen spielen in der Informatik eine zentrale Rolle. Hier beschäftigen wir
uns mit mathematischen Modellen für Maschinentypen von unterschiedlicher Berechnungskraft. In der Vorlesung Theoretische Informatik 1 wurde die Turingmaschine als
ein universales Berechnungsmodell eingeführt. In dieser Vorlesung werden wir eine
Reihe von Einschränkungen dieses Maschinenmodells kennenlernen, die vielfältige
praktische Anwendungen haben. Dabei betrachten wir zunächst nur Entscheidungsprobleme, was der Berechnung von {0, 1}-wertigen Funktionen entspricht. Zur Beschreibung der Problemeingaben wird ein Eingabealphabet Σ verwendet.
Definition 1 (Alphabet)
Ein Alphabet ist eine geordnete endliche Menge Σ = {a1 , . . . , am } von Zeichen. Eine Folge x = x1 . . . xn ∈ Σn heißt Wort (der Länge n). Die Menge
aller Wörter über Σ ist
[
Σ∗ =
Σn = {x1 · · · xn | n ≥ 0 und xi ∈ Σ für i = 1, . . . , n}.
n≥0
Das (einzige) Wort der Länge n = 0 ist das leere Wort, welches wir mit ε bezeichnen.
Ein endlicher Automat ist eine auf ein Minimum „abgespeckte“ Turingmaschine, die
nur kostant viel Speicherplatz zur Verfügung hat und bei Eingaben der Länge n nur
n Rechenschritte ausführen darf. Um die gesamte Eingabe lesen zu können, muss der
Automat also in jedem Schritt ein Zeichen der Eingabe verarbeiten.
x1
...
xi
...
Steuereinheit
xn
2
1 Reguläre Sprachen
Definition 2 (DFA)
Ein endlicher Automat (kurz: DFA; deterministic finite automaton) wird durch
ein 5-Tupel M = (Z, Σ, δ, q0 , E) beschrieben, wobei
• Z eine endliche Menge von Zuständen,
• Σ das Eingabealphabet,
• δ : Z × Σ → Z die Überführungsfunktion,
• q0 ∈ Z der Startzustand und
• E ⊆ Z die Menge der Endzustände ist.
Die von M akzeptierte oder erkannte Sprache ist
∃ q1 , . . . , qn−1 ∈ Z, qn ∈ E :
∗
L(M ) = x1 · · · xn ∈ Σ
δ(qi , xi+1 ) = qi+1 für i = 0, . . . , n − 1
Beispiel 3
Betrachte den DFA M = (Z, Σ, δ, q0 , E) mit
Z = {q0 , q1 , q2 },
Σ = {a, b},
E = {q1 }
und der Überführungsfunktion
δ q0
a q1
b q2
q1
q2
q0
q2
q0
q1
Graphische Darstellung von M :
q0
a
a
b
b
b
q2
q1
a
Hierbei wird der Startzustand durch einen Pfeil und Endzustände werden durch
einen doppelten Kreis gekennzeichnet. Offensichtlich akzeptiert M die Sprache
L(M ) = {x ∈ Σ∗ | #a (x) − #b (x) ≡ 1 (mod 3)},
wobei #a (x) die Anzahl der Vorkommen von a in x bezeichnet.
1.1 Endliche Automaten
3
Eine von einem DFA akzeptierte Sprache wird als regulär bezeichnet. Die zugehörige
Sprachklasse ist
REG = {L(M ) | M ist ein DFA}.
Frage: Welche Sprachen gehören zu REG und welche nicht?
Im folgenden sei Σ = {a1 , . . . , am } ein beliebiges aber fest gewähltes Alphabet.
Beobachtung 4
Alle Sprachen, die aus einem einzigen Wort x = x1 · · · xn ∈ Σ∗ bestehen, sind
regulär. Für folgenden DFA M gilt nämlich L(M ) = {x}.
x1
q0
x2
q1
x3
...
xn
q2
qn
a 6= x2
a 6= x3
a 6= x1
e
a∈Σ
a∈Σ
Formal lässt sich M also durch das Tupel M = (Z, Σ, δ, q0 , E) mit
Z
E
= {q0 , . . . , qn , e},
= {qn }
und der Überführungsfunktion
(
qi+1 , q = qi für ein i mit 0 ≤ i ≤ n − 1 und aj = xi+1
δ(q, aj ) =
e,
sonst
beschreiben.
Beobachtung 5
Mit L1 , L2 ∈ REG sind auch die Sprachen L1 = Σ∗ \ L1 , L1 ∩ L2 und L1 ∪ L2
regulär. Sind nämlich Mi = (Zi , Σ, δi , q0 , Ei ), i = 1, 2, DFAs mit L(Mi ) = Li ,
so akzeptiert der DFA
M1 = (Z1 , Σ, δ1 , q0 , Z1 \ E1 )
das Komplement L1 von L1 . Der Schnitt L1 ∩ L2 von L1 und L2 wird dagegen
von dem DFA
M 0 = (Z1 × Z2 , Σ, δ 0 , (q0 , q0 ), E1 × E2 )
mit
δ 0 ((q, p), a) = (δ1 (q, a), δ2 (p, a))
akzeptiert. Wegen L1 ∪ L2 = (L1 ∩ L2 ) ist dann aber auch die Vereinigung von
L1 und L2 regulär. (Wie sieht der zugehörige DFA aus?)
4
1 Reguläre Sprachen
Aus den beiden Beobachtungen folgt, dass alle endlichen und alle co-endlichen Sprachen regulär sind. Da die in Beispiel 3 betrachtete Sprache weder endlich noch coendlich ist, haben wir damit allerdings noch nicht alle regulären Sprachen erfasst. Es
stellt sich die Frage, ob REG neben den mengentheoretischen Operationen Schnitt, Vereinigung und Komplement unter weiteren Operationen wie etwa der Produktbildung
L1 L2 = {xy | x ∈ L1 , y ∈ L2 }
oder der Bildung der Sternhülle
L∗ =
[
Ln
n≥0
abgeschlossen ist. Die n-fache Potenz Ln von L ist dabei induktiv durch
L0 = {ε}, Ln+1 = Ln L
definiert.
Im übernächsten Abschnitt werden wir sehen, dass die Klasse REG als der Abschluss
der endlichen Sprachen unter Vereinigung, Produktbildung und Sternhülle charakterisierbar ist. Beim Versuch, einen endlichen Automaten für das Produkt L 1 L2 zweier
regulärer Sprachen zu konstruieren, stößt man auf die Schwierigkeit, den richtigen Zeitpunkt für den Übergang von (der Simulation von) M1 zu M2 zu finden. Unter Verwendung eines nichtdeterministischen Automaten lässt sich dieses Problem jedoch leicht
beheben, da dieser den richtigen Zeitpunkt „erraten“ kann. Im nächsten Abschnitt werden wir nachweisen, dass auch nichtdeterministische endliche Automaten nur reguläre
Sprachen erkennen können.
1.2 Nichtdeterministische endliche Automaten
Definition 6 (NFA)
Ein nichtdeterministischer endlicher Automat (kurz: NFA; nondeterministic
finite automaton) M = (Z, Σ, δ, Q0 , E) ist ähnlich aufgebaut wie ein DFA, nur
dass er mehrere Startzustände (zusammengefasst in der Menge Q 0 ⊆ Z) haben
kann und seine Überführungsfunktion
δ : Z × Σ → P(Z)
die Potenzmenge P(Z) von Z als Wertebereich hat. Die von M akzeptierte Sprache ist
∗ ∃ q0 ∈ Q0 , q1 , . . . , qn−1 ∈ Z, qn ∈ E :
L(M ) = x1 · · · xn ∈ Σ
qi+1 ∈ δ(qi , xi+1 ) für i = 0, . . . , n − 1
1.2 Nichtdeterministische endliche Automaten
5
Ein NFA kann also nicht nur eine, sondern mehrere verschiedene Rechnungen ausführen. Die Eingabe gehört bereits dann zu L(M ), wenn bei einer dieser Rechnungen nach
Lesen des gesamten Eingabewortes ein Endzustand erreicht wird. Im Gegensatz zu einem DFA, dessen Überführungsfunktion auf der gesamten Menge Z × Σ definiert ist,
kann ein NFA „stecken bleiben“. Das ist dann der Fall, wenn er in einen Zustand q gelangt, in dem das nächste Eingabezeichen xi wegen δ(q, xi ) = ∅ nicht gelesen werden
kann.
Beispiel 7
Betrachte den NFA M = (Z, Σ, δ, Q0 , E) mit
Z = {p, q, r, s},
Σ = {0, 1, 2},
Q0 = {p},
E = {s}
und der Überführungsfunktion
δ
p
q
0 {p, q} ∅
1 {p} {r}
2 {p}
∅
r
s
∅ ∅
∅ ∅
{s} ∅
Graphische Darstellung von M :
p
0
q
1
r
2
s
0, 1, 2
Offensichtlich akzeptiert M die Sprache
L(M ) = {x012 | x ∈ Σ∗ }
aller Wörter, die mit dem Suffix 012 enden.
Beobachtung 8
Sind L1 , L2 ∈ REG, so werden die Sprachen L1 L2 und L∗1 von einem NFA
erkannt. Sind nämlich Mi = (Zi , Σ, δi , qi , Ei ), i = 1, 2, DFAs mit L(Mi ) = Li
(wobei wir Z1 ∩ Z2 = ∅ annehmen können), so akzeptiert der NFA
M = (Z1 ∪ Z2 , Σ, δ, {q1 }, E)
mit
und


q ∈ Z 1 \ E1 ,
{δ1 (q, a)},
δ(q, a) = {δ1 (q, a), δ2 (q2 , a)}, q ∈ E1 ,


{δ2 (q, a)},
sonst
E=
(
E1 ∪ E 2 , q2 ∈ E 2 ,
E2 ,
sonst
6
1 Reguläre Sprachen
die Sprache L1 L2 und der NFA
M 0 = (Z1 ∪ {qneu }, Σ, δ 0 , {q1 , qneu }, E1 ∪ {qneu })
mit
0
δ (q, a) =
(
{δ1 (q, a), δ1 (q1 , a)}, q ∈ E1 ,
{δ1 (q, a)},
sonst
die Sprache L∗1 .
Satz 9
REG = {L(M ) | M ist ein NFA}.
Beweis: Die Inklusion von links nach rechts ist klar, da jeder DFA auch als NFA aufgefasst werden kann. Für die Gegenrichtung konstruieren wir zu einem NFA M =
(Z, Σ, δ, Q0 , E) einen DFA M 0 mit L(M 0 ) = L(M ). Und zwar ist
M 0 = (P(Z), Σ, δ 0 , Q0 , E 0 )
mit
δ 0 (Q, a) =
[
δ(q, a)
q∈Q
und
E 0 = {Q ⊆ Z | Q ∩ E 6= ∅}.
Dann gilt für alle Wörter x = x1 · · · xn ∈ Σ∗ :
x ∈ L(M ) ⇔ ∃ q0 ∈ Q0 ∃ q1 , . . . , qn−1 ∈ Z ∃ qn ∈ E :
qi+1 ∈ δ(qi , xi+1 ) für i = 0, . . . , n − 1
⇔ ∃ Q 1 , . . . , Qn ⊆ Z :
δ 0 (Qi , xi+1 ) = Qi+1 und Qn ∩ E 6= ∅
⇔ x ∈ L(M 0 ).
Beispiel 10
Für den NFA M = (Z, Σ, δ, Q0 , E) aus Beispiel 7
p
0
q
1
r
2
s
0, 1, 2
ergibt die Konstruktion des vorigen Satzes den folgenden DFA M 0 (nach Entfernung aller vom Startzustand Q0 = {p} aus nicht erreichbaren Zustände):
δ0
0
1
2
Q0 = {p}
{p, q} = Q1
Q0
Q0
Q1
Q1
{p, r} = Q2
Q0
Q2
Q1
Q0
{p, s} = Q3
Q3
Q1
Q0
Q0
1.3 Reguläre Ausdrücke
7
0
1
0
{p}
1, 2
2
{p, q}
0
1
2
{p, r}
{p, s}
0
1, 2
Im obigen Beispiel wurden für die Konstruktion des DFA M 0 aus dem NFA M nur
4 der insgesamt 2kZk = 16 Zustände benötigt, da die übrigen 12 Zustände in P(Z)
nicht vom Startzustand Q0 = {p} aus erreichbar sind. Es gibt jedoch Beispiele, bei
denen alle 2kZk Zustände in P(Z) für die Konstruktion von M 0 benötigt werden (siehe
Übungen).
1.3 Reguläre Ausdrücke
Wir haben uns im letzten Abschnitt davon überzeugt, dass auch NFAs nur reguläre
Sprachen erkennen können:
REG = {L(M ) | M ist ein DFA} = {L(M ) | M ist ein NFA}.
In diesem Abschnitt werden wir eine weitere Charakterisierung der regulären Sprachen
kennen lernen:
REG ist die Klasse aller Sprachen, die sich mittels der Operationen Vereinigung, Durchschnitt, Komplement, Produkt und Sternhülle aus der leeren
Menge und den einelementigen Sprachen bilden lassen.
Tatsächlich kann hierbei sogar auf die Durchschnitts- und Komplementbildung verzichtet werden.
Definition 11 (regulärer Ausdruck)
Die Menge der regulären Ausdrücke γ (über einem Alphabet Σ) und die durch
γ dargestellte Sprache L(γ) sind induktiv wie folgt definiert:
• Die Symbole ∅ und sind reguläre Ausdrücke, welche die Sprachen
L(∅) = ∅ und L() = {ε} beschreiben.
• Jedes Zeichen a ∈ Σ ist ein regulärer Ausdruck und beschreibt die Sprache
L(a) = {a}.
• Mit α und β sind auch αβ, (α|β), (α)∗ reguläre Ausdrücke, die die Sprachen L(αβ) = L(α)L(β), L(α|β) = L(α) ∪ L(β) und L((α)∗ ) = L(α)∗
beschreiben.
8
1 Reguläre Sprachen
Beispiel 12
Über Σ = {0, 1} sind , (0|1)∗ 00 und (0|∅1) reguläre Ausdrücke, die die Sprachen {ε}, {x00 | x ∈ Σ∗ } und {0} beschreiben.
Da die beiden regulären Ausdrücke γ ∗ γ und γγ ∗ die Sprache L(γ)+ beschreiben, soll
γ + als Abkürzung für die regulären Ausdrücke γ ∗ γ und γγ ∗ verwendet werden.
Satz 13
REG = {L(γ) | γ ist ein regulärer Ausdruck}.
Beweis: Die Inklusion von rechts nach links folgt aus den Beobachtungen 1 bis 3,
zusammen mit Satz 9. Für die Gegenrichtung konstruieren wir zu einem DFA M einen
regulären Ausdruck γ mit L(γ) = L(M ). Sei also M = (Z, Σ, δ, q0 , E) ein DFA,
wobei wir annehmen können, dass Z = {1, . . . , l} und q0 = 1 ist. Dann lässt sich
L(M ) als Vereinigung
[
L1,q
L(M ) =
q∈E
von Sprachen der Form
Lp,q = {x ∈ Σ∗ | δ̂(p, x) = q}
darstellen, wobei δ̂(p, x) denjenigen Zustand bezeichnet, in dem sich M nach Lesen
von x befindet, wenn M im Zustand p gestartet wird. Induktive Definition von δ̂:
δ̂(p, ε) = p,
δ̂(p, xa) = δ(δ̂(p, x), a).
Aufgrund obiger Darstellung von L(M ) reicht es zu zeigen, dass die Sprachen L p,q
durch reguläre Ausdrücke beschreibbar sind. Hierzu betrachten wir die Sprachen
Lrp,q = {x ∈ Σ∗ | δ̂(p, x) = q und für i = 1, . . . , n − 1 gilt δ̂(p, x1 · · · xi ) ≤ r}.
Wegen Llp,q = Lp,q reicht es, reguläre Ausdrücke für die Sprachen Lrp,q anzugeben. Im
Fall r = 0 enthält
(
{a ∈ Σ | δ(p, a) = q} ∪ {ε}, p = q,
0
Lp,q =
{a ∈ Σ | δ(p, a) = q},
sonst
nur Buchstaben (und eventuell das leere Wort) und ist somit leicht durch einen regulären
Ausdruck beschreibbar. Nehmen wir nun an, dass die Sprachen L rp,q durch reguläre
r
Ausdrücke γp,q
beschreibbar sind, so folgt wegen
Lr+1
p,q
= Lrp,q ∪ Lrp,r+1 (Lrr+1,r+1 )∗ Lrr+1,q
r
r
r
r
= L(γp,q
|γp,r+1
(γr+1,r+1
)∗ γr+1,q
)
induktiv, dass auch die Sprachen Lr+1
p,q durch reguläre Ausdrücke beschreibbar sind.
Beispiel 14
Die von dem DFA
1.4 Das Pumping-Lemma
9
a
1
2
a
b
b
erkannte Sprache ist L21,2 = L(b∗ a(b|ab∗ a)∗ ). Die folgende Tabelle zeigt die
r
regulären Ausdrücke γp,q
, p, q ∈ {1, 2} und r ∈ {0, 1, 2}, soweit sie zur Bildung
2
von γ1,2 benötigt werden.
r
0
p, q
1, 1
1, 2
|b
a
2, 1
2, 2
a
|b
∗
1
-
2
-
a|(|b)(|b) a
|
{z
}
b∗ a
b∗ a|b∗ a(|b|ab∗ a)∗ (|b|ab∗ a)
|
{z
}
b∗ a(b|ab∗ a)∗
-
(|b)|a(|b)∗ a
|
{z
}
|b|ab∗ a
-
1.4 Das Pumping-Lemma
Wie kann man von einer Sprache nachweisen, dass sie nicht regulär ist? Eine Möglichkeit besteht darin, die Kontraposition folgender Aussage anzuwenden.
Satz 15 (Pumping-Lemma für reguläre Sprachen)
Zu jeder regulären Sprache L gibt es eine Zahl l, so dass sich alle Wörter x ∈ L
mit |x| ≥ l in x = uvw zerlegen lassen mit
1. v 6= ε,
2. |uv| ≤ l und
3. uv i w ∈ L für alle i ≥ 0.
Das kleinste solche l wird auch Pumping-Zahl von L genannt.
Beweis: Sei M = (Z, Σ, δ, q0 , E) ein DFA mit L(M ) = L und sei l die Anzahl der
Zustände von M . Setzen wir nun M auf eine Eingabe x = x1 · · · xn ∈ L der Länge
n ≥ l an, so muss M nach spätestens l Schritten einen Zustand q ∈ Z zum zweiten
Mal annehmen:
∃ 0 ≤ j < k ≤ l : δ̂(q0 , x1 · · · xj ) = δ̂(q0 , x1 · · · xk ) = q.
10
1 Reguläre Sprachen
Wählen wir nun u = x1 · · · xj , v = xj+1 · · · xk und w = xk+1 · · · xn , so ist |v| =
k − j ≥ 1 und |uv| = k ≤ l. Ausserdem gilt uv i w ∈ L für i ≥ 0, da wegen δ̂(q, v) = q
δ̂(q0 , uv i w) = δ̂(δ̂(δ̂(q0 , u), v i ), w) = δ̂(δ̂(q, v i ), w) = δ̂(q0 , x) ∈ E
| {z }
| {z }
q
ist.
q
Um also L 6∈ REG nachzuweisen, genügt es, für jede Zahl l ein Wort x ∈ L der
Länge |x| ≥ l anzugeben, so dass für jede Zerlegung von x in drei Teilwörter u, v, w
mindestens eine der drei in Satz 15 aufgeführten Eigenschaften verletzt ist.
Beispiel 16
Jede endliche Sprache L lässt sich „pumpen“. Wie man leicht sieht, genügt es im
Fall L 6= ∅, die um Eins erhöhte Maximallänge
l = max{|x| + 1 | x ∈ L}
aller in L enthaltenen Wörter als Pumping-Zahl zu wählen.
Beispiel 17
Die Sprache
L = {aj bj | j ≥ 0}
ist nicht regulär, da sich für jedes l ≥ 0 ein Wort x = al bl in L der Länge
|x| = 2l ≥ l finden lässt, das offensichtlich nicht in Teilwörter u, v, w mit v 6= ε
und uv 2 w ∈ L zerlegbar ist.
Beispiel 18
Die Sprache
2
L = {aj | j ≥ 0}
ist nicht regulär. Andernfalls müsste es nämlich eine Zahl l geben, so dass jede
Quadratzahl j 2 ≥ l als Summe von natürlichen Zahlen u + v + w darstellbar
ist mit der Eigenschaft, dass v ≥ 1 und u + v ≤ l ist und für jedes i ≥ 0 auch
u + iv + w eine Quadratzahl ist. Insbesondere müsste also u + 2v + w eine
Quadratzahl sein, was wegen
j 2 = u + v + w < u + 2v + w < j 2 + l + 1 = (j + 1)2 − (2j − l)
für alle j ≥ l/2 ausgeschlossen ist.
Beispiel 19
Die Sprache
L = {ap | p prim }
ist nicht regulär. Andernfalls ließe sich jede Primzahl p einer bestimmten Mindestgröße l als Summe von natürlichen Zahlen u + v + w darstellen, so dass
v ≥ 1, u + v ≤ l und für alle i ≥ 0 auch u + iv + w prim ist. Insbesondere
müsste also u + (u + w)v + w eine Primzahl sein, was wegen
u + (u + w)v + w = (u + w)(v + 1) = (p − v) (v + 1)
| {z } | {z }
≥p−l
für alle Primzahlen p ≥ l + 2 ausgeschlossen ist.
≥2
1.5 Minimierung von DFAs
11
Bemerkung 20
Mit dem Pumping-Lemma können nicht alle Sprachen L 6∈ REG als nicht regulär nachgewiesen werden, da seine Umkehrung falsch ist. Beispielsweise hat die
Sprache
L = {ai bj ck | i = 0 oder j = k}
die Pumping-Zahl 1 (jedes Wort x ∈ L mit Ausnahme von ε kann also „gepumpt“
werden), obwohl L nicht regulär ist (siehe Übungen).
1.5 Minimierung von DFAs
Wie können wir feststellen, ob ein DFA M = (Z, Σ, δ, q0 , E) unnötige Zustände enthält? Zunächst einmal können alle Zustände entfernt werden, die nicht vom Startzustand
aus erreichbar sind. Im folgenden gehen wir daher davon aus, dass M keine unerreichbaren Zustände enthält. Offensichtlich können zwei Zustände q und p zu einem Zustand
verschmolzen werden (kurz: q ∼ p), wenn M von q und von p ausgehend jeweils dieselben Wörter akzeptiert. Bezeichnen wir den DFA (Z, Σ, δ, q, E) mit Mq und L(Mq )
mit Lq , so sind q und p genau dann verschmelzbar, wenn Lq = Lp ist. Für q ∈ Z sei
q̃ = {p ∈ Z | Lq = Lp }
die durch q repräsentierte Äquivalenzklasse und für eine Teilmenge Q ⊆ Z sei Q̃ =
{q̃ | q ∈ Q}.
Satz 21
Sei M = (Z, Σ, δ, q0 , E) ein DFA für L = L(M ). Dann ist auch M̃ =
(Z̃, Σ, δ 0 , q̃0 , Ẽ) mit
^
δ 0 (q̃, a) = δ(q,
a)
ein DFA für L, welcher zudem eine minimale Anzahl von Zuständen besitzt.
Beweis: Zuerst müssen wir zeigen, dass der Wert von δ 0 (q̃, a) nicht von der Wahl des
^
^
Repräsentanten q abhängt. Hierzu zeigen wir, dass δ(q,
a) 6= δ(p,
a) nur im Fall p̃ 6= q̃
gelten kann:
Lδ(q,a) 6= Lδ(p,a)
⇔ ∃x ∈ Σ∗ : x ∈ Lδ(q,a) ∆Lδ(p,a)
⇔ ∃x ∈ Σ∗ : ax ∈ Lq ∆Lp
⇒ Lq 6= Lp .
Als nächstes zeigen wir, dass L(M̃) = L(M ) ist. Sei x = x1 · · · xn eine beliebige Eingabe und seien qi = δ̂(q0 , x1 · · · xi ) die von M beim Abarbeiten von x durchlaufenen
Zustände. Dann durchläuft M̃ offensichtlich die Zustände q̃0 , q̃1 , · · · , q̃n . Da aber qn
genau dann zu E gehört, wenn q̃n ∈ Ẽ ist, folgt L(M̃ ) = L(M ) = L.
12
1 Reguläre Sprachen
Es bleibt zu zeigen, dass die Anzahl k = kZ̃k der Zustände von M̃ minimal ist. Dies ist
sicher dann der Fall, wenn bereits M minimal ist. Daher reicht es zu zeigen, dass k nur
von L (und nicht von M ) abhängt. Für x ∈ Σ∗ sei Lx die Sprache {y ∈ Σ∗ | xy ∈ L}.
Wegen Lx = Lδ̂(q0 ,x) folgt {Lx | x ∈ Σ∗ } ⊆ {Lq | q ∈ Z}. Da nach Voraussetzung
jeder Zustand q ∈ Z von q0 aus erreichbar ist, gilt auch die umgekehrte Inklusion, und
somit hängt
k = k{q̃ | q ∈ Z}k = k{Lq | q ∈ Z}k = k{Lx | x ∈ Σ∗ }k
tatsächlich nur von L ab.
Bei der Konstruktion von M̃ aus M kann man so verfahren, dass man beginnend mit
der Menge
V0 = {{q, p} | q ∈ E, p 6∈ E}
die Menge Vi+1 dadurch bildet, dass man zu Vi alle Paare {q, p} hinzufügt, für die eines
der Paare {δ(q, a), δ(p, a)}, a ∈ Σ, bereits zu Vi gehört:
Vi+1 := Vi ∪ {{q, p} | ∃a ∈ Σ : {δ(q, a), δ(p, a)} ∈ Vi }.
Sobald sich auf diese Weise keine weiteren Paare zu Vi mehr hinzufügen lassen (d.h. es
gilt Vi+1 = Vi ), enthält Vi alle Paare von unverschmelzbaren Zuständen (siehe Übungen),
Vi = {{q, p} | q 6∼ p}.
Daher kann nun M̃ durch Verschmelzen aller Zustände q, p von M mit {q, p} 6∈ Vi
gebildet werden.
Beispiel 22
Betrachte den DFA
a
b
2
3
b
a
4
a
a
b
a
b
1
6
b
b
5
a
Dann enthält V0 die Paare {1, 3}, {2, 3}, {4, 3}, {5, 3}, {1, 6}, {2, 6}, {4, 6},
{5, 6}. Wegen
{1, 4} {1, 5} {2, 4} {2, 5}
{q, p}
{δ(q, a), δ(p, a)} {2, 3} {2, 6} {1, 3} {1, 6}
1.5 Minimierung von DFAs
13
enthält V1 zusätzlich die Paare {1, 4}, {1, 5}, {2, 4}, {2, 5}. Da jedoch die verbliebenen Paare {1, 2}, {4, 5}, {3, 6} wegen
{q, p}
{1, 2} {4, 5} {3, 6}
{δ(q, a), δ(p, a)} {1, 2} {3, 6} {4, 5}
{δ(q, b), δ(p, b)} {3, 6} {4, 5} {1, 2}
nicht zu V1 hinzugefügt werden können, ist V2 = V1 und die entsprechenden
Zustände können verschmolzen werden:
b
a
1
3
4
a
b
a
b
Aus obigem Beweis ist ersichtlich, dass ein Minimalautomat auch direkt aus einer regulären Sprache L gewonnen werden kann: Da zwei Eingaben x und y den DFA M̃
genau dann in denselben Zustand überführen, wenn Lx = Ly ist, können wir die
Zustände von M̃ auch mit den Sprachen Lx benennen. Wir erhalten damit den DFA
ML = (Z, Σ, δ, Lε , E) mit
Z
= {Lx | x ∈ Σ∗ },
E
= {Lx | x ∈ L} und
δ(Lx , a) = Lxa ,
welcher isomorph zu M̃ ist (also bis auf die Benennung der Zustände mit diesem identisch ist).
Beispiel 23
Sei L = {x1 · · · xn | xi ∈ {0, 1} für i = 1, . . . n und xn−1 = 0}. Dann gilt

L,



L ∪ {0, 1},
Lx =
L ∪ {ε, 0, 1},



L ∪ {ε},
x ∈ {ε, 1} oder x endet mit 11,
x = 0 oder x endet mit 10,
x endet mit 00,
x endet mit 01.
Somit erhalten wir den folgenden Minimalautomaten ML :
L0
0
0
Lε
1
1
0
1
L01
L00
1
0
14
1 Reguläre Sprachen
Im Fall, dass M bereits ein Minimalautomat ist, sind alle Zustände von M̃ von der
Form q̃ = {q}, so dass M isomorph zu M̃ und damit auch isomorph zu ML ist. Dies
zeigt, dass alle Minimalautomaten für eine Sprache isomorph sind.
Häufig werden auch die Äquivalenzklassen [x] = {y | x RL y} der durch
x RL y ⇔ L x = L y
definierten Relation RL anstelle der Sprachen Lx zur Benennung der Zustände des
Minimalautomaten verwendet. Dies führt auf den so genannten Äquivalenzklassenautomaten (Z, Σ, δ, [ε], E) mit
Z
E
δ([x], a)
= {[x] | x ∈ Σ∗ },
= {[x] | x ∈ L} und
= [xa].
Schließlich sei noch angemerkt, dass sich aus obigem Beweis eine weitere Charakterisierung der regulären Sprachen ergibt: Eine Sprache L ⊆ Σ∗ ist genau dann regulär,
wenn die Relation RL endlich viele verschiedene Äquivalenzklassen [x] hat (man sagt
auch: RL hat endlichen Index). Formal:
L ∈ REG ⇔ k{[x] | x ∈ Σ∗ }k < ∞.
Dies ist offensichtlich genau dann der Fall, wenn die Sprachklasse {L x | x ∈ Σ∗ }
endlich ist.
Beispiel 24
Sei L = {ai bi | i ≥ 0}. Wegen bi ∈ Lai ∆Laj für i 6= j hat RL unendlichen
Index, d.h. L ist nicht regulär. (Dies hatten wir bereits mit Hilfe des PumpingLemmas gezeigt.)
1.6 Grammatiken
Eine beliebte Methode, Sprachen zu beschreiben, sind Grammatiken. Implizit haben
wir hiervon bei der Definition der regulären Ausdrücke Gebrauch gemacht.
Beispiel 25
Sei Σ ein Alphabet. Dann lassen sich alle regulären Ausdrücke über Σ unter
Anwendung der Regeln
R
R
→ ∅, → a, a ∈ Σ
R
→ RR, (R|R), (R)∗
aus dem Symbol R erzeugen.
1.6 Grammatiken
15
Definition 26 (Grammatik)
Eine Grammatik ist ein 4-Tupel G = (V, Σ, P, S), wobei
• V eine endliche Menge von Variablen (auch Nichtterminalsymbole genannt),
• Σ das Terminalalphabet,
• P ⊆ (V ∪ Σ)+ × (V ∪ Σ)∗ eine endliche Menge von Regeln (oder Produktionen) und
• S ∈ V die Startvariable ist.
Für (u, v) ∈ P schreiben wir auch kurz u →G v bzw. u → v, wenn die benutzte
Grammatik aus dem Kontext ersichtlich ist. Durch G ist eine Relation ⇒ G auf
(V ∪ Σ)∗ wie folgt definiert:
α ⇒G β, falls l, r, u, v ∈ (V ∪ Σ)∗ existieren mit
• α = lur,
• u →G v und
• β = lvr.
Das n-fache Produkt von ⇒G ist ⇒nG , d.h. u ⇒nG v bedeutet, es gibt u0 = u,
u1 , . . . , un−1 , un = v mit ui−1 ⇒G ui für i = 1, . . . , n. Die reflexive, transitive
Hülle von ⇒G ist ⇒∗G , d.h. u ⇒∗G v bedeutet, es gibt ein n ≥ 0 mit u ⇒nG v.
Ein Wort α ∈ (V ∪ Σ)∗ heißt Satzform, wenn S ⇒∗G α gilt. Eine Folge
(l0 , u0 , r0 ), . . . , (lm , um , rm ) (kurz: l0 u0 r0 ⇒G · · · ⇒G lm um rm )
heißt Ableitung von x (der Länge m), wenn (l0 , u0 , r0 ) = (ε, S, ε) und
lm um rm = x ist und li ui ri ⇒G li+1 ui+1 ri+1 für i = 0, . . . , m − 1 mittels
einer Regel der Form ui →G v gilt. Die durch G erzeugte Sprache ist
L(G) = {x ∈ Σ∗ | S ⇒∗G x}
Beispiel 25 (Fortsetzung)
Wir betrachten nochmals die Grammatik G = ({R}, Σ ∪ {∅, , (, ),∗ , |}, P, R),
die die Menge der regulären Ausdrücke über dem Alphabet Σ erzeugt, wobei P
die oben angegebenen Regeln enthält. Ist Σ = {0, 1}, so lässt sich der reguläre
Ausdruck (01)∗ (|∅) beispielsweise wie folgt ableiten:
R ⇒ RR ⇒ (R)∗ R ⇒ (RR)∗ R ⇒ (RR)∗ (R|R)
⇒ (0R)∗ (R|R) ⇒ (01)∗ (R|R) ⇒ (01)∗ (|R) ⇒ (01)∗ (|∅)
Man unterscheidet vier verschiedene Typen von Grammatiken.
Definition 27 (Typ einer Grammatik)
Sei G = (V, Σ, P, S) eine Grammatik.
16
1 Reguläre Sprachen
1. G heißt vom Typ 3 oder regulär, falls für alle Regeln u → v gilt: u ∈ V
und v ∈ ΣV ∪ Σ ∪ {}.
2. G heißt vom Typ 2 oder kontextfrei, falls für alle Regeln u → v gilt:
u∈V.
3. G heißt vom Typ 1 oder kontextsensitiv, falls für alle Regeln u → v gilt:
|v| ≥ |u| (mit Ausnahme der ε-Sonderregel, siehe unten).
4. Jede Grammatik ist automatisch vom Typ 0.
ε-Sonderregel: Bei einer kontextsensitiven Grammatik ist auch die Regel S → ε zugelassen. Wird hiervon Gebrauch gemacht, so darf das Startsymbol S jedoch nicht auf
der rechten Seite einer Regel vorkommen.
Die Sprechweisen „vom Typ i“ bzw. „regulär“, „kontextfrei“ und „kontextsensitiv“ werden auch auf die durch eine solche Grammatik erzeugte Sprache angewandt. (Der folgende Satz rechtfertigt dies für die regulären Sprachen, die wir bereits mit Hilfe von
DFAs definiert haben.) Die zugehörigen neuen Sprachklassen sind
CFL = {L(G) | G ist eine kontextfreie Grammatik},
(context free languages) und
CSL = {L(G) | G ist eine kontextsensitive Grammatik}
(context sensitive languages). Da die Klasse der Typ 0 Sprachen mit der Klasse der
rekursiv aufzählbaren (recursively enumerable) Sprachen übereinstimmt, bezeichnen
wir diese Sprachklasse mit
RE = {L(G) | G ist eine Grammatik}.
Wie wir noch sehen werden, bilden die Sprachklassen
REG ⊂ CFL ⊂ CSL ⊂ RE
eine Hierarchie (d.h. die Inklusionen sind echt), die so genannte Chomsky-Hierarchie.
Satz 28
REG = {L(G) | G ist eine reguläre Grammatik}.
Beweis: Sei L ∈ REG und sei M = (Z, Σ, δ, q0 , E) ein DFA mit L(M ) = L. Wir
konstruieren eine reguläre Grammatik G = (V, Σ, P, S) mit L(G) = L. Setzen wir
V
S
P
= Z,
= q0 und
= {q → ap | δ(q, a) = p} ∪ {q → ε | q ∈ E},
so gilt für alle Wörter x = x1 · · · xn ∈ Σ∗ :
x ∈ L(M ) ⇔ ∃ q1 , . . . , qn−1 ∈ Z ∃ qn ∈ E : δ(qi−1 , xi ) = qi für i = 1, . . . , n
⇔ ∃ q1 , . . . , qn ∈ V : qi−1 → xi qi für i = 1, . . . , n und qn → ε
⇔ ∃ q1 , . . . , qn ∈ V : q0 ⇒i x1 · · · xi qi für i = 1, . . . , n und qn → ε
⇔ x ∈ L(G)
1.6 Grammatiken
17
Für die entgegengesetzte Inklusion sei nun G = (V, Σ, P, S) eine reguläre Grammatik.
Dann wird die Sprache L = L(G) auch von der Grammatik G0 = (V 0 , Σ, P 0 , S) mit
V0
P0
= V ∪ {Xneu },
= {A → aXneu | A →G a} ∪ {Xneu → ε} ∪ P \ (V × Σ)
erzeugt. Da G0 keine Produktionen der Form A → a mehr enthält, können wir die
gerade beschriebene Konstruktion einer Grammatik aus einem DFA „umdrehen“, um
ausgehend von G0 einen NFA M 0 = (Z 0 , Σ, δ 0 , {S}, E 0 ) mit
Z 0 = V 0,
E 0 = {A | A →G0 ε} und
0
δ (A, a) = {B | A →G0 aB}
zu erhalten. Genau wie oben folgt nun L(M 0 ) = L(G0 ).
Beispiel 29
Der DFA
q1
0
q0
0
1
0
1
q3
1
q2
1
0
führt auf die Grammatik ({q0 , q1 , q2 , q3 }, {0, 1}, P, q0) mit
P : q0
q1
q2
q3
→ 1q0 , 0q1 ,
→ 0q2 , 1q3 ,
→ 0q2 , 1q3 , ε,
→ 0q1 , 1q0 , ε.
Umgekehrt führt die Grammatik G = ({A, B, C}, {a, b}, P, A) mit
P : A → aB, bC, ε,
B → aC, bA, b,
C → aA, bB, a
über die Grammatik G0 = ({A, B, C, D}, {a, b}, P 0, A) mit
P 0 : A → aB, bC, ε,
B → aC, bA, bD,
C → aA, bB, aD,
D→ε
auf den NFA
B
b
a
a
A
b
b
a
b
C
a
D
2 Kontextfreie Sprachen
2.1 Äquivalenz von kontextfreien Grammatiken
und Kellerautomaten
Dass ein DFA die Sprache L = {an bn | n ≥ 0} nicht erkennen kann, liegt an der
Beschränkung seines Speichervermögens durch eine Konstante (die zwar von L aber
nicht von der Eingabe abhängen darf). Um L erkennen zu können, reicht bereits ein so
genannter Kellerspeicher (engl. stack, pushdown memory) aus, der nur auf die höchste
belegte Speicheradresse zugreifen darf.
x1
...
xi
Steuereinheit
...
xn
A
B
C
#
Definition 30 (Kellerautomat)
Ein Kellerautomat (kurz: PDA; pushdown automaton) wird durch ein 6-Tupel
M = (Z, Σ, Γ, δ, q0 , #) beschrieben, wobei
• Z, Σ und q0 wie bei einem DFA,
• Γ das Kelleralphabet,
• δ : Z × (Σ ∪ {ε}) × Γ → Pe (Z × Γ∗ ) die Überführungsfunktion und
• # ∈ Γ das Kelleranfangszeichen ist.
Mit Pe (M ) bezeichnen wir hierbei die Menge aller endlichen Teilmengen von
M,
Pe (M ) = {A ⊆ M | A ist endlich}.
2.1 Äquivalenz von kontextfreien Grammatiken und Kellerautomaten
19
Wenn q der momentane Zustand, A das oberste Kellerzeichen und u ∈ Σ das nächste
Eingabezeichen (bzw. u = ε) ist, so kann M im Fall (p, B1 · · · Bk ) ∈ δ(q, u, A)
• in den Zustand p wechseln,
• den Lesekopf auf dem Eingabeband um |u| Positionen vorrücken und
• das Zeichen A im Keller durch die Zeichenfolge B1 · · · Bk ersetzen.
Hierfür schreiben wir auch kurz quA → pB1 · · · Bk . Da im Fall u = ε kein Eingabezeichen gelesen wird, spricht man auch von einem spontanen Übergang (oder ε-Übergang).
Eine Konfiguration wird durch ein Tripel
K = (q, xi · · · xn , A1 · · · Al ) ∈ Z × Σ∗ × Γ∗
beschrieben und besagt, dass q der momentane Zustand, x i · · · xn der ungelesene Rest
der Eingabe und A1 · · · Al der aktuelle Kellerinhalt ist (oberstes Kellerzeichen ist A1 ).
Im Fall quA1 → pB1 · · · Bk mit u ∈ {ε, xi } heißt
K 0 = (p, xj · · · xn , B1 · · · Bk A2 · · · Al )
Folgekonfiguration von K (kurz: K ` K 0 ), wenn j = i + |u| ist.
Die reflexive, transitive Hülle von ` bezeichnen wir wie üblich mit `∗ . Die von M
akzeptierte oder erkannte Sprache ist dann
L(M ) = {x ∈ Σ∗ | ∃ p ∈ Z : (q0 , x, #) `∗ (p, ε, ε)}.
Ein Wort x wird also genau dann von M akzeptiert, wenn es eine Rechnung (Folge von
Konfigurationen) von M bei Eingabe x gibt, bei der das gesamte Wort gelesen und der
Keller geleert wird. (Man beachte, dass bei leerem Keller kein weiterer Übergang mehr
möglich ist.)
Beispiel 31
Der PDA M = ({q0 , q1 }, {a, b}, {A, #}, δ, q0, #) mit
δ:
q0 ε#
q0 a#
q0 aA
q0 bA
q1 bA
→
→
→
→
→
q1
q0 A
q0 AA
q1
q1
(1)
(2)
(3)
(4)
(5)
erkennt die Sprache L(M ) = {an bn | n ≥ 0}. Das Wort x = aabb wird beispielsweise durch folgende Rechnung akzeptiert:
(q0 , aabb, #) ` (q0 , abb, A) ` (q0 , bb, AA) ` (q1 , b, A) ` (q1 , ε, ε).
(2)
(3)
(4)
Allgemein kann ein Wort x = an bn wie folgt akzeptiert werden:
n = 0: (q0 , ε, #) ` (q1 , ε, ε).
(1)
(5)
20
2 Kontextfreie Sprachen
n ≥ 1:
(q0 , an bn , #)
`
(2)
`
(4)
(q0 , an−1 bn , A) ` ∗ (q0 , bn , An )
(3)
(q1 , b
n−1
,A
n−1
) ` ∗ (q1 , ε, ε).
(5)
Dies zeigt {an bn | n ≥ 0} ⊆ L(M ). Ist umgekehrt x = x1 . . . xl ∈ L(M ), so
gibt es eine akzeptierende Rechnung
(q0 , x, #) `∗ (p, ε, ε)
mit p ∈ {q0 , q1 }. Ausgehend von (q0 , x, #) sind nur die Anweisungen (1) und
(2) anwendbar. Im ersten Fall muss x = ε sein, da nach Ausführung von (1) der
Keller leer ist.
Im zweiten Fall muss die Rechnung ebenfalls im Zustand p = q1 enden, da der
Keller nur bei Übergang in den Zustand q1 geleert werden kann. Da kein Wechsel
von q1 nach q0 möglich ist, findet genau ein Zustandswechsel (mittels (4)) statt.
Bis dahin können nur a’s gelesen werden und für jedes gelesene a wird ein A
eingekellert. Ist n die Anzahl der gelesenen a’s, so muss die Rechnung bis dahin
also wie folgt aussehen:
(q0 , x1 . . . xl , #) ` (q0 , x2 . . . xl , A)
(2)
` n−1 (q0 , xn+1 · · · xl , An )
(3)
` (q1 , xn+2 · · · xl , An−1 )
(4)
mit x1 = · · · = xn = a und xn+1 = b. Um den Keller leeren zu können, muss
M jetzt noch genau n − 1 weitere b’s lesen. Daraus ergibt sich, dass l = 2n und
xn+2 = · · · = x2n = b ist, x also auch in diesem Fall die Form an bn hat.
Als nächstes wollen wir zeigen, dass eine Sprache genau dann kontextfrei ist, wenn sie
von einem PDA erkannt wird.
Satz 32
CFL = {L(M ) | M ist ein PDA}.
Beweis: Wir zeigen zuerst, dass jede von einer kontextfreien Grammatik G =
(V, Σ, P, S) erzeugte Sprache L auch von einem PDA erkannt wird. Hierzu konstruieren wir den PDA M = ({q}, Σ, V ∪ Σ, δ, q, S), wobei
δ(q, ε, A)
= {(q, α) | A →G α} für jedes A ∈ V und
δ(q, a, a)
= {(q, ε)} für jedes a ∈ Σ ist.
2.1 Äquivalenz von kontextfreien Grammatiken und Kellerautomaten
21
Dann gilt
x ∈ L(G) ⇔ es gibt eine Linksableitung
S ⇒ α0 ⇒∗ x1 α1 ⇒∗ x1 x2 α2 ⇒∗ · · · ⇒∗ x1 · · · xn−1 αn−1 ⇒∗ x
⇔ es gibt eine Konfigurationenfolge
(q, x, S) ` (q, x, α0 ) `∗ (q, x2 · · · xn , α1 ) `∗ (q, x3 · · · xn , α2 ) `∗
· · · `∗ (q, xn , αn ) `∗ (q, ε, ε)
⇔ x ∈ L(M ).
Für die entgegengesetzte Inklusion sei M = (Z, Σ, Γ, δ, q0 , #) ein PDA und sei L =
L(M ). Wir konstruieren eine kontextfreie Grammatik G = (V, Σ, P, S) mit L(G) = L:
V = {S} ∪ {XqAp | q, p ∈ Z, A ∈ Γ},
P = {S → Xq0 #p | p ∈ Z} ∪ {Xp0 Apk+1 → uXp1 B1 p2 Xp2 B2 p3 · · · Xpk Bk pk+1 |
(p1 , B1 · · · Bk ) ∈ δ(p0 , u, A) für ein k ≥ 0 und beliebige p2 , . . . , pk+1 ∈ Z}.
Die Gleichheit L(G) = L(M ) folgt nun unmittelbar aus der Äquivalenz
XqAp ⇒m x ⇐⇒ (q, x, A) `m (p, ε, ε),
deren Beweis wir gleich nachholen:
x ∈ L(M ) ⇔ (q0 , x, #) `∗ (p, ε, ε) für ein p ∈ Z
⇔ S ⇒ Xq0 #p ⇒∗ x
⇔ x ∈ L(G).
Beweis der Äquivalenz. Wir führen den Beweis durch Induktion über m:
m = 0: Da weder XqAp ⇒0 x (also XqAp = x) noch (q, x, A) `0 (p, ε, ε) (also
(q, x, A) = (p, ε, ε)) gilt, sind beide Bedingungen falsch, also ist die Äquivalenz
erfüllt.
m ; m + 1: Seien q, p ∈ Z, x ∈ Σ∗ und A ∈ Γ gegeben. Wir müssen zeigen, dass
genau dann eine (Links-)Ableitung XqAp ⇒m+1 x existiert, wenn es eine Rechnung (q, x, A) `m+1 (p, ε, ε) gibt.
Sei also XqAp = α0 ⇒ α1 ⇒ · · · ⇒ αm+1 = x eine Linksableitung von x aus
XqAp der Länge m + 1. Da α1 aus XqAp durch Anwendung einer Regel aus P
entsteht, hat α1 die Form α1 = uXp1 B1 p2 · · · Xpk Bk pk+1 für ein k ≥ 0, wobei u ∈
Σ ∪ {ε}, (p1 , B1 · · · Bk ) ∈ δ(q, u, A), pk+1 = p und p1 , . . . , pk ∈ Z sind. Das
Wort x muss sich daher in k + 1 Teilwörter x = x0 x1 · · · xk mit x0 = u zerlegen
lassen, so dass jedes Teilwort xi (i = 1, . . . , k) in genau mi Ableitungsschritten
aus der Variablen Xpi Bi pi+1 ableitbar ist, wobei m1 + · · · + mk = m ist. Nach
Induktionsvoraussetzung gibt es also Rechnungen
(pi , xi , Bi ) `mi (pi+1 , ε, ε), i = 1, . . . , k
22
2 Kontextfreie Sprachen
aus denen wir die gesuchte Rechnung der Länge m + 1 wie folgt erhalten:
(q, x, A)
`
` m1
..
.
(p1 , x1 · · · xk , B1 · · · Bk )
(p2 , x2 · · · xk , B2 · · · Bk )
`mk−1
` mk
(pk , xk , Bk )
(p, ε, ε).
Ist nun umgekehrt (q, x, A) `m+1 (p, ε, ε) eine Rechnung der Länge m + 1, so
sei quA → p1 B1 · · · Bk die Anweisung, die im ersten Rechenschritt befolgt wird:
(q, x, A) ` (p1 , x0 , B1 · · · Bk ) `m (p, ε, ε),
wobei x = ux0 ist. Für i = 2, . . . , k sei pi der Zustand, den M annimmt, wenn Bi
oberstes Kellerzeichen wird und xi sei das Teilwort von x0 , das M zwischen den
Besuchen der Zustände pi und pi+1 verarbeitet (wobei pk+1 = p ist). Dann enthält
P einerseits die Regel XqApk+1 → uXp1 B1 p2 · · · Xpk Bk pk+1 und andererseits gilt
(pi , xi , Bi ) `mi (pi+1 , ε, ε), i = 1, . . . , k
für Zahlen mi ≤ m mit m1 + · · · + mk = m. Nach Induktionsvoraussetzung gibt
es daher Ableitungen
Xpi Bi pi+1 ⇒mi xi , i = 1, . . . , k
die wir zu der gesuchten Ableitung von x zusammensetzen können:
XqApk+1
⇒
⇒ m1
..
.
uXp1 B1 p2 · · · Xpk Bk pk+1
ux1 Xp2 B2 p3 · · · Xpk Bk pk+1
⇒mk−1
⇒ mk
ux1 · · · xk−1 Xpk Bk pk+1
ux1 · · · xk = x.
Beispiel 33
Sei G = ({S}, {a}, P, S) mit
P : S → SSS
S→a
(1)
(2)
die Grammatik aus dem vorigen Beispiel. Der zugehörige Kellerautomat besitzt
dann folgende Anweisungen:
δ:
qεS
qεS
qaa
→ qSSS
→ qa
→ qε
(10 )
(20 )
(3)
Der Linksableitung
S ⇒ SSS ⇒ aSS ⇒ aaS ⇒ aaa
(1)
(2)
(2)
(2)
2.2 Chomsky-Normalform Grammatiken
23
entspricht dann die Rechnung
(q, aaa, S) `0 (q, aaa, SSS) `0 (q, aaa, aSS) ` (q, aa, SS)
(1 )
(2 )
(3)
`0 (q, aa, aS) ` (q, a, S) `0 (q, a, a) ` (q, ε, ε).
(2 )
(3)
(2 )
(3)
Beispiel 34
Ist umgekehrt M = ({q0 , q1 }, {a, b}, {A, #}, δ, q0, #) mit
δ:
q0 ε#
q0 a#
q0 aA
q0 bA
q1 bA
→
→
→
→
→
q1
q0 A
q0 AA
q1
q1
(1)
(2)
(3)
(4)
(5)
der PDA aus Beispiel 31, so erhalten wir daraus die Grammatik G = (V, Σ, P, S)
mit
V = {S, Xq0 #q0 , Xq0 #q1 , Xq1 #q0 , Xq1 #q1 , Xq0 Aq0 , Xq0 Aq1 , Xq1 Aq0 , Xq1 Aq1 }
und
P : S → Xq0 #q0 , Xq0 #q1
Xq0 #q1 → ε
Xq0 #q0 → aXq0 Aq0
Xq0 #q1 → aXq0 Aq1
Xq0 Aq0 → aXq0 Aq0 Xq0 Aq0 , aXq0 Aq1 Xq1 Aq0
Xq0 Aq1 → aXq0 Aq0 Xq0 Aq1 , aXq0 Aq1 Xq1 Aq1
Xq0 Aq1 → b
Xq1 Aq1 → b
(0, 00 )
(10 )
(20 )
(200 )
(30 , 300 )
(3000 , 30000 )
(40 )
(50 ).
Der Rechnung
(q0 , aabb, #) ` (q0 , abb, A) ` (q0 , bb, AA) ` (q1 , b, A) ` (q1 , ε, ε).
(2)
(3)
(4)
(5)
entspricht dann die Linksableitung
aaXq0 Aq1 Xq1 Aq1 ⇒0 aabXq1 Aq1 ⇒0 aabb.
aXq0 Aq1 ⇒
S ⇒0 Xq0 #q1 ⇒
0000
00
(0 )
(2 )
(3
)
(4 )
(5 )
2.2 Chomsky-Normalform Grammatiken
Grammatiken in Chomsky-Normalform bilden einerseits die Basis für eine effiziente
Lösung des Entscheidungsproblems für kontextfreie Sprachen. daneben ermöglichen
sie auch den Beweis des Pumping-Lemmas (für kontextfreie Sprachen), mit dem sich
viele Sprachen als nicht kontextfrei nachweisen lassen.
24
2 Kontextfreie Sprachen
Definition 35 (Chomsky-Normalform)
Eine kontextfreie Grammatik G = (V, Σ, P, S) ist in Chomsky-Normalform
(kurz CNF), falls alle Regeln die Form A → BC oder A → a haben.
Zuerst zeigen wir, dass ε-Produktionen (Produktionen der Form A → ε) überflüssig
sind (sofern das leere Wort nicht zur Sprache gehört).
Satz 36
Sei L ∈ CFL. Dann gibt es für die Sprache L \ {ε} eine kontextfreie Grammatik
ohne ε-Produktionen.
Beweis: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik für L.
1. Schritt: Bestimme die Menge V 0 aller Variablen A ∈ V mit A ⇒∗ ε durch folgenden Algorithmus:
1 Eingabe: G = (V, Σ, P, S)
2
V 00 ← {A ∈ V | A →G ε}
3
V0 ←∅
4
while V 0 =
6 V 00 do
5
V 0 ← V 00
6
V 00 ← V 0 ∪ {A ∈ V | ∃B1 , . . . , Bk ∈ V 0 : A →G B1 · · · Bk }
7
end
8 Ausgabe: V 0
2. Schritt: Entferne alle ε-Produktionen aus P und nehme für jede übrig gebliebene
Produktion A → α die Produktionen A → α0 hinzu, wobei α0 ∈ (V ∪ Σ)+ aus α
durch Streichen von einer oder mehreren Variablen A ∈ V 0 entsteht.
Beispiel 37
Betrachte die Grammatik G = ({S, A, B, C, D, E}, {a, b, c}, P, S) mit
P : S → aB, bA, C
A → aS, bAA
B → bS, aBB
C → ε, S, D, cC
D→E
E → abc.
1. Schritt: Berechnung von V 0 :
V0
V 00
∅
{C}
{C}
{C, S}
{C, S} {C, S}
2.2 Chomsky-Normalform Grammatiken
25
2. Schritt: Entferne die Regel C → ε und füge für A → aS die Regel A → a,
für B → bS die Regel B → b und für C → cC die Regel C → c zu P
hinzu:
P : S → aB, bA, C
A → a, aS, bAA
B → b, bS, aBB
C → c, S, D, cC
D→E
E → abc.
Korollar 38
CFL ⊆ CSL.
Beweis: Sei L ∈ CFL. Nach vorigem Satz gibt es für die Sprache L \ {ε} eine kontextfreie Grammatik G = (V, Σ, P, S) ohne ε-Produktionen. Da G dann auch kontextsensitiv ist, folgt im Fall ε 6∈ L direkt L ∈ CSL. Im Fall ε ∈ L ist G0 =
(V ∪ {S 0 }, Σ, P ∪ {S 0 → S, ε}, S 0 ) eine kontextsensitive Grammatik für L.
Der nächste Satz zeigt, dass auch auf Variablenumbenennungen (Produktionen der
Form A → B) verzichtet werden kann.
Satz 39
Für jede Sprache L ∈ CFL gibt es eine kontextfreie Grammatik ohne Variablenumbenennungen.
Beweis: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik für L.
1. Schritt: Entfernung von Zyklen.
Falls Variablen A1 , . . . , Ak ∈ V existieren mit A1 → A2 → · · · → Ak →
A1 , so entferne diese Regeln aus P und ersetze alle übrigen Vorkommen dieser
Variablen durch A1 (falls sich unter den Ai die Startvariable befindet, sei A1 die
neue Startvariable).
2. Schritt: Solange noch Regeln der Form A → B in P existieren, wähle eine solche
Regel, für die keine Variable D ∈ V existiert mit B → D. Entferne A → B aus
P und füge für jede in P vorkommende Regel B → α die Regel A → α zu P
hinzu.
Beispiel 40 (Fortsetzung von Beispiel 37)
1. Schritt: Entfernung des Zyklus’ S → C → S:
Entferne die beiden Regeln S → C und C → S und ersetze alle Vorkommen von C durch S:
P : S → c, D, aB, bA, cS
A → a, aS, bAA
B → b, bS, aBB
D→E
E → abc.
26
2 Kontextfreie Sprachen
2. Schritt: Entferne die Regel D → E und füge für die Regel E → abc die Regel
D → abc hinzu. Entferne dann auch die Regel S → D und füge wegen
D → abc die neue Regel S → abc hinzu (da die Variablen D und E nun
nicht mehr auf der rechten Seite einer Regel vorkommen, können wir die
beiden Regeln D → abc und E → abc weglassen):
P : S → c, abc, aB, bA, cS
A → a, aS, bAA
B → b, bS, aBB.
Nun ist es nicht mehr schwierig, die Chomsky-Normalform herzustellen.
Satz 41
Sei L ∈ CFL. Dann gibt es für die Sprache L \ {ε} eine Grammatik in ChomskyNormalform.
Beweis: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik für L \ {ε}. Aufgrund der
beiden vorherigen Sätze können wir annehmen, dass in P keine ε-Produktionen und
keine Variablenumbenennungen vorkommen. Aus G lässt sich nun leicht eine CNFGrammatik erhalten.
1. Schritt: Füge für jedes a ∈ Σ eine neue Variable Xa zu V und eine neue Regel
Xa → a zu P hinzu. Ersetze alle Vorkommen von a, ausser wenn a alleine auf
der rechten Seite einer Regel vorkommt, durch Xa .
2. Schritt: Ersetze jede Regel der Form A → B1 · · · Bk mit k ≥ 3 durch die
k − 1 neuen Regeln A → B1 C1 , C1 → B2 C2 , . . . , Ck−3 → Bk−2 Ck−2 und
Ck−2 → Bk−1 Bk , wobei C1 , . . . , Ck−2 neue Variablen sind.
Beispiel 42 (Fortsetzung von Beispiel 40)
1. Schritt: Ersetze die Zeichen a, b und c durch Xa , Xb und Xc (ausser wenn
sie alleine auf der rechten Seite einer Regel vorkommen) und ergänze die
Regeln Xa → a, Xb → b und Xc → c.
P : S → c, Xa Xb Xc , Xa B, Xb A, Xc S
A → a, Xa S, Xb AA
B → b, Xb S, Xa BB
Xa → a; Xb → b; Xc → c.
2. Schritt: Ersetze die Regeln S → Xa Xb Xc , A → Xb AA und B → Xa BB
durch die Regeln S → Xa X 0 , X 0 → Xb Xc , A → Xb A0 , A0 → AA und
B → Xa B 0 , B 0 → BB.
P : S → c, Xa X 0 , Xa B, Xb A, Xc S
A → a, Xa S, Xb A0
B → b, Xb S, Xa B 0
Xa → a; Xb → b; Xc → c
X 0 → Xb Xc ; A0 → AA; B 0 → BB.
2.3 Syntaxbäume und Linksableitungen
27
2.3 Syntaxbäume und Linksableitungen
Es ist leicht, eine kontextfreie Grammatik für die Sprache L = {an bn | n ≥ 0} anzugeben: Es ist L = L(G) für G = ({S}, {a, b}, {S → aSb, ε}, S). Das Wort aabb lässt
sich beispielsweise wie folgt ableiten:
S ⇒ aSb ⇒ aaSbb ⇒ aabb
Diese Grammatik ist sogar eindeutig, da es für jedes Wort x ∈ L(G) genau eine Ableitung gibt. Zwar hat das Wort ab in der Grammatik G0 = ({S}, {a, b, c}, {S →
aSbS, ε}, S), welche die Sprache L(G) = L∗ erzeugt, zwei verschiedene Ableitungen
S ⇒ aSbS ⇒ aSb ⇒ ab und S ⇒ aSbS ⇒ abS ⇒ ab,
diese unterscheiden sich jedoch nur darin, in welcher Reihenfolge die Regeln zur Anwendung kommen. Im wesentlichen (d.h. bis auf die Regelanwendungsreihenfolge) hat
auch in dieser Grammatik jedes Wort eine eindeutige Ableitung.
Definition 43 (Linksableitung)
Sei G = (V, Σ, P, S) eine kontextfreie Grammatik. Eine Ableitung
S = l 0 u0 r 0 ⇒ G · · · ⇒ G lm um r m
heißt Linksableitung, wenn ui für i = 0, . . . , m − 1 die am weitesten links
stehende Variable in der Satzform αi = li ui ri ist.
Es ist klar, dass jede Ableitung von x in eindeutiger Weise in eine Linksableitung umgewandelt werden kann, indem man die Reihenfolge der Anwendungen der Produktionen
entsprechend verändert.
Beispiel 44
Sei G = ({S}, {a}, {S → SSS, a}, S). Dann ist
S ⇒ SSS ⇒ SaS ⇒ aaS ⇒ aaa
eine Ableitung des Wortes x = aaa. Die zugehörige Linksableitung ist
S ⇒ SSS ⇒ aSS ⇒ aaS ⇒ aaa.
Definition 45 (eindeutige Grammatik)
Eine kontextfreie Grammatik G heißt eindeutig, falls es für jedes Wort x ∈ L(G)
genau eine Linksableitung gibt.
(Links)ableitungen lassen sich sehr gut durch Syntaxbäume veranschaulichen.
28
2 Kontextfreie Sprachen
Definition 46 (Syntaxbaum)
Sei G = (V, Σ, P, S) eine kontextfreie Grammatik und sei
S = l 0 u0 r 0 ⇒ G · · · ⇒ G lm um r m = x
eine Ableitung von x ∈ Σ∗ . Dann ordnen wir dieser Ableitung den Syntaxbaum
Tm zu, wobei die Syntaxbäume T0 , . . . , Tm induktiv wie folgt definiert sind:
T0 : Der Baum T0 besteht aus einem einzigen Knoten, der mit S markiert ist.
Ti+1 , i ≥ 0: Sei ui → v1 · · · vk mit vj ∈ Σ ∪ V (bzw. ui → ε) die Regel, die
im i + 1-ten Ableitungsschritt li ui ri ⇒ li+1 ui+1 ri+1 angewandt wird.
Dann ensteht der Baum Ti+1 aus Ti durch Ersetzen des zur Variablen ui
gehörigen Blattes durch den Unterbaum
ui
ui
bzw.
v1
···
vk
ε
Beispiel 47
Betrachte die Grammatik G = ({S}, {a, b, c}, {S → aSbS, ε}, S) und die Ableitung
S ⇒ aSbS ⇒ aaSbSbS ⇒ aaSbbS ⇒ aabbS ⇒ aabb
Die zugehörigen Syntaxbäume sind dann
T0 : S T 1 : S
a S b S
T2 : S
T3 : S
T4 : S
T5 : S
a S b S
a S b S
a S b S
a S b S
a S b S
a S b S
a S b S
a S b S ε
ε
ε
ε
ε
ε
Verschiedene Ableitungen können durchaus auf denselben Syntaxbaum führen, sofern
sie sich lediglich in der Reihenfolge, in der die Regeln zur Anwendung kommen, unterscheiden. Unterschiedliche Linksableitungen führen dagegen immer auf unterschiedliche Syntaxbäume. Deshalb entspricht jedem Syntaxbaum eindeutig eine Linksableitung
und umgekehrt.
2.4 Der CYK-Algorithmus
29
2.4 Der CYK-Algorithmus
Als erste Anwendung der Chomsky-Normalform stellen wir einen effizienten Entscheidungsalgorithmus für kontextfreie Sprachen vor.
Satz 48
Jede kontextfreie Sprache L ist in Polynomialzeit entscheidbar.
Beweis: Sei G = (V, Σ, P, S) eine kontextfreie Grammatik in Chomsky-Normalform.
Wir verwenden den nach seinen Autoren Cocke, Younger und Kasami benannten CYKAlgorithmus. Für jede Eingabe x = x1 · · · xn sei
Vi,j = {A ∈ V | A ⇒∗ xi · · · xi+j−1 }.
die Menge aller Variablen, aus denen das mit xi beginnende Teilwort von x der Länge
j ableitbar ist. Dann gilt
x ∈ L(G) ⇔ S ∈ V1,n .
Für j = 1, . . . , n können die Mengen Vi,j , i = 1, . . . , n − j + 1, wie folgt berechnet
werden:
(
{A ∈ V | A →G xi },
j=1
Vi,j = S
1≤k≤j−1 {A ∈ V | ∃B ∈ Vi,k ∃C ∈ Vi+k,j−k : A →G BC}, j > 1.
Um Vi,j zu bestimmen, testet man also für jede Regel der Form A → BC, ob es ein
k ∈ {1, . . . , j − 1} gibt, so dass B zu Vi,k und C zu Vi+k,j−k gehört, und fügt im
positiven Fall A zu Vi,j hinzu.
Die polynomiale Zeitschranke ergibt sich aus der Tatsache, dass nur n(n+1)/2 Mengen
Vi,j ⊆ V zu bestimmen sind und hierfür jeweils nur eine konstante Anzahl von Tests
für jede Zahl k ∈ {1, . . . , j − 1} nötig sind, was auf eine Gesamtlaufzeit von O(n 3 )
führt.
Da eine gegebene kontextfreie Grammatik in Polynomialzeit in CNF gebracht werden
kann, folgt aus dem obigen Beweis, dass sogar das Wortproblem für kontextfreie
Grammatiken in Polynomialzeit entscheidbar ist: Es gibt einen Polynomialzeitalgorithmus, der für eine gegebene kontextfreie Grammatik G und ein Wort x entscheidet,
ob x zu L(G) gehört.
Beispiel 49
Für die CNF-Grammatik aus dem vorigen Beispiel mit den Produktionen
P : S → c, Xa X 0 , Xa B, Xb A, Xc S
A → a, Xa S, Xb A0
B → b, Xb S, Xa B 0
Xa → a; Xb → b; Xc → c
X 0 → Xb Xc ; A0 → AA; B 0 → BB.
30
2 Kontextfreie Sprachen
und für das Wort x = aaa berechnet der CYK-Algorithmus die folgenden Variablenmengen Vi,j :
j
xi
x1 = a
x2 = a
x3 = a
1 {A, Xa } {A, Xa } {A, Xa }
2
{A0 }
{A0 }
3
∅
Wegen S 6∈ V1,3 ist x 6∈ L(G). Dagegen gehört das Wort y = aababb zu L(G):
j
yi
y1 = a
y2 = a
y3 = b
y4 = a
y5 = b
y6 = b
1 {A, Xa } {A, Xa } {B, Xb } {A, Xa } {B, Xb } {B, Xb }
2
{A0 }
{S}
{S}
{S}
{B 0 }
3
{A}
{A}
{B}
{B}
0
0
4
{A }
{S}
{B }
5
{A}
{B}
6
{S}
2.5 Das Pumping-Lemma
Als zweite Anwendung der Chomsky-Normalform beweisen wir nun das PumpingLemma für kontextfreie Sprachen. Eine Grammatik G in Chomsky-Normalform hat die
spezielle Eigenschaft, dass jeder Knoten in einem Syntaxbaum T von G höchstens zwei
Nachfolger besitzt (d.h. T ist ein Binärbaum). Für den Beweis des Pumping-Lemmas
benötigen wir noch die folgende Abschätzung für die maximale Pfadlänge von T in
Abhängigkeit von seiner Blätterzahl.
Lemma 50 ()
In jedem Binärbaum mit ≥ 2k−1 + 1 Blättern existiert ein Pfad von der Wurzel
zu einem Blatt mit einer Länge ≥ k.
Beweis: Wir führen den Beweis durch Induktion über k.
k = 0: Ein Pfad der Länge 0 existiert in jedem Baum.
k ; k + 1: Sei B ein Binärbaum mit ≥ 2k + 1 Blättern. Da an B’s Wurzel maximal
zwei Teilbäume hängen, muss einer dieser Teilbäume ≥ 2k−1 +1 Blätter besitzen.
In diesem Teilbaum existiert nach IV ein Pfad der Länge ≥ k. Nach Hinzufügen
der Wurzel von B hat er also eine Länge von mindestens k + 1.
2.5 Das Pumping-Lemma
31
Korollar 51
Ein Binärbaum B, der nur Pfade der Länge ≤ k besitzt, hat ≤ 2k Blätter.
Beweis: Die Annahme, dass B zwar nur Pfade der Länge ≤ k, aber mindestens 2 k + 1
Blätter besitzt, führt nach obigem Lemma auf einen Widerspruch.
Satz 52 (Pumping-Lemma für kontextfreie Sprachen)
Zu jeder kontextfreien Sprache L gibt es eine Zahl l, so dass sich alle Wörter
z ∈ L mit |z| ≥ l in z = uvwxy zerlegen lassen mit
1. vx 6= ε,
2. |vwx| ≤ l und
3. uv i wxi y ∈ L für alle i ≥ 0.
Beweis: Sei L ∈ CFL. Es genügt, die Behauptung für L \ {ε} zu zeigen. Sei also
G = (V, Σ, P, S) eine CNF-Grammatik für L \ {ε}. Dann setzen wir l = 2k , wobei
k = kV k ist. Ist nun z = z1 · · · zn ∈ L mit n ≥ l, so existiert in G eine Ableitung
S = α0 ⇒ α1 · · · ⇒ αm = z.
Da G in CNF ist, werden hierbei genau n − 1 Regeln der Form A → BC und genau n
Regeln der Form A → a angewandt, die Länge der Ableitung ist also m = 2n − 1.
Dabei können wir annehmen, dass zuerst die Regeln der Form A → BC und erst
danach die Regeln der Form A → a benutzt werden. Dann hat der zu α n−1 gehörige
Syntaxbaum Tn−1 bereits n ≥ l = 2k Blätter, so dass in Tn−1 ein Pfad der Länge
≥ k existieren muss. Wählen wir in Tn−1 einen von der Wurzel ausgehenden Pfad
π maximaler Länge, so sind (mindestens) zwei der letzten k + 1 Knoten von π mit
derselben Variablen A markiert.
Bezeichnen wir die beiden Unterbäume von Tm (kein Druckfehler; wir betrachten nun
den Gesamtbaum Tm ), deren Wurzeln mit diesen Vorkommen von A markiert sind, mit
U und U 0 (wobei U 0 der kleinere von beiden sein soll), so erhalten wir die gesuchte
Zerlegung von z wie folgt:
• w ist das Teilwort von z, das von dem Teilbaum U 0 erzeugt wird.
• vwx ist das Teilwort von z = uvwxy, das von dem Teilbaum U erzeugt wird.
Da U mindestens ein Blatt mehr als U 0 besitzt, ist w ein echtes Teilwort von vwx.
Daher kann vx nicht das leere Wort sein, Bedingung (1) ist also erfüllt. Aufgrund der
Maximalität von π kann der Baum U ∗ = U ∩ Tn−1 keine Pfade der Länge > k enthalten. Die Anzahl der Blätter von U ∗ , welche mit der Anzahl der Blätter von U und
somit mit der Länge von vwx übereinstimmt, ist also ≤ 2k , womit auch Bedingung (2)
gezeigt ist. Für den Nachweis von Bedingung (3) konstruieren wir induktiv eine Folge
von Syntaxbäumen B i für die Wörter uv i wxi y:
• B 0 entsteht aus Tm , indem wir U durch U 0 ersetzen.
• B i+1 entsteht aus B i , indem wir U 0 durch U ersetzen.
32
2 Kontextfreie Sprachen
Beispiel 53
Die Sprache {an bn cn | n ≥ 0} ist nicht kontextfrei. Für eine vorgegebene Zahl
l ≥ 0 hat nämlich z = al bl cl die Länge |z| = 3l ≥ l, dieses Wort lässt sich aber
nicht pumpen: Für jede Zerlegung z = uvwxy mit vx 6= ε gehört z 0 = uv 2 wx2 y
nicht zu L. Hierzu betrachten wir zwei Fälle.
1. Fall: In vx kommt eines der drei Zeichen a, b, c nicht vor. Ist dies beispielsweise a, so gehört z 0 wegen
#a (z 0 ) = #a (z) = l = |z|/3 < |z 0 |/3,
nicht zu L.
2. Fall: Dass in vx jedes der drei Zeichen vorkommt ist wegen Bedingung (2)
ausgeschlossen.
Satz 54
Die Klasse CFL ist abgeschlossen unter
• Vereinigung
• Produkt
• Sternhülle,
aber nicht unter
• Durchschnitt und
• Komplement.
Beweis: Seien L1 , L2 ∈ CFL und seien Gi = (Vi , Σ, Pi , Si ), i = 1, 2, zugehörige
kontextfreie Grammatiken mit V1 ∩ V2 = ∅. Dann gilt für die kontextfreien Grammatiken
G3
= (V1 ∪ V2 ∪ {S}, Σ, P1 ∪ P2 ∪ {S → S1 , S2 }, S),
G4
= (V1 ∪ V2 ∪ {S}, Σ, P1 ∪ P2 ∪ {S → S1 S2 }, S) und
G5
= (V1 ∪ {S}, Σ, P1 ∪ {S → S1 S, ε}, S),
wobei S eine neue Variable ist:
L(G3 ) = L1 ∪ L2 ,
L(G4 ) = L1 L2 und
L(G5 ) = L∗1 .
Die beiden Sprachen L1 = {ai bj cj | i, j ≥ 0} und L2 = {ai bi cj | i, j ≥ 0} sind
kontextfrei, nicht jedoch L1 ∩ L2 , also ist CFL nicht unter Durchschnitt abgeschlossen.
Da CFL unter Vereinigung abgeschlossen ist, kann CFL wegen de Morgan dann auch
nicht unter Komplementbildung abgeschlossen sein.
2.6 Deterministisch kontextfreie Sprachen
33
2.6 Deterministisch kontextfreie Sprachen
Für die Informatik von besonderem Interesse sind kontextfreie Sprachen, die von einem
deterministischen Kellerautomaten erkannt werden können.
Definition 55 (deterministischer Kellerautomat)
Ein deterministischer Kellerautomat (kurz: DPDA; deterministic pushdown
automaton) wird durch ein 7-Tupel M = (Z, Σ, Γ, δ, q0 , #, E) beschrieben. Dabei sind Z, Σ, Γ, δ, q0 , # dieselben Komponenten wie bei einem PDA,
• E ⊆ Z ist die Menge der Endzustände
und δ muss zusätzlich die Bedingung
kδ(q, a, A)k + kδ(q, ε, A)k ≤ 1 für alle (q, a, A) ∈ Z × Σ × Γ
erfüllen. (Äquivalent hierzu ist, dass die Relation ` rechtseindeutig ist: Aus K `
K 0 und K ` K 00 folgt K 0 = K 00 ).
Die von M akzeptierte oder erkannte Sprache ist
L(M ) = {x ∈ Σ∗ | ∃ p ∈ E, α ∈ Γ∗ : (q0 , x, #) `∗ (p, ε, α)}.
Weiter sei
DCFL = {L(M ) | M ist ein DPDA}
(deterministic context free languages).
Beispiel 56
Der DPDA M = ({q0 , q1 , q2 }, {a, b, c}, {A, B, #}, δ, q0, #, {q2 }) mit
δ:
q0 a#
q0 b#
q0 aA
q0 bA
q0 aB
q0 bB
q0 cA
q0 cB
q1 aA
q1 bB
q1 ε#
→
→
→
→
→
→
→
→
→
→
→
q0 , A q 0 , B
−
−
q0 AA q0 AB
q0 BA q0 BB
q1 A
q1 B
q1 , #
q2
−
−
−
q1 , A q 1 , B
−
−
q1
−
−
q1
−
−
q0 A#
q0 B#
q0 AA
q0 BA
q0 AB
q0 BB
q1 A
q1 B
q1
q1
q2
oder in Tabellenform
δ
ε
a
b
c
q0 , #
−
q0 A#
q0 B#
−
q 2 , # q2 , A q 2 , B
−
−
−
−
−
−
−
−
−
−
−
−
34
2 Kontextfreie Sprachen
ist deterministisch, da jeder Tabelleneintrag höchstens eine Anweisung enthält
und im Fall eines nicht-leeren ε-Eintrages der Rest der Spalte leer ist. Offensichtlich erkennt M die Sprache L(M ) = {xcxR | x ∈ {a, b}+}.
Im Gegensatz zur Klasse CFL der kontextfreien Sprachen ist DCFL zwar nicht unter
Vereinigung, dafür jedoch unter Komplementbildung abgeschlossen. Versuchen wir allerdings, einfach End- und Nichtendzustände zu vertauschen, um einen Automaten M
für L(M ) zu erhalten (diese Methode hatten wir ja bei DFAs angewandt), so ergeben
sich folgende Schwierigkeiten:
1. Problem: Es kann sein, dass ein DPDA M eine Eingabe x 6∈ L(M ) nicht zu Ende
liest. Dann wird x von M auch nicht akzeptiert.
2. Problem: Es kann sein, dass M nach dem Lesen einer Eingabe x ∈ L(M ) einen oder
mehrere ε-Übergänge ausführt, wobei sowohl End- als auch Nichtendzustände
angenommen werden. Dann wird x von M ebenfalls akzeptiert.
Der nächste Satz zeigt, wie sich Problem 1 beseitigen lässt.
Satz 57
Jede Sprache L ∈ DCFL wird auch von einem DPDA M 0 erkannt, welcher alle
Eingaben zu Ende liest.
Beweis: Sei M = (Z, Σ, Γ, δ, q0 , #, E) ein DPDA mit L(M ) = L. Es gibt drei Möglichkeiten, warum M eine Eingabe x nicht zu Ende lesen könnte:
• M gerät in eine Konfiguration mit leerem Keller.
• M gerät in eine Konfiguration (q, xi · · · xn , Aγ), in der wegen δ(q, xi , A) =
δ(q, ε, A) = ∅ keine Anweisung ausführbar ist.
• M führt eine unendliche Folge von ε-Anweisungen aus.
Dem ersten Punkt begegnen wir, indem wir ein neues Zeichen auf dem Boden des
Kellers plazieren (siehe unten, Anweisung a). Die zweite und dritte Möglichkeit beseitigen wir durch Einführen eines Fehlerzustands q− (siehe Anweisungen b, c und d),
wobei wir im Falle einer unendlichen Folge von ε-Anweisungen, bei der auch Endzustände angenommen werden, einen Umweg über den neuen Endzustand q + vorsehen
(siehe Anweisungen e und f). Konkret transformieren wir M in den DPDA
M 0 = (Z ∪ {q00 , q+ , q− }, Σ, Γ ∪ {}, δ 0 , q00 , #, E ∪ {q+ }),
| {z }
Γ0
wobei δ 0 die folgenden Anweisungen enthält:
a) q00 ε# → q0 #,
b) qaA → q− A, für alle (q, a, A) ∈ Z × Σ × Γ0 mit A = oder δ(q, a, A) =
δ(q, ε, A) = ∅,
c) q− aA → q− A, für alle a ∈ Σ und A ∈ Γ0 ,
d) qεA → q− A, für alle q ∈ Z und A ∈ Γ, so dass ausgehend von der Konfiguration (q, ε, A) unendlich viele ε-Übergänge ausgeführt werden, ohne dass dabei ein Endzustand angenommen wird,
2.6 Deterministisch kontextfreie Sprachen
35
e) qεA → q+ A, für alle q ∈ Z und A ∈ Γ, so dass ausgehend von der Konfiguration (q, ε, A) unendlich viele ε-Übergänge ausgeführt werden, wobei mindestens einmal ein Endzustand angenommen
wird,
f) q+ εA → q− A, für alle A ∈ Γ,
g) alle Anweisungen aus δ, soweit sie nicht durch Anweisungen vom Typ d oder
e überschrieben wurden.
Aufgrund dieser Konstruktion kann man sich nun leicht davon überzeugen, dass M 0
ebenfalls L erkennt und alle Eingaben zu Ende liest.
Beispiel 58
Wenden wir diese Konstruktion auf den DPDA
M = ({q0 , q1 , q2 }, {a, b, c}, {A, B, #}, δ, q0, #, {q2 })
mit der Überführungsfunktion
δ
ε
a
b
c
q0 , #
−
q0 A#
q0 B#
−
q0 , A q 0 , B
−
−
q0 AA q0 AB
q0 BA q0 BB
q1 A
q1 B
q1 , #
q2
−
−
−
q1 , A q 1 , B
−
−
q1
−
−
q1
−
−
q 2 , # q2 , A q 2 , B
q2 #
−
−
−
−
−
−
−
−
−
−
−
an, so erhalten wir den DPDA
M 0 = ({q0 , q1 , q2 , q00 , q+ , q− }, {a, b, c}, {A, B, #, }, δ 0, q00 , #, {q2 , q+ })
mit der Überführungsfunktion
δ0
q00 , #
ε
q0 #
a
−
b
−
c
−
T yp
a
q1 , #
ε
q2
a
−
b
−
c
−
T yp
g
q− , #
ε
−
a
q− #
b
q− #
c
q− #
T yp
c
q00 , A q00 , B
−
−
−
−
−
−
−
−
−
−
q1 , A q 1 , B
−
−
q1
q− B
q− A
q1
q − A q− B
g, b
g, b
q− , A q − , B
−
−
q− A q − B
q− A q − B
q− A q − B
c
c
q00 , q0 , #
−
−
−
q0 A#
−
q0 B#
−
q− #
−
g, b
q1 , q2 , #
−
q+ #
q− −
q− −
q− −
b
e
q− , q+ , #
−
q− #
q− −
q− −
q− −
c
f
q0 , A q 0 , B
−
−
q0 AA q0 AB
q0 BA q0 BB
q1 A
q1 B
g
g
q2 , A q 2 , B
−
−
q− A
q− B
q− A
q− B
q− A
q− B
b
b
q+ , A q + , B
q− A
q− B
−
−
−
−
−
−
f
f
q0 , −
q− q− q− b
q2 , −
q− q− q− b
q+ , −
−
−
−
−
36
2 Kontextfreie Sprachen
Satz 59
Die Klasse DCFL ist unter Komplementbildung abgeschlossen.
Beweis: Sei M = (Z, Σ, Γ, δ, q0 , #, E) ein DPDA mit L(M ) = L, der alle Eingaben
zu Ende liest. Betrachte den DPDA
M 0 = (Z × {1, 2, 3}, Σ, Γ, δ 0, q00 , #, Z × {3}),
wobei
q00
=
(
(q0 , 1), q0 6∈ E,
(q0 , 2), sonst,
und δ 0 die folgenden Anweisungen enthält.
• Für alle p, q ∈ Z, A ∈ Γ und γ ∈ Γ∗ mit qεA →M pγ:
(q, 1)εA → (p, 1)γ, falls p 6∈ E,
(q, 1)εA → (p, 2)γ, falls p ∈ E und
(q, 2)εA → (p, 2)γ.
• Für alle p, q ∈ Z, a ∈ Σ, A ∈ Γ und γ ∈ Γ∗ mit qaA →M pγ:
(q, 1)εA
(q, 2)aA
(q, 2)aA
(q, 3)aA
(q, 3)aA
→
→
→
→
→
(q, 3)A,
(p, 1)γ,
(p, 2)γ,
(p, 1)γ,
(p, 2)γ,
falls p 6∈ E,
falls p ∈ E,
falls p 6∈ E und
falls p ∈ E.
Der DPDA M 0 speichert also in seinem Zustand (q, i) die Information, ob seit dem
Lesen des letzten Eingabesymbols nur Zustände in Z − E (in diesem Fall ist i = 1)
oder bereits ein Zustand in E (in diesem Fall ist i = 2) angenommen wurde. Nur im
ersten Fall wird vor dem Lesen des nächsten Eingabesymbols ein Umweg über einen
Endzustand der Form (q, 3) gemacht. Auf Grund dieser Konstruktion ist nun klar, dass
M 0 tatsächlich das Komplement von L erkennt.
Beispiel 60
Führt ein DPDA M = (Z, Σ, Γ, δ, q0 , #, E) bei Eingabe x = a beispielsweise
die Rechnung
(q0 , a, #) ` (p0 , ε, γ0 ) ` (p1 , ε, γ1 )
aus, so würde diese im Fall q0 , p1 ∈ E und p0 6∈ E von M 0 durch die Rechnung
((q0 , 2), a, #) ` ((p0 , 1), ε, γ0 ) ` ((p1 , 2), ε, γ1 )
simuliert. Dagegen würde M 0 im Fall q0 ∈ E und p0 , p1 6∈ E die Rechnung
((q0 , 2), a, #) ` ((p0 , 1), ε, γ0 ) ` ((p1 , 1), ε, γ1 ) ` ((p1 , 3), ε, γ1 )
ausführen.
2.6 Deterministisch kontextfreie Sprachen
37
Satz 61
Die Klasse DCFL ist nicht abgeschlossen unter Durchschnitt, Vereinigung, Produkt und Sternhülle.
Beweis:
• Die im Beweis von Satz 54 betrachteten Sprachen L1 = {ai bj cj | i, j ≥ 0} und
L2 = {ai bi cj | i, j ≥ 0} sind sogar deterministisch kontextfrei. Da L1 ∩ L2 nicht
kontextfrei ist, ist diese Sprache natürlich auch nicht deterministisch kontextfrei.
• Da DCFL unter Komplementbildung abgeschlossen ist, kann DCFL wegen de
Morgan dann auch nicht unter Vereinigung abgeschlossen sein. So sind beispielsweise die beiden Sprachen
L3 = {ai bj ck | i 6= j} und L4 = {ai bj ck | j 6= k}
deterministisch kontextfrei, ihre Vereinigung aber nicht,
L3 ∪ L4 = {ai bj ck | i 6= j oder j 6= k} ∈ CFL \ DCFL
(2.1)
Da nämlich DCFL unter Durchschnittsbildung mit regulären Sprachen abgeschlossen ist (siehe Übungen), wäre mit L3 ∪ L4 auch die Sprache (L3 ∪ L4 ) ∩
L(a∗ b∗ c∗ ) = {an bn cn | n ≥ 0} (deterministisch) kontextfrei.
• Um zu zeigen, dass DCFL nicht unter Produktbildung abgeschlossen ist, betrachten wir die beiden deterministisch kontextfreien Sprachen L∗0 und L = L0 L3 ∪L4 ,
wobei L0 = {0} ist.
Behauptung: L∗0 L 6∈ DCFL.
Nehmen wir das Gegenteil an, so wäre auch die Sprache
L∗0 L ∩ L0 L(a∗ b∗ c∗ ) = L0 (L3 ∪ L4 )
|
{z
}
L5
in DCFL, da DCFL unter Durchschnitt mit regulären Sprachen abgeschlossen ist.
Sei also M = (Z, Σ, Γ, δ, q0 , #, E) ein DPDA mit L(M ) = L5 . Dann wird die
Sprache L3 ∪ L4 von dem DPDA M 0 = (Z ∪ {q 0 }, Σ, Γ, δ 0 , q 0 , #, E) mit
(
(p, γ),
(q, u, A) = (q 0 , ε, #),
0
δ (q, u, A) =
δ(q, u, A), (q, u, A) ∈ Z × (Σ ∪ {ε}) × Γ,
erkannt, wobei p der Zustand und γ der Kellerinhalt von M ist, nachdem M das
Zeichen 0 gelesen hat. Dies steht jedoch im Widerspruch zu (2.1).
• Dass DCFL auch nicht unter Sternhüllenbildung abgeschlossen ist, zeigt man ganz
ähnlich anhand der Sprache L0 ∪ L (siehe Übungen).
Zum Schluss dieses Kapitels fassen wir nochmals die Abschlusseigenschaften der
Sprachklassen REG, DCFL und CFL zusammen.
REG
DCFL
CFL
Vereinigung Durchschnitt Komplement Produkt Sternhülle
ja
ja
ja
ja
ja
nein
nein
ja
nein
nein
ja
nein
nein
ja
ja
3 Kontextsensitive Sprachen
In diesem Kapitel führen wir das Maschinenmodell des linear beschränkten Automaten
(LBA) ein und zeigen, dass LBAs genau die kontextsensitiven Sprachen erkennen. Erst
vor wenigen Jahren gelang der Nachweis, dass die Klasse CSL unter Komplementbildung abgeschlossen ist. Nach wie vor offen ist jedoch die Frage, ob die Klasse DCSL
der deterministisch kontextsensitiven Sprachen eine echte Teilklasse von CSL ist oder
nicht. (Eine Sprache ist in DCSL, wenn sie von einem deterministischen LBA erkannt
wird.)
3.1 Kontextsensitive Grammatiken
Zur Erinnerung: Eine Grammatik G = (V, Σ, P, S) heißt kontextsensitiv, falls für alle
Regeln α → β gilt: |β| ≥ |α|. Die einzige Ausnahme hiervon bildet die Regel S → ε,
die allerdings nur dann benutzt werden darf, wenn das Startsymbol S nicht auf der
rechten Seite einer Regel vorkommt.
Beispiel 62
Betrachte die kontextsensitive Grammatik G = (V, Σ, P, S) mit
V
Σ
= {S, B, C},
= {a, b, c}
und den Regeln
P:
S → aSBC, aBC
CB → BC
aB → ab
bB → bb
bC → bc
cC → cc
(1, 2)
(3)
(4)
(5)
(6)
(7)
In G läßt sich beispielsweise das Wort w = aabbcc ableiten:
S ⇒ aSBC ⇒ aaBCBC ⇒ aaBBCC
(1)
(2)
(3)
⇒ aabBCC ⇒ aabbCC ⇒ aabbcC ⇒ aabbcc
(4)
(5)
(6)
(7)
3.2 Turingmaschinen
39
Allgemein gilt für alle n ≥ 1:
S
⇒n
(1,2)
⇒
n
(4,5)
· · a} |BC ·{z
· · BC} ⇒m
|a ·{z
(3)
n-mal
n-mal
· · }b C
· · C}
· · a} |b ·{z
| ·{z
|a ·{z
n-mal
n-mal
⇒
· · a} B
· · B} C
· · C}
|a ·{z
| ·{z
| ·{z
n-mal
n
(6,7)
n-mal
n-mal
n-mal
· · a} |b ·{z
· · }b |c ·{z
· · }c
|a ·{z
n-mal
n-mal
n-mal
wobei Regel (3) genau m = n(n − 1)/2-mal angewendet wird. Also gilt
an bn cn ∈ L(G) für alle n ≥ 1.
Umgekehrt folgt durch Induktion über die Ableitungslänge, dass jede Satzform
u mit S ⇒∗ u die folgenden Bedingungen erfüllt:
• #a (u) = #b (u) + #B (u) = #c (u) + #C (u),
• links von S und links von einem a kommen nur a’s,
• links von einem b kommen nur a’s oder b’s.
Daraus ergibt sich, dass in G nur Wörter w ∈ Σ∗ der Form w = an bn cn abgeleitetet werden können. Also ist
L(G) = {an bn cn | n ≥ 1}.
Da wir bereits wissen, dass die Sprache {an bn cn | n ≥ 1} nicht kontextfrei ist, ist die
Klasse CFL der kontextfreien Sprachen echt in CSL enthalten.
3.2 Turingmaschinen
Wir führen nun das Rechenmodell der Turingmaschine ein. Im Unterschied zum endlichen Automaten darf eine Turingmaschine ihre Eingabe überschreiben und somit das
Eingabeband als Speicher benutzen. Von besonderem Interesse ist in diesem Kapitel
der Fall, dass die TM den Bereich der Eingabe niemals verläßt. Eine solche TM wird
als linear beschränkter Automat (LBA) bezeichnet. Zuvor betrachten wir jedoch das
Modell einer Mehrband-Turingmaschine ohne Speicherplatzbeschränkung.
Definition 63 (k-Band-Turingmaschine)
Sei k ≥ 1. Eine nichtdeterministische k-Band-Turingmaschine (kurz k-NTM
oder einfach NTM) wird durch ein 6-Tupel M = (Z, Σ, Γ, δ, q0 , E) beschrieben,
wobei
• Z eine endliche Menge von Zuständen,
• Σ das Eingabealphabet (wobei t ∈
/ Σ),
40
3 Kontextsensitive Sprachen
• Γ das Arbeitsalphabet (wobei Σ ∪ {t} ⊆ Γ),
• δ: Z × Γk → P(Z × Γk × {L, R, N }k ) die Überführungsfunktion,
• q0 der Startzustand und
• E ⊆ Z die Menge der Endzustände ist.
Eine k-NTM M heißt deterministisch (kurz: M ist eine k-DTM oder einfach
DTM), falls kδ(q, a1 , . . . ak )k ≤ 1 für alle (q, a1 , . . . ak ) ∈ Z × Γk gilt.
Für (q 0 , a01 , . . . , a0k , D1 , . . . , Dk ) ∈ δ(q, a1 , . . . ak ) schreiben wir auch
(q, a1 , . . . , ak ) → (q 0 , a01 , . . . , a0k , D1 , . . . , Dk ).
Eine solche Anweisung ist ausführbar, falls sich M im Zustand q befindet und sich die
Leseköpfe auf mit a1 , . . . , ak beschrifteten Feldern (ai auf dem i-ten Band) befinden.
Ihre Ausführung bewirkt, dass M in den Zustand q 0 übergeht, auf Band i das Symbol
ai durch a0i ersetzt und den Kopf gemäß Di bewegt (L: ein Feld nach links, R: ein Feld
nach rechts, N: keine Bewegung).
Definition 64 (Konfiguration)
Eine Konfiguration ist ein (3k + 1)-Tupel K = (q, u1 , a1 , v1 , . . . , uk , ak , vk ) ∈
Z × (Γ∗ × Γ × Γ∗ )k und besagt, dass
• der momentane Zustand q ist und
• das i-te Band mit . . . t ui ai vi t . . . beschriftet ist, wobei sich der Kopf auf
dem Zeichen ai befindet.
Im Fall k = 1 schreiben wir für eine Konfiguration (q, u, a, v) auch kurz uqav. Eine
Konfiguration K 0 = (q 0 , u01 , a01 , v10 , . . . , u0k , a0k , vk0 ) heißt Folgekonfiguration von K =
(q, u1 , a1 , v1 , . . . , uk , ak , vk ) (kurz K ` K 0 ), falls eine Anweisung
(q, a1 , . . . , ak ) → (q 0 , b1 , . . . , bk , D1 , . . . , Dk )
existiert, so dass für i = 1, . . . , k gilt:
1. Im Fall Di = N: u0i = ui , a0i = bi und vi0 = vi .
(
vi , vi 6= ε,
0
0 0
2. Im Fall Di = R: ui = ui bi und ai vi =
t, sonst.
3. Im Fall Di = L:
vi0
= bi vi , und
u0i a0i
=
(
ui , ui 6= ε,
t, sonst.
Man beachte, dass sich die Länge der Bandinschrift ui ai vi beim Übergang von K zu
K 0 nicht verkleinern kann, d.h. |u0i a0i vi0 | ≥ |ui ai vi |.
3.2 Turingmaschinen
41
Sei x = x1 · · · xn ∈ Σ∗ eine Eingabe. Die zugehörige Startkonfiguration ist
(
(q0 , ε, x1 , x2 · · · xn , ε, t, ε, . . . , ε, t, ε) x 6= ε,
Kx =
(q0 , ε, t, ε, . . . , ε, t, ε)
x = ε.
Die von M akzeptierte oder erkannte Sprache ist
L(M ) = {x ∈ Σ∗ | ∃ K ∈ E × (Γ∗ × Γ × Γ∗ )k : Kx `∗ K}.
Ein Wort x wird also genau dann von M akzeptiert (kurz: M (x) akzeptiert), wenn es
eine Rechnung (Folge von Konfigurationen) von M bei Eingabe x gibt, bei der ein
Endzustand erreicht wird.
Beispiel 65
Betrachte die 1-DTM M = (Z, Σ, Γ, δ, q0 , E) mit
Z
Σ
Γ
E
=
=
=
=
{q0 , . . . q4 },
{a, b},
Σ ∪ {A, B, t},
{q4 }
und den Anweisungen
δ:
q0 a → q1 AR
(1) Anfang der Schleife: Ersetze das erste a durch A
q1 a → q1 aR
q1 B → q1 BR
q1 b → q2 BL
(2) Bewege den Kopf nach rechts bis zum ersten b und
(3) ersetze dies durch ein B (falls kein b mehr vorhan(4) den ist, dann halte ohne zu akzeptieren).
q2 a → q2 aL
q2 B → q2 BL
q2 A → q0 AR
(5) Bewege den Kopf nach links bis ein A kommt, ge(6) he ein Feld nach rechts zurück und wiederhole die
(7) Schleife.
q0 B → q3 BR (8) Falls kein a am Anfang der Schleife, dann teste,
q3 B → q3 BR (9) ob noch ein b vorhanden ist. Falls nicht, akzeptiere,
q3 t → q4 t N (10) sonst halte ohne zu akzeptieren.
Wegen
q0 aabb `
`
`
`
`
`
`
`
`
`
`
`
`
Aq1 abb
(1)
Aaq1 bb
(2)
Aq2 aBb
(4)
q2 AaBb
(5)
Aq0 aBb
(7)
AAq1 Bb
(1)
AABq1 b
(3)
AAq2 BB
(4)
Aq2 ABB
(6)
AAq0 BB
(7)
AABq3 B
(8)
AABBq3 t (9)
AABBq4 t (10)
42
3 Kontextsensitive Sprachen
folgt beispielsweise aabb ∈ L(M ). Ähnlich läßt sich an bn ∈ L(M ) für ein
beliebiges n ≥ 1 zeigen. Andererseits gehört das Wort abb wegen
q0 abb ` Aq1 bb ` q2 ABb ` Aq0 Bb ` ABq3 b
(1)
(4)
(7)
(8)
nicht zu L(M ), da die Rechnung in der Konfiguration ABq3 b nicht fortgesetzt werden kann und kein Endzustand erreicht wurde. Tatsächlich ist L(M ) =
{an bn | n ≥ 1} (ohne Beweis).
3.3 Linear beschränkte Automaten
Ein linear beschränkter Automat (LBA) ist eine 1-NTM, die nicht mehr Platz benötigt
als ihr durch die Eingabe bereitgestellt wird. Dies scheint auf den ersten Blick der Begriffsbildung „linear beschränkt“ zu widersprechen. Man kann jedoch zeigen, dass jede
k-NTM, die bei Eingaben der Länge n nur linear viele (also O(n)) Bandfelder besucht,
von einem LBA simuliert werden kann. Damit ein LBA das Ende der Eingabe erkennen
kann (und nicht versehentlich darüber hinausliest), muss das letzte Zeichen der Eingabe markiert werden. (Das erste Zeichen der Eingabe braucht dagegen nicht markiert zu
werden, da dies der LBA im ersten Rechenschritt selbst tun kann.)
Definition 66 (LBA)
Sei Σ ein Alphabet. Für x = x1 · · · xn−1 xn ∈ Σ∗ bezeichne x̂ das Wort
(
x,
x = ε,
x̂ =
x1 · · · xn−1 x̂n , x =
6 ε
über dem Alphabet Σ0 = Σ∪{â | a ∈ Σ}. Eine 1-NTM M = (Z, Σ0 , Γ, δ, q0 , E)
heißt linear beschränkt (kurz: M ist ein LBA), falls M für jedes Wort x ∈ Σ+
ausgehend von der Startkonfiguration Kx̂ nur Konfigurationen K = uqav mit
|uv| ≤ n erreichen kann:
∀x ∈ Σ+ : Kx̂ `∗ uqav ⇒ |uav| ≤ |x|.
Die von einem LBA akzeptierte oder erkannte Sprache ist
L(M ) = {x ∈ Σ∗ | M (x̂) akzeptiert}.
Beispiel 67
Es ist nicht schwer, die 1-DTM M aus Beispiel 65 in einen LBA M 0 =
(Z, Σ0 , Γ0 , δ 0 , q0 , E) für L = {an bn | n ≥ 1} umzuwandeln. Ersetze hierzu
• Σ durch Σ0 = {a, b, â, b̂},
• Γ durch Γ0 = Σ0 ∪ {A, B, B̂, t} sowie
3.3 Linear beschränkte Automaten
43
• die Anweisung q3 t → q4 tN (10) durch q3 B̂ → q4 B̂N (100 ) und
• füge die Anweisung q1 b̂ → q2 B̂L (4a) hinzu.
Dann wird das Wort aabb durch folgende Rechnung von M 0 bei Eingabe aabb̂
akzeptiert:
q0 aabb̂ `∗ AABq1 b̂ ` AAq2 B B̂ `∗ AABq3 B̂
(4a)
`
(100 )
AABq4 B̂
Der LBA M 0 für die (kontextfreie) Sprache {an bn | n ≥ 1} aus Beispiel 67 lässt
sich leicht in einen LBA für die kontextsensitive Sprache {an bn cn | n ≥ 1} verwandeln (siehe Übungen). Als nächstes zeigen wir, dass LBAs genau die kontextsensitiven
Sprachen erkennen.
Satz 68
CSL = {L(M ) | M ist ein LBA}.
Beweis: Wir zeigen zuerst die Inklusion von links nach rechts. Sei also L ∈ CSL und
sei G = (V, Σ, P, S) eine kontextsensitive Grammatik mit L = L(G). Dann wird L
von folgendem LBA M akzeptiert, der bei Eingabe x̂ = x1 · · · xn−1 x̂n , n ≥ 1, die
folgenden Schritte ausführt (im Fall ε ∈ L soll M auch ε akzeptieren).
1) Wähle nichtdeterministisch eine Regel α → β aus P \ {S → ε}.
2) Wähle nichtdeterministisch ein beliebiges Vorkommen von β auf dem Band.
(Falls β auf dem Band nicht vorkommt, halte ohne zu akzeptieren.)
3) Verschiebe die Zeichen rechts von β um |β| − |α| Positionen nach links und
ersetze die ersten |α| Zeichen von β durch α.
4) Enthält das erste Bandfeld das markierte Startsymbol Ŝ, so halte in einem Endzustand. Ansonsten gehe zu Schritt 1).
Nun ist leicht zu sehen, dass M wegen |β| ≥ |α| tatsächlich linear beschränkt ist und
dass M genau diejenigen Wörter akzeptiert, für die es eine Ableitung in G gibt (welche
M in umgekehrter Reihenfolge berechnet).
Für die Inklusion von rechts nach links sei M = (Z, Σ0 , Γ, δ, q0 , E) ein LBA und Σ ein
Alphabet mit Σ0 = Σ ∪ {â | a ∈ Σ}. Wir konstruieren eine kontextsensitive Grammatik
G = (V, Σ, P, S) mit L(G) = L(M ). Für V wählen wir die Menge
V = {S, A} ∪ ((Γ ∪ (Z × Γ)) × Σ)
und P enthält folgende Regeln:
S → A(â, a),
a∈Σ
(1)
A → A(a, a),
a∈Σ
(2)
A → ((q0 , a), a),
0
a∈Σ
0
((q, c), a) → ((q , c ), a),
0
(3)
0
0
a ∈ Σ, (q , c , N ) ∈ δ(q, c)
0
0
0
0
0
((q, c), a)(d, b) → (c , a)((q , d), b), a, b ∈ Σ, d ∈ Γ, (q , c , R) ∈ δ(q, c)
0
0
(4)
(5)
(c, a)((q, d), b) → ((q , c), a)(d , b), a, b ∈ Σ, c ∈ Γ, (q , d , L) ∈ δ(q, d)
(6)
((q, c), a) → a,
a ∈ Σ, c ∈ Γ, q ∈ E
(7)
(c, a) → a,
a ∈ Σ, c ∈ Γ
(8)
44
3 Kontextsensitive Sprachen
Im Fall ε ∈ L(M ) nehmen wir noch die Regel S → ε zu P hinzu. Durch Induktion
über die Rechnungslänge m kann nun leicht für alle Eingaben x̂ = x 1 · · · xn−1 x̂n und
alle a1 , . . . , an ∈ Γ, q ∈ Z die folgende Äquivalenz bewiesen werden:
q0 x1 · · · xn−1 x̂n `m a1 · · · ai−1 qai · · · an ⇐⇒
((q0 , x1 ), x1 ) · · · (x̂n , xn ) ⇒ m (a1 , x1 ) · · · ((q, ai ), xi ) · · · (an , xn )
(4,5,6)
Unter Benutzung dieser Äquivalenz folgt dann aus der Annahme x ∈ L(M ), dass
S
⇒
∗
((q0 , x1 ), x1 ) · · · (x̂n , xn )
⇒
∗
(a1 , x1 ) · · · ((q, ai ), xi ) · · · (an , xn ), q ∈ E
(1,2,3)
(4,5,6)
∗
⇒
(7,8)
x1 · · · x n
gilt, also x ∈ L(G) ist. Ganz ähnlich folgt auch umgekehrt aus S ⇒∗ x, dass x von M
akzeptiert wird.
Bemerkung 69
• Eine einfache Modifikation des Beweises zeigt, dass 1-NTMs genau die
Sprachen vom Typ 0 akzeptieren, d.h.
RE = {L(M ) | M ist eine 1-NTM}.
• Bis heute ungelöst ist die Frage, ob es kontextsensitive Sprachen gibt, die
nicht von einem deterministischen LBA akzeptiert werden. Anders ausgedrückt: Ist die Klasse
DCSL = {L(M ) | M ist ein deterministischer LBA}
echt in der Klasse CSL enthalten?
Die folgenden Abschlusseigenschaften — abgesehen von der Komplementbildung bei
den Klassen CSL (die Thema der Vorlesung Komplexitätstheorie ist) und RE (siehe
nächstes Kapitel) — lassen sich nun leicht nachweisen (siehe Übungen).
REG
DCFL
CFL
DCSL
CSL
RE
Vereinigung Durchschnitt Komplement Produkt Sternhülle
ja
ja
ja
ja
ja
nein
nein
ja
nein
nein
ja
nein
nein
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
4 Entscheidbare und rekursiv
aufzählbare Sprachen
In diesem Kapitel beschäftigen wir uns mit der Klasse RE, die alle Typ-0 Sprachen
enthält. Wir werden eine Reihe con Charakterisierungen für diese Klasse mittels Turingmaschinen beweisen, wodurch auch die Namensgebung (rekursiv aufzählbar) verständlich wird. Eine wichtige Teilklasse von RE bildet die Klasse REC der entscheidbaren (oder rekursiven) Sprachen, in der bereits alle kontextsensitiven Sprachen enthalten
sind. Zunächst wenden wir uns jedoch der Berechnung von Funktionen zu.
Definition 70 (Berechenbarkeit von totalen Funktionen)
Eine k-DTM M = (Z, Σ, Γ, δ, q0 , E) berechnet eine Funktion f : Σ∗ → Γ∗ ,
falls für alle x ∈ Σ∗ gilt:
Es gibt genau eine Konfiguration K = (q, u1 , a1 , v1 , . . . , uk , ak , vk )
in E × (Γ∗ × Γ × Γ∗ )k mit Kx `∗ K und für diese Konfiguration
ist uk = f (x), ak = t und vk = ε. Hierfür schreiben wir auch kurz
M (x) = f (x).
In diesem Fall heißt f Turing-berechenbar (oder einfach berechenbar oder rekursiv).
Um f (x) zu berechnen, muss M bei Eingabe x im Verlauf der Rechnung also genau
einmal in einen Endzustand gelangen und zu diesem Zeitpunkt muss das k-te Band mit
f (x) beschriftet sein. Obige Definition lässt sich auch auf partielle Funktionen übertragen, die nicht für alle Argumente definiert sein müssen.
Definition 71 (Berechenbarkeit von partiellen Funktionen)
Eine k-DTM M = (Z, Σ, Γ, δ, q0 , E) berechnet eine partielle Funktion f :
Σ∗ → Γ∗ ∪ {↑}, falls für alle x ∈ Σ∗ gilt:
Ist f (x) undefiniert (in Zeichen: f (x) =↑), so darf M bei Eingabe
x keinen Endzustand erreichen (unabhängig davon, ob M hält oder
nicht). Andernfalls muss (wie oben) M (x) = f (x) gelten.
Mit FREC bezeichnen wir die Klasse aller partiellen rekursiven Funktionen und
FRECt bezeichnet die Teilklasse der totalen Funktionen in FREC.
Beispiel 72
Sei Σ = {0, 1} und bezeichne x+ den lexikografischen Nachfolger des Wortes
x,
x ε 0 1 00 01 10 11 000 . . .
x+ 0 1 00 01 10 11 000 001 . . .
46
4 Entscheidbare und rekursiv aufzählbare Sprachen
Dann gehören die totalen Funktionen fi : Σ∗ → Σ∗ , i = 1, 2, 3 mit f1 (x) = 0,
f2 (x) = x und f3 (x) = x+ zu FRECt , während die partielle Funktion
(
↑, x = ε
f4 (x) =
y, x = y +
zur Klasse FREC gehört.
Definition 73 ((semi-)entscheidbare und rekursiv aufzählbare Sprachen)
• Eine Sprache L ⊆ Σ∗ heißt entscheidbar (oder rekursiv, kurz: L ∈ REC),
falls ihre charakteristische Funktion χL : Σ∗ → {0, 1}, definiert durch
(
1, x ∈ L,
χL (x) =
0, x 6∈ L,
berechenbar ist.
• Eine Sprache L ⊆ Σ∗ heißt semi-entscheidbar, falls die partielle Funktion
(
1, x ∈ L,
χ̂L (x) =
↑, x 6∈ L
berechenbar ist.
• Eine Sprache L ⊆ Σ∗ heißt rekursiv aufzählbar (kurz: L ∈ RE), falls L
leer ist oder eine Turing-berechenbare Funktion f : Γ∗ → Σ∗ mit
L = {f (x) | x ∈ Γ∗ }
{z
}
|
=:W (f )
existiert. Die Menge W (f ) nennen wir die Wertemenge von f .
Der nächste Satz gibt eine Reihe von nützlichen Charakterisierungen der Typ-0 Sprachen (z.B. dass sie mit den rekursiv aufzählbaren Sprachen übereinstimmen).
Satz 74
Folgende Eigenschaften sind äquivalent:
1. A ist semi-entscheidbar,
2. A wird von einer k-NTM akzeptiert,
3. A wird von einer 1-NTM akzeptiert,
4. A ist vom Typ 0,
5. A ist rekursiv aufzählbar,
6. A wird von einer k-DTM akzeptiert,
7. A wird von einer 1-DTM akzeptiert.
47
Beweis: 1) ⇒ 2): Klar, da eine k-NTM, die χ̂A berechnet, A akzeptiert.
2) ⇒ 3): Sei M = (Z, Σ, Γ, δ, q0 , E) eine k-NTM, die die Sprache A akzeptiert. Wir
konstruieren eine 1-NTM M 0 = (Z 0 , Σ, Γ0 , δ 0 , z0 , E), die ebenfalls A akzeptiert.
M 0 simuliert M , indem sie jede Konfiguration K von M der Form
···
a
b
c
..
.
···
e
f
d
···
↑
g
h ···
↑
durch eine Konfiguration K 0 der Form
···
a. b. ..
..
e
fˆ
c ˆ
d.
..
..
.
g
···
h
nachbildet. Das heißt, M 0 arbeitet mit dem Alphabet
Γ0 = Γ ∪ (Γ ∪ {â | a ∈ Γ})k
und erzeugt bei Eingabe x = x1 · · · xn ∈ Σ∗ zuerst die der Startkonfiguration
Kx = (q0 , ε, x, ε, t, . . . , ε, t)
von M bei Eingabe x entsprechende Konfiguration
    
x̂1
x2
xn






t̂
t
.   .   t. 
Kx0 = q00 
 ..   ..  · · ·  ..  .
t̂
t
t
Dann simuliert M 0 jeweils einen Schritt von M durch folgende Sequenz von Rechenschritten.
Zuerst geht M 0 solange nach rechts, bis sie alle mitˆmarkierten Zeichen
(z.B. â1 , . . . , âk ) gefunden hat. Diese Zeichen speichert M 0 in ihrem Zustand. Anschließend geht M 0 wieder nach links und realisiert dabei die
durch δ(q, a1 , . . . , ak ) vorgegebene Anweisung von M (den momentanen Zustand q von M speichert M 0 ebenfalls in ihrem Zustand).
Sobald M in einen Endzustand übergeht, wechselt M 0 ebenfalls in einen Endzustand und hält. Nun ist leicht zu sehen, dass L(M 0 ) = L(M ) ist.
3) ⇒ 4): Konstruktion einer Grammatik wie beim Beweis von {L(M ) | M ist ein
LBA } ⊆ CSL.
4) ⇒ 5): Sei G = (V, Σ, P, S) eine Grammatik und sei A = L(G) 6= ∅. Dann lassen
sich die Wörter von A durch folgende Funktion f : Γ∗ → Γ∗ aufzählen, wobei
48
4 Entscheidbare und rekursiv aufzählbare Sprachen
Γ = V ∪ Σ ∪ {#} und # 6∈ V ∪ Σ ist:


αm , x hat die Form α0 #α1 # . . . #αm und S = α0 ⇒ α1 ⇒
· · · ⇒ αm ist eine Ableitung von αm ∈ Σ∗ in G
f (x) =

x , sonst.
0
Es ist klar, dass f von einer k-DTM berechnet werden kann, also ist A rekursiv
aufzählbar.
5) ⇒ 6): Sei f : Γ∗ → Σ∗ eine Funktion mit A = W (f ) und sei M eine k-DTM, die
f berechnet. Betrachte folgende (k + 1)-DTM M 0 :
Bei Eingabe x erzeugt M 0 auf dem 2. Band alle Wörter y in Γ∗ (etwa in
lexikographischer Reihenfolge) und berechnet durch Simulation von M
jeweils den Wert f (y). Sobald f (y) = x ist, akzeptiert M 0 ihre Eingabe.
6) ⇒ 7): Eine k-DTM kann genau wie im Beweis der Implikation 2) ⇒ 3) durch eine
1-DTM simuliert werden.
7) ⇒ 1): Klar, da aus einer 1-DTM, die A akzeptiert, leicht eine 2-DTM gewonnen
werden kann, die χ̂A berechnet.
Satz 75
A ist genau dann entscheidbar, wenn A und Ā semi-entscheidbar sind.
Beweis: Falls A entscheidbar ist, ist auch Ā entscheidbar, d.h. A und Ā sind dann auch
semi-entscheidbar. Für die Rückrichtung seien f1 , f2 : Γ∗ → Σ∗ Turing-berechenbare
Funktionen mit W (f1 ) = A und W (f2 ) = Ā. Wir betrachten folgende k-DTM M :
Bei Eingabe x bestimmt M der Reihe nach für jedes y ∈ Γ∗ die beiden
Werte f1 (y) und f2 (y). Sobald ein y auf den Wert f1 (y) = x führt, gibt M
den Wert M (x) = 1 aus und falls f2 (y) = x ist, gibt M den Wert M (x) = 0
aus.
Da jede Eingabe x entweder in W (f1 ) = A oder in W (f2 ) = Ā enthalten ist, berechnet
M die Funktion χA .
Bezeichnen wir für eine Sprachklasse C die Klasse {Ā | A ∈ C} der Komplementärsprachen mit co-C, so gilt also REC = RE ∩ co-RE.
4.1 Kodierung (Gödelisierung) von Turingmaschinen
Sei M = (Z, Σ, Γ, δ, q0 , E) eine 1-NTM mit Eingabealphabet Σ = {0, 1, #} und
einem beliebigen Arbeitsalphabet Γ = {a0 = 0, a1 = 1, a2 = #, a3 = t, a4 , . . . , al }
4.1 Kodierung (Gödelisierung) von Turingmaschinen
49
sowie Zustandsmenge Z = {q0 , . . . , qm } (o.B.d.A. sei E = {qm }). Dann können wir
jede Anweisung der Form
qi a j → q i0 a j 0 D
durch das Wort #bin(i)#bin(j)#bin(i0)#bin(j 0 )#bD # kodieren, wobei bin(n) die
Binärdarstellung von n und


0, D = N.
bD = 1, D = L,


11, D = R
ist. Eine Binärkodierung wM ∈ {0, 1}∗ von M erhalten wir, indem wir alle Anweisungen von M in kodierter Form hintereinander schreiben, wobei wir das Alphabet
{0, 1, #} binär kodieren (z.B. 0 7→ 00, 1 7→ 11, # 7→ 01).
Entsprechend können wir auch k-NTMs, k ≥ 1, sowie Konfigurationen und Rechnungen (Konfigurationsfolgen) von k-NTMs kodieren.
Jedem Binärstring w ∈ {0, 1}∗ können wir umgekehrt eine k-NTM Mw wie folgt
zuordnen:
(
M, falls eine k-NTM M mit wM = w existiert,
Mw =
M0 , sonst.
Dabei ist M0 eine beliebig, aber fest gewählte Turingmaschine mit Eingabealphabet
Σ = {0, 1, #}.
Definition 76 (Halteproblem)
Sei M = (Z, Σ, Γ, δ, q0 , E) eine k-NTM und sei x ∈ Σ∗ eine Eingabe. Dann ist
time M (x) = max{t ≥ 0 | ∃K : Kx `t K}
die Rechenzeit von M bei Eingabe x, wobei max N = ∞ ist.
M hält bei Eingabe x (kurz: M (x) hält), falls time M (x) < ∞ ist. Das Halteproblem ist die Sprache
H = {w#x | w, x ∈ {0, 1}∗ und Mw ist eine 1-DTM, die bei Eingabe x hält}
und das spezielle Halteproblem ist
K = {w ∈ {0, 1}∗ | Mw ist eine 1-DTM, die bei Eingabe w hält}.
Satz 77
K ∈ RE \ REC.
Beweis: Sei w0 die Kodierung einer 1-DTM, die bei jeder Eingabe hält und betrachte
die Funktion


w, x ist Kodierung einer haltenden Berechnung einer 1DTM Mw bei Eingabe w,
f (x) =

w , sonst.
0
50
4 Entscheidbare und rekursiv aufzählbare Sprachen
Da f Turing-berechenbar und W (f ) = K ist, folgt K ∈ RE.
Die Unentscheidbarkeit von K zeigen wir indirekt. Unter der Annahme, dass K entscheidbar ist, gibt es eine 1-DTM M , die bei Eingabe x genau dann hält, wenn x 6∈ K
ist. Für die Kodierung w von M folgt dann aber
w∈K
⇒ Mw (w) hält
w 6∈ K
⇒ w 6∈ K, da Mw = M ist,
⇒ Mw (w) hält nicht
⇒ w ∈ K, da Mw = M ist.
Sowohl die Annahme w ∈ K als auch die konträre Annahme w 6∈ K führen also auf
einen Widerspruch.
Korollar 78
K 6∈ co-RE.
Beweis: Wegen K ∈ RE folgt aus der Annahme, dass K ∈ co-RE ist, mit Satz 75,
dass K entscheidbar ist. Dies steht jedoch im Widerspruch zu Satz 77.
Definition 79 (reduzierbar)
Seien A ⊆ Σ∗ und B ⊆ Γ∗ Sprachen. Dann heißt A auf B reduzierbar (kurz:
A ≤ B), falls eine Turing-berechenbare Funktion f : Σ∗ → Γ∗ existiert mit
x ∈ A ⇔ f (x) ∈ B
für alle x ∈ Σ∗ .
Sei C eine Sprachklasse. Eine Sprache A ∈ C heißt C-vollständig, falls jede
Sprache L ∈ C auf A reduzierbar ist.
Beispiel 80
K ≤ H mittels f (w) = w#w für alle w ∈ {0, 1}∗.
Satz 81
Die Klassen RE und REC sind unter ≤ abgeschlossen. Dabei heißt eine Sprachklasse C unter ≤ abgeschlossen, wenn für alle Sprachen A, B gilt:
A ≤ B ∧ B ∈ C ⇒ A ∈ C.
Beweis: Gelte A ≤ B mittels f und sei M eine 1-DTM, die χB (bzw. χ̂B ) berechnet.
Betrachte folgende 1-DTM M 0 :
M 0 berechnet bei Eingabe x zuerst den Wert f (x) und simuliert dann M bei
Eingabe f (x).
Wegen
x ∈ A ⇔ f (x) ∈ B
folgt χA (x) = χB (f (x)) = M (f (x)) = M 0 (x) (bzw. χˆA (x) = χˆB (f (x)) =
M (f (x)) = M 0 (x)), d.h. M 0 berechnet χA (bzw. χ̂A ).
4.1 Kodierung (Gödelisierung) von Turingmaschinen
51
Korollar 82
H 6∈ REC.
Beweis: Aus der Annahme, dass H entscheidbar ist, folgt wegen K ≤ H, dass auch
K entscheidbar ist, was im Widerspruch zu Satz 77 steht.
Definition 83 (Halteproblem bei leerem Band)
Das Halteproblem bei leerem Band ist die Sprache
H0 = {w ∈ {0, 1}∗ | Mw ist eine 1-DTM, die bei Eingabe ε hält}.
Satz 84
H0 6∈ REC.
Beweis: Wir zeigen H ≤ H0 . Dadurch überträgt sich die Unentscheidbarkeit von H
auf H0 , da andernfalls mit H0 auch H entscheidbar wäre, was nach Korollar 82 nicht
der Fall ist. Sei w0 6∈ H0 und betrachte die Funktion
 0
w , y hat die Form y = w#x und Mw ist eine 1-DTM; dabei




ist w0 die Kodierung einer 1-DTM, die bei Eingabe ε zu
erst das Wort x auf das Eingabeband schreibt und dann
f (y) =


die 1-DTM Mw bei Eingabe x simuliert,



w0 , sonst.
Dann ist f eine Turing-berechenbare Funktion, die H auf H0 reduziert.
Der folgende Satz von Rice besagt, dass man einer k-DTM nicht ansehen kann, ob die
von ihr berechnete Funktion eine gewisse Eigenschaft hat oder nicht. Einzige Ausnahme: Keine oder jede berechenbare Funktion hat die fragliche Eigenschaft.
Satz 85 (Satz von Rice)
Sei Σ = {0, 1, #} und FRECΣ bezeichne die Klasse aller partiellen Turingberechenbaren Funktionen f : Σ∗ → Σ∗ ∪ {↑}. Dann ist für jede Klasse F von
partiellen Funktionen mit ∅ ( F ( FRECΣ die Sprache
K(F) = {w | w kodiert eine k-DTM Mw , die eine Funktion in F berechnet}
unentscheidbar, d.h. K(F) 6∈ REC.
Beweis: Wir reduzieren H0 (oder H0 ) auf K(F). Für eine gegebene 1-DTM Mw müssen wir also eine k-DTM Mw0 mit
w ∈ H0
w∈
/ H0
⇒ Mw0 berechnet eine Funktion in F,
⇒ Mw0 berechnet eine Funktion in F
konstruieren. Die Idee besteht nun darin, Mw0 bei Eingabe x zunächst einmal die 1DTM Mw bei Eingabe ε simulieren zu lassen. Falls w ∈
/ H0 ist, berechnet Mw0 also
die überall undefinierte Funktion u mit u(x) =↑ für alle x ∈ Σ∗ . Damit die Reduktion
gelingt, muss Mw0 im Fall w ∈ H0 eine Funktion v ∈ F berechnen mit
v∈F ⇔u∈
/ F.
52
4 Entscheidbare und rekursiv aufzählbare Sprachen
Wegen ∅ ( F ( FRECΣ muss eine solche Funktion v ∈ FRECΣ existieren.
Sei also M eine k-DTM, die v berechnet und betrachte die Reduktionsfunktion f :
{0, 1}∗ → {0, 1}∗ mit
h(w)
= w0 , wobei w0 die Kodierung einer k-DTM ist, die bei Eingabe
x zunächst einmal die 1-DTM Mw bei Eingabe ε simuliert und
im Fall, dass Mw hält, mit der Simulation von M bei Eingabe x
fortfährt.
Dann ist h eine totale berechenbare Funktion und es gilt
w ∈ H0
→ Mw0 berechnet v,
w∈
/ H0
→ Mw0 berechnet u.
Im Fall v ∈ F folgt daher
w ∈ H0
→ w0 ∈ K(F),
w∈
/ H0
→ w0 ∈
/ K(F),
das heißt, h reduziert H0 auf K(F). Im Fall v ∈
/ F gilt dagegen
w ∈ H0
w∈
/ H0
→ w0 ∈
/ K(F),
0
→ w ∈ K(F),
das heißt, h reduziert H0 auf K(F). Da h Turing-berechenbar ist und sowohl H0 als
auch H0 unentscheidbar sind, folgt K(F) ∈
/ REC.
Beispiel 86
Die Sprache
L = {w ∈ {0, 1}∗ | Mw (0n ) = 0n+1 für alle n ≥ 0}
ist unentscheidbar. Dies folgt aus dem Satz von Rice, da L = K(F) für die durch
F = {f ∈ FRECΣ | f (0n ) = 0n+1 für alle n ≥ 0} beschriebene Eigenschaft
ist, welche zwar mindestens auf eine, aber nicht auf alle Funktionen in FREC Σ
zutrifft (beispielsweise ist die Funktion
(
0n+1 , x = 0n
a(x) =
↑,
sonst
in F enthalten, aber nicht die konstante Funktion f (x) = 0).
4.2 Das Postsche Korrespondenzproblem (PCP)
Sei Σ ein beliebiges Alphabet mit # ∈
/ Σ. Dann enthält PCPΣ alle positiven (mit ja zu
beantwortenden) Eingaben für das folgende Entscheidungsproblem:
4.2 Das Postsche Korrespondenzproblem (PCP)
53
Gegeben: k Wortpaare (x1 , y1 ), . . . , (xk , yk ), kodiert
durch x1 #y1 # · · · #xk #yk (die
k
wir oft auch in Form einer Matrix xy11 ···x
schreiben).
...yk
k
Gefragt: Gibt es eine PCP-Lösung für die Probleminstanz xy11 ···x
...yk ? Dabei ist eine
PCP-Lösung eine Folge α = (i1 , . . . , in ), n ≥ 1, von Indizes ij ∈ {1, . . . , k}
mit
xi 1 · · · x i n = y i 1 · · · y i n .
Im Fall i1 = 1 heißt α auch MPCP-Lösung (Lösung für das modifizierte PCP). Entsprechend enthält MPCP alle Problemeingaben, für die eine MPCP-Lösung existiert.
Beispiel 87
Die Instanz I =
1 10 011
101 00 11
besitzt wegen
x1 x3 x2 x3 = 101110011 = y1 y3 y2 y3
die PCP-Lösung α = (1, 3, 2, 3), die auch eine MPCP-Lösung ist.
Lemma 88 ()
Für jedes Alphabet Σ gilt PCP Σ ≤ PCP {0,1} und MPCP Σ ≤ MPCP {0,1} .
Beweis: Sei Σ = {a1 , . . . , am }. Für ein Zeichen ai ∈ Σ sei âi = 01i und für ein Wort
w = w1 · · · wn ∈ Σ∗ mit wi ∈ Σ sei ŵ = ŵ1 · · · ŵn . Dann folgt PCP Σ ≤ PCP {0,1}
und MPCP Σ ≤ MPCP {0,1} mittels der Reduktionsfunktion
x̂1 · · · x̂k
x1 · · · x k
.
=
f
ŷ1 . . . ŷk
y1 . . . yk
Im Folgenden schreiben wir für PCP {0,1} (MPCP{0,1} ) kurz PCP (bzw. MPCP).
Satz 89
MPCP ≤ PCP.
Beweis: Sei Σ0 = {0, 1, $, §}. Es genügt, MPCP ≤ PCP Σ
0 zu zeigen. Betrachte die
x1 ···xk
Reduktionsfunktion f , die eine MPCP-Instanz I = y1 ...yk auf die PCP Σ0 -Instanz
!
→
→
→
→
xk § x1 §
x1 x2
f (I) =
← ··· ←
←
−
yk § y1 $§
y1 y2
abbildet, wobei für w = a1 · · · an , ai ∈ Σ,
−
w = a1 $ · · · $an ,
w = a1 $ · · · $an $,
←
w = $a1 $ · · · $an ,
→
ist. Da sich jede MPCP-Lösung α = (1, i2 , . . . , in ) für I in eine PCP-Lösung α0 =
(k + 1, i2 , . . . , in , k + 2) für f (I) verwandeln lässt, folgt
I ∈ MPCP ⇒ f (I) ∈ PCP Σ0 .
54
4 Entscheidbare und rekursiv aufzählbare Sprachen
Für die umgekehrte Implikation sei α = (i1 , . . . , in ) eine (o.B.d.A. kürzeste) PCP→
−
Lösung für f (I). Dann muss i1 = k + 1 sein, da (§ x1 , § y1 ) das einzige Paar in f (I)
ist, bei dem beide Komponenten mit demselben Buchstaben anfangen. Zudem muss
in = k + 2 sein, da (§, $§) das einzige Paar in f (I) ist, bei dem beide Komponenten mit
demselben Buchstaben aufhören. Aufgrund der minimalen Länge von α folgt i j ≤ k
für die übrigen Indizes ij in α. Dann ist aber
α0 = (1, i2 , . . . , in−1 )
eine MPCP-Lösung für I.
Satz 90
PCP ist RE-vollständig und damit unentscheidbar.
Beweis: Sei A ∈ RE und sei M = (Z, Σ, Γ, δ, z0 , E) eine 1-NTM mit L(M ) = A. Sei
Σ0 = Γ ∪ Z ∪ {$}. Wegen MPCP Σ0 ≤ PCP reicht es zu zeigen, dass zu jeder Eingabe
···xk
w ∈ Σ∗ eine Instanz f (w) = xy11 ...y
mit
k
w ∈ L(M ) ⇔ f (w) ∈ MPCP Σ0
berechnet werden kann.
Idee: Eine Indexfolge α = (i1 , . . . , in ) soll genau dann eine Lösung von f (w) sein,
wenn das zugehörige Lösungswort
xi 1 · · · x i n = y i 1 · · · y i n
eine akzeptierende Rechnung von M bei Eingabe w kodiert.
Wir bilden f (w) aus folgenden Wortpaaren:
1. (§, §$z0 x),
„Startregel“
2. (a, a) für alle a ∈ Γ ∪ {$},
0
„Kopierregeln“
0
3. Für alle a, a , b ∈ Γ, z, z ∈ Z die folgenden Wortpaare,
(za, z 0 a0 ),
(za, a0 z 0 ),
(bza, z 0 ba0 ),
falls δ(z, a) = (z 0 , a0 , N ),
falls δ(z, a) = (z 0 , a0 , R),
falls δ(z, a) = (z 0 , a0 , L),
sowie
($za, $z 0 t a0 ),
(z$, z 0 a0 $),
(z$, a0 z 0 $),
(bz$, z 0ba0 $),
„Überführungsregeln“
falls δ(z, a) = (z 0 , a0 , L),
falls δ(z, t) = (z 0 , a0 , N ),
falls δ(z, t) = (z 0 , a0 , R),
falls δ(z, t) = (z 0 , a0 , L),
4. (aze , ze ) und (ze a, ze ) für alle ze ∈ E und a ∈ Γ,
5. (ze $§, §) für alle ze ∈ E.
„Löschregeln“
„Abschlussregeln“
4.2 Das Postsche Korrespondenzproblem (PCP)
55
Nun lässt sich leicht aus einer akzeptierenden Rechnung
K0 = z0 w ` K1 ` · · · ` Kt = uze v
mit ze ∈ E und u, v ∈ Γ∗ eine MPCP-Lösung mit einem Lösungswort der Form
§$K0 $K1 $ · · · $Kt $Kt+1 $ · · · $Kt+|Kt |−1 $§
angeben, wobei Kt+i aus Kt durch Löschen von i Zeichen in der Nachbarschaft von ze
entsteht.
Umgekehrt lässt sich aus jeder MPCP-Lösung auch eine akzeptierende Rechnung von
M bei Eingabe w gewinnen, womit A ≤ MPCP Σ0 gezeigt ist.
Satz 91
Das Schnittproblem
{w1 #w2 | w1 , w2 kodieren DPDAs M1 , M2 mit L(M1 ) ∩ L(M2 ) = ∅}
für DCFL ist unentscheidbar.
Beweis: Betrachte die Turing-berechenbare Funktion
x1 · · · x k
= (M1 , M2 ),
f
y1 . . . yk
wobei die DPDAs Mj , j = 1, 2, die von den Grammatiken Gj = ({Sj }, {0, 1}, Pj , Sj )
mit den Regeln
P1 : S1 → 0i 1S1 xi ,
0i 11yi ,
i = 1, . . . , k
P2 : S2 → 0i 1S2 yi ,
0i 11yi ,
i = 1, . . . , k
erzeugten Sprachen Lj = L(Gj ) entscheiden. Dann gilt
L(M1 ) = {0i1 10i2 · · · 10in 11xin · · · xi1 | n ≥ 1 und 1 ≤ i1 , . . . , in ≤ k}
und
L(M2 ) = {0i1 10i2 · · · 10in 11yin · · · yi1 | n ≥ 1 und 1 ≤ i1 , . . . , in ≤ k}.
Somit ist
L(M1 ) ∩ L(M2 ) = {0i1 1 · · · 10in 11z | n ≥ 1 und xin · · · xi1 = z = yin · · · yi1 },
···xk
d.h. die Instanz I = xy11 ...y
hat genau dann eine PCP-Lösung α = (in · · · i1 ), wenn
k
i1
in
0 1 · · · 10 11xin · · · xi1 ∈ L(M1 )∩L(M2 ), also L(M1 )∩L(M2 ) 6= ∅ ist. Dies zeigt,
dass f eine Reduktion von PCP auf das Schnittproblem für DCFL vermittelt.
Korollar 92
Das Inklusionsproblem für DCFL ist unentscheidbar.
56
4 Entscheidbare und rekursiv aufzählbare Sprachen
Beweis: In obigem Beweis besitzt I genau dann eine PCP-Lösung, wenn L 1 ∩ L2 6= ∅,
d.h. L1 ⊆ L2 ist.
Korollar 93
Für kontextfreie Grammatiken sind folgende Fragestellungen unentscheidbar:
1. Ist G mehrdeutig?
2. Ist L(G1 ) = L(G2 )? (Äquivalenzproblem)
3. Ist L(G) = Σ∗ ? (Ausschöpfungsproblem)
Beweis:
1. Betrachte die Turing-berechenbare Funktion
x1 · · · x k
f
= G,
y1 . . . yk
wobei G = ({S, S1 , S2 }, {0, 1}, P1 ∪ P2 ∪ {S → S1 , S2 }, S) und Pj die Regelmengen aus vorigem Beweis sind. Da alle von S1 oder S2 ausgehende Ableitungen eindeutig sind, ist G genau dann mehrdeutig, wenn es ein Wort w ∈ L(G)
gibt mit
S ⇒ S1 ⇒∗ w und S ⇒ S2 ⇒∗ w.
Wie wir im vorigen Beweis gesehen haben, ist dies genau dann der Fall, wenn I
eine PCP-Lösung hat.
2. Seien Lj = L(Mj ), j = 1, 2, die beiden
Sprachen aus obigem Beweis. Dann
k
können bei Eingabe von I = xy11 ···x
DPDAs
M10 , M20 mit L(Mj0 ) = Lj und
...yk
kontextfreie Grammatiken G01 , G02 , G mit L(G0j ) = Lj und L(G0 ) = L1 ∪ L2
berechnet werden. Wegen
I 6∈ PCP
⇔ L 1 ∩ L2 = ∅
⇔ L1 ⊆ L2
⇔ L1 ∪ L2 = L 2
⇔ L(G0 ) = L(G02 )
vermittelt die Funktion g(I) = (G0 , G02 ) eine Reduktion des Komplements von
PCP auf das Äquivalenzproblem von kontextfreien Grammatiken.
3. Aus den beiden Grammatiken G01 und G02 kann leicht eine kontextfreie Grammatik
G00 mit L(G00 ) = L(G01 ) ∪ L(G02 ) = L1 ∪ L2 gebildet werden. D.h. die Funktion
h(I) = G00 ist Turing-berechenbar und wegen
I 6∈ PCP
⇔ L 1 ∩ L2 = ∅
⇔ L1 ∪ L2 = Σ ∗
⇔ L(G00 ) = Σ∗
reduziert sie das Komplement von PCP auf das Ausschöpfungsproblem für CFL.
4.2 Das Postsche Korrespondenzproblem (PCP)
57
Dagegen ist es nicht schwer, für eine kontextfreie Grammatik G zu entscheiden, ob ein
Wort in G ableitbar ist.
Satz 94
Das Leerheitsproblem für CFL ist entscheidbar.
Beweis: Betrachte folgenden Algorithmus:
1 Eingabe: eine kontextfreie Grammatik G = (V, Σ, P, S)
2
U0 ← ∅
3
repeat
4
U ← U0
5
U 0 ← {A | es gibt eine Regel A → α ∈ P mit α ∈ (Σ ∪ U )∗ }
6
until (U = U 0 )
7
if S ∈ U then
8
output „L(G) 6= ∅“
9
else
10
output „L(G) = ∅“
11
end
Es ist klar, dass dieser Algorithmus korrekt arbeitet und auch von einer 1-DTM ausgeführt werden kann.
Satz 95
Das Leerheitsproblem für CSL ist unentscheidbar.
Beweis: Wir reduzieren das Schnittproblem für CFL auf das (Nicht-)Leerheitsproblem
für CSL. Betrachte hierzu die Funktion
f (G1 , G2 ) = G,
wobei G eine kontextsensitive Grammatik mit L(G) = L(G1 ) ∩ L(G2 ) ist. Es bleibt
nur zu zeigen, dass f berechenbar ist:
Bei Eingabe (G1 , G2 ) bestimme zunächst LBAs M1 , M2 mit L(Mi ) =
L(Gi ), i = 1, 2. Konstruiere daraus einen LBA M für die Sprache L =
L(M1 ) ∩ L(M2 ), der erst M1 und dann M2 bei Eingabe x simuliert, ohne
bei der Simulation von M1 die Eingabe zu zerstören. Transformiere M in
eine kontextsensitive Grammatik G mit L(G) = L(M ).
Satz 96
Das Wortproblem für CSL ist entscheidbar (Beweis siehe Übungen).
58
4 Entscheidbare und rekursiv aufzählbare Sprachen
Zum Schluss dieses Kapitels fassen wir nochmals zusammen, welche der hier betrachteten Eigenschaften für die einzelnen Sprachtypen entscheidbar sind und welche nicht.
REG
DCFL
CFL
CSL
RE
Wortproblem Leerheit Äquivalenz Inklusion Schnittproblem
x∈L?
L = ∅ ? L1 = L2 ? L1 ⊆ L2 ? L1 ∩ L2 6= ∅ ?
ja
ja
ja
ja
ja
ja
ja
ja∗
nein
nein
ja
ja
nein
nein
nein
ja
nein
nein
nein
nein
nein
nein
nein
nein
nein
∗ Die Entscheidbarkeit des Äquivalenzproblems für die Klasse DCFL konnte erst vor wenigen Jahren
(1997) nachgewiesen werden.
5 Komplexitätsklassen und
NP-Vollständigkeit
5.1 Zeitkomplexität
Der Zeitverbrauch time M (x) einer Turingmaschine M bei Eingabe x ist die Anzahl
der Schritte, die diese Maschine ausgehend von der Startkonfiguration K x ausführt
(bzw. ∞, falls sie nicht stoppt).
Definition 97 (Rechenzeit)
Sei M eine Turingmaschine und sei x ∈ Σ∗ eine Eingabe. Dann ist
time M (x) = max{t ≥ 0 | ∃K : Kx `t K}
die Rechenzeit von M bei Eingabe x, wobei max N := ∞.
Sei t : N → N eine monoton wachsende Funktion. Dann ist M t(n)zeitbeschränkt, falls für alle x ∈ Σ∗ gilt:
timeM (x) ≤ t(|x|).
Alle Sprachen, die in (nicht-) deterministischer Zeit t(n) entscheidbar sind, fassen wir
in den Komplexitätsklassen
DTIME(t(n)) := {L(M ) | M ist eine t(n)-zeitbeschränkte DTM}
und
NTIME(t(n)) := {L(M ) | M ist eine t(n)-zeitbeschränkte NTM}
zusammen. Ferner sei
FTIME(t(n)) := {f | f wird von einer t(n)-zeitbeschränkten DTM berechnet}.
Die wichtigsten Zeitkomplexitätsklassen sind
[
LINTIME =
DTIME(cn),
c≥1
P =
[
DTIME(nc ),
c≥1
E =
[
DTIME(2cn ),
c≥1
EXP =
[
c≥1
c
DTIME(2n ).
60
5 Komplexitätsklassen und NP-Vollständigkeit
Die Klassen NP, NE, NEXP und FP, FE, FEXP sind analog definiert.
5.2 Platzkomplexität
Als nächstes definieren wir den Platzverbrauch einer Turingmaschine M als die Summe aller während einer Rechnung besuchten Bandfelder. Um auch sublineare Platzkomplexitätsklassen sinnvoll definieren zu können, zählen wir jedoch die Bandfelder,
auf denen die Eingabe steht, nicht mit. Damit M diesen Platz nicht auch zum Rechnen
benutzt, darf M die Inschrift des ersten Bandes nicht verändern und nur bis zum Ende
der Eingabe lesen.
Definition 98 (Offline-Turingmaschine)
Eine Turingmaschine M heißt Offline-Turingmaschine, falls für jede Anweisung (q 0 , a01 , . . . , a0k , D1 , . . . , Dk ) ∈ δ(q, a1 , . . . ak )
• a01 = a1 und
• a1 = t ⇒ D1 = L
gilt.
Definition 99 (Platzverbrauch)
Sei M eine Offline-Turingmaschine und sei x ∈ Σ∗ eine Eingabe. Dann ist
spaceM (x) = max{s ≥ 1 | ∃K = (q, u1 , a1 , v1 , . . . , uk , ak , vk )
mit s =
k
X
|ui ai vi | und Kx `t K}
i=2
der Platzverbrauch von M bei Eingabe x. Sei s : N → N eine monoton wachsende Funktion. Dann ist M s(n)-platzbeschränkt, falls für alle x ∈ Σ∗ gilt:
spaceM (x) ≤ s(|x|).
Alle Sprachen, die in (nicht-) deterministischem Platz s(n) entscheidbar sind, fassen
wir in den Komplexitätsklassen
DSPACE(s(n)) := {L(M ) | M ist eine s(n)-platzbeschränkte Offline-DTM}
und
NSPACE(s(n)) := {L(M ) | M ist eine s(n)-platzbeschränkte Offline-NTM}
5.3 NP-Vollständigkeit und das P=NP Problem
61
zusammen. Die wichtigsten Platzkomplexitätsklassen sind
L = DSPACE(log n)
[
LINSPACE = DSPACE(n) =
DSPACE(cn)
c>0
PSPACE =
[
DSPACE(nc )
c>0
ESPACE =
[
DSPACE(2cn )
c>0
EXPSPACE =
[
c
DSPACE(2n )
c>0
Die Klassen NL, NLINSPACE und NPSPACE sind analog definiert, wobei letztere wegen NSPACE(s(n)) ⊆ DSPACE(s2 (n)) mit PSPACE zusammenfällt (dies wird in der
Vorlesung Komplexitätstheorie gezeigt).
Die Klassen der Chomsky-Hierarchie lassen sich gemäß ihrer Zeit- und Platzkomplexität wie folgt einordnen.
REG ⊆ DCFL ⊆ LINTIME ⊆ P
CFL ⊆ DTIME(n3 ) ⊆ P
DCSL = LINSPACE ⊆ CSL = NLINSPACE ⊆ E
[
[
REC =
DSPACE(f (n)) =
NSPACE(f (n))
f
=
[
f
f
DTIME(f (n)) =
[
NTIME(f (n)),
f
wobei f alle berechenbaren Funktionen f : N → N durchläuft.
5.3 NP-Vollständigkeit und das P=NP Problem
Wie wir im letzten Kapitel gesehen haben, sind NTMs nicht mächtiger als DTMs, da
erstere von letzteren simuliert werden können (siehe Satz 74). Die Frage, wieviel Zeit
eine NTM gegenüber einer DTM einsparen kann, ist eines der wichtigsten offenen Probleme der Informatik. So enthält die Klasse NP viele für die Praxis überaus wichtige
Probleme, von denen nicht bekannt ist, ob sie auch zu P gehören. Da jedoch nur Probleme in P als effizient lösbar gelten können, ist das so genannte P = NP-Problem, also
die Frage, ob die Inklusion von P in NP echt ist, nicht nur von theoretischem Interesse,
sondern hat auch eine große praktische Bedeutung.
62
5 Komplexitätsklassen und NP-Vollständigkeit
Wie bereits erwähnt, ist diese Frage im Kontext von Platzklassen weitgehend geklärt,
da eine s(n)-platzbeschränkte NTM durch eine s2 (n)-platzbeschränkte DTM simuliert
werden kann.
Definition 100 (Polynomialzeitreduktion)
Seien A ⊆ Σ∗ und B ⊆ Γ∗ Sprachen. Dann heißt A auf B in Polynomialzeit
reduzierbar (kurz: A ≤p B), falls eine Funktion f : Σ∗ → Γ∗ in FP existiert
mit
∀x ∈ Σ∗ : x ∈ A ⇔ f (x) ∈ B
Lemma 101 (D)
e Reduktionsrelation ≤p ist reflexiv und transitiv (siehe Übungen).
Satz 102
Die Klassen P und NP sind unter ≤p abgeschlossen.
Beweis: Sei B ∈ P (bzw. B ∈ NP) und gelte A ≤p B mittels einer Funktion f ∈ FP.
Sei M eine (nicht)deterministische Turingmaschine mit L(M ) = B, sei T eine DTM,
die f berechnet, und seien p, q polynomiale Zeitschranken für M und T . Betrachte
folgende Turingmaschine M 0 , die sich bei Eingabe x wie M bei Eingabe f (x) verhält.
1 Eingabe: x
2
y ← f (x)
3
simuliere M bei Eingabe y
Dann gilt
x ∈ L(M 0 ) ⇔ f (x) ∈ L(M )
⇔ f (x) ∈ B
⇔ x ∈ A,
d.h. L(M 0 ) = A. Wegen
time M 0 (x)
≤ time T (x) + time M (f (x))
≤ q(|x|) + p(q(|x|)),
ist M 0 polynomial zeitbeschränkt, weshalb A in P (bzw. NP) ist.
Definition 103 (NP-vollständig)
Eine Sprache A heißt NP-schwer (oder NP-hart), falls gilt:
∀L ∈ NP : L ≤p A.
Ist darüber hinaus A ∈ NP, so heißt A NP-vollständig (kurz A ∈ NPC; NPcomplete).
Satz 104
1. A ≤p B und A ist NP-schwer ⇒ B ist NP-schwer.
2. A ≤p B, A ∈ NPC und B ∈ NP ⇒ B ∈ NPC.
5.3 NP-Vollständigkeit und das P=NP Problem
63
3. NPC ∩ P 6= ∅ ⇒ P = NP.
Beweis: 1. Wir müssen für eine beliebige Sprache L ∈ NP zeigen, dass L ≤ p B
gilt. Da A nach Voraussetzung NP-schwer ist, folgt zunächst L ≤ p A. Da zudem
A ≤p B gilt und die Relation ≤p transitiv ist, folgt L ≤p B.
2. Mit 1. folgt, dass B NP-schwer ist. Da zudem B ∈ NP ist, folgt B ∈ NPC.
3. Falls eine Sprache A in NPC ∩ P existiert, so lässt sich jede NP-Sprache L auf
A ∈ P reduzieren. Da P unter ≤p abgeschlossen ist, folgt L ∈ P.
Satz 105
Die Sprache
A = {M #x#0m | M ist eine NTM, die x in ≤ m Schritten akzeptiert}
ist NP-vollständig.
Beweis: Zunächst ist klar, dass A ∈ NP mittels folgender NTM ist:
Bei Eingabe M #x#0m simuliere M bei Eingabe x für höchstens m Schritte. Falls M in dieser Zeit akzeptiert, akzeptiere ebenfalls. Andernfalls verwerfe.
Zum Nachweis der NP-Härte von A sei eine beliebige NP-Sprache L gegeben. Dann
existiert eine NTM M mit L(M ) = L und ein Polynom p, das die Rechenzeit von M
begrenzt. Also lässt sich L mittels der FP-Funktion
f : x 7→ M #x#0p(|x|)
auf A reduzieren.
Definition 106 (Boolesche Formeln)
Die Menge der Booleschen (oder aussagenlogischen) Formeln über den Variablen x1 , . . . , xn ist induktiv wie folgt definiert:
• Jede Variable xi ist eine Boolesche Formel.
• Mit G und H sind auch die Negation ¬G von G, die Konjunktion (G ∧ H)
von G und H, die Disjunktion (G ∨ H) sowie die Implikation (G → H)
Boolesche Formeln.
Eine Belegung a = a1 . . . an ∈ {0, 1}n ordnet jeder Variablen xi den Wert
ai ∈ {0, 1} zu. Der Wert F (a) von F unter a ist induktiv über den Aufbau von
F definiert:
F
F (a)
xi
¬G
G∧H
G∨H
G→H
ai
1 − G(a)
G(a)H(a)
G(a) + H(a) − G(a)H(a)
1 − G(a)(1 − H(a))
64
5 Komplexitätsklassen und NP-Vollständigkeit
Durch F wird also eine n-stellige Boolesche Funktion berechnet, die wir ebenfalls mit F bezeichnen. F heißt erfüllbar, falls es eine Belegung a mit F (a) = 1
gibt.
Beispiel 107
Die Formel F = (x1 ∨ x2 ) → (x2 ∧ x3 ) ist erfüllbar und berechnet folgende
Boolesche Funktion:
a1 a2 a3
000
001
010
011
100
101
110
111
a1 ∨ a 2
0
0
1
1
1
1
1
1
a2 ∧ a 3
0
0
0
1
0
0
0
1
(a1 ∨ a2 ) → (a2 ∧ a3 )
1
1
0
1
0
0
0
1
Beispiel 108
Die Formel
G(x1 , . . . , xn ) = (x1 ∨ · · · ∨ xn ) ∧
^
¬(xi ∧ xj )
1≤i<j≤n
liefert unter
P einer Belegung a = a1 · · · an genau dann den Wert G(a1 · · · an ) =
1, wenn ni=1 ai = 1 ist (d.h. wenn eine einzige Variable mit 1 belegt ist). Diese
Formel werden wir im Beweis des nächsten Satzes benötigen.
Bei vielen praktischen Anwendungen ist es erforderlich, eine erfüllende Belegung für
eine vorliegende Boolesche Formel zu finden (sofern es eine gibt). Die Bestimmung
der Komplexität des folgenden Entscheidungsproblems hat also große praktische Bedeutung.
Erfüllbarkeitsproblem für Boolesche Formeln (S AT ; satisfiability):
Gegeben: Eine Boolesche Formel F in den Variablen x1 , . . . , xn .
Gefragt: Ist F erfüllbar?
Satz 109
S AT ist NP-vollständig.
Beweis: Es ist leicht zu sehen, dass S AT ∈ NP ist: Eine NTM kann bei Eingabe einer
Booleschen Formel F zunächst eine Belegung a nichtdeterministisch raten und dann in
Polynomialzeit überprüfen, ob F (a) = 1 ist.
Um zu zeigen, dass S AT NP-schwer ist, sei L eine beliebige NP-Sprache und sei M =
(Z, Σ, Γ, δ, q0 ) eine k-NTM mit L(M ) = L, deren Rechenzeit durch ein Polynom p
beschränkt ist (wir können o.B.d.A. k = 1 annehmen, da bei der Simulation einer kNTM durch eine 1-NTM die Rechenzeit höchstens quadratisch ansteigt; siehe Satz 74).
5.3 NP-Vollständigkeit und das P=NP Problem
65
Unsere Aufgabe besteht nun darin, zu einer gegebenen Eingabe w = w 1 · · · wn eine
Formel Fw zu finden, die genau dann erfüllbar ist, wenn w ∈ L ist (natürlich müssen
wir auch nachweisen, dass Fw in Polynomialzeit aus w berechenbar ist).
O.B.d.A. sei Z = {q0 , . . . , qk }, E = {qk } und Γ = {a1 , . . . , al }. Dann bilden wir Fw
über den Variablen
xt,q , yt,i und zt,i,a für 0 ≤ t ≤ p(n), −p(n) ≤ i ≤ p(n), q ∈ {q0 , . . . , qk } und a ∈ Γ,
die für die folgenden Aussagen über eine Rechnung von M stehen sollen:
xt,q : zum Zeitpunkt t befindet sich M im Zustand q.
yt,i : zur Zeit t befindet sich der Kopf auf dem Bandfeld mit der Nummer i.
zt,i,a : zur Zeit t befindet sich das Zeichen a auf dem Feld mit der Nummer i.
Unser Ziel ist es, die Formel Fw so zu konstruieren, dass Fw unter einer Belegung
genau dann wahr wird, wenn diese Belegung eine akzeptierende Rechnung von M bei
Eingabe w beschreibt. Konkret sei Fw = R ∧ S ∧ T1 ∧ T2 ∧ T3 ∧ E, wobei R (steht
für Randbedingungen) sicherstellt, dass wir jeder erfüllenden Belegung eindeutig eine
Folge von Konfigurationen K0 , . . . , Kp(n) zuordnen können:
R=
^
Rt ,
0≤t≤p(n)
wobei
Rt = G(xt,q0 , . . . , xt,qk ) ∧ G(yt,−p(n) , . . . , yt,p(n) ) ∧
^
G(zt,i,a1 , . . . , zt,i,al )
−p(n)≤i≤p(n)
ist. Die Teilformel R sorgt also dafür, dass zu jedem Zeitpunkt t
• genau ein Zustand q ∈ {q0 , . . . , qk } eingenommen wird,
• genau ein Bandfeld i ∈ {−p(n), . . . , p(n)} besucht wird und
• auf jedem Feld i genau ein Zeichen a ∈ Γ steht.
66
5 Komplexitätsklassen und NP-Vollständigkeit
Die übrigen Teilformeln sind
S = x0,q0 ∧ y0,1 ∧ z0,−p(n),t ∧ · · · ∧ z0,−1,t ∧ z0,0,w1 ∧ · · · ∧ z0,n−1,wn ∧
z0,n,t ∧ · · · ∧ z0,p(n),t ,
^
T1 =
[(¬yt,i ∧ zt,i,a ) → zt+1,i,a ],
0≤t<p(n)
−p(n)≤i≤p(n)
a∈Γ
^
T2 =
_
[(xt,qj ∧ yt,i ∧ zt,i,a ) →
(xt+1,q0 ∧ yt+1,i+D ∧ zt+1,i,a0 )],
(q 0 ,a0 ,D)∈δ(qj ,a)
0≤t<p(n)
−p(n)≤i≤p(n)
0≤j≤k−1,a∈Γ
T3 =
^
[(xt,qk ∧ yt,i ∧ zt,i,a ) → (xt+1,qk ∧ yt+1,i ∧ zt+1,i,a )] und
0≤t<p(n)
−p(n)≤i≤p(n)
a∈Γ
E = xp(n),qk ,
wobei


D=N
i,
i + D = i + 1, D = R


i − 1, D = L
ist. Die Formel S (wie Startbedingung) stellt also sicher, dass zum Zeitpunkt 0 tatsächlich die Startkonfiguration
t
···
t w1
···
wn
t ···
t
↑
q0
vorliegt. Mit der Formel T1 wird gewährleistet, dass der Inhalt von nicht besuchten Feldern beim Übergang zwischen den Konfigurationen Kt und Kt+1 unverändert bleibt.
Dagegen achtet die Formel T2 auf die Einhaltung der durch δ vorgegebenen Anweisungen, solange nicht der Zustand qk angenommen wird. Schließlich sorgt T3 dafür,
dass sich nach Erreichen des Zustands qk nichts mehr ändert und E überprüft, ob zum
Zeitpunkt p(n) der Zustand qk vorliegt.
Da die Länge der Formel f (w) = Fw polynomiell in n ist und ihr Aufbau einem
einfachen Bildungsgesetz folgt, ist die Reduktionsfunktion f in FP berechenbar. Es
bleibt zu zeigen, dass alle Eingaben w die Äquivalenz
w ∈ L(M ) ⇔ Fw ∈ S AT
erfüllen.
5.3 NP-Vollständigkeit und das P=NP Problem
67
„⇒“: Ist w ∈ L(M ), so gibt es eine akzeptierende Rechnung von M bei Eingabe w
der Länge ≤ p(n). Belegen wir nun die Variablen xt,q , yt,i und zt,i,a gemäß dieser
Rechnung, so erhalten wir offensichtlich eine erfüllende Belegung für F w .
„⇐“: Ist a eine erfüllende Belegung für Fw , so können wir daraus in eindeutiger Weise
(wegen R(a) = 1) eine Folge von Konfigurationen K0 , . . . , Kp(n) gewinnen.
Wegen S(a) = 1 ist K0 die Startkonfiguration von M bei Eingabe w. Wegen
T1 (a) = T2 (a) = T3 (a) = 1 muss für i = 0, . . . , p(n) − 1 entweder Ki `
Ki+1 oder Ki = Ki+1 gelten. Schließlich muss Kp(n) wegen E(a) = 1 eine
akzeptierende Endkonfiguration und damit w ∈ L(M ) sein.
Gelingt es also, einen Polynomialzeit-Algorithmus für SAT zu finden, so lässt sich daraus leicht ein effizienter Algorithmus für jedes Problem in NP ableiten.
Korollar 110
S AT ∈ P ⇔ P = NP.
Definition 111 (Boolesche Schaltkreise)
Ein Boolescher Schaltkreis c mit n Eingängen ist eine Folge (g1 , . . . , gm ) von
Gattern gl ∈ {0, 1, x1 , . . . , xn , (¬, j), (∧, j, k), (∨, j, k)} mit 1 ≤ j, k < l.
Die am Gatter gl berechnete n-stellige Boolesche Funktion ist induktiv wie folgt
definiert:
gl
gl (a)
0
0
1
1
xi
ai
(¬, j)
1 − gj (a)
(∧, j, k) gj (a)gk (a)
(∨, j, k) gj (a) + gk (a) − gj (a)gk (a)
c berechnet die Boolesche Funktion c(a) = gm (a). c heißt erfüllbar, wenn es
eine Eingabe a ∈ {0, 1}n mit c(a) = 1 gibt.
Bemerkung: Die Anzahl der Eingänge eines Gatters g wird als Fanin von g bezeichnet,
die Anzahl der Ausgänge (also die Anzahl der Gatter, die g als Eingabe benutzen) als
Fanout. Boolesche Formeln entsprechen also den Booleschen Schaltkreisen mit (maximalem) Fanout 1 und umgekehrt.
Erfüllbarkeitsproblem für Boolesche Schaltkreise (C IR S AT ):
Gegeben: Ein Boolescher Schaltkreis c mit n Eingängen.
Gefragt: Ist c erfüllbar?
Aufgrund obiger Bemerkung ist klar, dass S AT in Polynomialzeit auf C IR S AT reduzierbar ist. Da C IR S AT offensichtlich in NP enthalten ist, haben wir ein weiteres NPvollständiges Problem gefunden.
68
5 Komplexitätsklassen und NP-Vollständigkeit
Satz 112
C IR S AT ist NP-vollständig.
Da S AT NP-vollständig ist, ist C IR S AT in Polynomialzeit auf S AT reduzierbar. Tatsächlich können wir C IR S AT sogar auf ein Teilproblem von S AT reduzieren.
Definition 113 (konjunktive Normalform)
Eine Boolesche Formel F über den Variablen x1 , . . . , xn ist in konjunktiver
Normalform (kurz KNF), falls F eine Konjunktion
F =
ki
m _
^
Ljl
j=1 l=1
| {z }
Cj
von Disjunktionen Cj von Literalen Ljl ∈ {x1 , . . . , xn , x̄1 , . . . , x̄n } ist. Hierbei verwenden wir x̄ als abkürzende Schreibweise für ¬x. Gilt ki ≤ k für
j = 1, . . . , m, so heißt F in k-KNF.
Wk
Eine Disjunktion C = l=1 Ll von Literalen wird auch als Klausel bezeichnet und oft
auch in Mengennotation C = {L
Vm1 , . . . , Lk } der in ihr vorkommenden Literale dargestellt. Eine KNF-Formel F = j=1 Cj kann dann als die Menge {C1 , . . . , Cm } ihrer
Klauseln dargestellt werden.
Beispiel 114
Die Formel F = (x1 ∨ x̄2 )∧(x̄1 ∨x3 )∧(x2 ∨ x̄3 ∨x4 ) ist in 3-KNF und lässt sich
in Mengennotation durch F = {{x1 , x̄2 }, {x̄1 , x3 }, {x2 , x̄3 , x4 }} beschreiben.
Erfüllbarkeitsproblem für k-KNF Formeln (k-S AT ):
Gegeben: Eine Boolesche Formel in k-KNF.
Gefragt: Ist F erfüllbar?
Proposition 115
1-S AT und 2-S AT liegen in P.
Satz 116
3-S AT ist NP-vollständig.
Beweis: Wir zeigen C IR S AT ≤p 3-S AT. Hierzu transformieren wir V
einen Schaltkreis
m
c = (g1 , . . . , gm ) mit n Eingängen in eine 3-KNF Formel Fc = zm ∧ l=1 Gl über den
5.3 NP-Vollständigkeit und das P=NP Problem
69
Variablen x1 , . . . , xn , z1 , . . . , zm , wobei die Formeln Gl wie folgt definiert sind:
gl
Gl
0
1
xi
z̄l
zl
(z̄l ∨ xi ) ∧ (x̄i ∨ zl )
| {z }
| {z }
zl →xi
(¬, j)
z̄j →zl
(∧, j, k)
zl →z̄j
(z̄l ∨ zj ) ∧ (z̄l ∨ zk ) ∧ (zl ∨ z̄j ∨ z̄k )
| {z }
|
{z
}
| {z }
zl →zj
(∨, j, k)
xi →zl
(zl ∨ zj ) ∧ (z̄l ∨ z̄j )
| {z }
| {z }
zl →zk
(zj ∧zk )→zl
(zl ∨ z̄j ) ∧ (zl ∨ z̄k ) ∧ (z̄l ∨ zj ∨ zk )
| {z }
| {z }
{z
}
|
zj →zl
zk →zl
zl →(zj ∨zk )
Offensichtlich ist die Reduktionsfunktion f : c 7→ Fc in FP berechenbar. Es bleibt zu
zeigen, dass für jeden Schaltkreis c die Äquivalenz
c ∈ C IR S AT ⇔ Fc ∈ 3-S AT
gilt.
„⇒“: Sei a1 · · · an ∈ {0, 1}n eine Eingabe mit c(a1 · · · an ) = 1. Dann liefert
bl = gl (a1 · · · an ), l = 1, . . . , m
eine erfüllende Belegung a1 · · · an b1 · · · bm für Fc (x1 , . . . , xn , z1 , . . . , zm ).
„⇐“: Ist umgekehrt a1 · · · an b1 · · · bm eine erfüllende Belegung für Fc , so muss bm =
1 sein, da zm eine Klausel in Fc ist. Aufgrund der Konstruktion von Fc folgt
andererseits durch Induktion über l = 1, . . . , m
gl (a1 · · · an ) = bl .
Insbesondere folgt c(a1 · · · an ) = gm (a1 · · · an ) = bm = 1, also ist c ∈ C IR S AT .
Wenn eine KNF-Formel F nicht erfüllbar ist, kann es nützlich sein, herauszufinden,
wieviele Klauseln in F maximal erfüllbar sind. Es ist klar, dass sich die Lösung dieses
Optimierungsproblems leicht auf die Lösung des folgenden Entscheidungsproblems zurückführen lässt.
Definition 117 (M AX -k-S AT)
Gegeben: eine Formel F in k-KNF und eine Zahl l.
Gefragt: existiert eine Belegung a, die mindestens l Klauseln in F erfüllt?
Proposition 118
M AX -1-S AT liegt in P.
70
5 Komplexitätsklassen und NP-Vollständigkeit
Satz 119
M AX -2-S AT ∈ NPC.
Beweis: Die Zugehörigkeit von M AX -2-S AT zu NP ist klar. Dass M AX -2-S AT NP-hart
ist, zeigen wir durch eine Reduktion von 3-S AT auf M AX -2-S AT. Hierzu betrachten wir
die 2-KNF-Formel G(x, y, z, w) die aus den 10 Klauseln
{x}, {y}, {z}, {w}, {x, y}, {y, z}, {x, z}, {x, w}, {y, w}, {z, w}
besteht. Die folgenden drei Eigenschaften von G lassen sich leicht verifizieren.
• Jede Belegung a erfüllt maximal 7 Klauseln von G.
• Jede Belegung a = a1 a2 a3 , die die Disjunktion x ∨ y ∨ z erfüllt (d.h. a 6= 000),
kann zu einer Belegung a0 = a1 a2 a3 a4 erweitert werden, die 7 Klauseln von G
erfüllt.
• Die Belegung a = 000 kann nicht zu einer Belegung a0 erweitert werden, die 7
Klauseln von G erfüllt.
Sei F eine 3-KNF-Formel mit m Klauseln und seien Ci = {li1 , li2 , li3 }, i = 1, . . . , k,
die Klauseln in F , die genau 3 Literale enthalten, und seien Ci , i = k + 1, . . . , m die
übrigen Klauseln. Wir transformieren F auf das Paar g(F ) = (F 0 , m + 6k), wobei die
2-KNF Formel F 0 aus F durch Anwendung folgender Regel entsteht:
Ersetze jede Klausel Ci = {li1 , li2 , li3 } in F , die genau 3 Literale enthält,
durch die 10 Klauseln der Formel Gi = G(li1 , li2 , li3 , wi ).
Dann ist leicht zu sehen, dass g in FL berechenbar ist. Unter Benutzung der 3 Eigenschaften der Formel G lässt sich nun leicht die Korrektheit der Reduktion, also die
Äquivalenz
F ∈ 3-S AT ⇔ (F 0 , m + 6k) ∈ M AX -2-S AT
zeigen. Die Vorwärtsrichtung ergibt sich unmittelbar aus der Tatsache, dass jede erfüllende Belegung a für F zu einer Belegung a0 erweiterbar ist, die 7k + m − k = m + 6k
Klauseln von F 0 erfüllt.
Für die Rückwärtsrichtung sei a eine Belegung für F 0 , die mindestens m + 6k Klauseln
erfüllt. Da a maximal 7 Klauseln in jeder 10er-Gruppe Gi , i = 1, . . . , k erfüllen kann,
muss a genau 7 Klauseln in jeder Gruppe und alle Klauseln Ci für i = k + 1, . . . , m
erfüllen. Daher erfüllt a alle Klauseln Ci von F .
Als nächstes betrachten wir das Wortproblem für NFAs und für reguläre Ausdrücke und
zeigen, dass beide effizient lösbar sind. Dagegen wird sich das Äquivalenzproblem für
(sternfreie) reguläre Ausdrücke als co-NP-hart herausstellen.
Satz 120
Das Wortproblem für reguläre Sprachen, beschrieben durch NFAs,
WPNFA = {M #x | M ist ein NFA und x ∈ L(M )}
ist in P entscheidbar.
5.3 NP-Vollständigkeit und das P=NP Problem
71
Beweis: Betrachte folgenden Algorithmus:
1 Eingabe: M #x mit x = x1 . . . xn und M = (Z, Σ, δ, Q0 , E)
2
Q ← Q0
3
for i ← 1 to n do
S
4
Q ← q∈Q δ(q, xi )
5
end
6
if Q ∩ E 6= ∅ then
7
accept
8
else
9
reject
10
end
Es ist klar, dass dieser Algorithmus korrekt arbeitet und auch in eine polynomiell zeitbeschränkte DTM übersetzt werden kann, die die Sprache WPNFA entscheidet.
Korollar 121
Das Wortproblem für reguläre Ausdrücke,
WPRA = {α#x | α ist ein regulärer Ausdruck und x ∈ L(α)}
ist in P entscheidbar.
Beweis: Da ein regulärer Ausdruck α in Polynomialzeit in einen äquivalenten NFA
Nα transformiert werden kann, gilt WPRA ≤p WPNFA mittels f (α#x) = (Nα #x). Da
nach vorigem Satz L ∈ P ist, und da P unter ≤p abgeschlossen ist, folgt WPRA ∈ P. Mit einem ganz ähnlichen Beweis zeigt man, dass auch das Leerheitsproblem und das
Schnittproblem für NFAs in Polynomialzeit lösbar sind (siehe Übungen).
Korollar 122
Das Leerheitsproblem für NFAs,
LPNFA = {M | M ist ein NFA und L(M ) = ∅}
und das Schnittproblem für NFAs,
SPNFA = {M1 #M2 | M1 und M2 sind NFAs mit L(M1 ) ∩ L(M2 ) = ∅}
sind in P lösbar.
Definition 123 (sternfrei)
Ein regulärer Ausdruck α ∈ (Σ ∪ {∅, , (, ), |})∗ , in dem kein Stern vorkommt,
heißt sternfrei.
Satz 124
Sei Σ = {a1 , . . . , am } ein Alphabet mit m ≥ 2. Dann ist die Sprache L =
{α#bin(n) | α ist ein sternfreier regulärer Ausdruck über Σ mit L(α) 6= Σn }
NP-vollständig.
72
5 Komplexitätsklassen und NP-Vollständigkeit
Beweis: Wir zeigen zuerst L ∈ NP. Durch Induktion über die Länge von α überzeugt
man sich leicht davon, dass für einen sternfreien regulären Ausdruck α immer
L(α) ⊆ Σ≤|α|
gilt, wobei Σ≤m :=
Sprache L:
Sm
n=0
Σn ist. Daher akzeptiert folgender NP-Algorithmus die
1 Eingabe: α#bin(n)
2
if n > |α| then accept
3
rate x ∈ Σn und y ∈ Σ≤|α| − Σn
4
if x 6∈ L(α) ∨ y ∈ L(α) then accept else reject end
Als nächstes zeigen wir, dass 3-S AT auf L reduzierbar ist. Sei
F =
m
^
Cj
j=1
mit Cj ⊆ {x1 , . . . , xn , x̄1 , . . . , x̄n } und kCj k ≤ 3. Betrachte die Reduktionsfunktion
f (F ) = α1 | · · · |αm
| {z }
αF
mit αj = β1j · · · βnj , wobei


0,
βij = 1,


(0|1),
xi kommt in Cj vor
x̄i kommt in Cj vor
sonst
ist. Dann gilt L(αj ) = {a ∈ {0, 1}n | Cj (a) = 0} und daher folgt
F 6∈ 3-S AT
⇔ ∀a ∈ {0, 1}n : F (a) = 0
⇔ ∀a ∈ {0, 1}n∃j : Cj (a) = 0
⇔ ∀a ∈ {0, 1}n∃j : a ∈ L(αj )
⇔ L(αF ) = {0, 1}n.
Korollar 125
Das Äquivalenzproblem für sternfreie reguläre Ausdrücke,
ÄPSFRA = {α#β | α, β sind sternfreie reguläre Ausdrücke mit L(α) = L(β)}
ist co-NP-vollständig.
Beweis: Die Funktion
f (α#bin(n)) =


· · (0|1) #α,
|(0|1) ·{z
}
n-mal

0#1,
n≤α
sonst
vermittelt eine Polynomialzeit-Reduktion von L auf ÄPSFRA . Dies zeigt, dass ÄPSFRA
co-NP-hart ist. Es ist auch leicht zu sehen, dass ÄPSFRA in co-NP entscheidbar ist. 5.3 NP-Vollständigkeit und das P=NP Problem
73
Es ist nicht schwer, mit derselben Beweistechnik auch das Äquivalenzproblem und das
Inklusionsproblem für NFAs als co-NP-hart nachzuweisen (siehe Übungen). Tatsächlich sind diese Probleme sogar PSPACE-vollständig.
Korollar 126
Das Äquivalenzproblem für NFAs,
ÄPNFA = {M1 #M2 | M1 und M2 sind NFAs mit L(M1 ) = L(M2 )}
und das Inklusionsproblem für NFAs,
IPNFA = {M1 #M2 | M1 und M2 sind NFAs mit L(M1 ) ⊆ L(M2 )}
sind co-NP-hart.
Zum Abschluss betrachten wir das Problem, einen Rucksack der Größe v optimal mit
einer Auswahl von k Gegenständen der Größe u1 , . . . , uk zu bepacken. Dieses Optimierungsproblem lässt sich leicht auf folgendes Entscheidungsproblem reduzieren.
Rucksack-Problem (Subset Sum):
Gegeben: Ein Vektor (u1 , . . . , uk , v, w) ∈ Nk+2 von natürlichen Zahlen.
P
Gefragt: Gibt es eine Auswahl I ⊆ {1, . . . , k} mit w ≤ i∈I ui ≤ v?
Satz 127
Rucksack ist NP-vollständig.
Beweis: Wir zeigen 3-S AT ≤p RUCKSACK . Sei
F =
kj
m _
^
Ljl
j=1 l=1
| {z }
Cj
mit kj ≤ 3 und Ljl ∈ {x1 , . . . , xn , x̄1 , . . . , x̄n }. Betrachte die Reduktionsfunktion
f (F ) = (u1 , . . . , un , ū1 , . . . , ūn , v1 , . . . , vm , w1 , . . . , wm , v, v),
wobei ui und ūi die Zahlen
ui = bi1 · · · bim 0i−1 10n−i−1 und ūi = b̄i1 · · · b̄im 0i−1 10n−i−1 (zur Basis 10)
mit
bij =
(
1, xi kommt in Cj vor
0, sonst
und
b̄ij =
(
1, x̄i kommt in Cj vor
0, sonst
und vj = wj = 0j−1 10m−j−1 ist. Die Größe v des Rucksacks setzen wir auf
v=3
· · 3} |1 ·{z
· · 1} .
| ·{z
m-mal
n-mal
74
5 Komplexitätsklassen und NP-Vollständigkeit
Für die Formel F = (x̄1 ∨x̄3 ∨x4 )∧(x1 ∨x2 ∨x4 )∧(x̄2 ∨x̄4 ) erhalten wir beispielsweise
den Vektor (u1 , u2 , u3 , u4 , ū1 , ū2 , ū3 , ū4 , v1 , v2 , v3 , w1 , w2 , w3 , v) mit
u1
u2
u3
u4
=
=
=
=
und
010 1000
011 0100
000 0010
110 0001
v1 = w 1
v2 = w 2
v3 = w 3
ū1
ū2
ū3
ū4
=
=
=
=
100 1000
001 0100
100 0010
001 0001
= 100 0000
= 010 0000
= 001 0000
sowie v = 333 1111. Da f in Polynomialzeit berechenbar ist, müssen wir nur noch die
Äquivalenz
F ∈ 3-S AT ⇔ f (F ) ∈ RUCKSACK
zeigen, d.h. F ist genau dann erfüllbar, wenn es eine Auswahl von Gegenständen gibt,
mit denen sich der Rucksack randvoll bepacken lässt.
„⇒“: Sei a = a1 · · · an eine erfüllende Belegung für F . Dann ist
X
X
ui +
ūi
ai =1
ai =0
eine Zahl der Form b1 · · · bm 1 · · · 1 mit 1 ≤ bj ≤ 3, da die Belegung a in jeder
Klausel mindestens ein und höchstens drei Literale wahr macht. Durch Addition
von
X
X
vj +
wj
bj ≤2
bj =1
erhalten wir v.
„⇐“: Sei umgekehrt eine Lösung
P, N ⊆ {1, . . . , n}
I, J ⊆ {1, . . . , m}
für die Rucksack-Instanz f (F ) mit
X
X
X
X
ui +
ūi +
vj +
wj = v
i∈P
i∈N
j∈I
j∈J
gegeben. Dann gilt P = {1,P. . . , n} − NP, da keine Überträge auftreten können.
Ausserdem muss die Zahl i∈PPui + i∈NPūi die Form b1 · · · bm 1 · · · 1 mit
bj ≥ 1 haben, da die Restsumme j∈I vj + j∈J wj die Form c1 · · · cm 0 · · · 0
mit cj ≤ 2 hat. Folglich enthält jede Klausel Cj mindestens ein Literal L ∈ {xi |
i ∈ P } ∪ {x̄i | i ∈ N }, so dass die Belegung a = a1 · · · an mit
(
1, i ∈ P
ai =
0, i ∈ N
die Formel F erfüllt.
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement