Automatentheorie und Formale Sprachen Skript zur Vorlesung im

Werbung
Automatentheorie
und
Formale Sprachen
Skript zur Vorlesung im SS 2000
von Prof. Dr. Franz Baader
geLATEXt von
Claus Richterich
[email protected]
Diego Biurrun
[email protected]
Stefan Jacobs
[email protected]
Stefan Schiffer
[email protected]
Thomas Deselaers
[email protected]
Tran Huy Nguyen
[email protected]
Vorschau
ATFS: Teil der Theoretischen Informatik, beschäftigt sich mit Wörtern und Mengen
von Wörtern (formale Sprachen).
Wichtige Fragestellungen
• Wie beschreibt man die (meist unendlichen) Mengen mit endlichem Aufwand?
– Automaten oder Maschinen, die genau die Elemente der Menge akzeptieren (vgl. BuK, endliche Automaten, Turingmaschinen).
– Grammatiken, die die Elemente der Menge generieren (vgl. Programmierung, kontextfreie Grammatiken).
– Ausdrücke, welche beschreiben, wie man die Sprache aus Basissprachen mit Hilfe von Operationen (∩, ∪,¯) erzeugen kann.
Abhängig vom verwendeten Automaten- bzw Grammatiktyp bekommt
man verschiedene Klassen von Sprachen.
Klasse Automatentyp
Typ0
Typ1
Typ2
Typ3
Grammatiktyp
allgemeine ChomskyTuringmaschine
grammatik
linear bandbeschränk- kontextsensitive
te Turingmaschine
Grammatik
kontextfreie GrammaKellerautomat
tik
einseitig
lineare
endlicher Automat
Grammatik
Typ2 und Typ3 sind die wichtigsten Typen. Z.B. können Typ2 Sprachen
weitgehend die Syntax von Programmiersprachen definieren.
• Welche Problemstellungen sind für eine Sprachklasse entscheidbar? Wenn ja,
mit welchem Aufwand?
– Wortproblem: Gegeben eine Beschreibung der Sprache L (Automat,
Grammatik) und gegeben Wort w. Gilt w ∈ L?
Anwendungsbeispiele:
1
∗ Programmiersprache, deren Syntax durch eine kontextfreie Grammatik gegeben ist. Entscheide, ob ein Programm syntaktisch korrekt ist.
∗ Suchpattern für Textdateien sind häufig reguläre Ausdrücke (beschreiben Typ3 Sprachen). Suche die Dateien (=
ˆ Wörter), welche
das Pattern enthalten, d.h. die zur beschriebenen Sprache gehören.
– Leerheitsproblem: Gegeben eine Beschreibung einer Sprache L. Gilt
L 6= ∅?
Anwendungsbeispiel:
∗ Wenn ein Suchpattern die leere Sprache beschreibt, so muß man
erst gar nicht danach suchen.
– Äquivalenzproblem: Beschreiben zwei verschiedene Beschreibungen
dieselbe Sprache?
Anwendungsbeispiel:
∗ Zwei Lehrbücher über eine Programmiersprache beschreiben die
Syntax mit verschiedenen Grammatiken. Sind diese wirklich äquivalent?
• Welche Abschlußeigenschaften hat eine Sprachklasse? z.B. Abschluß unter
∩, ∪,¯
L1 , L2 drin ⇒ auch L1 ∩ L2 , L1 ∪ L2 , L̄1 drin?
Anwendungsbeispiele:
– Suchpattern: Suche nach Dateien, in denen ein Pattern nicht vorkommt.
– Reduziere das Äquivalenzproblem auf das Leerheitsproblem. L1 = L2
gdw (L1 ∩ L̄2 ) ∪ (L̄1 ∩ L2 ) = ∅.
2
Inhaltsverzeichnis
I Endliche Automaten und reguläre Sprachen
5
0
Einführung
5
1
Nichtdeterministische endliche Automaten
8
2
Deterministische endliche Automaten
12
3
Nachweis der Nichterkennbarkeit
23
4
Abschlußeigenschaften und Entscheidungsprobleme
27
5
Reguläre Ausdrücke und Sprachen
32
II Grammatiken, kontextfreie Sprachen und Kellerautomaten
38
6
Die Chomskyhierarchie
38
7
Rechtslineare Grammatiken und reguläre Sprachen
41
8
Normalformen kontextfreier Grammatiken
43
9
Abschlußeigenschaften kontextfreier Sprachen
51
10 Killer(au)tomaten
56
III
67
Turingmaschinen sowie Typ0 und Typ1 Sprachen
11 Turingmaschinen
67
12 Turingmaschinen und Typ0 Sprachen
69
3
13 Linear beschränkte Automaten und Typ1 Sprachen
72
IV
75
Schwierige Entscheidungsprobleme
14 Unentscheidbare Probleme
75
15 Das Äquivalenzproblem für reguläre Sprachen
77
4
Teil I
Endliche Automaten und reguläre
Sprachen
0
Einführung
Endliche Automaten sind gekennzeichnet durch:
• endliche Menge von (internen) Zuständen
• Übergänge zwischen Zuständen abhängig von der internen Struktur des Automaten und von der Eingabe
Im Prinzip sind Rechner auch endliche Automaten: Sie haben endlichen Speicherplatz und daher nur eine endliche Menge von Konfigurationen (Speicherplatzbelegungen).
Aber wegen der extrem großen Anzahl von Zuständen sind endliche Automaten
kein geeignetes Beschreibungsmittel für Rechner. Man abstrahiert daher von der
Speicherplatzbeschränkung und nimmt potentiell unendlichen Speicherplatz an (z.B.
bei Turingmaschinen das unendliche Band).
Beispiel für endlichen Automaten, bei dem diese Beschreibung adäquat ist:
Rückgabe
1 DM
2 DM
Preis 3 DM
5
Eingaben: 1,2,r,d (Drehkreuz dreht sich)
Zustände: 0 DM, 1 DM, 2 DM, 3 DM
Zustandsübergänge:
d
2
1
1
1 DM
0 DM
2 DM
1
3 DM
r
2
r
r
Welche Eingabefolgen führen vom Zustand 0 DM zum Zustand 3 DM?
Teilweise interessiert man sich auch für Automaten mit Ausgabe (z.B. Rückgabe
des Geldes, Freigabe der Sperre). Wir werden uns hier nicht damit beschäftigen.
Definition 0.1 (Grundbegriffe)
Alphabet Σ
endliche Menge von Buchstaben a,b,c, . . . .
Wort w über dem Alphabet Σ
endliche Folge von Buchstaben w = a1 a2 a3 a4 . . . an mit ai ∈ Σ
Länge | w | des Wortes w
w = a1 . . . an |w| = n
z.B. |aba| = 3
Anzahl der Vorkommen | w |x des Buchstabens x in w
z.B. |aba|a = 2
leeres Wort ε
hat Länge 0
Σ∗
Menge aller Wörter
6
Σ+
= Σ∗ \ {ε}
(alle nichtleeren Wörter)
formale Sprache L
Menge von Wörtern
L ⊆ Σ∗ ist formale Sprache über Σ.
z.B.:
• Menge der Wörter über dem Alphabet {a . . . z}, die korrekte Wörter der
deutschen Sprache sind.
• Menge der Wörter über dem Alphabet {a . . . z}, die das Wort “Theorie”
enthalten.
Definition 0.2 (Operationen auf Sprachen und Wörtern)
Boolesche Operationen
L1 ∪ L2
L1 ∩ L2
L̄1 := Σ∗ \ L1
L1 \ L2 := L1 ∩ L̄2
Konkatenation
u · v := uv z.B. abb · ab = abbab
L1 · L2 := {uv | u ∈ L1 und v ∈ L2 }
Konkatenationspunkt “·” wird meist weggelassen.
Kleene Stern iterierte Konkatenation
L0 = {ε}
Ln+1 = Ln · L
L∗ =
L+ =
S
n≥0
S
n≥1
Ln
Ln
Präfix, Suffix, Infix
u ist Präfix von v, wenn v = uw für ein w ∈ Σ∗
u ist Suffix von v, wenn v = wu für ein w ∈ Σ∗
u ist Infix von v, wenn v = w1 uw2 für w1 , w2 ∈ Σ∗
7
1
Nichtdeterministische endliche Automaten
Definition 1.1 Ein Transitionssystem ist von der Form A = (Q, Σ, I, ∆, F ), wobei:
• Q Menge von Zuständen (beliebig groß, auch unendlich)
• Σ endliches Alphabet
• I ⊆ Q Anfangszustände
• ∆⊆Q×Σ×Q
• F ⊆ Q Endzustände
endlicher Automat: endlich viele Zustände, nur ein Anfangszustand
Definition 1.2 Das Transitionssystem A = (Q, Σ, I, ∆, F ) heißt nichtdeterministischer
endlicher Automat (NEA), wenn |Q| < ∞ und |I| = 1 anstelle von (Q, Σ, {q0 }, ∆, F )
schreiben wir (Q, Σ, q0 , ∆, F ).
Beispiel 1.3 A = (Q, Σ, q0 , ∆, F ) mit Q = {q0 , q1 , q2 }, Σ = {a, b}, F = {q2 },
∆ = {(q0 , a, q1 ), (q1 , b, q2 ), (q2 , a, q2 ), (q2 , b, q2 )} wird graphisch dargestellt durch
a,b
q
a
0
q
b
1
q
2
Definition 1.4 Ein Pfad in einem Transitionssystem ist eine Folge
π = (p0 , a1 , p1 )(p1 , a2 , p2 ) . . . (pn−1 , an , pn )
mit (pi , ai+1 , pi+1 ) ∈ ∆ für i = 0, . . . , n−1. π ist ein Pfad von p nach q gdw p0 = p
und pn = q. Die Beschriftung von π ist das Wort β(π) = a1 . . . an .
Länge von π: n
Spezialfall: n = 0 leerer Pfad mit Beschriftung ε
Notation:
w
p −→A q: Es gibt einen Pfad von p nach q in A mit Beschriftung w.
8
w
w
Q1 −→A Q2 : Q1 , Q2 ⊆ Q und es gibt q1 ∈ Q1 und q2 ∈ Q2 mit q1 −→A q2 .
Beispiel: Für den NEA aus Beispiel 1.3 gilt:
abw
q0 −→A q2 für alle w ∈ {a, b}∗
Definition 1.5 Das Transitionssystem A = (Q, Σ, q0 , ∆, F ) akzeptiert das Wort
w
w ∈ Σ∗ gdw I −→A F . Die von A akzeptierte Sprache (erkannte Sprache) ist
L(A) := {w ∈ Σ∗ | A akzeptiert w}
Beispiel: NEA aus Beispiel 1.3
L(A) = {abw | w ∈ {a, b}∗ }
Definition 1.6 Eine Sprache L ⊆ Σ∗ heißt erkennbar gdw es einen NEA A gibt
mit L(A) = L.
Äquivalenz von Transitionssystemen:
A1 und A2 heißen äquivalent gdw L(A1 ) = L(A2 ), d.h. sie akzeptieren dieselbe
Sprache.
Beispiel 1.7 L = {w ∈ {a, b}∗ | ab ist nicht Infix von w} ist erkennbar:
b
q
akzeptiert L
A:
a
a
0
q
1
Für manche Konstruktionen ist es günstiger, auch Übergänge mit Wörtern zuzulassen.
Definition 1.8
• Ein NEA mit Wortübergängen hat die Form A = (Q, Σ, q0 , ∆, F ), wobei
Q, Σ, q0 , F wie beim NEA und ∆ ⊆ Q × Σ∗ × Q eine endliche Menge von
Übergängen.
• Ein ε-NEA ist ein NEA mit Wortübergängen, wobei für alle (q, w, q 0 ) ∈ ∆
gilt:
|w| ≤ 1, d.h. w ∈ Σ oder w = ε
9
Pfade, Pfadbeschriftungen und akzeptierte Sprachen werden wie bei NEAs
definiert.
Z.B. hat der Pfad (q0 , ab, q1 )(q1 , ε, q2 )(q2 , bb, q3 ) die Beschriftung ab · ε · bb =
abbb
Satz 1.9 Zu jedem NEA mit Wortübergängen kann man effektiv (d.h. man kann
diesen NEA berechnen) einen äquivalenten NEA konstruieren.
Wir zeigen den Satz durch Umweg über ε-NEA:
Lemma 1.10 Zu jedem NEA mit Wortübergängen kann man effektiv einen äquivalenten ε-NEA konstruieren.
a ...a
a
a
a
n
1
n
Beweis: p −→
q für n > 1 wird ersetzt durch p →1 p1 →2 p2 → . . . pn−1 →
q,
wobei p1 , . . . , pn−1 jeweils neue Zustände sind. Man sieht leicht, daß dies einen
äquivalenten ε-NEA liefert.
Beispiel 1.11
aa
q
bb
ε
q
0
1
wird zu
a
a
b
b
ε
Lemma 1.12 Zu jedem ε-NEA kann man effektiv einen äquivalenten NEA konstruieren.
Beweis: Der ε-NEA A = (Q, Σ, q0 , ∆, F ) sei gegeben. Wir konstruieren daraus
einen NEA A0 = (Q, Σ, q0 , ∆0 , F 0 ), wobei
a
• ∆0 := {(p, a, q) ∈ Q × Σ × Q | p −→A q}
0
• F :=
F ∪ {q0 }
F
ε
falls q0 −→A F
sonst
zu zeigen:
10
1. A0 kann effektiv bestimmt werden.
2. L(A) = L(A0 )
zu 1. ∆0 und F 0 können effektiv bestimmt werden.
a
ε
ε
• p −→A q gdw ∃p0 , q 0 ∈ Q mit p −→A p0 , (p0 , a, q 0 ) ∈ ∆, q 0 −→A q.
ε
Es bleibt zu zeigen: p −→A p0 kann effektiv entschieden werden. Dies ist ein
Erreichbarkeitsproblem in einem endlichen Graphen, mit Aufwand O(|Q| +
|∆|) entscheidbar (siehe Vorlesung Datenstrukturen und Algorithmen).
ε
• q0 −→ F ist ebenfalls ein Erreichbarkeitsproblem.
zu 2.
• L(A) ⊆ L(A0 ) :
Sei w ∈ L(A), w = a1 . . . an . Sei π = (p0 , a1 , p1 )(p1 , a2 , p2 ) . . . (pn−1 , an , pn )
ein Pfad mit p0 = q0 und pn ∈ F und ai ∈ Σ ∪ {ε}, wobei w = a1 . . . an .
Seien i1 . . . im Indizes mit aij 6= ε. Offenbar gilt w = ai1 . . . aim .
1.Fall: Es gibt keinen solchen Index, d.h. w = ε.
ε
Es gilt also q0 = p0 −→A pn ∈ F . Damit ist q0 ∈ F 0 und somit
ε ∈ L(A0 ).
2.Fall: m > 0. Nach Definition von ∆0 ist (p0 , ai1 , pi1 )(pi1 , ai2 , pi2 ) . . . (pim−1 , aim , pn )
ein Pfad in A0 .
• L(A0 ) ⊆ L(A) :
Es sei w = a1 . . . an ∈ L(A0 ) mit ai ∈ Σ. Sei (p0 , a1 , p1 ) . . . (pn−1 , an , pn ),
wobei p0 = q0 und pn ∈ F 0 .
ai+1
Nach Definition von ∆0 gilt: pi −→A pi+1 . Also gibt es in A einen Pfad von
p0 = q0 nach pn mit Beschriftung w.
1.Fall: pn ∈ F Dann ist w ∈ L(A)
ε
2.Fall: pn ∈ F 0 \ F , d.h. pn = q0 und pn = q0 −→A q̂ ∈ F Damit gibt
es einen Pfad mit Beschriftung w von q0 nach q̂. Damit folgt wieder
w ∈ L(A).
11
Anmerkung: Zu jedem endlichen Transitionssystem kann man effektiv einen äquivalenten ε-NEA konstruieren.
Gegeben sei das endliche Transitionssystem A = (Q, Σ, I, ∆, F ). Wir definieren
daraus den ε-NEA A0 = (Q ∪ {q0 }, Σ, q0 , ∆0 , F ),
ε
.
..
.
.
ε
q0
I
wobei q0 ∈
/ Q und ∆0 := {(q0 , ε, q) | q ∈ I} ∪ ∆.
A0 ist offenbar äquivalent zu A und ein ε-NEA.
2
Deterministische endliche Automaten
Was heißt bei NEAs nichtdeterministisch?
q
a
1
q
a
q
2
Für ein gegebenes Paar (q, a) ∈ Q×Σ kann es mehr als ein qi geben, mit (q, a, qi ) ∈
∆.
Definition 2.1 Ein NEA A = (Q, Σ, q0 , ∆, F ) heißt deterministischer endlicher
Automat (DEA), falls es für alle (q, a) ∈ Q×Σ genau ein q 0 ∈ Q gibt mit (q, a, q 0 ) ∈
∆.
Anstelle der Übergangsrelation ∆ schreibt man die Übergangsfunktion
δ : Q × Σ → Q mit δ(q, a) = q 0 gdw (q, a, q 0 ) ∈ ∆. DEAs werden damit in der
Form (Q, Σ, q0 , δ, F ) geschrieben.
Beachte: Zusätzlich zur Eindeutigkeit (es gibt höchstens ein q 0 mit (q, a, q 0 ) ∈ ∆)
fordern wir auch die Existenz des Übergangs (d.h. es gibt mindestens ein q 0 mit
(q, a, q 0 ) ∈ ∆). In der Literatur wird manchmal bei DEAs nur Eindeutigkeit gefordert. Das macht bzgl. der definierten Sprachklasse keinen Unterschied.
Beispiel 2.2
12
a
q0
q1
a
b
Dieser Automat erfüllt zwar die Eindeutigkeitsforderung, aber zu (q1 , b) existiert
kein Übergang! Ein äquivalenter DEA entsteht durch Hinzunahme eines “Papierkorbzustandes” q2 :
a
q0
q1
b
a, b
a
b
q2
Definition 2.3 Die kanonische Fortsetzung δ ∗ : Q × Σ∗ → Q von δ : Q × Σ → Q
wird induktiv definiert:
• δ ∗ (q, ε) := q
• δ ∗ (q, wa) := δ(δ ∗ (q, w), a)
q
w
δ(q, w)
a
Der Einfachheit halber schreiben wir im folgenden auch für w ∈ Σ∗ anstatt δ ∗ (q, w)
einfacher δ(q, w).
Beachte: Für einen DEA A = (Q, Σ, q0 , δ, F ) gilt:
w
• δ(q, w) = q 0 gdw q 0 der eindeutige Zustand mit q −→A q 0 ist.
• L(A) := {w ∈ Σ∗ | δ(q0 , w) ∈ F }
• δ(q, uv) = δ(δ(q, u), v)
Übung: Beweise die einzelnen Aussagen!
Satz 2.4 (Satz von Rabin/Scott) Zu jedem NEA kann man effektiv einen äquivalenten DEA konstruieren.
Das bedeutet, daß die Einschränkung “deterministisch” keine echte ist.
13
Beweisidee: Sei A = (Q, Σ, q0 , ∆, F ) ein NEA. Für w ∈ Σ∗ gilt: w ∈ L(A) gdw
w
w
{q ∈ Q | q0 −→A q} ∩ F 6= ∅ mit {q ∈ Q | q0 −→A q} ⊆ 2Q = {P | P ⊆ Q}
Baue einen Automaten mit Zustandsmenge 2Q und Übergangsfunktion δ, für die
gilt:
w
δ({q0 }, w) = {q ∈ Q | q0 −→A q}
Beweis: Man verwende die folgende Potenzmengenkonstruktion: Sei A = (Q, Σ, q0 , ∆, F )
ein NEA. Der DEA A0 := (2Q , Σ, {q0 }, δ, F 0 ) ist wie folgt definiert:
• δ(P ∈ 2Q , a ∈ Σ) :=
S
p∈P {p
0
| (p, a, p0 ) ∈ ∆}
p
a
a
a
a
a
• F 0 := {P ∈ 2Q | P ∩ F 6= ∅}
w
Behauptung: q 0 ∈ δ({q}, w) gdw q −→A q 0 . Daraus folgt unmittelbar L(A) =
L(A0 ), da:
w ∈ L(A) gdw
w
∃q ∈ F : q0 −→A q
gdw
∃q ∈ F : q ∈ δ({q0 }, w)
gdw
δ({q0 }, w) ∩ F 6= ∅
gdw
δ({q0 }, w) ∈ F 0
gdw
w ∈ L(A0 )
Beweis der Behauptung: Induktion über |w|
ε
• |w| = 0: δ({q}, ε) = {q} (nach Definition 2.3) Es gilt: q −→A q und q ist der
ε
einzige Zustand mit dieser Eigenschaft (es gibt kein q 0 6= q mit q −→ q 0 ).
14
• |w| = n + 1: Für Wörter der Länge n gelte die Behauptung bereits.
w = ua mit a ∈ Σ, u ∈ Σ∗ , |u| = n.
δ({q}, ua)
Def 2.3
=
δ(δ({q}, u), a)
Def v. δ S
=
Zu zeigen: Ein Zustand q 00 gehört zu
ua
q −→A q 00 .
ua
S
q 0 ∈δ({q},u) {q
q 0 ∈δ({q},u) {q
00
00
| (q 0 , a, q 00 ) ∈ ∆}
| (q 0 , a, q 00 ) ∈ ∆} gdw
u
q −→A q 00 gdw ∃q 0 : q −→A q 0 und (q 0 , a, q 00 ) ∈ ∆
gdw q 0 ∈ δ({q}, u)
gdw q 00 ∈
S
q 0 ∈δ({q},u) {q
00
| (q 0 , a, q 00 ) ∈ ∆}
Beispiel 2.5
a, b
DEA A’:
NEA A:
1
a
{1}
b
b
a
a
{1,2}
b
b
a,b
{2}
2
a
{}
Problem: Potenzmengenkonstruktion vergrößert die Zustandsmenge exponentiell.
Im Allgemeinen kann man das nicht vermeiden. In vielen Fällen kann man aber
kleinere äquivalente DEAs konstruieren.
Allgemein: Wie konstruiere ich zu einem gegebenen DEA einen DEA mit
minimaler Zustandszahl?
Definition 2.6 Ein Zustand q eines DEA A = (Q, Σ, q0 , δ, F ) heißt erreichbar,
falls es ein w ∈ Σ∗ gibt, mit δ(q0 , w) = q. Sonst heißt q unerreichbar. Für die
akzeptierte Sprache sind nur die erreichbaren Zustände relevant.
Satz 2.4
NEA −→
A
DEA (kann exponentiell groß werden)
Minimieren von DEA: 2 Schritte
1. Schritt: Eliminieren unerreichbarer Zustände.
Da für die akzeptierte Sprache nur erreichbare Zustände relevant sind, kann man
unerreichbare einfach weglassen. Dies liefert den äquivalenten Automaten:
A0 := (Q0 , Σ, q0 , δ0 , F0 ) mit
15
Q0 := {q ∈ Q | qerreichbar},
δ0 := δ |Q0 ×Σ
( Beachte: Für q ∈ Q0 und a ∈ Σ ist auch δ(q, a) ∈ Q0 .),
F0 := F ∩ Q0 .
Beispiel: Im Automaten A0 von Beispiel 2.5 sind die Zustände {2}, ∅ unerreichbar.
Durch Weglassen erhält man
a
b
a
b
Bei der Potenzmengenkonstruktion kann man sich auf die Berechnung der
erreichbaren Zustände beschränken. Beginne mit {q0 } und konstruiere daraus die
erreichbaren Mengen.
2. Schritt: Zusammenfassen äquivalenter Zustände.
Beispiel 2.7
a
q1
b
a
q
a,b
a
0
q
3
b
b
q
2
b
Hier sind alle Zustände erreichbar. Dieser Automat ist nicht minimal, da er
dieselbe Sprache erkennt, wie der DEA aus Beispiel 2.2. Dies kommt daher, daß q0
und q2 äquivalent sind.
16
Definition 2.8 Es sei A = (Q, Σ, q0 , δ, F ) ein DEA. Für q ∈ Q sei
Aq := (Q, Σ, q, δ, F ). Zwei Zustände q, q 0 ∈ Q heißen A-äquivalent (q ∼A q 0 ) gdw
L(Aq ) = L(Aq0 ).
Im Beispiel 2.7 gilt: q0 ∼A q2 .
Lemma 2.9
1. ∼A ist eine Äquivalenzrelation auf Q, d.h. reflexiv, transitiv, symmetrisch.
2. ∼A ist verträglich mit δ, d.h. q ∼A q 0 ⇒ ∀a ∈ Σ : δ(q, a) ∼A δ(q 0 , a).
3. ∼A kann effektiv bestimmt werden.
Beweis:
1. Klar, da "=" reflexiv, transitiv und symmetrisch ist.
2. q ∼A q 0
gdw
gdw
gdw
gdw
gdw
L(Aq ) = L(Aq0 )
δ(q, w) ∈ F
⇔ δ(q 0 , w) ∈ F
⇒ ∀a ∈ Σ, ∀v ∈ Σ∗ :
δ(q, av) ∈ F
⇔ δ(q 0 , av) ∈ F
∀a ∈ Σ, ∀v ∈ Σ∗ :
δ(δ(q, a), v) ∈ F ⇔ δ(δ(q 0 , a), v) ∈ F
∀a ∈ Σ : L(Aδ(q,a) ) = L(Aδ(q0 ,a) )
∀a ∈ Σ : δ(q, a) ∼A δ(q 0 , a)
3. Wir definieren Approximationen ∼k (k natürliche Zahl) von ∼A :
(a) q ∼0 q 0
(b) q ∼k+1 q 0
gdw
gdw
q∈F
q0 ∈ F
⇔
q ∼k q 0 und ∀a ∈ Σ :
δ(q, a) ∼k δ(q 0 , a)
!
Es gilt: Q × Q ⊇ ∼0 ⊇ ∼1 ⊇ ∼2 ⊇ . . . ⊇ ∼A . Da Q endlich ist, gibt es ein k
mit ∼k =∼k+1 . Man zeigt leicht, daß dann ∼k =∼A .
Die ∼A -Äquivalenzklasse eines Zustandes q ∈ Q bezeichnen wir mit
q̃ := {q 0 | q ∼A q 0 }.
Beispiel: Automat aus Beispiel 2.7
∼0 : zwei Klassen: F = {q1 } , Q \ F = {q0 , q2 , q3 }
∼1 : drei Klassen: {q1 } , {q0 , q2 } , {q3 }
∼1 = ∼2 = ∼A
17
Definition 2.10 Der Quotientenautomat à := (Q̃, Σ, q˜0 , δ̃, F̃ ) ist definiert durch:
•
Q̃ = {q̃ | q ∈ Q}
∼A -Äquivalenzklasse q nach Definition von ∼A
•
F̃ = {q̃ | q ∈ F } repräsentantenunabhängig! nach Definition von ∼A
•
ga)
δ̃(q̃, a) = δ(q,
•
q˜0 = {q | q ∼A q0 }
•
q̃ = {q, q , q , . . .}
0
00
0
/F
Sei q ∈ F ∧ q ∈
| {z }
| {z }
ε∈L(A,q)
/
ε∈L(A,q)
⇒ q 6∼A q
0
Lemma 2.11 Ã ist äquivalent zu A.
Beweis: w ∈ L(A) gdw
gdw
gdw
δ(q0 , w) ∈ F
δ(qg
0 , w) ∈ F̃
δ̃(q˜0 , w) ∈ F̃
|
gdw
{z
}
g
Beh: δ(q0 ,w)=δ̃(q̃,w)
w ∈ L(Ã)
siehe Beispiel 2.7
vgl. Beispiel 2.2
Definition 2.12 Für einen DEA A bezeichne Ared = Ã0 den reduzierten
Automaten, den man aus A durch eliminieren unerreichbarer Zustände (A0 ) und
zusammenfassen äquivalenter Zustände von A0 erhält.
Wir werden zeigen:
• Ared kann nicht noch kleiner gemacht werden, d.h. er ist ein Automat
minimaler Zustandszahl der L(A) erkennt.
• Ared hängt nur von L(A) und nicht von A ab, d.h. gilt L(A) = L(B), so gilt
∼
A
= B , wobei isomorph gleich bis auf Zustandsumbenennung
| red {z red}
isomorph
bedeutet.
Wir konstruieren zur Sprache L einen “kanonischen” Automaten AL und
zeigen, daß Ared ∼
= AL für alle Automaten A mit L = L(A).
18
Definition 2.13 (Nerode Rechtskongruenz) Es sei L ⊆ Σ∗ eine beliebige
Sprache. Für u, v ∈ Σ∗ definieren wir u ∼
=L v (u und v sind kongruent L) gdw
∗
∀w ∈ Σ : uw ∈ L ⇔ vw ∈ L.
Beispiel 2.14 Vergleiche: 1.7 2.2 2.7
L = {w ∈ {a, b}∗ | ab ist nicht Infix von w}
• ε∼
=L
gdw
gdw
gdw
gdw
b : ∀w εw ∈ L
w∈L
w enthält ab nicht
bw enthält ab nicht
bw ∈ L
• ε∼
6=L a : εb ∈ L, aber ab ∈
/L
Lemma 2.15 (Eigenschaften von ∼
=L )
1. ∼
=L ist Äquivalenzrelation.
2. ∼
=L ist rechtskongruent, d.h zusätzlich zu 1. gilt u ∼
=L v ⇒ uw ∼
=L vw für
∗
alle w ∈ Σ .
3. L ist Vereinigung von ∼
=L -Klassen:
S
L = u∈L [u], wobei [u] := {v | u ∼
=L v}
4. Ist L = L(A) für einen DEA, so gilt:
Anzahl der ∼
=L -Klassen, Index von ∼
=L
≤
Zustandsanzahl von A.
Beweis:
1. Klar, da ⇔ reflexiv, transitiv und symmetrisch ist.
0
2. Damit uw ∼
=L vw gilt, muß für alle w ∈ Σ∗ gelten:
0
u |ww
{z } ∈ L
∈Σ∗
gdw
0
v |ww
{z } ∈ L
∈Σ∗
Da ww ∈ Σ∗ ist, folgt das aus u ∼
=L v
0
3. L =
“⊆”
S
u∈L [u]
trivial, da u ∈ [u]
Zu zeigen: Ist u ∈ L und v ∈ [u], so auch v ∈ L.
Wegen u ∼
=L v folgt uε ∈ L gdw vε ∈ L.
“⊇”
19
4. Es sei A = (Q, Σ, q0 , δ, F ) ein DEA mit L = L(A).
Behauptung: δ(q0 , u) = δ(q0 , v) ⇒ u ∼
=L v
denn: ∀w : uw ∈ L
gdw δ(q0 , uw) ∈ F
gdw δ(δ(q0 , u), w) ∈ F
⇑
δ(q0 , u) = δ(q0 , v)
⇓
gdw δ(δ(q0 , v), w) ∈ F
gdw δ(q0 , vw) ∈ F
gdw vw ∈ L
d.h. Behauptung schon gezeigt
Annahme: Es gibt mehr ∼
=L -Klassen als Zustände in Q.
|Q| = n. Dann gibt es mindestens n + 1 Wörter
u1 . . . un+1 mit ui ∼
6=L uj für i 6= j
Betrachte δ(q0 , u1 ), . . . δ(q0 , un+1 ), da |Q| = n gibt es i 6= j mit
δ(q0 , u1 ) = δ(q0 , uj ) ⇒ Behauptung ui ∼
=L uj Widerspruch! ⇒
Behauptung!
Beispiel 2.14 (Fortsetzung):
∼
=L hat drei Klassen.
L=∪
[ε] = {b}∗ → Um L zu verlassen, muß w ab enthalten.
[a] = {b∗ }{a}+ → Um L zu verlassen, muß w ab enthalten, oder mit b beginnen.
[ab] = Σ∗ {ab}Σ∗ →
|
{z
L̄
nie in L
}
Man kann die ∼
=L -Klassen als Zustände eines Automaten für L auffassen.
0
0
0
0
Definition 2.16 Zu L ⊆ Σ∗ ist das Transitionssystem AL = (Q , Σ, q0 , δ , F )
definiert durch:
0
•
Q := {[u] | u ∈ Σ∗ }
•
q0 := [ε]
•
δ ([u], a) = [ua] repräsentantenunabhängig wegen Lemma 2.15
0
0
20
Lemma 2.17 Hat ∼
=L endlichen Index, so ist AL DEA mit L = L(AL ).
Beweis: Da AL dann nur endlich viele Zustände hat, ist AL offenbar ein DEA.
0
0
0
L(AL ) = {u | δ (q0 , u) ∈ F }
0
= {u | δ([ε], u) ∈ F }
0
{u | [u] ∈ F }
=
|
0
{z
}
da δ ([u], v) = [uv] mit Ind. |v|
= {u | u ∈ L} = L
Satz 2.18 (Satz von Nerode) Eine Sprache L ist erkennbar gdw ∼
=L endlichen
Index hat.
Beweis:
“⇒” Ist L erkennbar, so gibt es einen DEA A mit L = L(A). Mit Lemma 2.15
ist der Index n ∼
=L ≤ Anzahl der Zustände von A, also endlich.
“⇐” Hat ∼
=L endlichen Index, so ist mit Lemma 2.17 AL ein DEA mit
L = L(AL ). Also ist L erkennbar.
Beispiel 2.19 (nicht erkennbare Sprache) L = {an bn | n ≥ 0} ist nicht
erkennbar, denn für n 6= m gilt an 6∼
/ L.
=L am . Es gilt ja an bn ∈ L und am bn ∈
Zusammenhang zwischen reduzierten Automaten und der
Nerode-Rechtskongruenz.
0
0
0
0
0
Definition 2.20 Zwei DEAs A = (Q, Σ, q0 , δ, F ) und A = (Q , Σ, q0 , δ , F )
0
0
sind isomorph (A ∼
= A ) gdw es eine Bijektion f : Q → Q gibt mit
0
•
f (q0 ) = q0
•
F = f (F ) = {f (q) | q ∈ F }
•
f (δ(q, a)) = δ (f (q), a)
0
0
0
0
Lemma 2.21 A ∼
= A ⇒ L(A) = L(A )
0
Beweis: Man zeigt leicht durch Induktion über |w|, daß f (δ(q, w)) = δ (f (q), w)
w ∈ L(A) gdw δ(q0 , w) ∈ F
21
0
f (F ) = F gdw
gdw
gdw
gdw
f (δ(q0 , w)) ∈ F
0
0
δ (f (q), w) ∈ F
0
0
δ (q00 , w) ∈ F
0
w ∈ L(A )
Satz 2.22 Es sei L eine erkennbare Sprache. Dann gilt:
1. AL hat minimale Zustandszahl unter allen DEAs, welche L erkennen.
2. Ist A ein DEA mit L(A) = L, so ist Ared isomorph zu AL .
Beweis:
1. Mit Satz 2.18 hat ∼
=L endlichen Index. Daher ist mit Lemma 2.17 AL ein
DEA für L. Mit Lemma 2.15.4 hat jeder DEA, der L erkennt, mindestens so
viele Zustände, wie ∼
=L Klassen hat. Die Zustandszahl von AL ist ja genau
die Anzahl der ∼
-Klassen.
=L
2. Sei L = L(A). Zu zeigen: Ared ∼
= AL . Es sei Ared = (Q, Σ, q0 , δ, F ) und
0
0
0
AL = (Q , Σ, q0 , δ, F ). Wir definieren eine Funktion f : Q → Q0 und
zeigen, daß sie ein Isomorphismus ist. Für jedes q ∈ Q existiert mindestens
ein Wort wq ∈ Σ∗ mit δ(q0 , wq ) = q, da in Ared alle Zustände erreichbar sind.
O.E. sei wq0 = ε.
Wir definieren:
f (q) := [wq ]
i f ist injektiv: Wir müssen dazu zeigen, daß p 6= q ⇒ [wp ] 6= [wq ]
|{z}
=f (p)
|{z}
=f (q)
Da Ared reduziert ist, sind verschiedene Zustände nicht äquivalent. Es
gibt daher mindestens ein Wort w ∈ Σ∗ mit
δ(p, w) ∈ F 6⇔ δ(q, w) ∈ F .
Das heißt aber
δ(q0 , wp w) ∈ F 6⇔ δ(q0 , wq w) ∈ F
Daraus folgt
wp w ∈ L 6⇔ wq w ∈ L
Daher gilt
wp ∼
6=L wq
d.h.
[wq ] 6= [wp ]
22
ii f ist surjektiv: Folgt aus Injektivität und |Q|
≥
|Q0 |, da Q, Q0
|{z}
(1) des Satzes
endlich sind.
iii f (q0 ) = q00
Da wq0 = ε und q00 = [ε] = f (q0 ).
iv f (F ) = F 0
q ∈ F gdw δ(q0 , wq ) ∈ F
|
{z
q
}
gdw wq ∈ L gdw [wq ] ∈ F 0
|{z}
=f (q)
v f (δ(q, a)) = δ 0 (f (q), a): Es sei δ(q, a) =: p. Dann ist f (δ(q, a)) = [wp ].
Außerdem ist δ 0 (f (q), a) = δ 0 ([wq ], a) = [wq a]. Es bleibt also zu
zeigen, daß [wp ] = [wq a], d.h. ∀a : wp w ∈ L ⇔ wq aw ∈ L. Dies ist
offensichtlich dann der Fall, wenn
δ(q0 , wp ) = δ(q0 , wq a).
Es gilt aber:
δ(q0 , wq a) = δ(δ(q0 , wq ), a) = δ(q, a) = p = δ(q0 , wp )
Korollar 2.23 Es seien A, A0 DEAs. Dann gilt:
L(A) = L(A0 ) ⇔ Ared ∼
= A0red
Im Prinzip kann man damit das Äquivalenzproblem entscheiden: Reduziere A und
A0 und teste dann Ared und A0red auf Isomorphie. Es gibt aber effizientere
Verfahren dafür.
3
Nachweis der Nichterkennbarkeit
Nachweis der Erkennbarkeit:
Man gibt einen NEA an und beweise, daß er die Sprache akzeptiert.
Nachweis der Nichterkennbarkeit:
Schwieriger, da man zeigen muß, daß es keinen Automaten für die Sprache geben
kann. Problem: es gibt unendlich viele Automaten! Satz 2.18 kann zum Nachweis
verwendet werden.
Hilfsmittel zum Nachweis der Nichterkennbarkeit ist das
23
Lemma 3.1 (Pumping Lemma (einfache Version)) Es sei L eine
erkennbare Sprache, dann gibt es eine natürliche Zahl n0 ≥ 1, so daß gilt:
Jedes Wort w ∈ L mit |w| ≥ n0 läßt sich zerlegen in w = xyz mit
• y 6= ε
• xy k z ∈ L für alle k ≥ 0
Beweis: Es sei A = (Q, Σ, q0 , ∆, F ) ein NEA mit L = L(A). Wir wählen
n0 := |Q|.
Für jedes Wort w = a1 . . . am ∈ L existiert ein Pfad
(p0 , a1 , p1 )(p1 , a2 , p2 ) . . . (pm−1 , am , pm ) in A mit p0 = q0 und pm ∈ F .
Ist m ≥ n0 , so können die m + 1 Zustände p0 , p1 . . . pm nicht alle verschieden sein,
d.h. es gibt i < j mit pi = pj .
Für x = a1 . . . ai , y = ai+1 . . . aj und z = aj+1 . . . am gilt daher:
• y 6= ε (da i < j)
x
y
z
• q0 = p 0 → p i → p j = p i → p m ∈ F
Folglich gilt für alle h ≥ 0:
xy h z ∈ L(A) = L
Wir verwenden das Lemma um zu zeigen, daß {an bn | n ≥ 0} nicht erkennbar ist.
Beispiel 3.2 {an bn | n > 0} ist nicht erkennbar!
Beweis: Angenommen L wäre erkennbar, dann gibt es eine Zahl n0 mit den in
Lemma 3.1 beschriebenen Eigenschaften.
Es sei n so, daß 2n ≥ n0 ist, d.h. |an bn | ≥ n0 . Da an bn ∈ L ist, gibt es x, y, z mit
an bn = xyz und
• y 6= ε
• xy k z ∈ L
für alle k ≥ 0
1. Fall: y liegt ganz in an , d.h. x = an1 , y = an2 , z = an3 bn mit n2 > 0 und
n1 + n2 + n3 = n.
Dann ist aber xy 0 z = xz = an1 +n3 bn ∈
/ L da n1 + n3 < n.
24
2. Fall: y liegt ganz in bn , d.h. . . . (kann symmetrisch behandelt werden).
3. Fall: y enthält a‘s und b‘s, d.h. x = an1 , y = an2 bn3 , z = bn4 mit n2 6= 0 6= n3 .
Dann ist aber xyyz = an1 an2 bn3 an2 bn3 bn4 ∈
/L
Als eine weitere Konsequenz aus Lemma 3.1 erhalten wir:
Satz 3.3 Für erkennbare Sprachen (gegeben durch NEA oder DEA) ist das
Leerheitsproblem “L 6= ∅” entscheidbar.
Beweis: Da L erkennbar ist, gibt es ein n0 mit den Eigenschaften aus Lemma 3.1.
Dieses n ist die Zustandsanzahl eines Automaten für L.
Behauptung: L 6= ∅ gdw ∃w ∈ L mit |w| < n0 , denn
⇐ trivial
⇒ Es sei L 6= ∅. Wir wählen ein Wort w minimaler Länge in L. Wäre |w| ≥ n0 ,
so könnte man w zerlegen in w = xyz mit y 6= ε und xz = xy 0 z ∈ L. Dies
Widerspricht der Minimalität von w. Damit ist |w| < n0 . (q.e.d.
Behauptung)
Es gibt nur endlich viele Wörter der Länge < n0 (da Alphabet endlich). Man muß
nur für jedes dieser Wörter überprüfen, ob es zu L gehört. (q.e.d. Satz)
Mit Lemma 3.1 kann man dies nicht für alle nichterkennbaren Sprachen
nachweisen.
Beispiel 3.4 Ist L = {an bm | n 6= m} erkennbar ?
Versucht man die Nichterkennbarkeit mit Lemma 3.1 zu zeigen, so scheitert man,
da das Lemma für L nicht zutrifft:
Wähle n0 = 3. Es sei nun w ∈ L mit |w| ≥ 3 d.h. w = an bm mit n 6= m und
n + m ≥ 3.
1. Fall: n > m, d.h. n := m + i für ein i ≥ 1
1. i > 1, d.h. n − 1 > m
Für x := ε, y := a und z := an−1 bm gilt für alle k ≥ 0:
xy k z = ak an−1 bm ∈ L, da k + n − 1 ≥ n − 1 > m
25
2. i = 1, d.h. n = m + 1
Wegen n + m ≥ 3 ist n = m + 1 ≥ 2
Für x := ε, y := a2 , z = an−2 bm gilt:
(a) xy 0 z ∈ L, da n − 2 = m − 1 6= m
an−2 bm
(b) xy k z ∈ L für k ≥ 1, da (n − 2) + (k − 2) ≥ n > m
2. Fall: n < m symmetrisch
Trotzdem ist L = {an bm | n 6= m} nicht erkennbar.
Lemma 3.5 (Pumping Lemma (verschärfte Version)) Es sei L erkennbar.
Dann gibt es eine natürliche Zahl n0 ≥ 1, so daß gilt: Für alle Wörter u, v, w mit
uvw ∈ L und |v| ≥ n0 gibt es eine Zerlegung v = xyz mit
• y 6= ε
• uxy k zw ∈ L für alle k ≥ 0.
Beweis: Wir wählen n0 = |Q|, wobei Q die Zustände eines Automaten A für L
sind.
u
v
w
Ist uvw ∈ L, so gibt es Zustände p, q, f ∈ Q mit q0 →A p→A q →A f ∈ F .
Auf dem Pfad von p nach q liegen |v| + 1 > n0 Zustände, also müssen wieder zwei
davon gleich sein.
Jetzt kann man wie im Beweis nach Lemma 3.1 weitermachen.
Vorteil: Man kann das Teilwort in dem gepumpt werden soll geeignet
positionieren.
Beispiel 3.4 (Fortsetzung):
L = {an bm | n 6= m} ist nicht erkennbar.
Beweis: Angenommen doch, dann gibt es ein n0 , das die in Lemma 3.5
geforderten Eigenschaften hat.
Wir betrachten die Wörter u := ε, v = an0 , w = bn0 !+n0 . Offenbar ist
uvw = an0 bn0 !+n0 ∈ L,
Mit Lemma 3.5 gibt es eine Zerlegung v = xyz mit y 6= ε und uxy k zw ∈ L. Für
alle k ≥ 0.
26
Es sei x = an1 , y = an2 , z = an3 mit n1 + n2 + n3 = n0 und n2 > 0.
Offenbar existiert ein l mit n2 · l = n0 ! (da 1 ≤ n2 ≤ n0 ).
Es ist nun aber n1 + (l + 1) · n2 + n3 = n0 + n0 !. Damit ist
/ L.
uxy l+1 zw = an0 +n0 ! bn0 +n0 ! ∈
4
Abschlußeigenschaften und
Entscheidungsprobleme
Satz 4.1 Sind L1 , L2 erkennbar, so auch L1 ∪ L2 , L̄1 , L1 ∩ L2 , L1 \ L2 , L1 · L2 ,
L∗1 .
Beweis: Es sei Ai = (Qi , Σ, q0i , ∆i , Fi ) ein NEA mit Li = L(Ai ).
O.E. sei Q1 ∩ Q2 = ∅.
1. Der folgende ε-NEA akzeptiert L1 ∪ L2 :
q
F1
01
ε
q
0
ε
q
F2
02
A = {Q1 ∪ Q2 ∪ q0 , Σ, q0 , ∆, F1 ∪ F2 } wobei q0 ∈
/ Q1 ∪ Q2 und
∆ = ∆1 ∪ ∆2 ∪ {(q0 , ε, q01 ), (q0 , ε, q02 )}
Mit Lemma 1.12 gibt es zu A einen äquivalenten NEA.
2. Einen DEA für L̄1 erhält man wie folgt:
• Verwende Potenzmengenkonstruktion um einen DEA
A = (Q, Σ, q0 , δ, F ) für L1 zu konstruieren. Ā = (Q, Σ, q0 , δ, Q \ F )
ist ein DEA für L̄1 .
27
w∈
/ L1 gdw w ∈
/ L(A1 )
gdw w ∈
/ L(A)
gdw δ(q0 , w) ∈
/F
gdw δ(q0 , w) ∈ Q \ F
gdw w ∈ L(Ā)
Beachte: Man darf dies nicht direkt mit einem NEA für L1 machen.
3. L1 ∩ L2 = L̄1 ∪ L̄2 zeigt Abschluß unter Durchschnitt wegen Abschluß
unter ∪,¯.
Da die Potenzmengenkonstruktion sehr aufwendig sein kann, zeigen wir
Abschluß unter ∩ noch direkt:
Wir konstruieren dazu den Produktautomaten zu A1 und A2 :
A := (Q1 × Q2 , Σ, (q01 , q02 ), ∆, F1 × F2 ) mit
0
0
0
0
∆ := {((q1 , q2 ), a, (q1 , q2 )) | (q1 , a, q1 ) ∈ ∆1 und(q2 , a, q2 ) ∈ ∆2 }
Ein Übergang in A ist also genau dann möglich, wenn die entsprechenden
Übergänge in A1 und A2 möglich sind. Daraus ergibt sich leicht
L(A) = L(A1 ) ∩ L(A2 ).
4. L1 \ L2 = L1 ∩ L̄2
5. L1 · L2
ε
q
ε
F1
01
q
F2
02
ε
A1
A12
Der folgende ε-NEA akzeptiert L1 · L2 :
A := (Q1 ∪ Q2 , Σ, q01 , ∆, F2 ), wobei
∆ := ∆1 ∪ ∆2 ∪ {(f, ε, q02 ) | f ∈ F1 }
6. L∗1 :
28
ε
q
ε
q
0
F
01
1
A1
ε
Der folgende ε-NEA akzeptiert L1 ∗ : A := (Q1 ∪ {q0 }, Σ, q0 , ∆, {q0 }),
wobei ∆ := ∆1 ∪ {(q0 , ε, q01 )} ∪ {(f, ε, q0 ) | f ∈ F1 } und q0 ∈
/ Q1 .
Beachte: Alle angegebenen Konstruktionen sind effektiv. Die Automaten für
L1 ∪ L2 , L1 ∩ L2 , L1 · L2 , L1 ∗ sind polynomiell in der Größe von A1 und A2 .
Beim Komplement kann die Konstruktion exponentiell werden, wenn man von
einem NEA ausgeht.
Man kann Abschlußeigenschaften nicht nur dazu verwenden, Erkennbarkeit zu
zeigen, sondern umgekehrt auch dazu, Nichterkennbarkeit zu zeigen.
Beispiel 4.2 L := {an bm | n 6= m} ist nicht erkennbar (vgl. Beispiel 3.4).
Anstatt dies mit Lemma 3.5 direkt zu zeigen, kann man verwenden, daß
0
L = {an bn | n ≥ 0} nicht erkennbar ist.
0
Wäre L erkennbar, so auch L̄ ∩ {a}∗ · {b}∗ = L .
|
{z
erkennbar
}
0
Da wir schon wissen, daß L nicht erkennbar ist, kann also L auch nicht erkennbar
sein!
Entscheidungsprobleme:
• Leerheitsproblem: L 6= ∅?
• Wortproblem: w ∈ L?
• Äquivalenzproblem: L1 = L2 ?
Die Sprachen sind dabei gegeben durch einen NEA oder einen DEA. Für die
Entscheidbarkeit ist es egal, ob man einen NEA oder einen DEA gegeben hat,
aufgrund der Konstruktionseffizienz.
29
Für die Komplexität des Verfahrens kann dies einen Unterschied machen.
Leerheitsproblem:
Gegeben: erkennbare Sprache L
Frage: Ist L 6= ∅?
Entscheidbarkeit ist bereits gezeigt (Satz 3.3). Dieses Verfahren ist aber
exponentiell, da es für |Σ| > 1 exponentiell viele Wörter mit Länge < n0 gibt.
Satz 4.3 Es sei A = (Q, Σ, q0 , ∆, F ) ein NEA. Dann kann man 00 L(A) 6= ∅00 in
Zeit O(
|Q| + |∆|
) entscheiden.
|
{z
}
Größe des Automaten
Beweis:
q
F
0
Also kann man das als ein Erreichbarkeitsproblem in einem Graphen betrachten,
und zwar folgendermaßen:
Man fasse den Automaten A als gerichteten Graphen G = (Q, E) auf, mit
E := {(q1 , q2 ) | (q1 , a, q2 ) ∈ ∆ für ein a ∈ Σ}. Es gilt:
L(A) 6= ∅ gdw in der von q0 aus erreichbaren Knotenmenge ein Endzustand liegt.
Die von q0 aus erreichbaren Knoten kann man mit Aufwand O(|Q| + |E|)
berechnen (vgl. Vorlesung Algorithmen und Datenstrukturen). Insbesondere ist
das Leerheitsproblem mit polynomiellem Aufwand lösbar (sogar mit linearem!).
Wortproblem:
Gegeben: Eine erkennbare Sprache L und ein Wort w ∈ Σ∗ .
Frage: Gilt w ∈ L?
Ist L = L(A) für einen DEA A = (Q, Σ, q0 , δ, F ), so kann man einfach, beginnend
mit q0 , durch Anwenden von δ berechnen, zu welchen Zustand man mit w kommt.
Dann ist w ∈ L gdw dieser Zustand zu F gehört. Nimmt man Σ als konstant an, so
benötigt die Anwendung von δ konstante Zeit. Dies liefert:
Satz 4.4 Sei A = (Q, Σ, q0 , δ, F ) ein DEA und w ∈ Σ∗ . Dann kann man
”w ∈ L(A)” in Zeit O(|w|) entscheiden.
30
Bei NEAs ist das nicht so einfach, da es für ein gegebenes w viele Pfade geben
kann, die mit w beschriftet sind.
Satz 4.5 Es sei A = (Q, Σ, q0 , δ, F ) ein NEA und w ∈ Σ∗ . Dann kann man
00
w ∈ L(A)00 in Zeit O(|w| · (|Q| + |∆|)) entscheiden.
Beweis: Wir konstruieren einen Automaten Aw , der die Sprache {w} akzeptiert:
Für w = a1 . . . an ist Aw :
a1
a2
an
...............
Anzahl der Zustände: |w| + 1
Offenbar ist w ∈ L(A) gdw L(A) ∩ L(Aw ) 6= ∅.
Der Produktautomat zu A und Aw :
• Zustände: (|w| + 1) · |Q|
• Übergänge: Für jeden Übergang
ai
in Aw gibt es maximal |∆| viele Übergänge in A.
Also maximal |w| · |∆| im Produktautomaten. Nach Satz 4.3 ist daher der
Aufwand zum Testen von “L(A) ∩ L(Aw ) 6= ∅?”
O(|Q| · (|w| + 1) + |w| · |∆|) = O(|w| · (|Q| + |∆|)).
Äquivalenzproblem:
Gegeben: zwei erkennbare Sprachen L1 und L2
Frage: Gilt L1 = L2 ?
Wie bereits erwähnt kann man das Äquivalenzproblem auf das Leerheitsproblem
reduzieren:
L1 = L2 gdw (L1 ∩ L̄2 ) ∪ (L̄1 ∩ L2 ) = ∅.
Satz 4.6 Das Äquivalenzproblem ist für erkennbare Sprachen entscheidbar. Sind
die Sprachen durch DEAs gegeben, so ist dies in polynomieller Zeit möglich.
Bei NEAs: Die Potenzmengenkonstruktion kann exponentiellen Aufwand haben.
Es geht wahrscheinlich nicht besser: Das Äquivalenzproblem für NEAs ist 1 .
1
PSPACE ist vermutlich schlimmer als NP!
31
Wenn im folgenden von “ist vermutlich” gesprochen wird, ist damit gemeint, daß
diese Aussagen derzeit vermutet werden, aber noch nicht bewiesen sind. Da
allerdings diese Aussagen auch nicht widerlegt werden können, ist gerade dieser
Bereich der theoretischen Informatik von großem Interesse.
5
Reguläre Ausdrücke und Sprachen
Verschiedene äquivalente Charakterisierungen der erkennbaren Sprachen:
1. L = L(A) für einen NEA A
2. L = L(A) für einen ε-NEA A
3. L = L(A) für einen NEA mit Wortübergängen
4. L = L(A) für ein endliches Transitionssystem
5. L = L(A) für einen DEA A
6. Die Nerode Rechtskongruenz ∼
=L hat endlichen Index.
Im weiteren betrachten wir eine weitere Charakterisierung, die durch reguläre
Ausdrücke.
Definition 5.1 (Syntax regulärer Ausdrücke) Es sei Σ ein endliches
Alphabet. Die Menge RegΣ der regulären Ausdrücke über Σ ist induktiv definiert:
• ∅, ε, a für a ∈ Σ sind Elemente von RegΣ .
• Sind r, s ∈ RegΣ , so auch
(r + s), (r · s), r∗ ∈ RegΣ .
Beispiel 5.2 ((a · b∗ ) + ∅∗ )∗ ∈ RegΣ für Σ = {a, b}
Notation:
Um Klammern zu sparen, lassen wir Außenklammern weg und vereinbaren, daß ∗
stärker bindet als ·, und daß · stärker bindet als +. Außerdem lassen wir · meist
weg. Zum Beispiel wird der Ausdruck aus obigem Beispiel damit zu
(a · b∗ + ∅∗ )∗ = (ab∗ + ∅∗ )∗ .
Jedem regulären Ausdruck wird genau eine formale Sprache zugeordnet:
32
Definition 5.3 (Semantik regulärer Ausdrücke) Die durch den regulären
Ausdruck r definierte Sprache L(r) ist induktiv definiert:
• L(∅) := ∅, L(ε) := {ε}, L(a) := {a}
• L(r + s) = L(r) ∪ L(s)
L(r · s) = L(r) · L(s)
L(r∗ ) = L(r)∗
Eine Sprache L ⊆ Σ∗ heißt regulär gdw es ein r ∈ RegΣ gibt mit L = L(r).
Beispiel 5.4
• (a + b)∗ ab(a + b)∗ definiert die Sprache aller Wörter über {a, b}, die ab als
Infix enthalten.
• L(ab∗ + b) = {abi | i ≥ 0} ∪ {b}
Bemerkung: Statt L(r) schreiben wir häufig einfach r. Dies ermöglicht zu
schreiben:
• abb ∈ ab∗ + b statt abb ∈ L(ab∗ + b)
• (ab)∗ a = a(ba)∗ statt L((ab)∗ a) = L(a(ba)∗ )
Satz 5.5 (Satz von Kleene) Für eine Sprache L ⊆ Σ∗ sind äquivalent:
1. L ist regulär.
2. L ist erkennbar.
Beweis:
00
1 → 200 : Induktion über den Aufbau der regulären Ausdrücke:
Verankerung:
• L(∅) = ∅:
• L(ε) = {ε}:
ist ein NEA für ∅.
ist ein NEA für {ε}.
33
a
• L(a) = {a}:
ist ein NEA für {a}.
Schritt: Weiß man bereits, daß L(r) und L(s) erkennbar sind, so folgt mit Satz 4.1
(Abschlußeigenschaften), daß auch
L(r + s) = L(r) ∪ L(s)
L(r · s) = L(r) · L(s)
L(r∗ ) = L(r)∗
erkennbar sind.
00
2 → 100 : Sei A = (Q, Σ, q0 , ∆, F ) ein NEA mit L = L(A). Wie in Definition 2.8
sei für q ∈ Q definiert:
Aq := (Q, Σ, q, ∆, F ) und Lq := L(Aq )
Der Zusammenhang zwischen den Lq kann durch ein Gleichungssystem
beschrieben werden, dessen Lösungen eindeutig bestimmte reguläre Sprachen
sind.
Beispiel 5.6 Sei A =
0
a
1
b
2
b
a
L0 = {a}L0 ∪ {a}L1
L1 = {b}L2
L2 = {b}L1 ∪ {ε}
|{z}
2∈F
NEA A
−→
regulärer Ausdruck r mit L(r) = L(A).
Allgemeiner:
Für p, q ∈ Q sei Ap,q := {a ∈ Σ | (p, a, q) ∈ ∆} und
(
{ε} falls p ∈ F
Bp :=
.
∅
falls p ∈
/F
Damit erfüllen die Sprachen Lp die folgenden Gleichungen:
Lp = (
S
q∈Q
Ap,q · Lq ) ∪ Bp .
Behauptung: Das Gleichungssystem
34
(∗)
Xp = (
S
q∈Q
Ap,q · Xq ) ∪ Bp
(p ∈ Q)
hat genau eine Lösung, die aus regulären Sprachen besteht.
Da die Sprachen Lp (∗) lösen folgt, daß sie regulär sind.
Wir zeigen, wie man einzelne Gleichungen der Form
(∗∗)
X =A·X ∪B
lösen kann.
Daraus ergibt sich dann die Lösung von (∗) durch Auflösen nach einer Variablen
und Einsetzen in den Rest.
Lemma 5.7 (Arden) Es seien A, B ⊆ Σ∗ und ε ∈
/ A.
Die Gleichung X = AX ∪ B hat als eindeutige Lösung X = A∗ B.
Beachte: Sind A, B regulär, so auch A∗ B.
Aus dem Lemma folgt für Gleichung (∗), die wir als Gleichung der Form (∗∗)
auffassen: Wähle ein p ∈ Q und betrachte
Xp = Ap,p Xp ∪ ((
[
Ap,q Xq ) ∪ Bp )
p6=q
| {z }
A⊆Σ⇒ε∈A
/
|
{z
}
B
Mit Arden hat diese Gleichung die eindeutige Lösung
Xp = A∗p,p · (
[
Ap,q Xq ∪ Bp ).
p6=q
|
{z
enthält Xp nicht!
}
Setzt man diese Lösung in die restlichen Gleichungen ein, so erhält man ein
System mit einer Variablen weniger. Mit Induktion kann man daher annehmen,
daß dieses System eine eindeutige Lösung mit regulären Sprachen hat. Die Lösung
für Xp ist damit auch eindeutig und regulär, da Ap,p , Ap,q , Bp regulär sind und die
Lösung für Xp nur reguläre Operationen (∪, ·, ∗) enthält.
Beispiel 5.6 (Fortsetzung):
X0 = {a}X0 ∪ {a}X1
X1 = {b}X2
X2 = {b}X1 ∪ {ε}
35
Auflösen nach X0 :
X0 = {a}∗ {a}X1
Einsetzen in X0 ändert nichts.
Auflösen nach X1 :
X1 = ∅ · X1 ∪ {b}X2
Arden: X1 = |{z}
∅∗ {b}X2 = {b}X2
{ε}
Einsetzen liefert
X2 = {b}{b} X2 ∪ {ε}
| {z }
{bb}
Arden: X2 = {bb}∗ {ε} = {bb}∗
Damit ist X1 = {b}{bb}∗ und X0 = {a}∗ {a}{b}{bb}∗ = L(A).
Als regulärer Ausdruck:
a∗ ab(bb)∗
Beweis von Lemma 5.7:
(1)
A∗ B ist Lösung:
AA∗ B ∪ B = (AA∗ ∪ {ε})B
= A∗ B
36
(2)
Eindeutigkeit: Sei L eine Lösung, d.h. L = AL ∪ B.
Zu zeigen: L = A∗ B
(2.1)
A∗ B ⊆ L
Wir zeigen durch Induktion über n:
• A0 B = B
⊆
An B ⊆ L
AL ∪ B = L
• Gelte An B ⊆ L. Es folgt
n
An+1 B = A |A{z
B}
⊆
AL
⊆
AL ∪ B = L
∈L
(2.2)
Daraus folgt A∗ B ⊆ L.
L ⊆ A∗ B.
Angenommen, dies gilt nicht. Es sei w ∈ L \ A∗ B von minimaler Länge,
w ∈ L = AL ∪ B, d.h. w ∈ AL oder w ∈ B.
1.
w ∈ B ⇒ w ∈ A∗ B
2.
w ∈ AL, d.h. w = uv mit u ∈ A und v ∈ L
(Widerspruch!)
Da ε ∈
/ A ist, folgt |v| < |w|. Wegen der Minimalität von w folgt:
v ∈ A∗ B ⇒ w ∈ A∗ B
37
(Widerspruch!)
Teil II
Grammatiken, kontextfreie
Sprachen und Kellerautomaten
Klassen formaler Sprachen, die allgemeiner sind als reguläre Sprachen.
Grammatiken, die Sprachen erzeugen.
6
Die Chomskyhierarchie
Wie erzeugen Grammatiken Sprachen?
Beginne mit dem Startsymbol S und wende Regeln an, die ein Wort durch ein
anderes ersetzen können. Die Sprache enthält die Wörter, die man von S durch
Regelanwendung erreichen kann.
Beispiel 6.1 Regeln:
S → aSb
S→ε
(1)
(2)
Startsymbol: S
1
1
1
2
S → aSb → aaSbb → aaaSbbb → aaabbb
Das Symbol S ist ein Hilfssymbol (Nichtterminalsymbol). Man ist nur an den
erzeugten Wörtern interessiert, die keine Hilfssymbole mehr enthalten
(Terminalwörter). Im Beispiel werden als Terminalwörter genau an bn mit n ≥ 0
erzeugt.
Definition 6.2 Eine Grammatik ist von der Form G = (N, Σ, P, S) wobei:
• N und Σ disjunkte, endliche Alphabete (N : Nichtterminalsymbole, Σ:
Terminalsysmbole)
• S ∈ N Startsysmbol
• P ⊆ (N ∪ Σ)+ × (N ∪ Σ)∗ eine (endliche) Menge von Ersetzungsregeln
(Produktionen)
38
Eine Produktion (u, v) ∈ P schreibt man gewöhnlich als u → v.
Beispiel 6.3 G = (N, Σ, P, S) mit N = {S, B}, Σ = {a, b, c},
P = {S → aSBc, S → abc, cB → Bc, bB → bb}
Definition 6.4 Es sei G = (N, Σ, P, S) eine Grammatik und x, y ∈ (N ∪ Σ)∗ .
1. x ` y gdw
G
y = x1 vx2
∃x1 , x2 ∈ (N ∪ Σ)∗ : ∃u → v ∈ P mit x = x1 ux2 und
n
2. x ` y
G
gdw
∃x0 , . . . , xn ∈ (N ∪ Σ)∗ : x0 = x ∧ xn = y
xi ` xi+1 (0 ≤ i < n)
G
0
n=0 x`
G
∗
3. x ` y
G
gdw
x=y
n
gdw
∃n ≥ mit x ` y
G
∗
4. Die durch G erzeugte Sprache: L(G) := {w ∈ Σ∗ | S ` w}
G
Man ist nur an den von S aus ableitbaren Terminalwörtern, d.h. Wörtern aus Σ∗
interessiert.
Beispiel 6.3 (Fortsetzung):
S ` abc, d.h. abc ∈ L(G)
G
∗
S ` aSBc ` aaSBcBc ` aaaSBcBcBcBc ` aaaabcBcBcBc `
G
G
∗
G
G
G
aaaabBBBcccc ` a4 b4 c4
G
Es gilt: L(G) = {an bn cn | n ≥ 1}
Beweis:
“⊇” n = 1 : abc ∈ L(G)
n−1
∗
∗
G
G
S ` an−1 S(Bc)n−1 ` an bc(Bc)n−1 ` an bB n−1 cn ` an bn cn
G
G
39
∗
“⊆” Es gelte S ` w mit w ∈ Σ∗ . Wird sofort S → abc angewandt, so ist
G
w = abc ∈ {an bn cn | n ≥ 1}. Sonst betrachten wir die Stelle in der
∗
Ableitung S ` w, an der S das letzte Mal auftritt.
G
∗
S ` an−1 Su mit u ∈ {c, B}∗ und |u|B = |u|c = n − 1 (nur S → aSBc und
G
CB → Bc angewandt)
∗
an−1 Su ` an bcu ` w (in den letzten Schritten nur noch cB → Bc und
G
G
bB → bb angewandt)
Dadurch bleibt die Anzahl der b, B gleich n und die Anzahl der c auch
gleich n. Um die B zu b zu machen, müssen sie auf ein b treffen und damit
links von den c’s stehen.
Beispiel 6.5 G = (N, Σ, P, S) mit N = {S, B}, Σ = {a, b},
P = {S → bS, S → abB, B → aB, B → bB, B → ε}
L(G) = Σ∗ abΣ∗
Die Beispiele 6.5, 6.3 und 6.1 gehören zu verschiedenen Stufen der
Chomskyhierarchie.
Definition 6.6 Es sei G = (N, Σ, P, S) eine Grammatik.
• Jede Grammatik G ist eine Typ0 Grammatik.
• G heißt Grammatik vom Typ1 (kontextsensitiv), falls jede Produktion von G
die Form
u1 , u2 , w ∈ (N ∪ Σ)∗ und |w| ≥ 1, oder
– u1 Au2 → u1 wu2 mit A ∈ N
– S → ε hat.
Ist S → ε ∈ P , so kommt S nicht auf der rechten Seite einer Produktion vor.
• G heißt Grammatik vom Typ2 (kontextfrei), falls jede Regel die Form
A → w hat mit A ∈ N und w ∈ (N ∪ Σ)∗ .
• G heißt Grammatik vom Typ3 (rechtslinear), falls jede Regel von der Form
A → uB oder A → u ist mit A, B ∈ N, u ∈ Σ∗ .
siehe auch Beispiel 6.5 (Typ3), 6.1 (Typ2; S → aSb) und 6.3 (fast Typ2;
cB → Bc kontextsensitiv!)
40
Definition 6.7 Für i = 0, 1, 2, 3 ist die Klasse der Typi Sprachen definiert als:
Li = {L(G) | G ist Typi Grammatik}
Wir werden sehen L3 ⊂ L2 ⊂ L1 ⊂ L0 . Nach Definition der Grammatiktypen gilt
offenbar L3 ⊆ L2 und L1 ⊆ L0 .
7
Rechtslineare Grammatiken und reguläre
Sprachen
Satz 7.1 L3 = {L | L ist regulär}
Beweis:
“⊆”
Es sei L ∈ L3 , d.h. L = L(G) für eine Typ3 Grammatik G = (N, Σ, P, S)
Es gilt w ∈ L(G) gdw
(*) es gibt eine Ableitung
S = B0 ` w1 B1 ` w1 w2 B2 ` . . . ` w1 w2 . . . wn−1 Bn−1 ` w1 w2 . . . wn
G
G
G
G
für die Produktionen Bi−1 → w1 Bi ∈ P
G
(i = 1, . . . , n),
Bn−1 → wn .
Wir definieren einen NEA mit Wortübergängen für L(G):
A = (N ∪ Ω, Σ, S, ∆, {Ω})
Ω∈
/ N mit
∆ = {(A, w, B) | A → wB ∈ P } ∪ {(A, w, Ω) | A → w ∈ P }
Ableitungen der Form (*) entsprechen Pfaden
(S, w1 , B1 )(B1 , w2 , B2 ) . . . (Bn−2 , wn−1 , Bn−1 )(Bn−1 , wn , Ω)
vergleiche Beispiel 6.5
ε
ab
S
a, b
B
Ω
a, b
41
“⊇” Es sei L = L(A) für einen NEA A = (Q, Σ, q0 , ∆, F ). Wir definieren daraus
eine Typ3-Grammatik G = (N, Σ, P, S) mit:
N := Q, S := q0 , P := {p → aq | (p, a, q) ∈ ∆} ∪ {p → ε | p ∈ F }
Ein Pfad in A der Form (q0 , a1 , q1 )(q1 , a2 , q2 ) . . . (qn−1 , an , qn ), qn ∈ F
entspricht genau der Ableitung
q0 ` a1 q1 ` a1 a2 q2 ` . . . ` a1 . . . an qn ` a1 . . . an
G
G
G
Beispiel 7.2
G
a,b
a,b
q
G
a
0
q
b
1
q
2
liefert die Produktionen
P = {q0 → aq0 , q0 → bq0 , q0 → aq1 , q1 → bq2 , q2 → aq2 , q2 → bq2 , q2 → ε}
Korollar 7.3
L3 ⊂ L2
Beweis: Wir wissen bereits L3 ⊆ L2 . Mit Beispiel 6.1 ist
L := {an bn | n ≥ 0} ∈ L2 . Im Teil I der Vorlesung haben wir gezeigt, daß L nicht
regulär/erkennbar ist. Mit Satz 7.1 folgt L ∈
/ L3 .
Beispiel 7.4 Ein weiteres Beispiel für eine Sprache in L2 \ L3 : {an bm | n 6= m}
(nicht regulär).
Man kann diese Sprache mit der folgenden kontextfreien Grammatik erzeugen:
S → aS ≥ , S → S ≤ b
S ≥ → aS ≥ b, S ≥ → aS ≥ , S ≥ → ε
S ≤ → aS ≤ b, S ≤ → S ≤ b, S ≤ → ε
Es gilt:
∗
• S ≥ ` w ∈ {a, b}∗ ⇒ w = an bm mit n ≥ m
G
∗
• S ≤ ` w ∈ {a, b}∗ ⇒ w = an bm mit n ≤ m
G
Daraus ergibt sich:
∗
S ≥ ` w ∈ {a, b}∗ ⇒ w = an bm mit n > m oder n < m,
G
d.h.
L(G) = {an bm | n 6= m}
42
8
Normalformen kontextfreier Grammatiken
G
G’
in Normalform
äquivalent, d.h.
L(G)=L(G’)
Wir zeigen zunächst, daß man “überflüssige” Symbole entfernen kann, ohne die
erzeugte Sprache zu ändern.
Definition 8.1 Es sei G = (N, Σ, P, S) eine kontextfreie Grammatik.
∗
1. A ∈ N heißt terminierend, falls es ein w ∈ Σ∗ gibt, mit A ` w.
G
∗
2. A ∈ N heißt erreichbar, falls es u, v ∈ (Σ ∪ N )∗ gibt, mit S ` uAv.
G
3. G heißt reduziert, falls alle Elemente von N erreichbar und terminierend
sind.
∗
Beachte: In einer Ableitung S ` w ∈ Σ∗ können nur erreichbare und
G
terminierende Symbole A ∈ N vorkommen.
Lemma 8.2 Zu einer kontextfreien Grammatik G = (N, Σ, P, S) kann man
effektiv die Menge aller erreichbaren Symbole bestimmen.
Beweis: Wir definieren:
E0 := {S}
Ei+1 := Ei ∪ {A | ∃B ∈ Ei und Regel B → u1 Au2 ∈ P }
Es gilt: E0 ⊆ E1 ⊆ E2 ⊆ . . . ⊆ N
S
Da N endlich ist, gibt es ein k mit Ek = Ek+1 und damit Ek = i≥0 Ei .
Behauptung: Ek = {A ∈ N | A ist erreichbar}
denn:
"⊆" Offenbar enthalten die Ei nur erreichbare Symbole.
"⊇" Zeige durch Induktion über i:
i
S ` uAv ⇒ A ∈ Ei
G
43
Beispiel 8.3 S → aS, S → SB, S → SS, S → ε, A → ASB, A → c, B → Cb
E0 = {S} ⊆ E1 = {S, B} ⊆ E2 = {S, B, C} = E3
Damit ist A das einzige nicht erreichbare Symbol.
Lemma 8.4 Zu einer kontextfreien Grammatik G = (N, Σ, P, S) kann man
effektiv die Menge der terminierenden Symbole berechnen.
Beweis:
T1 := {A ∈ N | ∃w ∈ Σ∗ : A → w ∈ P }
Ti+1 = Ti ∪ {A ∈ N | ∃w ∈ (Σ ∪ Ti )∗ : A → w ∈ P }
A ` w1 B1 w2 · · · wn Bn wn+1
G
mit wi ∈ Σ∗ für i = 1, 2, . . . n + 1 und Bi ∈ Ti .
Wegen T1 ⊆ T2 ⊆ · · · ⊆ N gibt es ein k mit Tk = Tk+1 =
S
i≥1
Ti .
Behauptung: Tk = {A ∈ N | A ist terminierend}
denn:
“⊆” Durch Induktion über i zeigen wir Ti besteht nur aus terminierenden
Symbolen.
i = 1: klar nach Definition
i → i + 1: Es sei A ∈ Ti+1 \ Ti . Dann gibt es eine Produktion
A → w1 B1 w2 B2 · · · wn Bn wn+1 mit wi ∈ Σ∗ und Bi ∈ Ti .
Mit Induktionsvorraussetzung ist Bi terminierend, d.h. ui ∈ Σ∗ mit
∗
Bi ` ui
G
∗
Damit gilt: A ` w1 u1 w2 u2 · · · wn un wn+1 .
G
|
{z
∈Σ∗
Also ist A terminierend.
}
“⊇” Zeige durch Induktion über i:
≤i
A ` w ∈ Σ∗ ⇒ A ∈ Ti
G
≤1
i = 1: A ` w ∈ Σ∗ ⇒ A → w ∈ P ⇒ A ∈ T1
G
44
≤i
i → i + 1: A ` u1 B1 u2 B2 · · · un Bn un+1 ` w mit uj ∈ Σ∗ , Bj ∈ N und
G
G
≤i
w = u1 w1 u2 w2 · · · un wn un+1 mit wj ∈ Σ∗ und Bj ` wj
G
⇒ mit Induktion Bj ∈ Ti
⇒ A ∈ Ti+1
Satz 8.5 Das Leerheitsproblem für kontextfreie Sprachen ist entscheidbar.
∗
Beweis: Es gilt: L(G) 6= ∅ gdw ∃w ∈ Σ∗ : S ` w
G
gdw S ist terminierend.
Lemma 8.2 und 8.4 zeigen, daß man kontextfreie Grammatiken effektiv reduzieren
kann.
Beachte: Man muß das Entfernen der nicht-erreichbaren und nicht-terminierenden
Symbole in der richtigen Reihenfolge durchführen. Das Problem ist, daß durch
Entfernen nicht-terminierender Symbole vorher erreichbare Symbole
nicht-erreichbar werden.
S → AB
A→a
damit sind A und B erreichbar.
damit ist A terminierend, B nicht.
⇒ entferne S → AB, weil nicht-terminierend
⇒ entferne A da unerreichbar
Satz 8.6 Zu jeder kontextfreien Grammatik G mit L(G) 6= ∅ kann man effektiv
eine äquivalente reduzierte kontextfreie Grammatik konstruieren.
Beweis: Zu G = (N, Σ, P, S) definieren wir G0 = (N 0 , Σ, P 0 , S) mit
N 0 := {A ∈ N | A ist terminierend in G} und
P 0 := {A → w ∈ P | A ∈ N 0 , w ∈ (Σ ∪ N 0 )∗ }
Da L(G) 6= ∅ ist, gilt natürlich S ∈ N 0 .
Im zweiten Schritt definieren wir G00 = (N 00 , Σ, P 00 , S) mit
N 00 := {A ∈ N 0 | A ist erreichbar in G0 } und P 00 := {A → w ∈ P 0 | A ∈ N 00 }
45
Beachte: S ∈ N 00 und ist A ∈ N 00 und A → w ∈ P 0 , so ist jedes
Nichtterminalsymbol in w auch in N 00 .
∗
Man sieht leicht, daß G00 reduziert und äquivalent zu G ist. S `00 w ∈ Σ∗ kann nur
G
erreichbare und terminierende Symbole enthalten.
∗
∗
reduziert A `0 w ∈ Σ∗ und A ∈ N 00 ⇒ A `00 w. Da A erreichbar ist, sind alle
G
G
∗
Symbole in der Ableitung A `00 w erreichbar.
G
Als nächstes eliminieren wir Produktionen der Form A → ε.
Lemma 8.7 Zu jeder kontextfreien Grammatik kann man effektiv eine
kontextfreie Grammatik G0 konstruieren mit der Eigenschaft
L(G0 ) = L(G) \ {ε}
Beweis:
∗
1. Finde alle A ∈ N mit A ` ε.
G
N1 := {A ∈ N | A → ε ∈ P }
Ni+1 := Ni ∪ {A ∈ N | A → B1 . . . Bn ∈ P und B1 . . . Bn ∈ Ni }
Es gibt ein k mit Nk = Nk+1 =
S
i≥1
∗
Ni
Für dieses k gilt: A ∈ Nk gdw A ` ε.
G
2. Eliminiere in G alle Regeln der Form A → ε.
Um dies auszugleichen, nimmt man für alle Regeln
A → u1 B1 u2 B2 · · · un Bn un+1 mit Bi ∈ Nk und ui ∈ (Σ ∪ (N \ Nk ))∗ die
Regeln A → u1 β1 u2 β2 · · · un βn un+1 hinzu, wobei:
• βi ∈ {Bi , ε}
• u1 β1 u2 β2 · · · un βn un+1 6= ε
Man zeigt leicht: Die erhaltene Grammatik G0 enthält keine ε-Produktionen und
L(G0 ) = L(G) \ {ε}.
46
Beispiel:
S → aS, S → SS, S → bA,
A → BB,
B → CC, B → aAbC,
C → ε,
N1 = {C} ⊂ N2 = {C, B} ⊂ N3 = {C, B, A} = N4
G0 : S → aS, S → SS, S → ba, S → b,
A → BB, A → B,
B → CC, B → C,
B → aAbC, B → abC, B → aAb,B → ab
4
Die Ableitung S ` bA ` bBB ` bCCB ` bCCCC ` b kann in G0 direkt
G
G
G
G
G
abgeleitet werden:
S `0 b
G
Definition 8.8 Eine kontextfreie Grammatik heißt ε-frei, falls gilt:
1. Sie enthält keine Produktion A → ε für A 6= S.
2. Ist S → ε enthalten, so kommt S nicht auf einer rechten Seite vor.
Satz 8.9 Zu einer kontextfreien Grammatik G kann man effektiv eine äquivalente
ε-freie kontextfreie Grammatik G00 konstruieren.
∗
Beweis: Konstruiere G0 wie im Beweis von Lemma 8.7. Ist ε ∈
/ L(G) (d.h. S 6 `ε,
G
also S ∈
/ Nk ), so G00 := G0 und wir sind fertig. Sonst erweitere G0 um ein neues
Startsymbol S0 und die Produktionen S0 → ε und S0 → S.
Korollar 8.10
L2 ⊆ L1
Beweis: ε-freie kontextfreie Grammatiken sind auch kontextsensitiv.
47
Satz 8.11 Zu jeder kontextfreien Grammatik kann man effektiv eine äquivalente
kontextfreie Grammatik konstruieren, die keine Produktionen der Form A → B
für A, B ∈ N enthält.
Beweisskizze:
1. Bestimme zu jedem A ∈ N
∗
N (A) := {B ∈ N | A ` B}
G
(effektiv berechenbar)
2. P 0 = {A → w | B → w ∈ P, B ∈ N (A), w ∈
/ N}
Beispiel: P = {S → A, A → B, B → aA, B → b}
N (S) = {S, A, B}
N (A) = {A, B} , N (B) = {B}
(S → A, A → B) fallen weg
P 0 = {B → aA, A → aA, S → aA, B → b, A → b, S → b}.
Chomsky-Normalform: nur Produktionen der Form
• A→a
A ∈ N, a ∈ Σ
• A → BC
A, B, C ∈ N
• S→ε
Wobei s nicht auf der rechten Seite einer Produktion vorkommt
Satz 8.12 Jede kontextfreie Grammatik läßt sich effektiv umformen in eine
äquivalente kontextfreie Grammatik in Chomsky-Normalform.
Beweis:
1. Konstruiere eine äquivalente ε-freie Grammatik ohne Produktionen der
Form A → B. (Reihenfolge! Erst A → ε raus und dann A → B.)
2. Führe für jedes a ∈ Σ ein neues Nichtterminalsymbol Xa und die
Produktion Xa → a ein.
3. Ersetze in jeder Produktion A → w mit w ∈
/ Σ und |w| > 1 alle
Terminalsymbole a durch die zugehörigen Xa ’s.
48
4. Produktionen der Form A → B1 · · · Bn für n > 2 werden ersetzt durch
A → B1 C1 , C1 → B2 C2 , · · · , Cn−2 → Bn−1 Bn wobei die Ci jeweils neue
Nichtterminalsymbole sind.
Aus dem Satz ergibt sich, daß das Wortproblem (“w ∈ L(G)?”) für kontextfreie
Grammatiken entscheidbar ist.
Bei endlichen Automaten/rechtslinearen Grammatiken:
Pfad im Automaten/Ableitung in der Grammatik ist von der Länge |w|. Davon gibt
es nur endlich viele. Man kann sie also alle durchprobieren.
Bei allgemeinen kontextfreien Grammatiken:
Durch die Länge des Worts kann die Länge der Ableitung nicht beschränkt werden.
Bei kontextfreien Grammatiken in Chomsky-Normalform:
• Produktionen der Form A → BC verlängern um 1.
⇒ Sie werden |w| − 1 mal angewandt.
• Produktionen der Form A → a erzeugen 1 Terminalsymbol.
⇒ Sie werden |w| mal angewandt.
Es folgt: w ∈ L(G) \ {ε} wird durch Ableitung der Länge 2|w| − 1 erzeugt.
Da es im allgemeinen ≥ 2n Ableitungen der Länge n geben kann, liefert dies ein
exponentielles Verfahren.
Ein besseres Verfahren (kubisch: n3 ) liefert die folgende Überlegung:
Definition 8.13 Es sei G = (N, Σ, P, S) eine kontextfreie Grammatik in
Chomsky-Normalform und w = a1 · · · an ∈ Σ+ .
Wir definieren:
• wij := ai · · · aj
∗
• Nij := {A ∈ N | A ` wij }
G
Damit gilt:
1. S ∈ N1n ⇔ w ∈ L(G)
∗
2. A ∈ Nii ⇔ A ` ai ⇔ A → ai ∈ P (mit Chomsky-Normalform)
G
49
3.
∗
A ∈ Nij (i < j) ⇔ A ` ai · · · aj
G
∗
∗
G
G
⇔ ∃A → BC ∈ P und i ≤ k < j mit B ` ai · · · ak , C ` ak+1 · · · aj
⇔ ∃A → BC ∈ P und i ≤ k < j mit B ∈ Nik und C ∈ Nk+1j
Das liefert das folgende iterative Verfahren zur Berechnung der Nij (und damit von
N1n ):
Algorithmus 8.14 (CYK-Algorithmus (Cocke Younger Kasami))
for i:=1 to n do Nii := {A | A → aj ∈ P } od;
for d:=1 to n-1 do
//wachsende Differenz
for i:=1 to n-d do
j:=i+d;
//d=j-i
Nij := ∅;
for k:=i to j-1 do
Nij := Nij ∪ {A | A → BC ∈ P, B ∈ Nik , C ∈ Nk+1j };
|
{z
kleinere Differenz
}
od
od
od
Satz 8.15 Für eine gegebene kontextfreie Grammatik in Chomsky-Normalform
entscheidet Algorithmus 8.14 die Frage “w ∈ L(G)?” in der Zeit O(|w|3 ).
Beweis: Drei geschachtelte Schleifen, die jeweils ≤ |w| = n Schritte machen.
⇒ |w|3 Schritte in der innersten Schleife.
Beachte: Die Größe von G ist dabei als konstant angenommen.
Beispiel: Sei P = {S → SA | a, A → BS, B → BB | BS | b | c} eine
Grammatik in Chomsky Normalform.
Frage: Ist w = abacba durch P erzeugbar?
50
i\j
1
2
3
4
5
6
w
1
S
2
∅
B
3
S
A, B
S
4
∅
B
∅
B
5
∅
B
∅
B
B
a
b
a
c
b
6
S
A, B
S
A, B
A, B
S
a
⇒ S ∈ N1,6 = {S} ⇒ w ∈ L(G)
Greibach-Normalform:
Die Greibach-Normalform enthält nur Produktionen der Form:
A → aw(A ∈ N, a ∈ Σ, w ∈ N ∗ )
S → ε, wobei s nicht auf der rechten Seite vorkommt.
Satz 8.16 Jede kontextfreie Grammatik läßt sich effektiv umformen in eine
Grammatik in Greibach-Normalform.
(ohne Beweis)
9
Abschlußeigenschaften kontextfreier
Sprachen
Satz 9.1 Die Klasse L2 der kontextfreien Sprachen ist abgeschlossen unter
Vereinigung, Konkatenation und Stern.
Beweis: Es sei L1 = L(G1 ) und L2 = L(G2 ) für kontextfreie Grammatiken
Gi = (Ni , Σ, Pi , Si ). Ohne Beschränkung der Allgemeinheit sei N1 ∩ N2 = ∅.
1. G := (N1 ∪ N2 ∪ {S}, Σ, P1 ∪ P2 ∪ {S→ S1 | S2 }, S), mit S neues
Startsymbol und S ∈
/ N1 ∪ N2 ist eine kontextfreie Grammatik für L1 ∪ L2 .
2. G0 := (N1 ∪ N2 ∪ {S}, Σ, P1 ∪ P2 ∪ {S → S1 S2 }, S) ist eine kontextfreie
Grammatik für L1 L2 .
3. G00 := (N1 ∪ {S}, Σ, P1 ∪ {S → ε | SS1 }, S) ist eine kontextfreie
Grammatik für L∗1 .
51
Der Abschluß unter ∩,− gilt nicht!
Eine geeignete Methode, um zu zeigen, daß eine Sprache nicht kontextfrei ist, ist
das zugehörige Pumping Lemma. Dazu definieren wir jedoch erst
Ableitungsbäume, die das Pumping Lemma vereinfachen werden.
Beispiel 9.2 Sei P = {S → SbS | a}.
Drei Ableitungen von w = ababa sind zum Beispiel:
1. S ` SbS ` abS ` abSbS ` ababS ` ababa
2. S ` SbS ` abS ` abSbS ` abSba ` ababa
3. S ` SbS ` Sba ` SbSba ` Sbaba ` ababa
Die zugehörigen Ableitungsbäume sind dann:
1.
S
S
b
a
S
S
b
a
S
a
2. Sieht genauso aus wie der obige Baum!
3.
S
S
S
b
a
b
S
S
a
a
• Ein Ableitungsbaum steht für mehrere Ableitungen.
52
• Es existieren u.U. mehrere Bäume für ein Wort.
Allgemein: Knoten sind mit Elementen von Σ ∪ N beschriftet,
A
....
α1
..........
αn
falls A → α1 . . . αn ∈ P .
Ein Ableitungsbaum, dessen Wurzel mit A und dessen Blätter (von links nach
rechts gelesen) mit α1 . . . αn beschriftet sind, entspricht der Ableitung
∗
A ` α1 . . . αn .
G
Lemma 9.3 (Pumping Lemma für kontextfreie Sprachen) Sei G eine
kontextfreie Grammatik, die ε-frei ist und keine Übergänge der Form A → B
erlaubt. Es sei m die Anzahl der Nichtterminalsymbole und k die Länge der
längsten rechten Seite einer Produktion.
Es sei n0 := k m+1 .
Dann gibt es für jedes z ∈ L(G) mit |z| > n0 eine Zerlegung z = uvwxy mit:
• vx 6= ε und |vwx| ≤ n0
• uv i wxi y ∈ L(G) für alle i ≥ 0
Beweis:
1. Ein Baum der Tiefe ≤ t und der Verzweigung ≤ k hat maximal k t viele
Blätter (s. Datenstrukturen und Algorithmen).
Da der Ableitungsbaum für z eine Blattanzahl |z| > k m+1 hat, ist die
maximale Tiefe > m + 1.
2. Auf dem längsten Pfad im Ableitungsbaum stehen also mindestens m + 1
Nichtterminalsymbole. Es gibt aber nur m verschiedene, das heißt, eines
taucht mindestens zweimal auf (zum Beispiel hier das A):
53
A
A
u
v
w
x
y
Ohne Einschränkung gebe es in
A
A
keine weiteren Wiederholungen von Nichtterminalsymbolen.
3. Es gilt:
∗
S ` uAy
G
∗
A ` vAx
G
∗
A`w
G
Daraus folgt:
∗
∗
∗
G
G
G
S ` uAy ` uv i Axi y ` uv i wxi y
+
4. vx 6= ε: Da G ε-frei ist, wäre sonst A ` vAx nur bei Anwesenheit von
G
Produktionen der Form A → B möglich.
5. |vwx| ≤ n0 = k m+1 : Wäre vwx länger, so müßte es noch weitere
Wiederholungen enthalten.
Satz 9.4
L2 ⊂ L1
Beweis: Wir zeigen, daß L := {an bn cn | n ≥ 1} ∈ L1 \ L2 .
54
1. L ∈
/ L2 :
Angenommen, L ist kontextfrei. Dann gibt es eine ε-freie kontextfreie
Grammatik ohne Produktionen der Form A → B für L. Es sei nun
n0 = k m+1 die zugehörige Zahl aus Lemma 9.3. Wir betrachten
z := an0 bn0 cn0 ∈ L. Mit Lemma 9.3 gibt es eine Zerlegung z = uvwxy mit
vx 6= ε und uv i wxi y ∈ L.
1. Fall: v enthält verschiedene Buchstaben. Dann ist aber
uv 2 wx2 y ∈
/ a∗ b∗ c∗ ⊇ L (Widerspruch!).
2. Fall: x enthält verschiedene Buchstaben führt analog zum Widerspruch.
3. Fall: v enthält lauter gleiche Buchstaben und x auch. Dann gibt es einen
Buchstaben aus {a, b, c}, der in vx nicht vorkommt. Daher kommt dieser in
uv 0 wx0 y weiterhin n0 -mal vor, aber |uv 0 wx0 y| < 3n0 . Damit folgt
uv 0 wx0 y ∈
/ L (Widerspruch!).
2. Es bleibt zu zeigen, daß die Sprache kontextsensitiv ist. Das Beispiel 6.3
liefert “fast” eine kontextsensitive Grammatik für L:
cB → Bc ist nicht kontextsensitiv.
Daher modifizieren wir G wie folgt:
• Ersetze überall c durch das Nichtterminalsymbol C und führe die
Produktion C → c ein.
S → aSBC | abC
CB → BC nicht kontextsensitiv
bB → bb
C→c
• Ersetze CB → BC durch die kontextsensitive Produktion
CB → A1 B
A1 B → A1 A 2
A1 A2 → BA2
BA2 → BC
Diese können nur dazu verwendet werden CB → BC zu simulieren.
Beachte: Auf diese Art kann man zeigen, daß man jede nicht-kürzende Produktion
u → v mit |u| ≤ |v| durch kontextsensitive Produktionen ersetzen kann, ohne die
Sprache zu ändern.
Korollar 9.5 L2 ist nicht unter Durchschnitt und Komplement abgeschlossen.
55
Beweis:
1. {an bn cm | n ≥ 1, m ≥ 1} = {an bn | n ≥ 1} · c+ ∈ L2 (Abschluß L2 unter ·)
{am bn cn | n ≥ 1, m ≥ 1} ∈ L2
{an bn cm | n ≥ 1, m ≥ 1} ∩ {am bn cn | n ≥ 1, m ≥ 1}
= {an bn cn | n ≥ 1} ∈
/ L2
2. L1 ∩ L2 = L1 ∪ L2
L2 ist abgeschlossen unter ∪.
Wäre L2 abgeschlossen unter − , so auch unter ∩.
Beachte: Man kann daher das Äquivalenzproblem nicht mehr so einfach auf das
Leerheitsproblem reduzieren.
L1 = L2
gdw
(L1 ∩ L2 ) ∪ (L1 ∩ L2 ) = ∅
|
{z
}
muß nicht mehr kf sein
Wir werden sehen: Das Äquivalenzproblem für kontextfreie Sprachen ist
unentscheidbar.
10
Killer(au)tomaten
Automatenmodell, das genau die kontextfreien Sprachen akzeptiert. Endliche
Automaten genügen dafür nicht. Wir erweitern endliche Automaten um eine
zusätzliche (potentiell unendliche) Speicherkomponente (Keller).
56
Eingabe: von links nach rechts, nur ein Symbol sichtbar
Lesekopf
Schreibkopf
endl.
Kontrolle
NEA
nur oberstes Symbol sichtbar
nur oben schreiben
kann beliebig gross werden
Z0
Definition 10.1 Ein Kellerautomat (pushdown automaton, PDA) hat die Form
A = (Q, Σ, Γ, q0 , Z0 , ∆, F ), wobei:
• Q
endliche Zustandsmenge
• Σ
Eingabealphabet
• Γ
Kelleralphabet
• q0 ∈ Q
Anfangszustand
• Z0 ∈ Γ
Kellerstartsymbol
• ∆ ⊆ Q × (Σ ∪ {ε}) × Γ × Γ∗ × Q
• F ⊆Q
endliche Übergangsrelation
Endzustandsmenge
Anschaulich bedeutet:
(q, a, Z, γ, q 0 ) ∈ ∆: Im Zustand q mit aktuellem Eingabesymbol a und oberstem
Kellersymbol Z darf der Automat Z durch γ ersetzen, in den Zustand q 0 gehen und
zum nächsten Eingabesymbol gehen.
(q, ε, Z, γ, q 0 ) ∈ ∆: Wie oben, nur ist das Eingabesymbol irrelevant und es wird
nicht zum nächsten Eingabesymbol übergegangen.
Den aktuellen Zustand (Konfiguration) einer Kellerautomatenberechnung
beschreibt man durch:
57
• den noch zu lesenden Rest w ∈ Σ∗ des Eingabebandes (Lesekopf steht auf
erstem Symbol von w)
• den Zustand q ∈ Q
• den Kellerinhalt γ ∈ Γ∗ (Der Schreiblesekopf steht auf dem ersten Symbol
von γ.)
Definition 10.2 Eine Konfiguration von A ist von der Form
κ = (q, w, γ) ∈ Q × Σ∗ × Γ∗ .
Konfigurationsübergänge:
• (q, aw, Zγ) ` (q 0 , w, βγ) falls (q, a, Z, β, q 0 ) ∈ ∆
• (q, w, Zγ) ` (q 0 , w, βγ) falls (q, ε, Z, β, q 0 ) ∈ ∆
∗
• κ ` κ0 gdw ∃n ≥ 0, κ0 , . . . , κn mit κ = κ0 , κ0 = κn , κi ` κi+1
(0 ≤ i < n)
∗
Der Automat A akzeptiert das Wort w ∈ Σ∗ gdw (q0 , w, Z0 ) ` (q, ε, γ) mit
q ∈ F, γ ∈ Γ∗ .
Die von A akzeptierte Sprache ist L(A) := {w ∈ Σ∗ | A akzeptiert w}.
Beispiel 10.3 ein PDA für {an bn | n ≥ 1}
Q = {q0 , q1 , f }, Γ = {Z, Z0 }, Σ = {a, b}, F = {f }
∆:
q0
q0
q0
q1
q1
a
a
b
b
ε
Z0
Z
Z
Z
Z0
ZZ0
ZZ
ε
ε
ε
q0
q0
q1
q1
f
(erstes a, speichere Z)
(weiteres a, speichere Z)
(erstes b, lösche Z)
(weiteres b, lösche Z)
Konfigurationsübergänge:
1. (q0 , aabb, Z0 ) ` (q0 , abb, ZZ0 ) ` (q0 , bb, ZZZ0 ) ` (q1 , b, ZZ0 ) ` (q1 , ε, Z0 )
` (f, ε, ε)
| {z }
akzeptiert
58
∗
2. (q0 , aab, Z0 ) ` (q0 , b, ZZZ0 ) ` (q1 , ε, ZZ0 ), wobei q1 ∈
/ F ⇒ nicht
akzeptiert
3. (q0 , abb, Z0 ) ` (q0 , bb, ZZ0 ) ` (q1 , b, Z0 ) ` (f, b, ε), wobei b 6= ε ⇒ nicht
akzeptiert
Der Kellerautomat aus dem Beispiel ist deterministisch, d.h. es ist stets höchstens
ein Konfigurationsübergang möglich.
Definition 10.4 Der PDA A = (Q, Σ, Γ, q0 , Z0 , ∆, F ) heißt deterministisch, falls
die folgenden Bedingungen erfüllt sind:
1. ∀q ∈ Q ∀a ∈ Σ ∪ {ε} ∀Z ∈ Γ existiert höchstens ein Übergang der
Form (q, a, Z, . . . , . . .) ∈ ∆.
2. Existiert ein Tupel (q, ε, Z, . . . , . . .) ∈ ∆, so existiert kein Tupel der Form
(q, a, Z, . . . , . . .) ∈ ∆ mit a ∈ Σ.
←
←−
Beispiel 10.5 L := {ww | w ∈ {a, b}∗ } (mit a1 . . . an := an . . . a1 ) wird von
einem nichtdeterministischen PDA akzeptiert.
Idee: Der PDA legt die erste Worthälfte im Keller ab (automatisch in umgekehrter
Reihenfolge) und vergleicht den Kellerinhalt dann mit der zweiten Worthälfte.
Nichtdeterminismus ist nötig, da man raten muß, wann die erste Hälfte gelesen ist.
Q = {q0 , q1 , q2 , f }, Γ = {a, b, Z0 }, Σ = {a, b}, F = {f }
∆:
q0
q0
q0
q1
q1
q1
q1
q1
q1
q2
q2
q2
ε
a
b
a
a
b
b
a
b
b
a
ε
Z0
Z0
Z0
a
b
a
b
a
b
b
a
Z0
ε
aZ0
bZ0
aa
ab
ba
bb
ε
ε
ε
ε
ε
f
q1
q1
q1
q1
q1
q1
q2
q2
q2
q2
f
(akzeptiert ε = ε · Σ)
← lese und speichere die erste Worthälfte
← lese zweite Worthälfte, Vergleich mit erster
← Übergang zum Endzustand
59
Ein anderer Akzeptanzbegriff für Kellerautomaten:
Definition 10.6 Es sei A = (Q, Σ, Γ, q0 , Z0 , ∆) ein PDA ohne
Endzustandsmenge. Wir sagen: A akzeptiert w mit leerem Keller, falls
∗
(q0 , w, Z0 ) ` (q, ε, ε) für beliebige q ∈ Q.
N (A) := {w ∈ Σ∗ | A akzeptiert w mit leerem Keller}
Beispiel: Für die PDAs in Beispiel 10.3 und 10.5 gilt:
L(A) = N (A). Das muß aber nicht immer so sein!
Satz 10.7 Für PDAs ist Akzeptanz mit Endzuständen äquivalent zu Akzeptanz
mit leerem Keller, d.h. für eine formale Sprache L sind äquivalent:
1. L = L(A) für einen PDA A
2. L = N (B) für einen PDA B
Beweis:
“1 → 2”: B arbeitet im Prinzip wie A. Beim Erreichen eines Endzustandes leert
er den Keller. Zusätzlich muß verhindert werden, daß der Keller leer wird,
ohne daß ein Endzustand erreicht war.
A wird erweitert um:
• neuen Anfangszustand q00
• neuen Zustand q1 zum Leeren des Kellers
• neues Kellerstartsymbol X0
• Übergänge:
q00
f
q1
ε
ε
ε
X0
Z
Z
Z0 X0 q0
ε
q1
ε
q1
für Z ∈ Γ ∪ {X0 }, f ∈ F
für Z ∈ Γ ∪ {X0 }
Da X0 in den Übergängen von A nicht vorkommt, kann es nur entfernt
werden, wenn ein Endzustand erreicht wurde.
“2 → 1”: A arbeitet im Prinzip wie B. Zusätzlich muß A feststellen, wann der
Keller leer ist, und dann in einen Endzustand übergehen. Erkennen des
leeren Kellers durch ein neues Kellerstartsymbol.
B wird ergänzt um:
60
• neuen Anfangszustand q00
• neuen Zustand f , der einziger Endzustand ist
• neues Kellerstartsymbol X0
q00
q
• Übergänge:
ε
ε
X0
X0
Z0 X0 q0
ε
f
für alle q ∈ Q
Satz 10.8 Für eine formale Sprache L sind äquivalent:
1. L = L(G) für eine kontextfreie Grammatik G
2. L = N (A) für einen PDA A
Beweis:
“1 → 2”: Es sei G = (N, Σ, P, S) eine kontextfreie Grammatik mit L = L(G).
Der zugehörige PDA simuliert Linksableitungen von G, d.h. Ableitungen
bei denen stets das am weitesten links stehende Nichtterminalsymbol ersetzt
wird.
Beachte: Jedes Wort in L(G) kann durch eine Linksableitung erzeugt
werden.
Wir definieren A = ({q}, Σ, Σ
| ∪
{z N}, q, S, ∆) mit
P
∆ := {(q, ε, A, γ, q) | A → γ ∈ P } ∪ {(q, a, a, ε, q) | a ∈ Σ}
|
{z
}
(∗)
|
{z
(∗∗)
}
(∗): Anwenden einer Produktion.
(∗∗): Entfernen von Terminalsymbolen aus dem Keller, wenn sie mit der
Eingabe übereinstimmen.
Beispiel: {S → ε, S → aSa, S → bSb} liefert Übergänge:
q
q
q
q
q
ε
ε
ε
a
b
S
S
S
a
b
ε
aSa
bSb
ε
ε
61
q
q
q
q
q
Die Ableitung S ` aSa ` abSba ` abba entspricht der Konfigurationfolge
(q, abba, S) ` (q, abba, aSa) ` (q, bba, Sa) ` (q, bba, bSba) ` (q, ba, Sba) `
(q, ba, ba) ` (q, a, a) ` (q, ε, ε)
∗
˙ ∪ N )∗ gilt S ` uα
Behauptung: Für u, v ∈ Σ∗ und α ∈ {ε} ∪ N (Σ
G
∗
gdw
(q, uv, S) ` (q, v, α) Linksableitung
A
Beachte: Für a = ε = v folgt
∗
∗
S ` u ⇔ (q, u, S) ` (q, ε, ε)
G
| {z }
u∈L(G)
A
|
{z
u∈N (A)
}
Beweis der Behauptung:
“⇐” Induktion über die Anzahl der Übergänge mit Transitionen der Form
(q, ε, A, γ, q)
“⇒” Induktion über die Länge der Linksableitung
“2 → 1”: Es sei A = (Q, Σ, Γ, q0 , Z0 , ∆) ein PDA mit L = N (A) und
zugehöriger Grammatik G.
Nichtterminalsymbole sind Tripel [p, Z, q] ∈ Q × Γ × Q.
∗
Idee: Es soll gelten: [p, Z, q] ` u ∈ Σ∗ gdw A kommt vom Zustand p in den
G
Zustand q durch Lesen von u auf dem Eingabeband und Löschen von Z aus
dem Keller (ohne die Symbole unter Z anzutasten).
Wie realisiert man das durch Produktionen?
PDA-Übergang: (p, a, Z, X1 . . . Xn , p0 ) ∈ ∆
Hier wird a auf dem Eingabeband verbraucht und Z durch X1 . . . Xn ersetzt.
Um den Kellerinhalt unter Z zu erreichen, müssen X1 . . . Xn entfernt
werden. Löschen von Xi kann durch ein Nichtterminalsymbol [pi−1 , xi , pi ]
realisiert werden.
Formale Definition:
G = (N, Σ, P, S) mit N := {S} ∪ {[p, Z, q] | p, q ∈ Q, Z ∈ Γ}
P := {S → [q0 , Z0 , q] | q ∈ Q} ∪ {[p, Z, q] → a[p0 X1 p1 ] . . . [pn−1 Xn pn ] |
(p, a, Z, X1 . . . Xn , p0 ) ∈ ∆, p, q, p0 , . . . pn ∈ Q, pn = q}
Beispiel: (vgl. Beispiel 10.3)
(q0 , ab, Z0 ) ` (q0 , b, ZZ0 ) ` (q1 , ε, Z0 ) ` (f, ε, ε)
entspricht der Ableitung:
62
S ` [q0 , Z0 , f ] ` a[q0 , Z, q1 ][q1 , Z0 , f ] ` ab[q1 , Z0 , f ] ` ab
G
G
G
∗
G
Behauptung: Für alle p, q ∈ Q, u ∈ Σ , Z ∈ Γ gilt:
∗
(p, u, Z) ` (q, ε, ε)
gdw
A
∗
[p, Z, q] ` u
G
∗
Für p = q0 , z = z0 : (q0 , u, z0 ) ` (q, ε, ε) gdw
|
{z
}
u∈N (A)
∗
S ` [q0 , Z0 , q] ` u
|
{z
}
u∈L(G)
Eigenschaften von kontextfreien Sprachen mit Hilfe von Kellerautomaten
zeigen:
Korollar 10.9 Es sei L kontextfrei und R regulär. Dann ist L ∩ R
kontextfrei.
Beweis: Es sei L = L(A) für einen PDA A = (Q, Σ, Γ, q0 , Z0 , ∆, F ) und
R = L(A0 ) für einen DEA A0 = (Q0 , Σ, q00 , δ 0 , F 0 ).
Produktautomat:
B := (Q × Q0 , Σ, Γ, (q0 , q00 ), Z0 , ∆0 , F × F 0 )
∆0 := {((p, p0 ), a, Z, γ, (q, q 0 )) | a ∈ Σ, (p, a, Z, γ, q) ∈ ∆ und
δ(p0 , a) = q 0 } ∪ {((p, p0 ), ε, Z, γ, (q, p0 )) | (p, ε, Z, γ, q) ∈ ∆}
Man zeigt leicht durch Induktion:
k
((p, p0 ), uv, γ) ` ((q, q 0 ), v, β)
B
k
u
A
A
(p, uv, γ) ` (q, v, β) und p0 →0 q 0
gdw
Daraus folgt:
∗
((q0 , q00 ), u, Z0 ) ` ((f, f 0 ), ε, β)
B
∗
u
A
A
gdw (q0 , u, Z0 ) ` (f, ε, β) und q00 →0 f 0
|
{z
u∈L(A)
}
|
{z
}
u∈L(A0 )
Bemerkung 10.10 Ist A in dem Beweis deterministisch, so auch der
konstruierte Automat B, da wir o.E. einen deterministischen endlichen Automaten
A0 für R gewählt hatten.
L wird von einem PDA akzeptiert ⇔ L ist kontextfrei.
Beispiel 10.11 Die Sprache L = {ww | w ∈ {a, b}∗ } ist nicht kontextfrei.
Beweis: Angenommen, L ist kontextfrei, dann auch
63
L0 := L ∩ a+ b+ a+ b+ = {ai bj ai bj | i, j ≥ 1}
Es sei nun n die Zahl aus dem Pumping Lemma für L0 . Wir betrachten
z := an bn an bn ∈ L0 .
Es gibt eine Zerlegung z = uvwxy mit |vwx| ≤ n und vx 6= ε, so daß uwy ∈ L0 .
Da |vwx| ≤ n ist, kann vwx höchstens 2 aufeinanderfolgende an /bn -Blöcke
berühren.
a
1. Fall
2.Fall
n
b
n
a
n
b
n
vwx
vwx
3.Fall
vwx
In allen drei Fällen kann uwy kein Element von L0 sein.
Also ist L nicht kontextfrei.
Bei endlichen Automaten gibt es die Potenzmengenkonstruktion, mit deren Hilfe
man aus einem NEA einen DEA errechnen kann. Für Kellerautomaten ist so eine
Konstruktion nicht möglich.
Definition 10.12 Eine Sprache heißt deterministisch kontextfrei (dkf), falls sie
von einem deterministischen Kellerautomaten akzeptiert wird.
− | w ∈ {a, b}∗ } ist kontextfrei aber nicht deterministisch
Ziel: L = {w←
w
kontextfrei.
Wir wissen bereits: L ist kontextfrei (Beispiel 10.5).
Definition 10.13 Für L ⊆ Σ∗ sei
Min(L) := {w ∈ L | kein echtes Präfix von w liegt in L}.
64
Lemma 10.14 Ist L deterministisch kontextfrei, so auch Min(L).
Beweis: Es sei A = (Q, Σ, Γ, q0 , z0 , ∆, F ) ein DPDA mit L = L(A). Wir ändern
A so ab, daß gilt: Wurde das erste Mal ein Endzustand erreicht, so kann danach
keiner mehr erreicht werden:
A0 = (Q0 , Σ, Γ, q0 , Z0 , ∆0 , F )
mit
Q0 = Q ∪ {q̂}
q̂ Papierkorbzustand
0
∆ :=(∆ \ (F × (Σ ∪ {ε}) × Γ × Γ∗ × Q))
∪{(q, a, Z, Z, q̂) | q ∈ F, a ∈ Σ, Z ∈ Γ}
∪{(q̂, a, Z, Z, q̂) | a ∈ Σ, Z ∈ Γ}
Man sieht leicht: A0 ist deterministisch und L(A0 ) = Min(L).
Beachte: Bei einem nichtdeterministischen PDA funktioniert diese Konstruktion
nicht:
u
f
u
q’
f’
v
− | w ∈ {a, b}∗ } ist nicht deterministisch kontextfrei.
Satz 10.15 L := {w←
w
Beweis: Wäre L deterministisch kontextfrei, so wäre mit Bemerkung 10.10 und
Lemma 10.14 auch L0 := Min(L) ∩ (ab)+ (ba)+ (ab)+ (ba)+ deterministisch
kontextfrei.
Es ist L0 = {(ab)i (ba)j (ab)j (ba)i | i > j > 0} (für i ≤ j wäre (ab)i (ba)i ∈ L
echtes Präfix).
Da L0 kontextfrei ist, gilt das Pumping Lemma. Sei n Zahl aus dem Pumping
Lemma. Betrachte:
z = (ab)n+1 (ba)n (ab)n (ba)n+1
Damit hat z eine Zerlegung z = uvwxy mit |vwx| ≤ n, vx 6= ε und uv i wxi y ∈ L0
für alle i ≥ 0.
65
1. Fall: vwx im Mittelteil (ba)n (ab)n
Aufpumpen liefert entweder ein Wort ∈
/ (ab)+ (ba)+ (ab)+ (ba)+ oder
∈
/ Min(L).
2. Fall: vwx im linken Teil (ab)n+1 (ba)n oder im rechten Teil (ab)n (ba)n+1 liefert
sogar Wort ∈
/ L.
Deterministisch kontextfreie Sprachen sind im Compilerbau interessant, da dafür
das Wortproblem linear entscheidbar ist (im Unterschied zu kubisch beim
CYK-Algorithmus).
(Siehe dazu Vorlesung Compilerbau oder Buch von J. Wegener - Theoretische
Informatik S.199-216.)
Satz 10.16 Ist L dkf, so auch L.
(ohne Beweis)
Beachte: Bei DPDAs kann man nicht einfach F durch Q \ F ersetzen wie bei
DEAs.
Grund: Ein DPDA hat zwei Möglichkeiten ein Wort w nicht zu akzeptieren:
1. w ist ganz gelesen und der Automat ist nicht in Endzustand.
2. w wird nicht ganz gelesen.
Man muß zunächst einen DPDA konstruieren, bei dem der 2. Fall nicht eintritt,
dann kann man F durch Q \ F ersetzen.
(Wegener S.193-195)
66
Teil III
Turingmaschinen sowie Typ0 und
Typ1 Sprachen
11
Turingmaschinen
c a b a b
bb
aa
q
Das Band ist einseitig unendlich, Schreib-/Lesekopf kann auf dem Band lesen und
schreiben, es gibt endlich viele Symbole und q ist eine endliche Kontrolle mit
q ∈ Q, |Q| < ∞.
Schreib-/Lesekopf:
• Liest aktuelles Symbol,
• kann es überschreiben,
• kann nach links/rechts gehen oder stehenbleiben.
Definition 11.1 Eine nichtdeterministische Turingmaschine (NTM) über dem
Eingabealphabet Σ ist von der Form
A = (Q, Σ, Γ, q0 , ∆, qacc , qrej )
wobei
• Q endliche Zustandsmenge
• Γ Arbeitsalphabet mit Σ ⊆ Γ, t, c| ∈ Γ \ Σ
67
• ∆⊆
Q \ {qacc , qrej } ×
|
{z
aktueller Zust.
}
Γ
|{z}
×
Q
×
|{z}
gelesenes Symb.
neuer Zust.
Γ
|{z}
×{L, R, 0}
neues Symb.
wobei (q, c|, q 0 , a0 , B) ∈ ∆ ⇒ a0 = c|, B ∈ {R, 0} damit die Randmarke nicht
überschrieben wird, und die Maschine nicht über den linken Rand
hinauslaufen kann.
• q0 , qacc , qrej ∈ Q, qacc 6= qrej Hierbei ist q0 der Anfangszustand, qacc der
akzeptierende Haltezustand und qrej der verwerfende Haltezustand.
Berechnungszustand (Konfiguration) einer NTM:
w1 qw2 ∈ Γ∗ × Q × Γ+
w1
w2
q
Schreib-/Lesekopf steht auf dem ersten Symbol von w2 .
Linker Rand: Ist w1 =
6 ε, so beginnt w1 mit c|.
Ist w1 = ε, so beginnt w2 mit c|
.
Konfigurationsübergänge:
1. w1 qaw2 ` w1 q 0 a0 w2 falls (q, a, q 0 , a0 , 0) ∈ ∆
A
2. w1 bqaw2 ` w1 q 0 ba0 w2 falls (q, a, q 0 , a0 , L) ∈ ∆
A
3. w1 qa |{z}
w2 ` w1 a0 q 0 w2 falls (q, a, q 0 , a0 , R) ∈ ∆
A
6=ε
Wichtig: w1 qa ` w1 a0 q 0 t falls (q, a, q 0 , a0 , R) ∈ ∆
A
Definition 11.2 Die NTM A akzeptiert die Sprache
∗
L(A) := {w ∈ Σ∗ | q0 c|w ` w1 qacc w2 für w1 , w2 ∈ Γ∗ }
A
Eine Sprache L heißt rekursiv aufzählbar, falls es eine NTM A gibt mit L = L(A).
68
Beispiel 11.3 eine sehr einfache NTM
A = ({q0 , qacc , qrej }, {a, b}, {a, b, c|, t}, q0 , ∆, qacc , qrej )
mit
q0 , c| −→ q0 , c|, R
q0 , a −→ q0 , a, R
q0 , t −→ qacc , t, 0
∆:
z.B. aa wird akzeptiert: q0 c|aa ` c|q0 aa ` c|aq0 a ` c|aaq0 t ` c|aaqacc t
A
L(A) = a
A
A
A
∗
Aus der Vorlesung Berechenbarkeit ist bekannt:
• Deterministische TM sind genauso stark wie nichtdeterministische TM, d.h.
sie akzeptieren auch die Klasse der rekursiv aufzählbaren Sprachen.
• Mehrband-TM sind nicht stärker als die eingeführten NTM.
12
Turingmaschinen und Typ0 Sprachen
Satz 12.1 L0 = {L | L ist rekursiv aufzählbar}
Lemma 12.2 Zu jeder Typ0 Grammatik G = (N, Σ, P, S) kann man effektiv
eine NTM A konstruieren mit L(G) = L(A).
Beweisskizze:
Wir geben eine 2-Band-TM an:
1. Band: speichert Eingabe w
2. Band: Hierauf werden ausgehend von S gemäß den Regeln von G alle aus S
ableitbaren Wörter erzeugt.
Das erzeugte Wort wird mit dem Eingabewort verglichen. Falls die Wörter
identisch sind, so geht sie in qacc . Sonst erzeugt sie das nächste Wort.
Genauer:
1. Kopiere w vom Eingabeband auf Band 1.
69
2. Schreibe S auf Band 2 und gehe nach links an den Bandanfang.
3. Gehe auf Band 2 nach rechts und wähle (nichtdeterministisch) eine Stelle, an
der die linke Seite der anzuwendenden Produktion steht.
4. Wähle (nichtdeterministisch) einen der Zustände Regel 1, . . . , Regel k
(wobei P = {αi → βi | i = 1, . . . , k}).
5. Es sei Regel i gewählt. Überprüfe, ob αi tatsächlich die Beschriftung des
Bandstücks der Länge |αi | ab der gewählten Bandstelle ist.
6. Falls der Test erfolgreich ist, so ersetze αi durch βi . Vorher müssen bei
|αi | < |βi | bzw |αi | > |βi | die Symbole 6= t rechts von αi entsprechend
nach rechts bzw links verschoben werden.
7. Vergleiche das auf Band 2 erzeugte Wort mit dem auf Band 1 gespeicherten
Eingabewort.
8. Wenn die Wörter gleich sind, so gehe nach qacc . Sonst fahre fort mit 3.
Lemma 12.3 Zu jeder NTM A = (Q, Σ, Γ, q0 , ∆, qacc , qrej ) kann man effektiv
eine Typ0 Grammatik G konstruieren mit L(G) = L(A).
Beweisskizze: Die Grammatik G erzeugt die Wörter w ∈ L(A) wie folgt:
1.Phase: Erzeuge genügend großes Arbeitsband.
Dazu wird ein Wort w und “genügend” viele Blanks rechts von w erzeugt.
Idee: Zur Akzeptanz von w ∈ L(A) benötigt A nur einen endlichen Bandbereich.
Die Anzahl wird nichtdeterministisch geraten.
2.Phase: Auf diesem Arbeitsband simuliert G die Berechnung von A.
3.Phase: War die Berechnung erfolgreich, so erzeuge nochmals das Wort w.
Damit in der zweiten Phase das w nicht verloren geht, verwenden wir spezielle
Nichtterminalsymbole aus
(Σ ∪ {t}
|
{z
×
Γ
|{z}
}
Berechnung
E
|{z}
}∪
Speichern von w
Formale Definition:
N := {
S, A, B
| {z }
,
Aufbauen des Bandes Aufräumen am Schluß
70
Q
|{z}
Zustand der TM
∪(Σ∪{t})×Γ
Regeln:
1. Phase: S −→ q0 [c|, c|]A
A −→ [a, a]A für alle a ∈ Σ
A −→ B
B −→ [t, t]B | ε
Man erhält so für alle a1 , . . . , an ∈ Σ∗ und l ≥ 0
∗
S ` q0 [c|, c|][a1 , a1 ] . . . [an , an ][t, t]l
G
2. Phase: Simuliert die TM-Berechnung in der “zweiten Spur”.
1. q[c, a] −→ q 0 [c, a0 ] falls (q, a, q 0 , a0 , 0) ∈ ∆
2. [c, b]q[c0 , a] −→ q 0 [c, b][c0 , a0 ] falls (q, a, q 0 , a0 , L) ∈ ∆
3. q[c, a] −→ [c, a0 ]q 0 falls (q, a, q 0 , a0 , R) ∈ ∆
Beachte: Da wir am Anfang genügend viele Blanks erzeugt haben, müssen wir
hier “Nachschieben eines Blanks” nicht behandeln.
3. Phase: Aufräumen und Erzeugen von a1 , . . . , an , wenn die TM akzeptiert hat.
• qacc [a, b] −→ EaE für alle a ∈ Σ, b ∈ Γ
qacc [c|, c|] −→ E
qacc [t, b] −→ E für alle b ∈ Γ
• E[a, b] −→ aE
a ∈ Σ, b ∈ Γ
• [a, b]E −→ Ea a ∈ Σ, b ∈ Γ
• E[t, b] −→ E
b∈Γ
• [t, b]E −→ E
b∈Γ
Aufräumen nach rechts
Aufräumen nach links
• [c|, c|]E −→ E
• E −→ ε
Man zeigt leicht: L(G) = L(A)
Abschlußeigenschaften von Typ0 Sprachen
71
Satz 12.4
1. L0 ist abgeschlossen unter ∪, ∩, · und ∗.
2. L0 ist nicht abgeschlossen unter Komplement!
Beweis:
1. Abschluß unter ∪, ·, und ∗: wie bei kontextfreien Sprachen (Konstruktion
von Grammatiken)
Zu zeigen: Abschluß unter ∩; verwendet eine N T M .
Die N T M für L1 ∩ L2 verwendet zwei Bänder und simuliert auf einem die
Berechnung der N T M für L1 und auf dem anderen die Berechnung der
N T M für L2 .
2. Die rekursiv aufzählbaren Sprachen sind nicht unter Komplement
abgeschlossen (siehe BuK: LH ist zwar rekursiv aufzählbar, aber nicht
rekursiv ⇒ L¯H ist nicht rekursiv aufzählbar!).
Satz 12.5 Für L0 sind das Leerheitsproblem, das Wortproblem und das
Äquivalenzproblem unentscheidbar.
Beweis: siehe BuK: Lempty , Lu , Leq
13
Linear beschränkte Automaten und Typ1
Sprachen
Typ1 Sprachen können durch eine N T M mit linearer Platzbeschränkung
akzeptiert werden.
Definition 13.1 Ein linear beschränkter Automat (LBA) ist eine NTM
A = (Q, Σ, Γ, q0 , ∆, qacc , qrej ), die zusätzlich ein rechtes Randsymbol
$ ∈ Γ \ (Σ ∪ {c|}) enthält. Dieser Randmarker darf nicht überschrieben werden,
und die N T M läuft nicht nach rechts über diesen Randmarker hinaus, d.h.
(q, $, q 0 , a0 , B) ∈ ∆ ⇒ a0 = $ und B ∈ {L, 0}.
72
Die von dem LBA A akzeptierte Sprache ist:
∗
L(A) := {w ∈ Σ∗ | q0 c|w$ ` w1 qacc w2 für w1 , w2 ∈ Γ∗ }.
A
Die Einschränkung sorgt dafür, daß ein LBA als Arbeitsband nur den ursprünglich
vom Eingabewort eingenommenen Bandbereich verfügbar hat.
Korollar 13.2 L1 = {L | L wird von einem LBA akzeptiert }
Beweis: Dieser ergibt sich direkt aus dem Beweis von Satz 12.1.
“⊆”:
Da alle Produktionen von kontextsensitiven Grammatiken nichtkürzend sind (mit
der Ausname S → ε | . . .) muß man auf dem zweiten Band nur ableitbare Wörter
bis zur Länge |w| erzeugen. Daher kommt man mit |w| Feldern aus.
Beachte: Zwei Bänder liefern nicht ein doppelt so langes Band, sondern werden
durch ein größeres Alphabet codiert.
“⊇”:
Durch Modifikation der Beweisidee aus Lemma 12.3 gelingt es, zu einem LBA
eine Grammatik zu definieren, die keine kürzenden Regeln enthält (d.h. α → β mit
|α| > |β|). Wie im Beweis von Satz 9.4 kann man zeigen, daß man diese in eine
äquivalente kontextsensitive Grammatik überführen kann.
Idee der Modifikation: Da man mit |w| Arbeitsfeldern auskommt, muß man keine
zusätzlichen t erzeugen, und sie daher am Ende nicht löschen. Dadurch fallen
kürzende Regeln weg, z.B.: qacc [t, b] → E oder E[t, b] → E, . . . .
Es gibt noch einige technische Probleme:
• Löschen der Randmarker
• Löschen von E und des Zustandes qacc
Lösung:
Führe diese nicht explizit ein, sondern kodiere sie in den anderen Symbolen: z.B.:
statt [a, b]q[a0 , b0 ][a00 , b00 ] verwende [a, b][q, a0 , b0 ][a00 , b00 ].
Satz 13.3 L1 ist abgeschlossen unter ∪, ∩, ·, ∗ und ¯.
73
Beweis:
∩, ·, ∗, ∪:
wie bei L0
Komplement: Schwierig; War lange ein offenes Problem; In den 80ern wurde es
unabhängig voneinander von zwei Forschern im selben Jahr gelöst.
Es ist noch nicht bekannt, ob deterministische LBAs genauso stark sind, wie
nichtdeterministische LBAs.
Satz 13.4 Für L1 ist das Wortproblem entscheidbar.
Beweis: Da die Produktionen nicht kürzend sind, muß man zur Entscheidung
“w ∈ L(G)?” nur alle aus S ableitbaren Wörter aus (N ∪ Σ)∗ der Länge ≤ |w|
erzeugen. Dies sind nur endlich viele.
Korollar 13.5
L1 ⊂ L0
Beweis: Der Beweis dafür gestaltet sich trivial: In L1 ist das Wortproblem
entscheidbar, in L0 allerdings schon unentscheidbar. Also stimmt obige
Behauptung.
L0 ⊃ L1 ⊃ L2 ⊃ L3
74
Teil IV
Schwierige
Entscheidungsprobleme
14
Unentscheidbare Probleme
Wir verwenden zum Nachweis der Unentscheidbarkeit eine Reduktion des
Postschen Korrespondenzproblems:
Definition 14.1 Eine Instanz des Postschen Korespondenzproblems (PKP) ist
gegeben durch zwei Folgen von Wörtern:
A = w1 , . . . , wk und B = x1 , . . . , xk
Eine Lösung des Problems ist eine Indexfolge i1 , . . . , im mit m ≥ 1 und
i, j ∈ {1, . . . , k}, so daß gilt:
wi1 . . . wim = xi1 . . . xim ,
also zum Beispiel A = ab, a und B = a, ba. Eine Lösung ist 1, 2, da aba = aba.
Satz 14.2 Das PKP ist nicht entscheidbar.
Beweis:
siehe BuK
Lemma 14.3 Es ist nicht entscheidbar, ob für gegebene kontextfreie
Grammatiken G1 , G2 gilt:
L(G1 ) ∩ L(G2 ) 6= ∅.
Beweis: Wir reduzieren das PKP auf dieses Problem, d.h. zu jeder Instanz PKP(A,
B) des PKP kann man effektiv kontextfreie Grammatiken GA und GB konstruieren
mit:
PKP(A, B) hat eine Lösung gdw L(GA ) ∩ L(GB ) 6= ∅.
Wäre “L(GA ) ∩ L(GB ) 6= ∅” entscheidbar, dann auch das PKP. Da das PKP
unentscheidbar ist, folgt die Aussage des Lemmas.
Sei also A = w1 , . . . , wk und B = x1 , . . . , xk .
Sei GA := (NA , ΣA , PA , SA ) mit
75
• NA := {SA },
• ΣA := Σ ∪ {1, . . . , k}
|
{z
Indizes
}
• PA := {S → wi SA i, SA → wi i | 1 ≤ i ≤ k}
GB wird entsprechend definiert.
Es gilt:
L(GA ) = {wi1 . . . wim im . . . i1 | m ≥ 1, i, j ∈ {1, . . . , k}}
L(GB ) = {xi1 . . . xim im . . . i1 | m ≥ 1, i, j ∈ {1, . . . , k}}
Damit gilt:
L(GA ) ∩ L(GB ) 6= ∅
gdw ∃m ≥ 1, ∃i1 , . . . , im ∈ {1, . . . , k} mit
wi1 . . . wim im . . . i1 = xi1 . . . xim im . . . i1
gdw PKP(A, B) hat Lösung (i1 . . . im )
Da jede kontextfreie Sprache auch kontextsensitiv ist, und L1 unter Durchschnitt
abgeschlossen ist, folgt:
Satz 14.4 Für L1 ist das Leerheitsproblem und das Äquivalenzproblem
unentscheidbar.
Beachte: Das Leerheitsproblem ist ein Spezialfall des Äquivalenzproblems:
L(G) = ∅ gdw L(G) = L( G∅ )
|{z}
L(G∅ )=∅
Bei kontextfreien Sprachen ist das Leerheitsproblem entscheidbar. Aber
kontextfreie Sprachen sind nicht unter ∩ abgeschlossen.
Satz 14.5 Für L2 ist das Äquivalenzproblem unentscheidbar.
Beweis: Die Sprachen L(GA ) und L(GB ) sind sogar deterministisch kontextfrei.
Was macht ein deterministischer Kellerautomat für L(GA )?
wi1 . . . wim im . . . .i1
Liest wi1 . . . wim in den Keller. Wenn der erste Index (natürliche Zahl) auf dem
−
Eingabeband gelesen wird, so testet (mit ε-Übergängen) der Automat, ob ←
w−
im im
76
Keller steht etc . . . Man kann sich leicht überlegen, daß dies wirklich
deterministisch geht.
Da die deterministisch kontextfreien Sprachen unter Komplement abgeschlossen
sind, kann man effektiv eine kontextfreie Grammatik GA konstruieren mit
L(GA ) = L(GA ).
Nun gilt: L(GA ) ∩ L(GB ) 6= ∅ gdw
L(GB ) ⊆ L(GA ) gdw
L(GB ) ∪ L(GA )
= L(GA )
|
{z
}
kf wegen Abschluß unter ∪
| {z }
kf
ist ein Äquivalenzproblem.
Wäre das Äquivalenzproblem entscheidbar, so auch die Frage
“L(GA ) ∩ L(GB ) 6= ∅?”. Dies ist jedoch nicht entscheidbar.
15
Das Äquivalenzproblem für reguläre
Sprachen
Wissen: Das Leerheitsproblem und das Wortproblem sind polynomiell
entscheidbar. Das Äquivalenzproblem ist entscheidbar durch Reduktion auf das
Leerheitsproblem.
L1 = L2 gdw (L1 ∩ L2 ) ∪ (L1 ∩ L2 ) = ∅
Problem: Bei nichtdeterministischen Automaten kann der Potenzmengenautomat
exponentiell groß sein. Wir werden zeigen:
1. Das Äquivalenzproblem kann mit polynomiellem Platzaufwand gelöst
werden, d.h. das Problem ist in der Komplexitätsklasse PSPACE.
2. Es geht nicht besser. Das Problem ist PSPACE-hart, d.h. jedes Problem in
PSPACE kann mit polynomiellem Zeitaufwand auf das Äquivalenzproblem
reduziert werden.
Da NP ⊆ PSPACE, heißt das, daß das Äquivalenzproblem für reguläre
Sprachen wahrscheinlich nicht in polynomieller Zeit lösbar ist (nur wenn
P=NP ist, was unwahrscheinlich ist).
77
Satz 15.1 Das Äquivalenzproblem für reguläre Sprachen ist in PSPACE.
Beweis: Da die Transformation von regulären Ausdrücken in NEAs polynomiell
(Zeit und Platz) ist, können wir ohne Einschränkung annehmen, daß die Sprachen
durch NEAs
Ai = (Qi , Σ, q0i , ∆, Fi )
(i = 1, 2)
gegeben sind.
Offenbar ist “L(A1 ) = L(A2 )?” mit polynomiellem Platzaufwand entscheidbar
gdw die Frage “L(A1 ) 6= L(A2 )?” mit polynomiellem Platzaufwand entscheidbar
ist.
Satz von Savitch Komplexitätstheorie
PSPACE = NPSPACE
PSPACE polynomiell-platzbeschränkte DTM
NPSPACE polynomiell-platzbeschränkte NTM
Es genügt daher, ein nichtdeterministisches Verfahren zur Entscheidung von
“L(A1 ) 6= L(A2 )?” anzugeben.
Idee: Es sei A0 i der durch Potenzmengenkonstruktion erhaltene DEA zu Ai . Man
kann A0 i zwar nicht vollständig mit polynomiellem Platz konstruieren, aber jeden
einzelnen Zustand P ⊆ Qi kann man mit linearem Aufwand speichern.
Jeder Zustandsübergang von A0 i :
δA0 i (P, a) := {q ∈ Qi | ∃p ∈ P : (p, a, q) ∈ ∆i }
benötigt polynomiellen Platz. Das nichtdeterministische Verfahren rät jetzt
sukzessive Buchstaben a1 , a2 , . . . ∈ Σ und berechnet in jedem Schritt
δAi ({q0 i }, a1 . . . an ) ⊆ Qi . Nur diese beiden aktuellen Zustände von A0 1 und A0 2
müssen im Speicher gehalten werden.
Das Verfahren akzeptiert (d.h. antwortet “L(A1 ) 6= L(A2 )”), falls einer der beiden
Zustände ein Endzustand ist und der andere nicht.
Noch zu zeigen: Das Problem ist PSPACE-hart, d.h. die Berechnung jeder
polynomiell platzbeschränkten TM läßt sich durch das Äquivalenzproblem mit
polynomiellem Aufwand simulieren.
78
Lemma 15.2 Es sei A = (Q, Σ, Γ, q0 , δ, qacc , qrej ) eine deterministische
Turingmaschine, deren Platzbedarf durch ein Polynom p(n) beschränkt ist. Dann
gibt es ein Polynom q so, daß man für jedes x ∈ Σ∗ einen regulären Ausdruck r(x)
in Zeit q(|x|) konstruieren kann, mit x ∈
/ L(A) gdw r(x) ist äquivalent zu Σ∗ .
Beweis: Konfigurationsfolgen von A kann man darstellen in der Form:
#w1 #w2 # . . . #wn #, wobei wi Länge p(|x|) hat.
denn: A benötigt ja zum Akzeptieren von x nur p(|x|) viel Platz. Um den
jeweiligen Zustand zu kodieren, verwenden wir das Alphabet
∆# := ∆ ∪ {#}, wobei ∆ := Γ ∪ Q × Γ.
c a a b b a
z.B.
q
wird beschrieben durch #aa[q, b]ba#
Idee: r(x) beschreibt diejenigen Wörter, die nicht Konfigurationsfolgen einer
akzeptierenden Berechnung für x darstellen.
Insbesondere beschreibt r(x) genau dann alle Wörter, wenn es keine solche Folge
gibt, d.h. x ∈
/ L(A) ist.
Es sei nun |x| = n und x = a1 . . . an . Ein Wort w ∈ ∆∗# heißt
p(n)-Konfigurationswort, wenn es ein k ≥ 1 gibt mit w = #w1 # . . . .wk #, wobei
|wi | = p(n) und wi ∈ Γ∗ (Q × Γ)Q∗ .
Man überlegt sich leicht, daß w ∈ ∆∗# genau dann keine akzeptierende
Berechnung von A für x beschreibt, wenn einer der folgenden Fälle eintrifft:
1. w ist kein Konfigurationswort, d.h. es beschreibt gar keine Berechnung,
insbesondere keine akzeptierende.
2. Die Anfangskonfiguration ist falsch, d.h. w beginnt nicht mit #w1 # für
w1 = [q0 , a1 ]a2 . . . .an (t)p(n)−n .
3. Es wird nicht qacc erreicht, d.h. w enthält kein Symbol aus qacc × Γ
4. w enthält #wi #wi+1 #, wobei wi+1 nicht die Folgekonfiguration zu wi ist.
Wir schreiben r(x) als A + B + C + D, wobei A,B,C,D genau die Fälle 1.-4.
abdecken.
79
w=#w 1#w 2#.....#w #k
p(n)
a1a2[q 0a 3]a 4.....a
n
r(x) = A + B + C + D
Abkürzung: Für S = {d1 , . . . dm } ⊆ ∆# schreiben wir S anstelle von
d1 + . . . + dm . S i steht für S
. . · S}.
| · .{z
i-mal
Der reguläre Ausdruck A: A =
∆∗ +
∆∗ #∆∗
∆∆∗# + ∆∗# ∆+
∆∗# #Γ∗ #∆∗# +
∆∗# #∆∗ (Q × Γ)∆∗ (Q × Γ)∆∗ #∆∗# +
∆∗# #∆p(n)+1 ∆∗ #∆∗# +
A0 + A1 + . . . + Ap(n)−1
wobei Ai = ∆∗# #∆i #∆∗# .
kein #
nur ein #
beginnt oder endet nicht mit #
kein Zustand zwischen 2 #
mindestens 2 Zustände zwischen 2 #
mehr als p(n) Symbole zwischen 2 #
weniger als p(n) Symbole zwischen zwei #
Man sieht leicht:
• A beschreibt genau die Wörter über ∆∗# , die nicht
p(n)-Konfigurationswörter sind.
• Die Länge von A ist in O(p(n)2 ).
Wenn wir die Ausdrücke für 2.-4. schreiben, können wir ohne
Einschränkung davon ausgehen, daß die zu beschreibenden Wörter
p(n)-Konfigurationswörter sind, da sie sonst schon in A sind.
Der reguläre Ausdruck B: wird geschrieben als B = B1 + . . . + Bp(n) , wobei
B1 = #(∆ \ {[q0 , a1 ]})∆p(n)−1 #∆∗#
Bi = #∆i−1 (∆ \ {ai })∆p(n)−i #∆∗#
(1 < i ≤ n)
Bi = #∆i−1 (∆ \ {t})∆p(n)−i #∆∗#
(n < i ≤ p(n))
Größe: O(p(n)2 ).
80
Der reguläre Ausdruck C:
(∆# \ ({qacc } × Γ))∗
Größe: konstant
Der reguläre Ausdruck D: Wir betrachten zunächst den Fall, bei dem die
Konfigurationen zusammenpassen, d.h. . . . #wi #wi+1 # . . . Für drei
aufeinanderfolgende Symbole c1 , c2 , c3 in #wi ist dann das Symbol,das
p(n) + 1 Symbole rechts von c2 steht,
i
j
A
c1 c2 c3
eindeutig durch c1 , c2 , c3 bestimmt:
• Sind c1 , c2 , c3 ∈ Γ (kein Zustand), so ist dieses Symbol gleich c2 .
• Sind c1 , c2 ∈ Γ und ist c3 = [q, a] und ist δ(q, a) = (p, b, L), so ist
dieses Symbol gleich [p, c2 ].
• etc . . .
Es bezeichne f (c1 , c2 , c3 ) jeweils dieses Symbol (das man aus der
Übergangsfunktion der Turingmaschine ablesen kann). Damit ist D die
Summe der Ausdrücke
p(n)−1
Dc1 ,c2 ,c3 := ∆∗# c1 c2 c3 ∆#
für c1 , c2 , c3 ∈ ∆#
(∆# \ {f (c1 , c2 , c3 )})∆∗#
Größe: O(p(n))
Insgesamt: r(x) kann mit Zeitaufwand O(p(n)2 ) berechnet werden. d.h. p0 := p2
Satz 15.3 Das Äquivalenzproblem für reguläre Ausdrücke ist
PSPACE-vollständig.
Beweis: Mit Satz 15.1 ist das Problem in PSPACE. Es genügt zu zeigen, daß das
Problem PSPACE-hart ist, d.h. jedes Problem in PSPACE kann in polynomieller
Zeit auf das Äquivalenzproblem reduziert werden.
Es sei ein Problem in PSPACE gegeben, d.h. eine Sprache L, die durch eine
deterministische Turingmaschine A mit Platzbeschränkung p(n) für ein Polynom p
akzeptiert wird.
81
Mit Lemma 15.2 gibt es ein Polynom p0 , so daß wir zu jedem Wort x mit Aufwand
O(p0 (|x|)) einen regulären Ausdruck r(x) konstruieren können mit:
x∈
/ L = L(A)
|
{z
⇔ r(x) beschreibt die Menge aller Wörter
}
bel. PSPACE Problem
|
{z
}
Äquivalenzproblem für reguläre Ausdrücke
EXPTIME
PSPACE
CONP
NP
P
82
Index
A-äquivalent, 16
L, 6
Σ, 5
Σ∗ , 5
Σ+ , 6
| w |, 5
ε, 5
ε-NEA, 8
ε-frei, 46
w, 5
| w |x , 5
Äquivalenz von Transitionssystemen,
8
Äquivalenzproblem, 2, 30, 75, 77
äquivalent, 8
Entscheidungsprobleme, 28
erkannte Sprache, 8
erkennbar, 8
Erkennbarkeit, 22
erreichbar, 14, 42
erzeugte Sprache, 38
formale Sprache, 6
Grammatik, 37
Greibach-Normalform, 50
Infix, 6
isomorph, 20
kanonische Fortsetzung, 12
Kellerautomat, 56
Kleene Stern, 6
Komplexitätsklasse, 76
Konfiguration, 57, 67
Konfigurationsübergänge, 67
Konkatenation, 6
kontextfrei, 39
kontextsensitiv, 39
Ableitungsbäume, 51
akzeptiert, 8, 67
akzeptiert w mit leerem Keller, 59
akzeptierte Sprache, 8
Alphabet, 5
Anzahl der Vorkommen, 5
ATFS, 1
Länge, 5
Länge von π:, 7
LBA, 71
leeres Wort, 5
Leerheitsproblem, 2, 29
linear beschränkter Automat, 71
Berechnungszustand, 67
Boolesche Operationen, 6
Chomsky-Normalform, 47
Chomskyhierarchie, 39
CYK-Algorithmus, 49
DEA, 11
deterministisch kontextfrei, 63
deterministischer endlicher Automat,
11
dkf, 63
NEA, 7
NEA mit Wortübergängen, 8
Nerode Rechtskongruenz, 18
nichtdeterministische
Turingmaschine, 66
nichtdeterministischer endlicher
Automat, 7
Nichterkennbarkeit, 22
effektiv, 9
endlicher Automat, 7
83
Nichtterminalsymbole, 37
NP, 76
NTM, 66
terminierend, 42
Transitionssystem, 7
Typ0, 39
Typ1, 39
Typ2, 39
Typ3, 39
Papierkorbzustand, 12
PDA, 56
Pfad, 7
PKP, 74
Postsches Korespondenzproblem, 74
Potenzmengenkonstruktion, 13
Präfix, 6
Produktautomat, 27
Produktionen, 37
PSPACE, 76
PSPACE-hart, 76
PSPACE-vollständig, 30
Pumping Lemma (einfache Version),
23
Pumping Lemma (verschärfte
Version), 25
Pumping Lemma für kontextfreie
Sprachen, 52
pushdown automaton, 56
unerreichbar, 14
Wort, 5
Wortproblem, 1, 29
Quotientenautomat, 17
rechtslinear, 39
reduziert, 42
reduzierten Automaten, 17
regulär, 32
regulären Ausdrücke, 31
rekursiv aufzählbar, 67
Satz von Kleene, 32
Satz von Nerode, 20
Satz von Rabin/Scott, 12
Satz von Savitch, 77
Semantik regulärer Ausdrücke, 32
Suffix, 6
Syntax regulärer Ausdrücke, 31
Terminalsysmbole, 37
84
Herunterladen