eserved@d = *@let@token 7mmSS 2006 [1mm] eserved@d = *@let

Werbung
SS 2006
Einführung in die Informatik IV
Ernst W. Mayr
Fakultät für Informatik
TU München
http://www14.in.tum.de/lehre/2006SS/info4/
Sommersemester 2006
Info IV
c
Ernst
W. Mayr
Inhaltsverzeichnis
5. Mai
2. Juni
3. Juli
8. Mai
9. Juni
7. Juli
12. Mai
12. Juni
10. Juli
15. Mai
16. Juni
14. Juli
19. Mai
19. Juni
17. Juli
22. Mai
23. Juni
24. Juli
24. April
26. Mai
30. Juni
28. Juli
28. April
29. Mai
Info IV
c
Ernst
W. Mayr
1/388
Kapitel 0 Organisatorisches
Vorlesungen:
Mo 10:50–12:20, Fr 8:30–10:00 HS I (MI 00.02.001)
Übung:
3SWS Tutorübung: bitte anmelden unter
https://grundstudium.in.tum.de/
Umfang:
4V+3TÜ, 9 ECTS-Punkte
Sprechstunde:
Fr 12:00–13:00 oder nach Vereinbarung
Info IV
c
Ernst
W. Mayr
2/388
Vorkenntnisse:
Einführung in die Informatik I/II/(III)
Diskrete Strukturen I
Weiterführende Vorlesungen:
Effiziente Algorithmen und Datenstrukturen
Automaten, Formale Sprachen, Berechenbarkeit und
Entscheidbarkeit
Komplexitätstheorie
...
Webseite:
http://wwwmayr.in.tum.de/lehre/2006SS/info4/
Info IV
c
Ernst
W. Mayr
3/388
Übungsleitung:
Hanjo Täubig, MI 03.09.039 ([email protected])
Sprechstunde: nach Vereinbarung
Sekretariat:
Frau Schmidt, MI 03.09.052 ([email protected])
Info IV
c
Ernst
W. Mayr
4/388
Übungsaufgaben und Klausur:
Ausgabe jeweils am Freitag in der Vorlesung bzw. auf der
Webseite der Vorlesung
Abgabe eine Woche später vor der Vorlesung
Besprechung in der Tutorübung
Klausur:
Zwischenklausur (50% Gewicht) am 10. Juni 2006, 9–12 Uhr
Endklausur (50% Gewicht) am 22. Juli 2006, 9–12 Uhr
Wiederholungsklausur am 11. Oktober 2006, 9–12 Uhr
bei den Klausuren sind keine Hilfsmittel außer einem
handbeschriebenen DIN-A4-Blatt zugelassen
Zulassungsvoraussetzung (außer für Studierende im
Diplomstudiengang Informatik) sind 40% der erreichbaren
Hausaufgabenpunkte
vorauss. 10 Übungsblätter, das letzte am 7. Juli 2006, jedes 40
Punkte
Info IV
c
Ernst
W. Mayr
5/388
1. Ziel der Vorlesung
Der Zweck dieser Vorlesung ist das Studium fundamentaler
Konzepte in der Theoretischen Informatik. Dies umfasst das
Studium der Grundlagen formaler Sprachen und Automaten, von
Berechnungsmodellen und Fragen der Entscheidbarkeit, die
Diskussion elementarer Algorithmen und Datenstrukturen sowie
einiger grundlegender Konzepte der Komplexitätstheorie.
Info IV
c
Ernst
W. Mayr
1 Ziel der Vorlesung
6/388
Themengebiete werden also sein:
Berechenbarkeitstheorie
Betrachtung und Untersuchung der Grenzen, was Rechner
überhaupt können
Komplexitätstheorie
Studium der Grenzen, was Rechner mit begrenzten Ressourcen
leisten können
Herleitung oberer und unterer Schranken
Automatentheorie
Rechner als endliche Systeme mit endlichem oder unendlichem
Speicher
Grammatiken
Aufbau von Programmiersprachen, Ausdruckskraft, Effizienz
der Syntaxanalyse
Algorithmen
grundlegende (effiziente) Verfahren und Datenstrukturen
Info IV
c
Ernst
W. Mayr
1 Ziel der Vorlesung
7/388
2. Wesentliche Techniken und Konzepte
Formalisierung
Rechner werden durch mathematische Objekte nachgebildet
zu lösende Aufgaben werden mengentheoretisch als Problem
definiert
die Abfolge von Berechnungsschritten wird formalisiert
die quantitative Bestimmung der Komplexität eines Verfahrens
bzw. eines Problems wird festgelegt
Simulation
Verfahren zur Ersetzung eines Programms in einem
Formalismus A durch ein Programm in einem anderen
Formalismus B bei unverändertem Ein-/Ausgabeverhalten
Info IV
c
Ernst
W. Mayr
2 Wesentliche Techniken und Konzepte
8/388
Reduktion
formale Beschreibung für
“Problem A ist nicht (wesentlich) schwerer als Problem B”
Diagonalisierung
Auflistung aller Algorithmen einer bestimmten Klasse
Beweis durch Widerspruch
enger Bezug zu Paradoxa
Info IV
c
Ernst
W. Mayr
2 Wesentliche Techniken und Konzepte
9/388
3. Literatur
Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman:
The design and analysis of computer algorithms.
Addison-Wesley Publishing Company, Reading (MA), 1976
Manfred Broy:
Informatik: eine grundlegende Einführung - Teil 4:
Theoretische Informatik, Algorithmen und Datenstrukturen,
Logikprogrammierung, Objektorientierung.
Springer-Verlag, Berlin-Heidelberg-New York, 1996
Gerhard Goos:
Vorlesungen über Informatik, Bd. 3, Berechenbarkeit, formale
Sprachen, Spezifikationen.
Springer-Verlag, Berlin-Heidelberg-New York, 1997
Info IV
c
Ernst
W. Mayr
10/388
John E. Hopcroft, Jeffrey D. Ullman:
Introduction to automata theory, languages, and computation.
Addison-Wesley Publishing Company, Reading (MA), 1979
Uwe Schöning:
Theoretische Informatik — kurzgefasst.
Spektrum Akademischer Verlag GmbH, Heidelberg-Berlin,
1997
Karin Erk, Lutz Priese:
Theoretische Informatik: Eine umfassende Einführung.
Springer-Verlag, Berlin-Heidelberg-New York, 2000
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest:
Introduction to algorithms.
McGraw-Hill Book Company, New York-St. Louis-San
Francisco-Montreal-Toronto, 1990
Info IV
c
Ernst
W. Mayr
11/388
Thomas Ottmann, Peter Widmayer:
Algorithmen und Datenstrukturen.
B.I., Mannheim-Leipzig-Wien-Zürich, 1993
Volker Heun:
Grundlegende Algorithmen.
Vieweg, 2000
Ingo Wegener:
Theoretische Informatik.
B.G. Teubner, Stuttgart, 1993
Info IV
c
Ernst
W. Mayr
3 Literatur
12/388
Kapitel I Formale Sprachen und Automaten
1. Beispiele
Sei Σ ein (endliches) Alphabet. Dann
Definition 1
1
ist Σ∗ das Monoid über Σ, d.h. die Menge aller endlichen
Wörter über Σ;
2
ist Σ+ die Menge aller nichtleeren endlichen Wörter über Σ∗ ;
3
bezeichnet |w| für w ∈ Σ∗ die Länge von w;
4
ist Σn für n ∈ N0 die Menge aller Wörter der Länge n in Σ∗ ;
5
eine Teilmenge L ⊆ Σ∗ eine formale Sprache.
Info IV
c
Ernst
W. Mayr
1 Beispiele
13/388
Beispiel 2
Wir betrachten folgende Grammatik:
hSatzi → hSubjektihPrädikatihObjekti
hSubjekti → hArtikelihAttributihSubstantivi
hArtikeli → hArtikeli → der|die|das|ein| . . .
hAttributi → |hAdjektivi|hAdjektivihAttributi
hAdjektivi → gross|klein|schön| . . .
Die vorletzte Ersetzungsregel ist rekursiv, die durch diese
Grammatik definierte Sprache deshalb unendlich.
Info IV
c
Ernst
W. Mayr
1 Beispiele
14/388
Beispiel 3
L1 = {aa, aaaa, aaaaaa, . . .} = {(aa)n , n ∈ N}
(Σ1 = {a})
L2 = {ab, abab, ababab, . . .} = {(ab)n , n ∈ N}
(Σ2 = {a, b})
L3 = {ab, aabb, aaabbb, . . .} = {an bn , n ∈ N}
(Σ3 = {a, b})
L4 = {a, b, aa, ab, bb, aaa, aab, abb, bbb . . .}
= {am bn , m, n ∈ N0 , m + n > 0}
(Σ4 = {a, b})
Info IV
c
Ernst
W. Mayr
1 Beispiele
15/388
2. Die Chomsky-Hierarchie
Diese Sprachenhierarchie ist nach Noam Chomsky [MIT, 1976]
benannt.
2.1 Phrasenstrukturgrammatik, Chomsky-Grammatik
Grammatiken bestehen aus
1
einem Terminalalphabet Σ (manchmal auch T ), |Σ| < ∞
2
einem endlichen Vorrat von Nichtterminalzeichen (Variablen)
V, V ∩Σ=∅
3
einem Startsymbol (Axiom) S ∈ V
4
einer endliche Menge P von Produktionen (Ableitungsregeln)
der Form l → r, mit l ∈ (V ∪ Σ)+ , r ∈ (V ∪ Σ)∗
Eine Phrasenstrukturgrammatik (Grammatik) ist ein Quadrupel
G = (V, Σ, P, S).
Info IV
c
Ernst
W. Mayr
2.1 Phrasenstrukturgrammatik, Chomsky-Grammatik
16/388
Sei G = (V, Σ, P, S) eine Phrasenstrukturgrammatik.
Definition 4
Wir schreiben
1
2
3
z →G z 0 gdw
(∃x, y ∈ (V ∪ Σ)∗ , l → r ∈ P )[z = xly, z 0 = xry]
z →∗G z 0 gdw z = z 0 oder
z →G z (1) →G z (2) →G . . . →G z (k) = z 0 . Eine solche Folge
von Ableitungsschritten heißt eine Ableitung für z 0 von z in G
(der Länge k).
Die von G erzeugte Sprache ist
L(G) := {z ∈ Σ∗ ; S →∗G z}
Zur Vereinfachung der Notation schreiben wir gewöhnlich → und
→∗ statt →G und →∗G
Info IV
c
Ernst
W. Mayr
2.1 Phrasenstrukturgrammatik, Chomsky-Grammatik
17/388
Vereinbarung:
Wir bezeichnen Nichtterminale mit großen und Terminale mit
kleinen Buchstaben!
Beispiel 5
Wir erinnern uns:
L2 = {ab, abab, ababab, . . .} = {(ab)n , n ∈ N}
(Σ2 = {a, b})
Grammatik für L2 mit folgenden Produktionen:
S → ab, S → abS
Info IV
c
Ernst
W. Mayr
2.1 Phrasenstrukturgrammatik, Chomsky-Grammatik
18/388
Beispiel 5 (Forts.)
L4 = {a, b, aa, ab, bb, aaa, aab, abb, bbb . . .}
= {am bn , m, n ∈ N0 , m + n > 0}
(Σ4 = {a, b})
Grammatik für L4 mit folgenden Produktionen:
S → A, S → B, S → AB,
A → a, A → aA,
B → b, B → bB
Info IV
c
Ernst
W. Mayr
2.1 Phrasenstrukturgrammatik, Chomsky-Grammatik
19/388
2.2 Die Chomsky-Hierarchie
Sei G = (V, Σ, P, S) eine Phrasenstrukturgrammatik.
1
Jede Phrasenstrukturgrammatik (Chomsky-Grammatik) ist
(zunächst) automatisch vom Typ 0.
2
Eine Chomsky-Grammatik heißt (längen-)monoton, falls für
alle Regeln
α → β ∈ P mit α 6= S
gilt:
|α| ≤ |β| ,
und, falls S → ∈ P , dann das Axiom S auf keiner rechten
Seite vorkommt.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
20/388
3
Eine Chomsky-Grammatik ist vom Typ 1 (auch:
kontextsensitiv), falls sie monoton ist und für alle Regeln
α → β in P mit α 6= S gilt:
α = α0 Aα00 und β = α0 β 0 α00
für geeignete A ∈ V , α0 , α00 ∈ (V ∪ Σ)∗ und β 0 ∈ (V ∪ Σ)+ .
4
Eine Chomsky-Grammatik ist vom Typ 2 (auch: kontextfrei),
falls sie monoton ist und für alle Regeln α → β ∈ P gilt:
α∈V .
Bemerkung: Manchmal wird “kontextfrei” auch ohne die
Monotonie-Bedingung definiert; streng monoton schließt dann
die Monotonie mit ein.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
21/388
5
Eine Chomsky-Grammatik ist vom Typ 3 (auch: regulär,
rechtslinear), falls sie monoton ist und für alle Regeln α → β
in P mit β 6= gilt:
α ∈ V und β ∈ Σ+ ∪ Σ∗ V .
Auch hier gilt die entsprechende Bemerkung zur
Monotonie-Bedingung.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
22/388
Beispiel 6
Die folgende Grammatik ist regulär:
S → , S → A,
A → aa, A → aaA
Eine Produktion
A → Bcde
heißt linkslinear.
Eine Produktion
A → abcDef
heißt linear.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
23/388
Definition 7
Eine Sprache L ⊆ Σ∗ heißt vom Typ k, k ∈ {0, 1, 2, 3}, falls es
eine Chomsky-k-Grammatik G mit L(G) = L gibt.
In der Chomsky-Hierarchie bilden also die Typ-3- oder regulären
Sprachen die kleinste, unterste Stufe, darüber kommen die
kontextfreien, dann die kontextsensitiven Sprachen. Oberhalb der
Typ-1-Sprachen kommen die Typ-0-Sprachen, die auch rekursiv
aufzählbar oder semientscheidbar genannt werden. Darüber (und
nicht mehr Teil der Chomsky-Hierarchie) findet sich die Klasse aller
formalen Sprachen.
In Typ-3-Grammatiken müssen entweder alle Produktionen
rechtslinear oder alle linkslinear sein.
Überlegen Sie sich eine lineare Grammatik, deren Sprache nicht
regulär ist! (Beweismethode später!)
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
24/388
alle formalen Sprachen
r.a.
kontextsensitiv
kontextfrei
regulär
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
25/388
Lemma 8
Sei G = (V, Σ, P, S) eine Chomsky-Grammatik, so dass alle
Produktionen α → β die Bedingung α ∈ V erfüllen. Dann ist L(G)
kontextfrei.
Beweis:
Definition 9
Ein A ∈ V mit A →∗ heißt nullierbar.
Bestimme alle nullierbaren A ∈ V :
N := {A ∈ V ; (A → ) ∈ P }
N 0 := ∅
while N 6= N 0 do
N 0 := N
N := N 0 ∪ {A ∈ V ;
(∃(A → β) ∈ P )[β ∈ N 0∗ ]}
od
Wie man leicht durch Induktion sieht, enthält N zum Schluss
genau alle nullierbaren A ∈ V .
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
26/388
Sei nun G eine Grammatik, so dass alle linken Seiten ∈ V , aber die
Monotoniebedingung nicht unbedingt erfüllt ist.
Modifiziere G zu G0 mit Regelmenge P 0 wie folgt:
1
2
für jedes (A → x1 x2 · · · xn ) ∈ P , n ≥ 1, füge zu P 0 alle
Regeln A → y1 y2 · · · yn hinzu, die dadurch entstehen, dass für
nicht-nullierbare xi yi := xi und für nullierbare xi die beiden
Möglichkeiten yi := xi und yi := eingesetzt werden, ohne
dass die ganze rechte Seite = wird.
falls S nullierbar ist, sei T ein neues Nichtterminal; füge zu P 0
die Regeln S → und S → T hinzu, ersetze S in allen rechten
Seiten durch T und füge für jede Regel (S → x) ∈ P , |x| > 0,
die Regel T → x zu P 0 hinzu.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
27/388
Lemma 10
G0 = (V ∪ T, Σ, P 0 , S) ist kontextfrei, und es gilt
L(G0 ) = L(G) .
Beweis:
Klar!
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
28/388
Auch für reguläre Grammatiken gilt ein entsprechender Satz über
die “Entfernbarkeit” nullierbarer Nichtterminale:
Lemma 11
Sei G = (V, Σ, P, S) eine Chomsky-Grammatik, so dass für alle
Regeln α → β ∈ P gilt:
α ∈ V und β ∈ Σ∗ ∪ Σ∗ V .
Dann ist L(G) regulär.
Beweis:
Übungsaufgabe!
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
29/388
Beispiel 12
Typ 3: L = {an ; n ∈ N}, Grammatik: S
S
→
→
a,
aS
Typ 2: L = {an bn ; n ∈ N0 }, Grammatik: S →
S →
T →
T →
Wir benötigen beim Scannen einen Zähler.
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
,
T,
ab,
aT b
30/388
Beispiel 12 (Forts.)
Typ 1: L = {an bn cn ; n ∈ N}, Grammatik:
S → aSXY ,
S → abY ,
Y X → XY ,
bX → bb,
bY → bc,
cY → cc
Wir benötigen beim Scannen mindestens zwei Zähler.
Bemerkung: Diese Grammatik entspricht nicht unserer
Definition von Typ 1. Wir zeigen als Hausaufgabe eine
geeignete erweiterte Definition!
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
31/388
Die Backus-Naur-Form (BNF) ist ein Formalismus zur kompakten
Darstellung von Typ-2-Grammatiken.
Statt
A → β1
A → β2
..
.
A → βn
schreibt man
A → β1 |β2 | . . . |βn .
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
32/388
Die Backus-Naur-Form (BNF) ist ein Formalismus zur kompakten
Darstellung von Typ-2-Grammatiken.
Statt
A → αγ
A → αβγ
schreibt man
A → α[β]γ .
(D.h., das Wort β kann, muss aber nicht, zwischen α und γ
eingefügt werden.)
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
33/388
Die Backus-Naur-Form (BNF) ist ein Formalismus zur kompakten
Darstellung von Typ-2-Grammatiken.
Statt
A → αγ
A → αBγ
B → β
B → βB
schreibt man
A → α{β}γ .
(D.h., das Wort β kann beliebig oft (auch Null mal) zwischen
α und γ eingefügt werden.)
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
34/388
Beispiel 13
hSatzi → hSubjektihPrädikatihObjekti
hSubjekti → hArtikelihAttributihSubstantivi
hPrädikati → ist|hat| . . .
hArtikeli → |der|die|das|ein| . . .
hAttributi → {hAdjektivi}
hAdjektivi → gross|klein|schön| . . .
Info IV
c
Ernst
W. Mayr
2.2 Die Chomsky-Hierarchie
35/388
2.3 Das Wortproblem
Beispiel 14 (Arithmetische Ausdrücke)
<exp>
<exp>
<term>
<term>
<term>
→
→
→
→
→
<term>
<exp> + <term>
(<exp>)
<term> × <term>
a | b | ... | z
Aufgabe eines Parsers ist nun, zu prüfen, ob eine gegebene
Zeichenreihe einen gültigen arithmetischen Ausdruck darstellt und,
falls ja, ihn in seine Bestandteile zu zerlegen.
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
36/388
Sei G = (V, Σ, P, S) eine Grammatik.
Definition 15
1
Wortproblem: Gegeben ein Wort w ∈ Σ∗ , stelle fest, ob
w ∈ L(G) ?
2
Ableitungsproblem: Gegeben ein Wort w ∈ L(G), gib eine
Ableitung S →∗G w an, d.h., eine Folge
S = w(0) →G w(1) →G · · · →G w(n) = w
3
mit w(i) ∈ (Σ ∪ V )∗ für i = 1, . . . , n.
uniformes Wortproblem: Wortproblem, bei dem jede
Probleminstanz sowohl die Grammatik G wie auch die zu
testende Zeichenreihe w enthält. Ist G dagegen global
festgelegt, spricht man von einem nicht-uniformen Wortproblem.
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
37/388
Bemerkung:
Das uniforme wie auch das nicht-uniforme Wortproblem ist für
Typ-0-Sprachen (also die rekursiv-aufzählbare Sprachen) nicht
entscheidbar. Wir werden später sehen, dass es zum Halteproblem
für Turingmaschinen äquivalent ist.
Es gilt jedoch
Satz 16
Für kontextsensitive Grammatiken ist das Wortproblem
entscheidbar.
Genauer: Es gibt einen Algorithmus, der bei Eingabe einer
kontextsensitiven Grammatik G = (V, Σ, P, S) und eines Wortes w
in endlicher Zeit entscheidet, ob w ∈ L(G).
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
38/388
Beweisidee:
Angenommen w ∈ L(G). Dann gibt es eine Ableitung
S = w(0) →G w(1) →G · · · →G w(n) = w
mit w(i) ∈ (Σ ∪ V )∗ für i = 1, . . . , n.
Da aber G kontextsensitiv ist, gilt (falls w 6= )
|w(0) | ≤ |w(1) | ≤ · · · ≤ |w(n) | ,
d.h., es genügt, alle Wörter in (Σ ∪ V )∗ der Länge ≤ |w| zu
erzeugen.
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
39/388
Beweis:
Sei o.B.d.A. w 6= und sei
n
Tm
:= {w0 ∈ (Σ ∪ V )∗ ; |w0 | ≤ n und
w0 lässt sich aus S in ≤ m Schritten ableiten}
Diese Mengen kann man für alle n und m induktiv wie folgt
berechnen:
T0n := {S}
n
n
Tm+1
:= Tm
∪ {w0 ∈ (Σ ∪ V )∗ ; |w0 | ≤ n und
n
w00 → w0 für ein w00 ∈ Tm
}
Pn
n| ≤
i
Beachte: Für alle m gilt: |Tm
i=1 |Σ ∪ V | .
Es muss daher immer ein m0 geben mit
n
n
Tm
= Tm
= . . . =: Tn .
0
0 +1
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
40/388
Beweis (Forts.):
Algorithmus:
n := |w|
T := {S}
T 0 := ∅
while T 6= T 0 do
T 0 := T
T := T 0 ∪ {w0 ∈ (V ∪ Σ)+ ; |w0 | ≤ n, (∃w00 ∈ T 0 )[w00 → w0 ]}
od
if w ∈ T return “ja” else return “nein” fi
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
41/388
Beispiel 17
Gegeben sei die Typ-2-Grammatik mit den Produktionen
S → ab und S → aSb
sowie das Wort w = abab.
T04 = {S}
T14 = {S, ab, aSb}
T24 = {S, ab, aSb, aabb}
T34
aaSbb ist zu lang!
= {S, ab, aSb, aabb}
Also lässt sich das Wort w mit der gegebenen Grammatik nicht
erzeugen!
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
42/388
Bemerkung:
Der angegebene Algorithmus ist nicht sehr effizient! Für
kontextfreie Grammatiken gibt es wesentlich effizientere Verfahren,
die wir später kennenlernen werden!
Info IV
c
Ernst
W. Mayr
2.3 Das Wortproblem
43/388
2.4 Ableitungsgraph und Ableitungsbaum
Grammatik:
Beispiel:
S
S → AB
A → aA
A → a
A
a
B
A
b
B
B → bB
B → b
a A
b B
aaa → c
a
b
cb → a
c
a
Die Terminale ohne Kante nach unten entsprechen, von links nach
rechts gelesen, dem durch den Ableitungsgraphen dargestellten
Wort.
Info IV
c
Ernst
W. Mayr
44/388
Grammatik:
Beispiel:
S
S → AB
A → aA
A → a
A
B
a
A
b
B
B → bB
B → b
a A
b B
aaa → c
a
b
cb → a
c
a
Dem Ableitungsgraph entspricht z.B. die Ableitung
S → AB → aAB → aAbB → aaAbB → aaAbbB →
→ aaabbB → aaabbb → cbbb → abb
Info IV
c
Ernst
W. Mayr
2.3 Ableitungsgraph und Ableitungsbaum
44/388
Beobachtung:
Bei kontextfreien Sprachen sind die Ableitungsgraphen immer
Bäume.
Beispiel 18
Grammatik:
AbleitungsbaumAbleitungsbäume:
S
S → aB
S → Ac
A
A → ab
B → bc
S
a
B
b
c
a
b
c
Für das Wort abc gibt es zwei verschiedene Ableitungsbäume.
Info IV
c
Ernst
W. Mayr
2.3 Ableitungsgraph und Ableitungsbaum
45/388
Definition 19
Eine Ableitung
S = w(0) → w(1) → · · · → w(n) = w
eines Wortes w heißt Linksableitung, wenn für jede
Anwendung einer Produktion α → β auf w(i) = xαz gilt, dass
sich keine Regel der Grammatik auf ein echtes Präfix von xα
anwenden lässt.
Eine Grammatik heißt eindeutig, wenn es für jedes Wort
w ∈ L(G) genau eine Linksableitung gibt. Nicht eindeutige
Grammatiken nennt man auch mehrdeutig.
Eine Sprache L heißt eindeutig, wenn es für L eine eindeutige
Grammatik gibt. Ansonsten heißt L mehrdeutig.
Bemerkung: Für eindeutige kontextfreie Grammatiken ist das
Wortproblem sehr einfach lösbar.
Info IV
c
Ernst
W. Mayr
2.3 Ableitungsgraph und Ableitungsbaum
46/388
Beispiel 20
Grammatik:
Ableitungsbäume:
S
S → aB
S → Ac
A
A → ab
B → bc
S
a
B
b
c
a
b
c
Beide Ableitungsbäume für das Wort abc entsprechen
Linksableitungen.
Info IV
c
Ernst
W. Mayr
2.3 Ableitungsgraph und Ableitungsbaum
47/388
Beispiel 21
Grammatik:
Ableitung:
S
S → AB
A → aA
A → a
B → bB
A
a
B
A
b
B
B → b
a A
b B
aaa → c
a
b
cb → a
Eine Linksableitung ist
c
a
S → AB → aAB → aaAB → aaaB → cB →
→ cbB → aB → abB → abb
Info IV
c
Ernst
W. Mayr
48/388
Beispiel 21
Grammatik:
Ableitung:
S
S → AB
A → aA
A → a
B → bB
A
a
B
A
b
B
B → b
a A
b B
aaa → c
a
b
cb → a
c
Eine andere Linksableitung ist
a
S → AB → aB → abB → abb .
Info IV
c
Ernst
W. Mayr
48/388
Beispiel 21
Grammatik:
Ableitung:
S
S → AB
A → aA
A
A → a
B
a
B → bB
A
b
B
B → b
a A
b B
aaa → c
a
b
cb → a
c
Die Grammatik ist also mehrdeutig.
Info IV
c
Ernst
W. Mayr
2.3 Ableitungsgraph und Ableitungsbaum
a
48/388
3. Reguläre Sprachen
3.1 Deterministische endliche Automaten
Definition 22
Ein deterministischer endlicher Automat (englisch: deterministic
finite automaton, kurz DFA) wird durch ein 5-Tupel
M = (Q, Σ, δ, q0 , F ) beschrieben, das folgende Bedingungen
erfüllt:
1
Q ist eine endliche Menge von Zuständen.
2
Σ ist eine endliche Menge, das Eingabealphabet, wobei
Q ∩ Σ = ∅.
3
q0 ∈ Q ist der Startzustand.
4
F ⊆ Q ist die Menge der Endzustände.
5
δ : Q × Σ → Q heißt Übergangsfunktion.
Info IV
c
Ernst
W. Mayr
3.1 Deterministische endliche Automaten
49/388
Die von M akzeptierte Sprache ist
L(M ) := {w ∈ Σ∗ ; δ̂(q0 , w) ∈ F } ,
wobei δ̂ : Q × Σ∗ → Q induktiv definiert ist durch
δ̂(q, ) = q
δ̂(q, ax) = δ̂(δ(q, a), x)
für alle q ∈ Q
für alle q ∈ Q, a ∈ Σ
und x ∈ Σ∗
Bemerkung: Endliche Automaten können durch (gerichtete und
markierte) Zustandsgraphen veranschaulicht werden:
Knoten =
b Zuständen
Kanten =
b Übergängen
genauer: die mit a ∈ Σ markierte Kante (u, v) entspricht
δ(u, a) = v
Der Anfangszustand wird durch einen Pfeil, Endzustände werden
durch doppelte Kreise gekennzeichnet.
Info IV
c
Ernst
W. Mayr
3.1 Deterministische endliche Automaten
50/388
Beispiel 23
a
Sei M = (Q, Σ, δ, q0 , F ),
wobei
q0
q1
b
Q = {q0 , q1 , q2 , q3 }
Σ = {a, b}
F
= {q3 }
δ(q0 , a) = q1
b
a
b
a
δ(q0 , b) = q3
δ(q1 , a) = q2
δ(q1 , b) = q0
δ(q2 , a) = q3
b
q3
a
q2
δ(q2 , b) = q1
δ(q3 , a) = q0
δ(q3 , b) = q2
Info IV
c
Ernst
W. Mayr
3.1 Deterministische endliche Automaten
51/388
Satz 24
Ist M = (Q, Σ, δ, q0 , F ) ein deterministischer endlicher Automat,
so ist die durch
P
:= {q → aq 0 ; δ(q, a) = q 0 } ∪ {q → a; δ(q, a) ∈ F }
gegebene Grammatik G = (Q, Σ, P, q0 ) regulär.
Beweis:
Offensichtlich!
Info IV
c
Ernst
W. Mayr
3.1 Deterministische endliche Automaten
52/388
Beispiel 25
a
q0
b
q1
b
a
b
a
Produktionen:
q0 → aq1
q1 → aq2
q2 → aq3
q3 → aq0
q2 → a
q0
q0
q1
q2
q3
q0
→
→
→
→
→
bq3
bq0
bq1
bq2
b
→ aq1 → abq0
→ abaq1 → abaaq2
→ abaaa ∈ L(G)
b
q3
Info IV
c
Ernst
W. Mayr
a
q2
3.1 Deterministische endliche Automaten
53/388
Satz 26
Sei M = (Q, Σ, δ, q0 , F ) ein endlicher deterministischer Automat.
Dann gilt für die soeben konstruierte reguläre Grammatik G
L(G) = L(M ) .
Beweis:
Sei w = a1 a2 · · · an ∈ Σ∗ . Dann gilt gemäß Konstruktion:
⇔
⇔
⇔
w ∈ L(M )
∃q0 , q1 , . . . , qn ∈ Q: q0 Startzustand von M ,
∀i = 0, . . . , n − 1: δ(qi , ai+1 ) = qi+1 , qn ∈ F
∃q0 , q1 , . . . , qn−1 ∈ V : q0 Startsymbol von G
q0 → a1 q1 → a1 a2 q2 → · · · → a1 · · · an−1 qn−1 →
→ a1 · · · an−1 an
w ∈ L(G)
Info IV
c
Ernst
W. Mayr
3.1 Deterministische endliche Automaten
54/388
3.2 Nichtdeterministische endliche Automaten
Definition 27
Ein nichtdeterministischer endlicher Automat (englisch:
nondeterministic finite automaton, kurz NFA) wird durch ein
5-Tupel N = (Q, Σ, δ, S, F ) beschrieben, das folgende
Bedingungen erfüllt:
1
Q ist eine endliche Menge von Zuständen.
2
Σ ist eine endliche Menge, das Eingabealphabet, wobei
Q ∩ Σ = ∅.
3
S ⊆ Q ist die Menge der Startzustände.
4
F ⊆ Q ist die Menge der Endzustände.
5
δ : Q × Σ → P(Q) \ {∅} heißt Übergangsrelation.
Info IV
c
Ernst
W. Mayr
3.2 Nichtdeterministische endliche Automaten
55/388
Die von N akzeptierte Sprache ist
L(N ) := {w ∈ Σ∗ ; δ̂(S, w) ∩ F 6= ∅} ,
wobei δ̂ : P(Q) × Σ∗ → P(Q) wieder induktiv definiert ist durch
δ̂(Q0 , ) = Q0
∀Q0 ⊆ Q, Q0 =
6 ∅
[
0
δ̂(Q , ax) = δ̂(
δ(q, a), x) ∀∅ 6= Q0 ⊆ Q, ∀a ∈ Σ, ∀x ∈ Σ∗
q∈Q0
Info IV
c
Ernst
W. Mayr
3.2 Nichtdeterministische endliche Automaten
56/388
Satz 28
Ist G = (V, Σ, P, S) eine reguläre (rechtslineare) Grammatik, so ist
N = (V ∪ {X}, Σ, δ, {S}, F ), mit
(
{S, X}, falls S → ∈ P
F :=
{X},
sonst
und, für alle A, B ∈ V , a ∈ Σ,
B ∈ δ(A, a)
⇐⇒
A → aB
X ∈ δ(A, a)
⇐⇒
A→a
und
ein nichtdeterministischer endlicher Automat.
Info IV
c
Ernst
W. Mayr
3.2 Nichtdeterministische endliche Automaten
57/388
Beispiel 29
Produktionen:
a
S
A
a
S → aA
S → bB
A → aA
A → a
b
a
B → bB
B → b
b
B
Info IV
c
Ernst
W. Mayr
b
3.2 Nichtdeterministische endliche Automaten
X
58/388
3.3 Äquivalenz von NFA und DFA
Satz 30
Für jede von einem nichtdeterministischen endlichen Automaten
akzeptierte Sprache L gibt es auch einen deterministischen
endlichen Automaten M mit
L = L(M ) .
Info IV
c
Ernst
W. Mayr
3.3 Äquivalenz von NFA und DFA
59/388
Beweis:
Sei N = (Q, Σ, δ, S, F ) ein NFA.
Definiere
1
2
3
M 0 := (Q0 , Σ, δ 0 , q00 , F 0 )
Q0 := P(Q) \ {∅}
(P(Q) Potenzmenge von Q)
S
0
00
δ (Q , a) := q0 ∈Q00 δ(q 0 , a) für alle Q00 ∈ Q0 , a ∈ Σ
4
q00 := S
5
F 0 := {Q00 ⊆ Q; Q00 ∩ F 6= ∅}
Also
NFA N :
DFA M 0 :
Info IV
c
Ernst
W. Mayr
Q
2Q
Σ
Σ
δ
δ0
S
S
3.3 Äquivalenz von NFA und DFA
F
F0
60/388
Beweis (Forts.):
Es gilt:
w ∈ L(N ) ⇔ δ̂(S, w) ∩ F 6= ∅
⇔ δb0 (q00 , w) ∈ F 0
⇔ w ∈ L(M 0 ).
Der zugehörige Algorithmus zur Überführung eines NFA in einen
DFA heißt Teilmengenkonstruktion, Potenzmengenkonstruktion
oder Myhill-Konstruktion.
Info IV
c
Ernst
W. Mayr
3.3 Äquivalenz von NFA und DFA
61/388
3.4 NFA’s mit -Übergängen
Definition 31
Ein (nichtdeterministischer) endlicher Automat A mit
-Übergängen ist ein 5-Tupel analog zur Definition des NFA mit
δ : Q × (Σ ] {}) → P(Q) \ {∅} .
Ein -Übergang wird ausgeführt, ohne dass ein Eingabezeichen
gelesen wird. Wir setzen o.B.d.A. voraus, dass A nur einen
Anfangszustand hat.
0
q0
Info IV
c
Ernst
W. Mayr
1
q1
3.4 NFA’s mit -Übergängen
0
q2
62/388
Definiere für alle a ∈ Σ
δ̄(q, a) := δ̂(q, ∗ a∗ ) .
Satz 32
w ∈ L(A) ⇔ δ̄ˆ(S, w) ∩ F 6= ∅ .
Beweis:
Hausaufgabe!
Info IV
c
Ernst
W. Mayr
3.4 NFA’s mit -Übergängen
63/388
3.5 Entfernen von -Übergängen
Satz 33
Zu jedem nichtdeterministischen endlichen Automaten A mit
-Übergängen gibt es einen nichtdeterministischen endlichen
Automaten A0 ohne -Übergänge, so dass gilt:
L(A) = L(A0 )
Beweis:
Ersetze δ durch δ̄ und F durch F 0 mit
(
F
∈
/ L(A)
0
F =
F ∪ {q0 } ∈ L(A)
Info IV
c
Ernst
W. Mayr
3.5 Entfernen von -Übergängen
64/388
Beispiel 34
0
q0
1
0
q0
q1
0
1
0, 1
q1
q2
0
0, 1
q2
0, 1
Info IV
c
Ernst
W. Mayr
3.5 Entfernen von -Übergängen
65/388
3.6 Endliche Automaten und reguläre Sprachen
Zusammenfassend ergibt sich:
Satz 35
Die Familie der regulären Sprachen (Chomsky-3-Sprachen) ist
identisch mit der Familie der Sprachen, die
von DFA’s akzeptiert/erkannt werden,
von NFA’s akzeptiert werden,
von NFA’s mit -Übergängen akzeptiert werden.
Beweis:
Wie soeben gezeigt.
Info IV
c
Ernst
W. Mayr
3.6 Endliche Automaten und reguläre Sprachen
66/388
3.7 Reguläre Ausdrücke
Reguläre Ausdrücke sollen eine kompakte Notation für spezielle
Sprachen sein, wobei endliche Ausdrücke hier auch unendliche
Mengen beschreiben können.
Definition 36
Reguläre Ausdrücke sind induktiv definiert durch:
1
∅ ist ein regulärer Ausdruck.
2
ist ein regulärer Ausdruck.
3
Für jedes a ∈ Σ ist a ist ein regulärer Ausdruck.
4
Wenn α und β reguläre Ausdrücke sind, dann sind auch (α),
αβ, (α|β) (hierfür wird oft auch (α + β) geschrieben) und
(α)∗ reguläre Ausdrücke.
5
Nichts sonst ist ein regulärer Ausdruck.
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
67/388
Zu einem regulären Ausdruck γ ist die zugehörige Sprache L(γ)
induktiv definiert durch:
Definition 37
1
Falls γ = ∅, so gilt L(γ) = ∅.
2
Falls γ = , so gilt L(γ) = {}.
3
Falls γ = a, so gilt L(γ) = {a}.
4
Falls γ = (α), so gilt L(γ) = L(α).
5
Falls γ = αβ, so gilt
L(γ) = L(α)L(β) = {uv; u ∈ L(α), v ∈ L(β)} .
6
Falls γ = (α | β), so gilt
L(γ) = L(α) ∪ L(β) = {u; u ∈ L(α) ∨ u ∈ L(β)} .
7
Falls γ = (α)∗ , so gilt
L(γ) = L(α)∗ = {u1 u2 . . . un ; n ∈ N0 , u1 , . . . , un ∈ L(α)} .
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
68/388
Beispiel 38
Sei das zugrunde liegende Alphabet Σ = {0, 1}.
alle Wörter, die gleich 0 sind oder mit 00 enden:
(0 | (0 | 1)∗ 00)
alle Wörter, die 0110 enthalten:
(0|1)∗ 0110(0|1)∗
alle Wörter, die eine gerade Anzahl von 1’en enthalten:
(0∗ 10∗ 1)∗ 0∗
alle Wörter, die die Binärdarstellung einer durch 3 teilbaren
Zahl darstellen, also
0, 11, 110, 1001, 1100, 1111, 10010, . . .
Hausaufgabe!
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
69/388
Satz 39
Eine Sprache L ⊆ Σ∗ ist genau dann durch einen regulären
Ausdruck darstellbar, wenn sie regulär ist.
Beweis:
“=⇒”:
Sei also L = L(γ).
Wir zeigen: ∃ NFA N mit L = L(N ) mit Hilfe struktureller
Induktion.
Induktionsanfang: Falls γ = ∅, γ = , oder γ = a ∈ Σ, so folgt
die Behauptung unmittelbar.
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
70/388
Induktionsschritt:
γ = αβ:
nach Induktionsannahme ∃ NFA Nα und Nβ mit
L(Nα ) = L(α) und L(Nβ ) = L(β) .
q0
qα,f
qα,0
Nα
Info IV
c
Ernst
W. Mayr
qβ,0
qβ,f
qf
Nβ
3.7 Reguläre Ausdrücke
71/388
Induktionsschritt (Forts.):
γ = (α | β):
nach Induktionsannahme ∃ NFA Nα und Nβ mit
L(Nα ) = L(α) und L(Nβ ) = L(β) .
qβ,0
qβ,f
Nβ
q0
qf
qα,f
qα,0
Nα
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
72/388
Induktionsschritt (Forts.):
γ = (α)∗ :
nach Induktionsannahme ∃ NFA Nα mit
L(Nα ) = L(α) .
q0
qα,f
qα,0
qf
Nα
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
73/388
“⇐=”:
Sei M = (Q, Σ, δ, q0 , F ) ein deterministischer endlicher Automat.
Wir zeigen: es gibt einen regulären Ausdruck γ mit L(M ) = L(γ).
Sei Q = {q0 , . . . , qn }. Wir setzen
k
Rij
:={w ∈ Σ∗ ; die Eingabe w überführt den im Zustand
qi gestarteten Automaten in den Zustand qj , wobei alle
zwischendurch durchlaufenen Zustände einen Index
kleiner gleich k haben}
Behauptung: Für alle i, j ∈ {0, . . . , n} und alle
k ∈ {−1, 0, 1, . . . , n} gilt:
k mit L(αk ) = Rk .
Es gibt einen regulären Ausdruck αij
ij
ij
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
74/388
Bew.:
Induktion über k:
k = −1: Hier gilt
(
{a ∈ Σ; δ(qi , a) = qj },
falls i 6= j
−1
Rij
:=
{a ∈ Σ; δ(qi , a) = qj } ∪ {}, falls i = j
−1
Rij
ist also endlich und lässt sich daher durch einen regulären
−1
Ausdruck αij
beschreiben.
Info IV
c
Ernst
W. Mayr
75/388
Bew.:
Induktion über k:
k ⇒ k + 1: Hier gilt
k+1
k
k
∗ k
Rij
= Rij
∪ Rikk+1 (Rk+1
k+1 ) Rk+1 j
k+1
k
k
∗ k
αij
= (αij
| αikk+1 (αk+1
k+1 ) αk+1 j )
Somit gilt: L(M ) = L((α0n f1 | α0n f2 | · · · | α0n fr )), wobei f1 , . . . , fr
die Indizes der Endzustände seien.
(Satz 39)
Info IV
c
Ernst
W. Mayr
3.7 Reguläre Ausdrücke
75/388
3.8 Abschlusseigenschaften regulärer Sprachen
Satz 40
Seien R1 , R2 ⊆ Σ∗ reguläre Sprachen. Dann sind auch
R1 R2 , R1 ∪ R2 , R1∗ , Σ∗ \ R1 (=: R̄1 ), R1 ∩ R2
reguläre Sprachen.
Beweis:
R1 R2 , R1 ∪ R2 , R1∗ klar.
Σ∗ \ R1
:
R1 ∩ R2
:
Info IV
c
Ernst
W. Mayr
Sei R1 = L(A), A DFA, A = (Q, Σ, δ, q0 , F ),
δ vollständig.
Betrachte A0 = (Q, Σ, δ, q0 , Q \ F ).
Dann ist L(A0 ) = Σ∗ \ L(A)
De Morgan
3.8 Abschlusseigenschaften regulärer Sprachen
76/388
Definition 41
Substitution (mit regulären Mengen) ist eine Abbildung, die jedem
a ∈ Σ eine reguläre Menge h(a) zuordnet. Diese Abbildung wird
kanonisch auf Σ∗ erweitert.
Ein Homomorphismus ist eine Substitution mit ∀a ∈ Σ : |h(a)| = 1
Satz 42
Reguläre Sprachen sind unter (regulärer) Substitution,
Homomorphismus und inversem Homomorphismus abgeschlossen.
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
77/388
Beweis:
Wir zeigen (nur) die Behauptung für den inversen
Homomorphismus.
Sei h : ∆ → Σ∗ ein Homomorphismus, und sei R ⊆ Σ∗ regulär.
Zu zeigen: h−1 (R) ⊆ ∆∗ ist regulär.
Sei A = (Q, Σ, δ, q0 , F ), L(A) = R.
Betrachte A0 = (Q, ∆, δ 0 , q0 , F ), mit
δ 0 (q, a) = δ(q, h(a)) ∀q ∈ Q, a ∈ ∆ ,
wobei wir nunmehr der Einfachheit halber statt δ̂ nur δ schreiben.
Also gilt
δ 0 (q0 , w) = δ(q0 , h(w)) ∈ F ⇔ h(w) ∈ R ⇔ w ∈ h−1 (R)
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
78/388
Definition 43
Seien L1 , L2 ⊆ Σ∗ . Dann ist der Rechtsquotient
L1 /L2 := {x ∈ Σ∗ ; (∃y ∈ L2 )[xy ∈ L1 ]} .
Satz 44
Seien R, L ⊆ Σ∗ , R regulär. Dann ist R/L regulär.
Beweis:
Sei A DFA mit L(A) = R, A = (Q, Σ, δ, q0 , F ).
F 0 := {q ∈ Q; (∃y ∈ L)[δ̂(q, y) ∈ F ]}
A0 := (Q, Σ, δ, q0 , F 0 )
Dann ist L(A0 ) = R/L.
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
79/388
Lemma 45
Es gibt einen Algorithmus, der für zwei (nichtdeterministische, mit
-Übergängen) endliche Automaten A1 und A2 entscheidet, ob sie
äquivalent sind, d.h. ob
L(A1 ) = L(A2 ) .
Beweis:
Konstruiere einen endlichen Automaten für
(L(A1 ) \ L(A2 )) ∪ (L(A2 ) \ L(A1 )) (symmetrische Differenz).
Prüfe, ob dieser Automat ein Wort akzeptiert.
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
80/388
Satz 46 (Pumping Lemma für reguläre Sprachen)
Sei R ⊆ Σ∗ regulär. Dann gibt es ein n > 0, so dass für jedes
z ∈ R mit |z| ≥ n es u, v, w ∈ Σ∗ gibt, so dass gilt:
1
z = uvw,
2
|uv| ≤ n,
3
|v| ≥ 1, und
4
∀i ≥ 0 : uv i w ∈ R.
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
81/388
Beweis:
Sei R = L(A), A = (Q, Σ, δ, q0 , F ).
Sei n = |Q|. Sei nun z ∈ R mit |z| ≥ n.
Sei q0 = q (0) , q (1) , q (2) , . . . , q (|z|) die beim Lesen von z
durchlaufene Folge von Zuständen von A. Dann muss es
0 ≤ i < j ≤ n ≤ |z| geben mit q (i) = q (j) .
Seien nun u die ersten i Zeichen von z, v die nächsten j − i
Zeichen und w der Rest.
⇒ z = uvw, |v| ≥ 1, |uv| ≤ n, uv l w ∈ R
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
∀l ≥ 0 .
82/388
Beispiel für die Anwendung des Pumping Lemmas:
Satz 47
2
L = {0m ; m ≥ 0} ist nicht regulär.
Beweis:
Angenommen, L sei doch regulär.
Sei n wie durch das Pumping Lemma gegeben. Wähle m ≥ n.
Dann gibt es ein r mit 1 ≤ r ≤ n, so dass gilt:
2 +ir
0m
∈ L für alle i ∈ N0 .
Aber:
m2 < m2 + r ≤ m2 + m < m2 + 2m + 1 = (m + 1)2 !
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
83/388
Denkaufgabe:
{ai bi ; i ≥ 0} ist nicht regulär.
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
84/388
Definition 48
Sei L ⊆ Σ∗ eine Sprache. Definiere die Relation ≡L ⊆ Σ∗ × Σ∗
durch
x ≡L y ⇔ (∀z ∈ Σ∗ )[xz ∈ L ⇔ yz ∈ L]
Lemma 49
≡L ist eine rechtsinvariante Äquivalenzrelation.
Dabei bedeutet rechtsinvariant:
x ≡L y ⇒ xu ≡L yu für alle u .
Beweis:
Klar!
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
85/388
Satz 50 (Myhill-Nerode)
Sei L ⊆ Σ∗ . Dann sind äquivalent:
1
L ist regulär
2
≡L hat endlichen Index (= Anzahl der Äquivalenzklassen)
3
L ist die Vereinigung einiger der endlich vielen
Äquivalenzklassen von ≡L .
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
86/388
Beweis:
(1)⇒(2):
Sei L = L(A) für einen DFA A = (Q, Σ, δ, q0 , F ).
Dann gilt
δ̂(q0 , x) = δ̂(q0 , y)
⇒
x ≡L y .
Also gibt es höchstens so viele Äquivalenzklassen, wie der Automat
A Zustände hat.
Info IV
c
Ernst
W. Mayr
87/388
Beweis:
(2)⇒(3):
Sei [x] die Äquivalenzklasse von x, y ∈ [x] und x ∈ L.
Dann gilt nach der Definition von ≡L :
y∈L
Info IV
c
Ernst
W. Mayr
87/388
Beweis:
(3)⇒(1):
Definiere A0 = (Q0 , Σ, δ 0 , q00 , F 0 ) mit
Q0 := {[x]; x ∈ Σ∗ }
(Q0 endlich!)
q00 := []
δ 0 ([x], a) := [xa] ∀x ∈ Σ∗ , a ∈ Σ
F
0
(konsistent!)
:= {[x]; x ∈ L}
Dann gilt:
L(A0 ) = L
Info IV
c
Ernst
W. Mayr
3.8 Abschlusseigenschaften regulärer Sprachen
87/388
3.9 Konstruktion minimaler endlicher Automaten
Satz 51
Der nach dem Satz von Myhill-Nerode konstruierte
deterministische endliche Automat hat unter allen DFA’s für L eine
minimale Anzahl von Zuständen.
Beweis:
Sei A = (Q, Σ, δ, q0 , F ) mit L(A) = L. Dann liefert
x ≡A y :⇔ δ(q0 , x) = δ(q0 , y)
eine Äquivalenzrelation, die ≡L verfeinert.
Also gilt: |Q| = index(≡A ) ≥ index(≡L ) = Anzahl der Zustände
des Myhill-Nerode-Automaten.
Info IV
c
Ernst
W. Mayr
3.9 Konstruktion minimaler endlicher Automaten
88/388
Algorithmus zur Konstruktion eines minimalen FA
Eingabe: A(Q, Σ, δ, q0 , F ) DFA
(L = L(A))
Ausgabe: Äquivalenzrelation auf Q.
0
1
Entferne aus Q alle überflüssigen, d.h. alle von q0 aus nicht
erreichbaren Zustände. Wir nehmen nun an, dass Q keine
überflüssigen Zustände mehr enthält.
Markiere alle Paare {qi , qj } ∈ Q2 mit
qi ∈ F und qj ∈
/ F bzw. qi ∈
/ F und qj ∈ F .
Info IV
c
Ernst
W. Mayr
3.9 Konstruktion minimaler endlicher Automaten
89/388
2
3
for alle unmarkierten Paare {qi , qj } ∈ Q2 , qi 6= qj do
if (∃a ∈ Σ)[{δ(qi , a), δ(qj , a)} ist markiert] then
markiere {qi , qj };
markiere alle {q, q 0 } in {qi , qj }’s Liste und
rekursiv alle Paare in der Liste von {q, q 0 } usw.
else
for alle a ∈ Σ do
if δ(qi , a) 6= δ(qj , a) then
trage {qi , qj } in die Liste von {δ(qi , a), δ(qj , a)} ein
fi
od
fi
od
Ausgabe:
Info IV
c
Ernst
W. Mayr
q äquivalent zu q 0 ⇔ {q, q 0 } nicht markiert.
3.9 Konstruktion minimaler endlicher Automaten
90/388
Satz 52
Obiger Algorithmus liefert einen minimalen DFA für L(A).
Beweis:
Sei A0 = (Q0 , Σ0 , δ 0 , q00 , F 0 ) der konstruierte
Äquivalenzklassenautomat.
Offensichtlich ist L(A) = L(A0 ).
Es gilt: {q, q 0 } wird markiert gdw
/ F oder umgekehrt],
(∃ w ∈ Σ∗ )[δ(q, w) ∈ F ∧ δ(q 0 , w) ∈
wie man durch einfach Induktion über |w| sieht.
Also: Die Anzahl der Zustände von A0 (nämlich |Q0 |) ist gleich
dem Index von ≡L .
Info IV
c
Ernst
W. Mayr
3.9 Konstruktion minimaler endlicher Automaten
91/388
Beispiel 53
Automat A:
0
q0
q1
0
1
q2
1
0
q3
0
0
q0
q1
q2
q3
q4
q5
1
q4
Automat A0 :
L(A0 ) = 0∗ 10∗
1
1
q5
q 0 q1
0
Info IV
c
Ernst
W. Mayr
0, 1
1
q0 q1 q2 q3 q4
/ / / / /
/ / / /
× × / / /
× ×
/ /
× ×
/
× × × × ×
q2 q 3 q 4
1
q5
q5
/
/
/
/
/
/
0, 1
0
3.9 Konstruktion minimaler endlicher Automaten
92/388
Satz 54
Sei A = (Q, Σ, δ, q0 , F ) ein DFA. Der Zeitaufwand des obigen
Minimalisierungsalgorithmus ist O(|Q|2 |Σ|).
Beweis:
Für jedes a ∈ Σ muss jede Position in der Tabelle nur konstant oft
besucht werden.
Info IV
c
Ernst
W. Mayr
3.9 Konstruktion minimaler endlicher Automaten
93/388
3.10 Entscheidbarkeit
Beispiel 55
Wie wir bereits wissen, ist das Wortproblem für reguläre Sprachen
L entscheidbar. Wenn L durch einen deterministischen endlichen
Automaten gegeben ist, ist dies sogar in linearer Laufzeit möglich.
Allerdings gilt, dass bei der Überführung eines
nichtdeterministischen endlichen Automaten in einen
deterministischen endlichen Automaten die Komplexität
exponentiell zunehmen kann.
Die folgenden Probleme sind für Chomsky-3-Sprachen (also die
Familie der regulären Sprachen) entscheidbar:
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
94/388
Wortproblem: Ist ein Wort w in L(G) (bzw. L(A))?
Das Wortproblem ist für alle Sprachen mit einem
Chomsky-Typ größer 0 entscheidbar. Allerdings
wächst die Laufzeit exponentiell mit der Wortlänge n.
Für Chomsky-2- und Chomsky-3-Sprachen gibt es
wesentlich effizientere Algorithmen.
Leerheitsproblem: Ist L(G) = ∅?
Das Leerheitsproblem ist für Sprachen vom
Chomsky-Typ 2 und 3 entscheidbar.
Für andere Sprachtypen lassen sich Grammatiken
konstruieren, für die nicht mehr entscheidbar ist, ob
die Sprache leer ist.
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
95/388
Endlichkeitsproblem: Ist |L(G)| < ∞?
Das Endlichkeitsproblem ist für alle regulären
Sprachen lösbar.
Lemma 56
Sei n die Pumping-Lemma-Zahl, die zur regulären Sprache L
gehört. Dann gilt:
|L| = ∞ gdw (∃z ∈ L)[n ≤ |z| < 2n] .
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
96/388
Beweis:
Wir zeigen zunächst ⇐:
Aus dem Pumping-Lemma folgt: z = uvw für |z| ≥ n und
uv i w ∈ L für alle i ∈ N0 . Damit erzeugt man unendlich viele
Wörter.
Nun wird ⇒ gezeigt:
Dass es ein Wort z mit |z| ≥ n gibt, ist klar (es gibt ja unendlich
viele Wörter). Mit Hilfe des Pumping-Lemmas lässt sich ein solches
Wort auf eine Länge < 2n reduzieren.
Damit kann das Endlichkeitsproblem auf das Wortproblem
zurückgeführt werden.
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
97/388
Schnittproblem: Ist L(G1 ) ∩ L(G2 ) = ∅?
Das Schnittproblem ist für die Familie der regulären
Sprachen entscheidbar, nicht aber für die Familie der
Chomsky-2-Sprachen.
Äquivalenzproblem: Ist L(G1 ) = L(G2 )?
Das Äquivalenzproblem lässt sich auch wie folgt
formulieren:
L1 = L2
Info IV
c
Ernst
W. Mayr
⇔
(L1 ∩ L2 ) ∪ (L2 ∩ L1 ) = ∅
3.10 Entscheidbarkeit
98/388
Wichtig für eine effiziente Lösung der Probleme ist, wie die
Sprache gegeben ist. Hierzu ein Beispiel:
Beispiel 57
L = {w ∈ {0, 1}∗ ; das k-letzte Bit von w ist gleich 1}
Ein NFA für diese Sprache ist gegeben durch:
0, 1
1
q1
0, 1
q2
0, 1
···
0, 1
qk
Insgesamt hat der NFA k + 1 Zustände. Man kann nun diesen NFA
in einen deterministischen Automaten umwandeln und stellt fest,
dass der entsprechende DFA Ω(2k ) Zustände hat.
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
99/388
Da die Komplexität eines Algorithmus von der Größe der Eingabe
abhängt, ist dieser Unterschied in der Eingabegröße natürlich
wesentlich, denn es gilt:
kurze Eingabe wie beim NFA ⇒ wenig Zeit für einen effizienten
Algorithmus,
lange Eingabe wie beim DFA ⇒ mehr Zeit für einen effizienten
Algorithmus.
Info IV
c
Ernst
W. Mayr
3.10 Entscheidbarkeit
100/388
4. Kontextfeie Grammatiken und Sprachen
4.1 Grundlagen und ein Beispiel
Sei
L= := {w ∈ {0, 1}∗ ; w enthält gleich viele 0en und 1en}.
Sei #a (w) die Anzahl der Zeichen a in der Zeichenreihe w, d.h.
L= = {w ∈ {0, 1}∗ ; #0 (w) = #1 (w)}.
L= ist sicherlich nicht regulär (vgl. Pumping-Lemma).
Info IV
c
Ernst
W. Mayr
4.1 Grundlagen und ein Beispiel
101/388
Satz 58
Die (kontextfreie) Grammatik G
S→|T
T → T T | 0T 1 | 1T 0 | 01 | 10
erzeugt L= .
Beweis:
Sei w ∈ L= . Betrachte für jedes Präfix x von w die Zahl
#1 (x) − #0 (x) .
Falls w = w0 w00 für nichtleere w0 , w00 ∈ L= , wende man Induktion
über |w| an, falls nicht, ist w von der Form 0w0 1 oder 1w0 0, und
Induktion liefert wiederum die Behauptung.
Info IV
c
Ernst
W. Mayr
4.1 Grundlagen und ein Beispiel
102/388
Definition (Wiederholung, siehe Def. 19)
Eine kontextfreie Grammatik G heißt eindeutig, wenn es für
jedes w ∈ L(G) genau einen Ableitungsbaum gibt.
Eine kontextfreie Sprache L heißt eindeutig, falls es eine
eindeutige kontextfreie Grammatik G mit L = L(G) gibt.
Ansonsten heißt L inhärent mehrdeutig.
Die oben angegebene Grammatik für L= ist nicht eindeutig.
Info IV
c
Ernst
W. Mayr
4.1 Grundlagen und ein Beispiel
103/388
4.2 Die Chomsky-Normalform
Sei G = (V, Σ, P, S) eine kontexfreie Grammatik.
Definition 59
Eine kontextfreie Grammatik G ist in Chomsky-Normalform, falls
alle Produktionen eine der Formen
A→a
A ∈ V, a ∈ Σ,
A → BC
A, B, C ∈ V, oder
S→
haben.
Info IV
c
Ernst
W. Mayr
4.2 Die Chomsky-Normalform
104/388
Algorithmus zur Konstruktion einer (äquivalenten)
Grammatik in Chomsky-Normalform
Eingabe: Eine kontextfreie Grammatik G = (V, Σ, P, S)
1
2
Wir fügen für jedes a ∈ Σ zu V ein neues Nichtterminal Ya
hinzu, ersetzen in allen Produktionen a durch Ya und fügen
Ya → a als neue Produktion zu P hinzu.
/* linearer Zeitaufwand, Größe vervierfacht sich höchstens */
Wir ersetzen jede Produktion der Form
A → B1 B2 · · · Br (r ≥ 3)
durch
A → B1 C2 , C2 → B2 C3 , . . . , Cr−1 → Br−1 Br ,
wobei C2 , . . . , Cr−1 neue Nichtterminale sind.
/* linearer Zeitaufwand, Größe vervierfacht sich höchstens */
Info IV
c
Ernst
W. Mayr
4.2 Die Chomsky-Normalform
105/388
3
Für alle C, D ∈ V , C 6= D, mit
C →+ D,
füge für jede Produktion der Form
A → BC ∈ P bzw. A → CB ∈ P
die Produktion
A → BD bzw. A → DB
zu P hinzu.
/* quadratischer Aufwand pro A */
4
Für alle α ∈ L(G) ∩ (V 2 ∪ Σ), füge S → α zu P hinzu.
5
Streiche alle Produktionen der Form A → B aus P .
Info IV
c
Ernst
W. Mayr
4.2 Die Chomsky-Normalform
106/388
Zusammenfassend können wir festhalten:
Satz 60
Aus einer kontextfreien Grammatik G = (V, Σ, P, S) der Größe
s(G) kann in Zeit O(|V |2 · s(G)) eine äquivalente kontextfreie
Grammatik in Chomsky-Normalform der Größe O(|V |2 · s(G))
erzeugt werden.
Info IV
c
Ernst
W. Mayr
4.2 Die Chomsky-Normalform
107/388
4.3 Der Cocke-Kasami-Younger-Algorithmus
Der CYK-Algorithmus entscheidet das Wortproblem für
kontextfreie Sprachen, falls die Sprache in Form einer Grammatik
in Chomsky-Normalform gegeben ist.
Eingabe: Grammatik G = (V, Σ, P, S) in Chomsky-Normalform,
w = w1 . . . wn ∈ Σ∗ mit der Länge n. O.B.d.A. n > 0.
Definition
Vij := {A ∈ V ; A →∗ wi . . . wj } .
Es ist klar, dass w ∈ L(G) ⇔ S ∈ V1n .
Info IV
c
Ernst
W. Mayr
4.3 Der Cocke-Kasami-Younger-Algorithmus
108/388
Der CYK-Algorithmus berechnet alle Vij rekursiv nach
wachsendem j − i. Den Anfang machen die
Vii := {A ∈ V ; A → wi ∈ P },
der rekursive Aufbau erfolgt nach der Regel
Vij =
[
{A ∈ V ; (A → BC) ∈ P ∧B ∈ Vik ∧C ∈ Vk+1,j } für i < j.
i≤k<j
Die Korrektheit dieses Aufbaus ist klar, wenn die Grammatik in
Chomsky-Normalform vorliegt.
Info IV
c
Ernst
W. Mayr
4.3 Der Cocke-Kasami-Younger-Algorithmus
109/388
Zur Komplexität des CYK-Algorithmus
2
Es werden n 2+n Mengen Vij berechnet. Für jede dieser Mengen
werden |P | Produktionen und höchstens n Werte für k betrachtet.
Der Test der Bedingung (A → BC) ∈ P ∧ B ∈ Vik ∧ C ∈ Vk+1,j
erfordert bei geeigneter Repräsentation der Mengen Vij konstanten
Aufwand. Der Gesamtaufwand ist also O(|P |n3 ).
Mit der gleichen Methode und dem gleichen Rechenaufwand kann
man zu dem getesteten Wort, falls es in der Sprache ist, auch
gleich einen Ableitungsbaum konstruieren, indem man sich bei der
Konstruktion der Vij nicht nur merkt, welche Nichtterminale sie
enthalten, sondern auch gleich, warum sie sie enthalten, d.h.
aufgrund welcher Produktionen sie in die Menge aufgenommen
wurden.
Info IV
c
Ernst
W. Mayr
4.3 Der Cocke-Kasami-Younger-Algorithmus
110/388
4.4 Das Pumping-Lemma und Ogdens Lemma für
kontextfreie Sprachen
Zur Erinnerung: Das Pumping-Lemma für reguläre Sprachen: Für
jede reguläre Sprache L gibt es eine Konstante n ∈ N, so dass sich
jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in z = uvw mit
|uv| ≤ n, |v| ≥ 1 und uv ∗ w ⊆ L.
Zum Beweis haben wir n = |Q| gewählt, wobei Q die
Zustandsmenge eines L erkennenden DFA war. Das Argument war
dann, dass beim Erkennen von z (mindestens) ein Zustand zweimal
besucht werden muss und damit der dazwischen liegende Weg im
Automaten beliebig oft wiederholt werden kann.
Völlig gleichwertig kann man argumentieren, dass bei der
Ableitung von z mittels einer rechtslinearen Grammatik ein
Nichtterminalsymbol (mindestens) zweimal auftreten muss und die
dazwischen liegende Teilableitung beliebig oft wiederholt werden
kann.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
111/388
Genau dieses Argument kann in ähnlicher Form auch auf
kontextfreie Grammatiken (in Chomsky-Normalform) angewendet
werden:
Satz 61 (Pumping-Lemma)
Für jede kontextfreie Sprache L gibt es eine Konstante n ∈ N, so
dass sich jedes Wort z ∈ L mit |z| ≥ n zerlegen lässt in
z = uvwxy,
mit
1
|vx| ≥ 1,
2
|vwx| ≤ n, und
3
∀i ∈ N0 : uv i wxi y ∈ L.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
112/388
Beweis:
Sei G = (V, Σ, P, S) eine Grammatik in Chomsky-Normalform mit
L(G) = L. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n. Dann hat
der Ableitungsbaum für z (ohne die letzte Stufe für die Terminale)
mindestens die Tiefe |V | + 1, da er wegen der
Chomsky-Normalform den Verzweigungsgrad 2 hat.
Auf einem Pfadabschnitt der Länge ≥ |V | + 1 kommt nun
mindestens ein Nichtterminal wiederholt vor. Die zwischen diesen
beiden Vorkommen liegende Teilableitung kann nun beliebig oft
wiederholt werden.
Info IV
c
Ernst
W. Mayr
113/388
Sq
Beweis:
u
v
@
@
q @
@ @
q @
@
@
@ @
@ @
w
x
y
z
Sq
u
Sq
@
@
q @
@ @
w @ @
@
@ @
y
@
u
v2
Dieser Ableitungsbaum zeigt
uwy ∈ L
@
q @
@ @
q @
@
@ @
q @ @ y@
@
@
@ @
w
x2
Dieser Ableitungsbaum zeigt
uv 2 wx2 y ∈ L
Die Bedingungen
1 und 2 sind hierbei ebenso erfüllt. Warum? → ÜA.
Info IV
c
Ernst
W. Mayr
113/388
Beweis:
Sei G = (V, Σ, P, S) eine Grammatik in Chomsky-Normalform mit
L(G) = L. Wähle n = 2|V | . Sei z ∈ L(G) mit |z| ≥ n. Dann hat
der Ableitungsbaum für z (ohne die letzte Stufe für die Terminale)
mindestens die Tiefe |V | + 1, da er wegen der
Chomsky-Normalform den Verzweigungsgrad 2 hat.
Auf einem Pfadabschnitt der Länge ≥ |V | + 1 kommt nun
mindestens ein Nichtterminal wiederholt vor. Die zwischen diesen
beiden Vorkommen liegende Teilableitung kann nun beliebig oft
wiederholt werden.
Um |vwx| ≤ n zu erreichen, muss man das am weitesten unten
liegende Doppelvorkommen eines solchen Nichtterminals wählen.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
113/388
Beispiel 62
Wir wollen sehen, dass die Sprache
{ai bi ci ; i ∈ N0 }
nicht kontextfrei ist.
Wäre sie kontextfrei, so könnten wir das Wort an bn cn (n die
Konstante aus dem Pumping-Lemma) aufpumpen, ohne aus der
Sprache herauszufallen. Wir sehen aber leicht, dass das Teilwort v
nur aus a’s bestehen kann und bei jeder möglichen Verteilung des
Teilworts x Pumpen entweder die Anzahl der a’s, b’s und c’s
unterschiedlich ändert oder, wenn
(#a (vx) =) #b (vx) = #c (vx) > 0 ,
dass b’s und c’s in der falschen Reihenfolge auftreten.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
114/388
Zur Vereinfachung von Beweisen wie in dem gerade gesehenen
Beispiel führen wir die folgende Verschärfung des
Pumping-Lemmas ein:
Satz 63 (Ogdens Lemma)
Für jede kontextfreie Sprache L gibt es eine Konstante n ∈ N, so
dass für jedes Wort z ∈ L mit |z| ≥ n die folgende Aussage gilt:
Werden in z mindestens n (beliebige) Buchstaben markiert, so
lässt sich z zerlegen in
z = uvwxy,
so dass
1
in vx mindestens ein Buchstabe und
2
in vwx höchstens n Buchstaben markiert sind und
3
(∀i ∈ N0 )[uv i wxi y ∈ L] .
Bemerkung: Das Pumping-Lemma ist eine triviale Folgerung aus
Ogdens Lemma (markiere alle Buchstaben in z).
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
115/388
Beweis:
Sei G = (V, Σ, P, S) eine Grammatik in Chomsky-Normalform mit
L(G) = L. Wähle n = 2|V |+1 . Sei z ∈ L und seien in z mindestens
n Buchstaben markiert. In einem Ableitungsbaum für z markieren
wir alle (inneren) Knoten, deren linker und rechter Teilbaum jeweils
mindestens ein markiertes Blatt enthalten. Es ist nun offensichtlich,
dass es einen Pfad von der Wurzel zu einem Blatt gibt, auf dem
mindestens |V | + 1 markierte innere Knoten liegen.
Info IV
c
Ernst
W. Mayr
116/388
Beweis:
...
Wir betrachten die letzten |V | + 1 markierten inneren Knoten eines
Pfades mit maximaler Anzahl markierter Knoten; nach dem
Schubfachprinzip sind zwei mit demselben Nichtterminal, z.B. A,
markiert. Wir nennen diese Knoten v1 und v2 . Seien die Blätter des
Teilbaumes mit der Wurzel v2 insgesamt mit w und die Blätter des
Teilbaumes mit der Wurzel v1 insgesamt mit vwx beschriftet. Es
ist dann klar, dass die folgende Ableitung möglich ist:
S →∗ uAy →∗ uvAxy →∗ uvwxy .
Es ist auch klar, dass der Mittelteil dieser Ableitung weggelassen
oder beliebig oft wiederholt werden kann.
Info IV
c
Ernst
W. Mayr
116/388
Beweis:
...
Es bleibt noch zu sehen, dass vx mindestens einen und vwx
höchstens n markierte Buchstaben enthält. Ersteres ist klar, da
auch der Unterbaum von v1 , der v2 nicht enthält, ein markiertes
Blatt haben muss.
Letzteres ist klar, da der gewählte Pfad eine maximale Anzahl von
markierten inneren Knoten hatte und unterhalb von v1 nur noch
höchstens |V | markierte Knoten auf diesem Pfad sein können. Der
Teilbaum mit Wurzel v1 kann also maximal 2|V |+1 = n markierte
Blätter haben. Formal kann man z.B. zeigen, dass ein Unterbaum,
der auf jedem Ast maximal k markierte (innere) Knoten enthält,
höchstens 2k markierte Blätter enthält.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
116/388
Beispiel 64
L = {ai bj ck dl ; i = 0 oder j = k = l} .
Sei n die Konstante aus Ogdens Lemma. Betrachte das Wort
abn cn dn und markiere darin bcn d. Nun gibt es eine Zerlegung
abn cn dn = uvwxy, so dass vx mindestens ein markiertes Symbol
enthält und uv 2 wx2 y ∈ L.
Es ist jedoch leicht zu sehen, dass dies einen Widerspruch liefert,
da vx höchstens zwei verschiedene der Symbole b, c, d enthalten
kann, damit beim Pumpen nicht die Reihenfolge durcheinander
kommt.
Info IV
4.4 Das Pumping-Lemma und Ogdens Lemma für kontextfreie Sprachen
c
Ernst
W. Mayr
117/388
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
Satz 65
Sie G = (V, Σ, P, S) kontextfrei. Dann kann die Menge V 0 der
Variablen A ∈ V , für die gilt:
(∃w ∈ Σ∗ )[A →∗ w]
in Zeit O(|V | · s(G)) berechnet werden.
Beweis:
Betrachte folgenden Algorithmus:
∆ := {A ∈ V ; (∃(A → w) ∈ P mit w ∈ Σ∗ }; V 0 := ∅;
while ∆ 6= ∅ do
V 0 := V 0 ∪ ∆
∆ := {A ∈ V \ V 0 ; (∃A → α) ∈ P mit α ∈ (V 0 ∪ Σ)∗ }
od
Induktion über die Länge der Ableitung.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
118/388
Definition 66
A ∈ V heißt nutzlos, falls es keine Ableitung
S →∗ w,
w ∈ Σ∗
gibt, in der A vorkommt.
Satz 67
Die Menge der nutzlosen Variablen kann in Zeit O(|V | · s(G))
bestimmt werden.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
119/388
Beweis:
Sei V 00 die Menge der nicht nutzlosen Variablen.
Offensichtlich gilt: V 00 ⊆ V 0 (V 0 aus dem vorigen Satz).
Falls S 6∈ V 0 , dann sind alle Variablen nutzlos.
Ansonsten:
∆ := {S}; V 00 := ∅;
while ∆ 6= ∅ do
V 00 := V 00 ∪ ∆
∆ := {B ∈ V 0 \ V 00 ; (∃A → αBβ) ∈ P mit A ∈ V 00 ,
α, β ∈ (V 0 ∪ Σ)∗ }
od
Induktion über Länge der Ableitung: Am Ende des Algorithmus ist
V 00 gleich der Menge der nicht nutzlosen Variablen.
Bemerkung: Alle nutzlosen Variablen und alle Produktionen, die
nutzlose Variablen enthalten, können aus der Grammatik entfernt
werden, ohne die erzeugte Sprache zu ändern.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
120/388
Korollar 68
Für eine kontextfreie Grammatik G kann in Zeit O(|V | · s(G))
entschieden werden, ob L(G) = ∅.
Beweis:
L(G) = ∅ ⇐⇒ S 6∈ V 00 (bzw. S 6∈ V 0 )
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
121/388
Satz 69
Für eine kontextfreie Grammatik G = (V, Σ, P, S) ohne nutzlose
Variablen und in Chomsky-Normalform kann in linearer Zeit
entschieden werden, ob
|L(G)| < ∞ .
Beweis:
Definiere gerichteten Hilfsgraphen mit Knotenmenge V und
Kante A → B ⇐⇒ (A → BC) oder (A → CB) ∈ P .
L(G) ist endlich ⇐⇒ dieser Graph enthält keinen Zyklus.
Verwende DFS, um in linearer Zeit festzustellen, ob der Graph
Zyklen enthält.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
122/388
Satz 70
Seien kontextfreie Grammatiken G1 = (V1 , Σ1 , P1 , S1 ) und
G2 = (V2 , Σ2 , P2 , S2 ) gegeben. Dann können in linearer Zeit
kontextfreie Grammatiken für
1
L(G1 ) ∪ L(G2 ),
2
L(G1 )L(G2 ),
3
(L(G1 ))∗
konstruiert werden. Die Klasse der kontextfreien Sprachen ist also
unter Vereinigung, Konkatenation und Kleene’scher Hülle
abgeschlossen.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
123/388
Beweis:
Ohne Beschränkung der Allgemeinheit nehmen wir an, dass
V1 ∩ V2 = ∅.
1
V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 |S2 }
2
V = V1 ∪ V2 ∪ {S}; S neu
P = P1 ∪ P2 ∪ {S → S1 S2 }
3
V = V1 ∪ {S, S 0 }; S, S 0 neu
P = P1 ∪ {S → S 0 |, S 0 → S1 S 0 |S1 }
Falls ∈ L(G1 ) oder ∈ L(G2 ), sind noch Korrekturen
vorzunehmen, die hier als Übungsaufgabe überlassen bleiben.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
124/388
Satz 71
Die Klasse der kontextfreien Sprachen ist nicht abgeschlossen unter
Durchschnitt oder Komplement.
Beweis:
Es genügt zu zeigen (wegen de Morgan (1806–1871)): nicht
abgeschlossen unter Durchschnitt.
L1 := {ai bi cj ; i, j ≥ 0} ist kontextfrei
L2 := {ai bj cj ; i, j ≥ 0} ist kontextfrei
L1 ∩ L2 = {ai bi ci ; i ≥ 0} ist nicht kontextfrei
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
125/388
Satz 72
Die Klasse der kontextfreien Sprachen ist abgeschlossen gegenüber
Substitution (mit kontextfreien Mengen).
Beweis:
Ersetze jedes Terminal a durch ein neues Nichtterminal Sa und
füge zu den Produktionen P für jedes Terminal a die Produktionen
einer kontextfreien Grammatik Ga = (Va , Σ, Pa , Sa ) hinzu.
Forme die so erhaltene Grammatik in eine äquivalente
Chomsky-2-Grammatik um.
Info IV
c
Ernst
W. Mayr
4.5 Algorithmen für kontextfreie Sprachen/Grammatiken
126/388
4.6 Greibach-Normalform
Definition 73
Sei G = (V, Σ, P, S) eine kontextfreie Grammatik. G ist in
Greibach-Normalform (benannt nach Sheila Greibach (UCLA)),
falls jede Produktion 6= S → von der Form
A → aα mit a ∈ Σ, α ∈ V ∗
ist.
Lemma 74
Sei G = (V, Σ, P, S) kontextfrei, (A → α1 Bα2 ) ∈ P , und sei
B → β1 |β2 | . . . |βr die Menge der B-Produktionen (also die Menge
der Produktionen mit B auf der linken Seite). Ersetzt man
A → α1 Bα2 durch A → α1 β1 α2 |α1 β2 α2 | . . . |α1 βr α2 , so ändert
sich die von der Grammatik erzeugte Sprache nicht.
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
127/388
Lemma 75
Sei G = (V, Σ, P, S) kontextfrei, sei A → Aα1 |Aα2 | . . . |Aαr die
Menge der linksrekursiven A-Produktionen (alle αi 6= , die
Produktion A → A kommt o.B.d.A. nicht vor), und seien
A → β1 |β2 | . . . |βs die restlichen A-Produktionen (ebenfalls alle
βi 6= ).
Ersetzen wir alle A-Produktionen durch
A → β1 | . . . |βs |β1 A0 | . . . |βs A0
A0 → α1 | . . . |αr |α1 A0 | . . . |αr A0 ,
wobei A0 ein neues Nichtterminal ist, so ändert sich die Sprache
nicht, und die neue Grammatik enthält keine linksrekursive
A-Produktion mehr.
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
128/388
Beweis:
Von A lassen sich vor der Transformation alle Zeichenreihen der
Form
(β1 |β2 | . . . |βs )(α1 |α2 | . . . |αr )+
ableiten.
Dies ist auch nach der Transformation der Fall. Während vor der
Transformation alle Zeichenreihen der obigen Form von rechts her
aufgebaut werden, werden sie danach von links nach rechts erzeugt.
Die Umkehrung gilt ebenso.
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
129/388
Satz 76
Zu jeder kontextfreien Grammatik G gibt es eine äquivalente
Grammatik in Greibach-Normalform.
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
130/388
Beweis:
Sei o.B.d.A. G = (V, Σ, P, S) mit V = {A1 , . . . , Am } in
Chomsky-Normalform und enthalte keine nutzlosen Variablen.
Bemerkung: Im folgenden Algorithmus werden ggf neue Variablen
hinzugefügt, die Programmvariable m ändert sich dadurch
entsprechend!
Info IV
c
Ernst
W. Mayr
131/388
Beweis:
for k = 1, . . . , m do
for j = 1, . . . , k − 1 do
for all (Ak → Aj α) ∈ P do
ersetze die Produktion gemäß der Konstruktion
in Lemma 74
od
od
co die rechte Seite keiner Ak0 -Produktion, k 0 < k, beginnt
nun noch mit einer Variablen Aj , j < k oc
ersetze alle linksrekursiven Ak -Produktionen gemäß der
Konstruktion in Lemma 75
co die rechte Seite keiner Ak0 -Produktion, k 0 ≤ k, beginnt
nun noch mit einer Variablen Aj , j ≤ k oc
od
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
131/388
Korollar 77
Sei G eine kontextfreie Grammatik. Es gibt einen Algorithmus, der
eine zu G äquivalente Grammatik in Greibach-Normalform
konstruiert, deren rechte Seiten jeweils höchstens zwei Variablen
enthalten.
Beweis:
Klar!
Info IV
c
Ernst
W. Mayr
4.6 Greibach-Normalform
132/388
4.7 Kellerautomaten
In der Literatur findet man häufig auch die Bezeichnungen
Stack-Automat oder Pushdown-Automat. Kellerautomaten sind,
wenn nichts anderes gesagt wird, nichtdeterministisch.
Definition 78
Ein NPDA = PDA (= Nichtdeterministischer Pushdown-Automat)
besteht aus:
Q
endliche Zustandsmenge
Σ
endliches Eingabealphabet
∆
endliches Stackalphabet
q0 ∈ Q Anfangszustand
Z0 ∈ ∆ Initialisierung des Stack
δ
Übergangsrelation
∗
Fkt. Q × (Σ ∪ {}) × ∆ → 2Q×∆
wobei |δ(q, a, Z)| + |δ(q, , Z)| < ∞ ∀q, a, Z
F ⊆ Q akzeptierende Zustände
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
133/388
Der Kellerautomat
$ E I N G A B E $
Q
rot grun
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
Keller
134/388
Konfiguration:
Tupel (q, w, α) mit
q
w
α
∈Q
∈ Σ∗
∈ ∆∗
Info IV
c
Ernst
W. Mayr
Schritt:
(q, w0 w0 , Zα0 ) → (q 0 , w0 , Z1 . . . Zr α0 )
wenn (q 0 , Z1 . . . Zr ) ∈ δ(q, w0 , Z)
bzw.:
(q, w, Zα0 ) → (q 0 , w, Z1 . . . Zr α0 )
wenn (q 0 , Z1 . . . Zr ) ∈ δ(q, , Z)
4.7 Kellerautomaten
135/388
Definition 79
1
Ein NPDA A akzeptiert w ∈ Σ∗ durch leeren Stack, falls
(q0 , w, Z0 ) →∗ (q, , ) für ein q ∈ Q .
2
Ein NPDA A akzeptiert w ∈ Σ∗ durch akzeptierenden
Zustand, falls
(q0 , w, Z0 ) →∗ (q, , α) für ein q ∈ F, α ∈ ∆∗ .
3
Ein NPDA heißt deterministisch (DPDA), falls
|δ(q, a, Z)| + |δ(q, , Z)| ≤ 1
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
∀(q, a, Z) ∈ Q × Σ × ∆ .
136/388
Beispiel 80
Der PDA mit
δ(q0 , a, ∗)
δ(q0 , #, ∗)
δ(q1 , 0, 0)
δ(q1 , 1, 1)
δ(q1 , , Z0 )
=
=
=
=
=
{(q0 , a ∗)}
{(q1 , ∗ )}
{(q1 , )}
{(q1 , )}
{(q1 , )}
für a ∈ {0, 1}, ∗ ∈ {0, 1, Z0 }
für ∗ ∈ {0, 1, Z0 }
akzeptiert mit leerem Stack
die Sprache
L = {w#wR ; w ∈ {0, 1}∗ } .
Info IV
c
Ernst
W. Mayr
137/388
Beispiel 80
Der PDA mit
δ(q0 , a, ∗)
δ(q0 , #, ∗)
δ(q1 , 0, 0)
δ(q1 , 1, 1)
δ(q1 , , Z0 )
=
=
=
=
=
{(q0 , a ∗)}
{(q1 , ∗ )}
{(q1 , )}
{(q1 , )}
{(qa , )}
für a ∈ {0, 1}, ∗ ∈ {0, 1, Z0 }
für ∗ ∈ {0, 1, Z0 }
akzeptiert mit akzeptierendem
Zustand (F = {qa })
(und leerem Stack)
die Sprache
L = {w#wR ; w ∈ {0, 1}∗ } .
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
137/388
Satz 81
Sei A1 = (Q, Σ, ∆, q0 , Z0 , δ, F ) ein NPDA, der mit Endzustand
akzeptiert. Dann kann in linearer Zeit ein NPDA
A2 = (Q0 , Σ, ∆0 , q00 , Z00 , δ 0 ) konstruiert werden, der L(A1 ) mit
leerem Stack akzeptiert.
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
138/388
Beweis:
A2 simuliert A1 . Sobald A1 in einen akzeptierenden Endzustand
gerät, rät A2 , ob die Eingabe zu Ende gelesen ist. Falls A2 dies
meint, wird der Keller geleert.
Um zu verhindern, dass bei der Simulation von A1 der Keller leer
wird, ohne dass A1 akzeptiert, führen wir ein neues Kellersymbol
Z00 ein:
Q0
∆0
= Q ∪ {q̄, q00 }
= ∆ ∪ {Z00 }
und wir erweitern δ zu δ 0 gemäß
δ 0 (q00 , , Z00 ) = {(q0 , Z0 Z00 )}
δ 0 (q, , Z) ∪= {(q̄, )}
für q ∈ F, Z ∈ ∆0
0
δ (q̄, , Z) = {(q̄, )}
für Z ∈ ∆0
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
139/388
Bemerkung:
Akzeptieren mit leerem Keller bedeutet, dass der NPDA akzeptiert,
falls der Keller leer ist und die Eingabe gelesen ist.
Info IV
c
Ernst
W. Mayr
140/388
Bemerkung:
Akzeptieren mit leerem Keller bedeutet, dass der NPDA akzeptiert,
falls der Keller leer ist und die Eingabe gelesen ist, bzw.
dass, falls der Keller leer ist, der NPDA die bisher gelesene Eingabe
akzeptiert.
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
140/388
Satz 82
Sei A1 = (Q, Σ, ∆, q0 , Z0 , δ) ein NPDA, der mit leerem Keller
akzeptiert. Dann kann in linearer Zeit ein NPDA
A2 = (Q0 , Σ, ∆0 , q00 , Z00 , δ 0 , F ) konstruiert werden, welcher L(A1 )
mit akzeptierendem Endzustand akzeptiert.
Info IV
c
Ernst
W. Mayr
4.7 Kellerautomaten
141/388
Beweis:
A2 simuliert A1 . Am Anfang steht ein neues Kellersymbol auf dem
Stack. Sobald bei der Simulation von A1 dieses auf dem Stack
vorgefunden wird, weiß man, dass A1 seinen Stack leergeräumt hat
und folglich akzeptiert. Folglich geht A2 in einen akzeptierenden
Endzustand und hält:
Q0
∆0
F
=
=
=
Q ∪ {q00 , qf }
∆ ∪ {Z00 }
{qf }
δ 0 (q00 , , Z00 )
δ 0 (q, a, Z)
δ 0 (q, , Z00 )
Info IV
c
Ernst
W. Mayr
=
=
=
{(q0 , Z0 Z00 )}
δ(q, a, Z) für q ∈ Q, a ∈ Σ ∪ {}, Z ∈ ∆
{(qf , Z00 )} für q ∈ Q
4.7 Kellerautomaten
142/388
4.8 Kellerautomaten und kontextfreie Sprachen
Satz 83
Sei G eine CFG in Greibach-Normalform. Dann kann in linearer
Zeit ein NPDA A konstruiert werden (welcher mit leerem Stack
akzeptiert), so dass
L(A) = L(G) .
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
143/388
Beweis:
Sei o.B.d.A. 6∈ L(G).
Der Automat startet mit S auf dem Stack. Er sieht sich in jedem
Schritt das oberste Stacksymbol A an und überprüft, ob es in G
eine Produktion gibt, deren linke Seite A ist und deren rechte Seite
mit dem Terminal beginnt, welches unter dem Lesekopf steht.
Sei also G = (V, T, P, S).
Konstruiere NPDA A = (Q, Σ, ∆, q0 , Z0 , δ) mit
Q
∆
Σ
Z0
:=
:=
:=
:=
{q0 }
V
T
S
δ(q0 , a, A) 3 (q0 , α) für (A → aα) ∈ P .
Info IV
c
Ernst
W. Mayr
144/388
Beweis (Forts.):
Zu zeigen ist nun: L(A) = L(G).
Hilfsbehauptung:
S →∗G w1 . . . wi A1 . . . Am mit wj ∈ T, Aj ∈ V per Linksableitung
⇔ (q0 , w1 . . . wi , Z0 ) →∗A (q0 , , A1 . . . Am )
Der Beweis erfolgt durch Induktion über die Anzahl der Schritte in
der Linksableitung.
Info IV
c
Ernst
W. Mayr
144/388
Beweis (Forts.):
Induktionsanfang (i = 0):
S →∗G S
Info IV
c
Ernst
W. Mayr
⇔
(q0 , , Z0 ) →∗A (q0 , , Z0 )
144/388
Beweis (Forts.):
Induktionsschritt ((i − 1) 7→ i):
S →∗G w1 . . . wi A1 . . . Am
⇔ S →∗G w1 . . . wi−1 A0 Av . . . Am v ∈ {1, . . . , m + 1}
→G w1 . . . wi A1 . . . Am
(also (A0 → wi A1 . . . Av−1 ) ∈ P )
gemäß Induktionsvoraussetzung
⇔
⇔
(q0 , w1 . . . wi−1 , Z0 )
(q0 , w1 . . . wi−1 wi , Z0 )
→∗A (q0 , , A0 Av . . . Am )
→∗A (q0 , wi , A0 Av . . . Am )
→A (q0 , , A1 . . . Am )
da (A0 → wi A1 . . . Av−1 ) ∈ P )
⇔
(q0 , w1 . . . wi , Z0 )
→∗A (q0 , , A1 . . . Am )
Info IV
c
Ernst
W. Mayr
144/388
Beweis (Forts.):
Aus der Hilfsbehauptung folgt
L(A) = L(G) .
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
144/388
Satz 84
Sei A = (Q, Σ, ∆, q0 , Z0 , δ) ein NPDA, der mit leerem Keller
akzeptiert. Dann ist L(A) kontextfrei.
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
145/388
Beweis:
Wir definieren:
G = (V, T, P, S)
T := Σ
V := Q × ∆ × Q ∪ {S}
wobei wir die Tupel mit [, , ] notieren
P 3 S → [q0 , Z0 , q] für q ∈ Q
P 3 [q, Z, qm ] → a[p, Z1 , q1 ][q1 , Z2 , q2 ] · · · [qm−1 , Zm , qm ]
für δ(q, a, Z) 3 (p, Z1 · · · Zm ), ∀q1 , . . . , qm ∈ Q,
mit a ∈ Σ ∪ {} .
Idee: Aus [p, X, q] sollen sich alle die Wörter ableiten lassen, die
der NPDA A lesen kann, wenn er im Zustand p mit (lediglich) X
auf dem Stack startet und im Zustand q mit leerem Stack endet.
Info IV
c
Ernst
W. Mayr
146/388
Beweis (Forts.):
Hilfsbehauptung:
[p, X, q] →∗G w ⇔ (p, w, X) →∗A (q, , ) .
⇒“: Induktion über die Länge l der Ableitung.
”
Induktionsanfang (l = 1):
[p, X, q] →G w
Info IV
c
Ernst
W. Mayr
⇒
δ(p, w, X) 3 (q, )
⇒
(p, w, X) →A (q, , )
146/388
Beweis (Forts.):
Induktionsschritt ((l − 1) 7→ l):
Gelte
[p, X, qm+1 ] →G a[q1 , X1 , q2 ][q2 , X2 , q3 ] · · · [qm , Xm , qm+1 ]
→∗G aw(1) · · · w(m) = w
li
(i)
mit
P (q1 , X1 · · · Xm ) ∈ δ(p, a, X), [qi , Xi , qi+1 ] →G w und
li < l.
Dann gilt gemäß Induktionsvoraussetzung
⇒
(qi , w(i) , Xi ) →lAi (qi+1 , , ) ∀i ∈ {1, . . . , m}
⇒
(q, |aw(1) ·{z· · w(m)}, X) →A (q1 , w(1) · · · w(m) , X1 · · · Xm )
=w
→<l
A (qm+1 , , ) .
Info IV
c
Ernst
W. Mayr
146/388
Beweis (Forts.):
⇐“: Induktion über die Länge l einer Rechnung des NPDAs A
”
Induktionsanfang (l = 1):
(p, w, X) →A (q, , )
⇒
(q, ) ∈ δ(p, w, X)
⇒
([p, X, q] → w) ∈ P .
Info IV
c
Ernst
W. Mayr
(also |w| ≤ 1)
146/388
Beweis (Forts.):
Induktionsschritt ((l − 1) 7→ l):
Sei
(p, w, X) →A (q1 , w0 , X1 · · · Xm )
→∗A (q, , )
eine Rechnung von A der Länge l, mit w = ew0 und e ∈ Σ ∪ {}.
Nach Definition gibt es
([p, X, q] → e[q1 X1 q2 ] · · · [qm Xm qm+1 ]) ∈ P
mit qm+1 = q
und eine Zerlegung w0 = w(1) · · · w(m) , so dass w(1) · · · w(i) der
von A zu dem Zeitpunkt verarbeitete Teilstring von w0 ist, wenn
Xi+1 zum ersten Mal oberstes Stacksymbol (bzw., für i = m, der
Stack leer) wird.
Info IV
c
Ernst
W. Mayr
146/388
Beweis (Forts.):
Gemäß Induktionsvoraussetzung gilt also
(qi , w(i) , Xi ) →lAi (qi+1 , , )
mit
X
li < l und
[qi , Xi , qi+1 ] →∗G w(i) .
Also folgt:
[p, X, q] →G e[q1 , X1 , q2 ] · · · [qm , Xm , qm+1 ] mit qm+1 = q
(1)
→<l
· · · w(m) = w
G ew
Aus der Hilfsbehauptung folgt der Satz.
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
146/388
Satz 85
Folgende Aussagen sind äquivalent:
L wird von einer kontextfreien Grammatik erzeugt.
L wird von einem NPDA akzeptiert.
Beweis:
Folgt aus den vorhergehenden Sätzen.
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
147/388
Bemerkung
Für die Praxis (z.B. Syntaxanalyse von Programmen) sind
polynomiale Algorithmen wie CYK noch zu langsam. Für
Teilklassen von CFLs sind schnellere Algorithmen bekannt, z.B.
Jay Earley:
An Efficient Context-free Parsing Algorithm.
Communications of the ACM, 13(2):94–102, 1970
Info IV
c
Ernst
W. Mayr
4.8 Kellerautomaten und kontextfreie Sprachen
148/388
4.9 Deterministische Kellerautomaten
Wir haben bereits definiert:
Ein PDA heißt deterministisch (DPDA), falls
|δ(q, a, Z)| + |δ(q, , Z)| ≤ 1
∀(q, a, Z) ∈ Q × Σ × ∆ .
Die von einem DPDA, der mit leerem Keller akzeptiert, erkannte
Sprache genügt der Fano-Bedingung, d.h. kein Wort in der Sprache
ist echtes Präfix eines anderen Wortes in der Sprache.
Festlegung:
Da wir an einem weniger eingeschränkten Maschinenmodell
interessiert sind, legen wir fest, dass ein DPDA stets mit
akzeptierenden Zuständen akzeptiert.
Info IV
c
Ernst
W. Mayr
4.9 Deterministische Kellerautomaten
149/388
Definition 86
Ein DPDA ist in Normalform, falls gilt:
1
(q 0 , α) = δ(q, e, X) für e ∈ Σ ∪ {}, q, q 0 ∈ Q, X ∈ ∆
⇒ α ∈ {, X, Y X} für Y ∈ ∆ .
2
Der Automat liest jede Eingabe vollständig.
Satz 87
Zu jedem DPDA A = (Q, Σ, ∆, q0 , Z0 , δ, F ) kann ein äquivalenter
DPDA A0 = (Q0 , Σ, ∆0 , q00 , Z00 , δ 0 , F 0 ) in Normalform konstruiert
werden.
Info IV
c
Ernst
W. Mayr
4.9 Deterministische Kellerautomaten
150/388
Beweis:
Erste Schritte der Konstruktion:
1
Werden von A in einem Schritt mehr als zwei Symbole auf
dem Stack abgelegt, wird dies von A0 durch eine Folge von
Schritten mit je 2 Stacksymbolen ersetzt.
2
Werden zwei oder ein Stacksymbol abgelegt und dabei das
oberste Stacksymbol X geändert, entfernen wir zunächst in
einem eigenen Schritt das oberste Stacksymbol und pushen
dann die gewünschten Symbole. (Das Merken“ erfolgt in der
”
Zustandsmenge Q0 .)
3
Wir vervollständigen δ 0 mittels eines Fangzustandes. Es
könnte hier noch sein, dass der DPDA eine Schleife aus lauter
-Übergängen ausführt.
Info IV
c
Ernst
W. Mayr
151/388
Beweis (Forts.):
Hilfsbehauptung:
Der DPDA A führt ab einer bestimmten Konfiguration (q, , β)
unendlich viele direkt aufeinander folgende -Übergänge genau
dann aus, wenn
(q, , β)
(q 0 , , X)
→∗
→+
(q 0 , , Xβ 0 )
(q 0 , , Xα)
und
für q, q 0 ∈ Q
X ∈ ∆, α, β, β 0 ∈ ∆∗
⇐“: klar
”
Info IV
c
Ernst
W. Mayr
151/388
Beweis (Forts.):
⇒“: Betrachte eine unendlich lange Folge von -Übergängen.
”
Sei n := |Q| · |∆| + |β| + 1.
Wird die Stackhöhe n nie erreicht, so muss sich sogar eine
Konfiguration des DPDA’s wiederholen. Daraus folgt die
Behauptung.
Info IV
c
Ernst
W. Mayr
151/388
Beweis (Forts.):
Ansonsten wird jede Stackhöhe |β|, . . . , n mindestens einmal
erreicht (wegen der Normalform ist die Höhendifferenz pro Schritt
∈ {−1, 0, 1}).
Betrachte den Zeitpunkt t, in dem die Stackhöhe zum erstenmal n
ist. Markiere für jedes i ∈ {|β|, . . . , n} den Zeitpunkt ti , wo zum
letzen Mal (vor Zeitpunkt t) die Stackhöhe = i ist. Zu diesen
Zeitpunkten ti betrachte die Paare (q, X) ∈ Q × ∆, wobei q der
Zustand des DPDA’s und X das oberste Kellersymbol des DPDA’s
zu diesem Zeitpunkt ist.
Da es mehr als |∆| · |Q| markierte Paare gibt, taucht ein markiertes
Paar (q 0 , X) doppelt auf. Für dieses gilt dann
(q 0 , , X) →+ (q 0 , , Xα).
Info IV
c
Ernst
W. Mayr
151/388
Beweis (Forts.):
Stack
t
Info IV
c
Ernst
W. Mayr
Zeit
151/388
Beweis (Forts.):
Das gleiche Argument gilt, falls sich die Stackhöhe um > |Q| · |∆|
erhöht.
Damit lassen sich alle Paare (q 0 , X) finden, für die gilt:
(q 0 , , X) →+ (q 0 , , Xα), α ∈ ∆∗ .
Da der DPDA nicht endlos weiterlaufen soll, ersetzen wir
δ(q 0 , , X) durch einen -Übergang in einen neuen Zustand q 00 (der
genau dann akzeptierend ist, wenn in der Schleife
(q 0 , , X) →+ (q 0 , , Xα) ein akzeptierender Zustand auftritt) und
einen -Übergang von q 00 in den nichtakzeptierenden
Fangzustand.
Info IV
c
Ernst
W. Mayr
4.9 Deterministische Kellerautomaten
151/388
Satz 88
Die Klasse der deterministischen kontextfreien Sprachen (also der
von DPDA’s erkannten Sprachen) [DCFL] ist unter Komplement
abgeschlossen.
Beweis:
Folgt aus der obigen Konstruktion!
Info IV
c
Ernst
W. Mayr
4.9 Deterministische Kellerautomaten
152/388
4.10 LR(k)-Grammatiken
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
Regeln:
S→A
A→E |A+E |A−E
E → P | E ∗ P | E/P
P → (A) | a
Wir betrachten für das Parsen einen bottom-up-Ansatz, wobei die
Reduktionen von links nach rechts angewendet werden.
Info IV
c
Ernst
W. Mayr
153/388
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
Dabei können sich bei naivem Vorgehen allerdings Sackgassen
ergeben, die dann aufgrund des Backtracking zu einem
ineffizienten Algorithmus führen:
Regeln:
S→A
A→E |A+E |A−E
E → P | E ∗ P | E/P
P → (A) | a
Info IV
c
Ernst
W. Mayr
Ableitung:
a + a
P + a
E + a
A + a
S + a
∗
∗
∗
∗
∗
a
a
a
a
a
153/388
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
. . . oder auch
Regeln:
S→A
A→E |A+E |A−E
E → P | E ∗ P | E/P
P → (A) | a
Info IV
c
Ernst
W. Mayr
Ableitung:
a
P
E
A
A
A
+
+
+
+
+
+
A
A
A
a
a
a
a
P
E
∗
∗
∗
∗
∗
∗
∗
∗
∗
a
a
a
a
a
a
a
P
E
153/388
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
Zur Behebung des Problems führen wir für jede Ableitungsregel
(besser hier: Reduktionsregel) einen Lookahead (der Länge k) ein
(in unserem Beispiel k = 1) und legen fest, dass eine
Ableitungsregel nur dann angewendet werden darf, wenn die
nächsten k Zeichen mit den erlaubten Lookaheads übereinstimmen.
Info IV
c
Ernst
W. Mayr
153/388
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
Produktion
S→A
A→E
A→A+E
A→A−E
E→P
E →E∗P
E → E/P
P → (A)
P →a
Info IV
c
Ernst
W. Mayr
Lookaheads (der Länge 1)
+, −, ), +, −, ), +, −, ), beliebig
beliebig
beliebig
beliebig
beliebig
153/388
Beispiel 89 (Grammatik für Arithmetische Ausdrücke)
Damit ergibt sich
Produktion
S→A
A→E
A→A+E
A→A−E
E→P
E →E∗P
E → E/P
P → (A)
P →a
Info IV
c
Ernst
W. Mayr
Lookaheads
+, −, ), +, −, ), +, −, ), beliebig
beliebig
beliebig
beliebig
beliebig
Ableitung:
a
P
E
A
A
A
A
A
+
+
+
+
+
+
+
+
a
a
a
a
P
E
E
∗
∗
∗
∗
∗
∗
∗
E
a
a
a
a
a
a
P
A
S
4.10 LR(k)-Grammatiken
153/388
Definition 90
Eine kontextfreie Grammatik ist eine LR(k)-Grammatik, wenn
man durch Lookaheads der Länge k erreichen kann, dass bei einer
Reduktion von links nach rechts in jedem Schritt höchstens eine
Produktion/Reduktion anwendbar ist.
Korollar 91
Jede kontextfreie Sprache, für die es eine LR(k)-Grammatik gibt,
ist deterministisch kontextfrei.
Info IV
c
Ernst
W. Mayr
4.10 LR(k)-Grammatiken
154/388
Bemerkung:
Es gibt eine (im allgemeinen nicht effiziente) Konstruktion, um aus
einer LR(k)-Grammatik, k > 1, eine äquivalente
LR(1)-Grammatik zu machen.
Korollar 92
Die folgenden Familien von Sprachen sind gleich:
die Familie DCFL,
die LR(1)-Sprachen.
Info IV
c
Ernst
W. Mayr
4.10 LR(k)-Grammatiken
155/388
4.11 LL(k)-Grammatiken
Beispiel 93 (Noch eine Grammatik)
Regeln:
S→A
S→A
A→E |E+A
A → EA0
A0 → +A | E →P |P ∗E
E → P E0
E 0 → ∗E | P → (A) | a
P → (A) | a
Wir betrachten nun für das Parsen einen top-down-Ansatz, wobei
die Produktionen in Form einer Linksableitung angewendet werden.
Info IV
c
Ernst
W. Mayr
156/388
Beispiel 93 (Noch eine Grammatik)
Regeln:
Ableitung:
S→A
A→E |E+A
E →P |P ∗E
P → (A) | a
Info IV
c
Ernst
W. Mayr
S
A
E
P
a
+
a
∗
a
156/388
Beispiel 93 (Noch eine Grammatik)
Wir bestimmen nun für jede Produktion A → α ihre
Auswahlmenge, das heißt die Menge aller terminalen Präfixe der
Länge ≤ k der von α ableitbaren Zeichenreihen.
Es ergibt sich (der Einfachheit lassen wir -Produktionen zu):
S
A
A0
A0
E
E0
E0
P
P
Info IV
c
Ernst
W. Mayr
→A
→ EA0
→ +A
→
→ P E0
→ ∗E
→
→ (A)
→a
{a, (}
{a, (}
{+}
{), }
{a, (}
{∗}
{+, ), }
{(}
{a}
156/388
Beispiel 93 (Noch eine Grammatik)
Damit ergibt sich
S
A
A0
A0
E
E0
E0
P
P
→A
→ EA0
→ +A
→
→ P E0
→ ∗E
→
→ (A)
→a
{a, (}
{a, (}
{+}
{), }
{a, (}
{∗}
{+, ), }
{(}
{a}
Ableitung:
S
EA0
aE 0 A0
..
.
a + P E 0 A0
..
.
a + a ∗ P E 0 A0
..
.
a+a∗a
Info IV
c
Ernst
W. Mayr
4.11 LL(k)-Grammatiken
156/388
Bemerkungen:
1
Parser für LL(k)-Grammatiken entsprechen der Methode des
rekursiven Abstiegs (recursive descent).
2
LL(k) ist eine strikte Teilklasse von LR(k).
3
Es gibt L ∈ DCFL, so dass L 6∈ LL(k) für alle k.
Info IV
c
Ernst
W. Mayr
4.11 LL(k)-Grammatiken
157/388
5. Kontextsensitive und Typ-0-Sprachen
5.1 Turingmaschinen
Turingmaschinen sind das grundlegende Modell, das wir für
Computer/Rechenmaschinen verwenden. Es geht auf Alan Turing
(1912–1954) zurück.
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
158/388
Definition 94
Eine nichtdeterministische Turingmaschine (kurz TM oder NDTM)
wird durch ein 7-Tupel M = (Q, Σ, Γ, δ, q0 , , F ) beschrieben, das
folgende Bedingungen erfüllt:
1
Q ist eine endliche Menge von Zuständen.
2
Σ ist eine endliche Menge, das Eingabealphabet.
3
Γ ist eine endliche Menge, das Bandalphabet.
4
δ : Q × Γ → P(Q × Γ × {L, R, N }) ist die Übergangsfunktion.
5
q0 ∈ Q ist der Startzustand.
6
∈ Γ \ Σ ist das Leerzeichen.
7
F ⊆ Q ist die Menge der (akzeptierenden) Endzustände.
Eine Turingmaschine heißt deterministisch, falls gilt
|δ(q, a)| ≤ 1
für alle q ∈ Q, a ∈ Γ.
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
159/388
Erläuterung:
Intuitiv bedeutet δ(q, a) = (q 0 , b, d) bzw. δ(q, a) 3 (q 0 , b, d):
Wenn sich M im Zustand q befindet und unter dem
Schreib-/Lesekopf das Zeichen a steht, so geht M im nächsten
Schritt in den Zustand q 0 über, schreibt an die Stelle des a’s das
Zeichen b und bewegt danach den Schreib-/Lesekopf um eine
Position nach rechts (falls d = R), links (falls d = L) bzw. lässt
ihn unverändert (falls d = N ).
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
160/388
Beispiel 95
Es soll eine TM angegeben werden, die eine gegebene Zeichenreihe
aus {0, 1}+ als Binärzahl interpretiert und zu dieser Zahl 1 addiert.
Folgende Vorgehensweise bietet sich an:
1
Gehe ganz nach rechts bis ans Ende der Zahl. Dieses Ende
kann durch das erste Auftreten eines Leerzeichens gefunden
werden.
2
Gehe wieder nach links bis zur ersten 0 und ändere diese zu
einer 1. Ersetze dabei auf dem Weg alle 1en durch 0.
Also:
δ(q0 , 0) = (q0 , 0, R)
δ(q1 , 1) = (q1 , 0, L)
δ(q0 , 1) = (q0 , 1, R)
δ(q1 , 0) = (qf , 1, N )
δ(q0 , ) = (q1 , , L)
δ(q1 , ) = (qf , 1, N )
Damit ist Q = {q0 , q1 , qf } und F = {qf }.
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
161/388
Definition 96
Eine Konfiguration einer Turingmaschine ist ein Tupel
(α, q, β) ∈ Γ∗ × Q × Γ∗ .
Das Wort w = αβ entspricht dem Inhalt des Bandes, wobei dieses
rechts und links von w mit dem Leerzeichen gefüllt sei. Der
Schreib-/Lesekopf befindet sich auf dem ersten Zeichen von β∞ .
Die Startkonfiguration der Turingmaschine bei Eingabe x ∈ Σ∗
entspricht der Konfiguration
(, q0 , x) ,
d.h. auf dem Band befindet sich genau die Eingabe x ∈ Σ∗ , der
Schreib-/Lesekopf befindet sich über dem ersten Zeichen der
Eingabe und die Maschine startet im Zustand q0 .
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
162/388
Je nach aktuellem Bandinhalt und Richtung d ∈ {L, R, N } ergibt
sich bei Ausführung des Zustandsübergangs δ(q, β1 ) = (q 0 , c, d)
folgende Änderung der Konfiguration:


(α1 · · · αn , q 0 , cβ2 · · · βm )









(, q 0 , cβ2 · · · βm )








(α · · · α
0
1
n−1 , q , αn cβ2 · · · βm )
(α1 · · · αn , q, β1 · · · βm ) →






(α1 · · · αn c, q 0 , )









(α1 · · · αn c, q 0 , β2 · · · βm )




falls d = N ,
n ≥ 0, m ≥ 1
falls d = L,
n = 0, m ≥ 1
falls d = L,
n ≥ 1, m ≥ 1
falls d = R,
n ≥ 0, m = 1
falls d = R,
n ≥ 0, m ≥ 2
Der Fall m = 0 wird mittels β1 = abgedeckt.
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
163/388
Definition 97
Die von einer Turingmaschine M akzeptierte Sprache ist
L(M ) = {x ∈ Σ∗ ; (, q0 , x) →∗ (α, q, β) mit q ∈ F, α, β ∈ Γ∗ }
Info IV
c
Ernst
W. Mayr
5.1 Turingmaschinen
164/388
5.2 Linear beschränkte Automaten
Definition 98
Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für
alle q ∈ Q gilt:
(q 0 , c, d) ∈ δ(q, )
=⇒
c = .
Ein Leerzeichen wird also nie durch ein anderes Zeichen
überschrieben. Mit anderen Worten: Die Turingmaschine darf
ausschliesslich die Positionen beschreiben, an denen zu Beginn die
Eingabe x steht.
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
165/388
Satz 99
Die von linear beschränkten, nichtdeterministischen
Turingmaschinen akzeptierten Sprachen sind genau die
kontextsensitiven (also Chomsky-1) Sprachen.
Beweis:
Wir beschreiben nur die Beweisidee.
=⇒“: Wir benutzen eine Menge von Nichtterminalsymbolen, die
”
Q × Σ enthält, für die Grammatik. Die Grammatik erzeugt
zunächst alle akzeptierenden Konfigurationen (der Form αqf β mit
qf ∈ F ), wobei qf und β1 zusammen als ein Zeichen codiert sind.
Sie enthält weiterhin Regeln, die es gestatten, aus jeder Satzform,
die eine Konfiguration darstellt, alle möglichen unmittelbaren
Vorgängerkonfigurationen abzuleiten. Die zur Anfangskonfiguration
(, q0 , w) gehörige Satzform ist damit ableitbar gdw der LBA das
Wort w akzeptiert.
Info IV
c
Ernst
W. Mayr
166/388
Satz 99
Die von linear beschränkten, nichtdeterministischen
Turingmaschinen akzeptierten Sprachen sind genau die
kontextsensitiven (also Chomsky-1) Sprachen.
Beweis:
Wir beschreiben nur die Beweisidee.
⇐=“: Wir simulieren mittels des LBA nichtdeterministisch und in
”
Rückwärtsrichtung die möglichen Ableitungen der
kontextsensitiven Grammatik und prüfen, ob wir die Satzform S
erreichen können. Da die Grammatik längenmonoton ist, nimmt
der vom LBA benötigte Platz nie zu.
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
166/388
Beispiel 100
Die Sprache L = {am bm cm | m ∈ N0 } ist kontextsensitiv.
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
167/388
Satz 101
Das Wortproblem für LBAs bzw. für Chomsky-1-Grammatiken ist
entscheidbar.
Beweis:
Siehe z.B. die Konstruktion zum vorhergehenden Satz bzw.
Übungsaufgabe.
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
168/388
Satz 102
Die Familie CSL der kontextsensitiven (bzw. Chomsky-1)
Sprachen ist abgeschlossen unter den folgenden Operationen:
∩, ∪, ·,
∗
,¯
Beweis:
Der Beweis für die ersten vier Operationen ergibt sich unmittelbar
aus den Eigenschaften linear beschränkter Automaten, der
Abschluss unter Komplement wird später gezeigt ( Induktives
”
Zählen“).
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
169/388
Satz 103
Folgende Probleme sind für die Familie der Chomsky-1-Sprachen
nicht entscheidbar:
1
Leerheit
2
Äquivalenz
3
Durchschnitt
Beweis:
ohne Beweis.
Info IV
c
Ernst
W. Mayr
5.2 Linear beschränkte Automaten
170/388
5.3 Chomsky-0-Sprachen
Satz 104
Zu jeder (nichtdeterministischen) TM N gibt es eine
deterministische TM (DTM) M mit
L(N ) = L(M ) .
Beweis:
Die DTM erzeugt in BFS-Manier, für k = 0, 1, . . ., alle
Konfigurationen, die die TM N in k Schritten erreichen kann. Sie
hält gdw sich dabei eine akzeptierende Konfiguration ergibt.
Info IV
c
Ernst
W. Mayr
5.3 Chomsky-0-Sprachen
171/388
Satz 105
Die von (nichtdeterministischen oder deterministischen)
Turingmaschinen akzeptierten Sprachen sind genau die
Chomsky-0-Sprachen.
Beweis:
Wir beschreiben nur die Beweisidee.
=⇒“: Die Grammatik erzeugt zunächst alle akzeptierenden
”
Konfigurationen (der Form αqf β mit qf ∈ F ). Sie enthält weiterhin
Regeln, die es gestatten, aus jeder Satzform, die eine Konfiguration
darstellt, alle möglichen unmittelbaren Vorgängerkonfigurationen
abzuleiten. Die zur Anfangskonfiguration (, q0 , w) gehörige
Satzform ist damit ableitbar gdw die TM das Wort w akzeptiert.
Die Produktionen ergeben sich kanonisch aus der Übergangsrelation der TM. Sie sind i.a. nicht mehr längenmonoton!
Info IV
c
Ernst
W. Mayr
172/388
Satz 105
Die von (nichtdeterministischen oder deterministischen)
Turingmaschinen akzeptierten Sprachen sind genau die
Chomsky-0-Sprachen.
Beweis:
Wir beschreiben nur die Beweisidee.
⇐=“: Wir simulieren mit der TM alle Ableitungen der
”
Chomsky-0-Grammatik in BFS-Manier und akzeptieren, falls eine
solche Ableitung das Eingabewort x ergibt.
Man beachte, dass die konstruierte TM nicht unbedingt immer
hält!
Eine andere Idee ist, wie im LBA-Fall die Ableitungen rückwärts zu
simulieren.
Info IV
c
Ernst
W. Mayr
5.3 Chomsky-0-Sprachen
172/388
6. Übersicht Chomsky-Hierarchie
6.1 Die Chomsky-Hierarchie
Typ 3
DCFL
Typ 2
Typ 1
Typ 0
Info IV
c
Ernst
W. Mayr
reguläre Grammatik
DFA
NFA
regulärer Ausdruck
LR(k)-Grammatik
deterministischer Kellerautomat
kontextfreie Grammatik
(nichtdeterministischer) Kellerautomat
kontextsensitive Grammatik
(nichtdet.) linear beschränkter Automat (LBA)
Chomsky-Grammatik, Phrasenstrukturgrammatik
det./nichtdet. Turingmaschine
6.1 Die Chomsky-Hierarchie
173/388
6.2 Wortproblem
Typ 3, gegeben als DFA
DCFL, gegeben als DPDA
Typ 2, CNF-Grammatik
Typ 1
Typ 0
Info IV
c
Ernst
W. Mayr
lineare Laufzeit
lineare Laufzeit
CYK-Algorithmus, Laufzeit O(n3 )
exponentiell
—
6.2 Wortproblem
174/388
6.3 Abschlusseigenschaften
Typ 3
DCFL
Typ 2
Typ 1
Typ 0
Schnitt
ja
nein
nein
ja
ja
Info IV
c
Ernst
W. Mayr
Vereinigung
ja
nein
ja
ja
ja
Komplement
ja
ja
nein
ja
nein
6.3 Abschlusseigenschaften
Produkt
ja
nein
ja
ja
ja
Stern
ja
nein
ja
ja
ja
175/388
6.4 Entscheidbarkeit
Typ 3
DCFL
Typ 2
Typ 1
Typ 0
Wortproblem
ja
ja
ja
ja
nein
Info IV
c
Ernst
W. Mayr
Leerheit
ja
ja
ja
nein
nein
Äquivalenz
ja
ja
nein
nein
nein
6.4 Entscheidbarkeit
Schnittproblem
ja
nein
nein
nein
nein
176/388
Kapitel II Berechenbarkeit, Entscheidbarkeit
1. Der Begriff der Berechenbarkeit
Unsere Vorstellung ist:
f : Nk0 → N0 ist berechenbar, wenn es einen Algorithmus gibt, der
f berechnet, und genauer, der bei Eingabe (n1 , . . . , nk ) ∈ Nk0 nach
endlich vielen Schritten mit dem Ergebnis f (n1 , . . . , nk ) ∈ N0 hält.
Was bedeutet Algorithmus“ an dieser Stelle?
”
AWK, B, C, Euler, Fortran, Id, JAVA, Lisp, Modula, Oberon,
Pascal, Simula, . . .-Programme?
Gibt es einen Unterschied, wenn man sich auf eine bestimmte
Programmiersprache beschränkt?
Info IV
c
Ernst
W. Mayr
1.0 Entscheidbarkeit
177/388
Analog für partielle Funktionen
f : Nk0 ⊇ D → N0
bedeutet berechenbar Folgendes:
1
Algorithmus soll mit dem richtigen Ergebnis stoppen, wenn
(n1 , . . . , nk ) ∈ D
2
und nicht stoppen, wenn (n1 , . . . , nk ) 6∈ D.
Info IV
c
Ernst
W. Mayr
1.0 Entscheidbarkeit
178/388
Beispiel 106
Wir definieren
(
1
f1 (n) =
0
(
1
f2 (n) =
0


1
f3 (n) =


0
folgende Funktionen:
falls n als Ziffernfolge Anfangsstück von π ist
sonst
falls n interpretiert als Ziffernfolge in π vorkommt
sonst
falls mindestens n aufeinanderfolgende Ziffern
in π gleich 1 sind
sonst
π = 3, 14159265358979323846264338327950288419716939937 . . .
Einige Beispiele sind damit:
f1 (314) = 1, f1 (415) = 0, f2 (415) = 1 .
Info IV
c
Ernst
W. Mayr
179/388
Beispiel 106
(
1 falls n als Ziffernfolge Anfangsstück von π ist
f1 (n) =
0 sonst
Wie man leicht einsieht, ist f1 berechenbar, denn um festzustellen,
ob eine Ziffernfolge ein Anfangsstück von π ist, muss π nur auf
entsprechend viele Dezimalstellen berechnet werden.
Info IV
c
Ernst
W. Mayr
179/388
Beispiel 106
(
1
f2 (n) =
0
falls n interpretiert als Ziffernfolge in π vorkommt
sonst
Für f2 wissen wir nicht, ob es berechenbar ist. Um festzustellen,
dass die Ziffernfolge in π vorkommt, müsste man π schrittweise
immer genauer approximieren. Der Algorithmus würde stoppen,
wenn die Ziffernfolge gefunden wird. Aber was ist, wenn die
Ziffernfolge in π nicht vorkommt?
Vielleicht gibt es aber einen (noch zu findenden) mathematischen
Satz, der genaue Aussagen über die in π vorkommenden
Ziffernfolgen macht.
Wäre π vollkommen zufällig, was es aber nicht ist, dann würde
jedes n als Ziffernfolge irgendwann vorkommen.
Info IV
c
Ernst
W. Mayr
179/388
Beispiel 106
f3 (n) =


1


0
falls mindestens n aufeinanderfolgende Ziffern
in π gleich 1 sind
sonst
f3 ist berechenbar, denn f3 ≡ f4 , mit
(
1 n ≤ n0
f4 (n) =
0 sonst
wobei n0 die maximale Anzahl von aufeinanderfolgenden 1en in π
ist. Hierbei ist es nicht von Bedeutung, wie die Zahl n0 berechnet
werden kann - wichtig ist nur, dass eine solche Zahl n0 ∈ N
existiert.
Info IV
c
Ernst
W. Mayr
1.0 Entscheidbarkeit
179/388
Weitere Vorschläge, den Begriff der Berechenbarkeit zu präzisieren
und zu formalisieren:
1
Turing-Berechenbarkeit
2
Markov-Algorithmen
3
λ-Kalkül
4
µ-rekursive Funktionen
5
Registermaschinen
6
AWK, B, C, Euler, Fortran, Id, JAVA, Lisp, Modula, Oberon,
Pascal, Simula, . . . -Programme
7
while-Programme
8
goto-Programme
9
DNA-Algorithmen
10
Quantenalgorithmen
11
u.v.a.m.
Info IV
c
Ernst
W. Mayr
1.0 Entscheidbarkeit
180/388
Es wurde bewiesen: Alle diese Beschreibungsmethoden sind in ihrer
Mächtigkeit äquivalent.
Church’sche These
Dieser formale Begriff der Berechenbarkeit stimmt mit dem
intuitiven überein.
Info IV
c
Ernst
W. Mayr
1.0 Entscheidbarkeit
181/388
1.1 Turing-Berechenbarkeit
Definition 107
Eine (partielle) Funktion
f : Nk0 ⊇ D → N0
heißt Turing-berechenbar, falls es eine deterministische
Turingmaschine gibt, die für jede Eingabe (n1 , . . . , nk ) ∈ D nach
endlich vielen Schritten mit dem Bandinhalt
f (n1 , . . . , nk ) ∈ N0
hält. Falls (n1 , . . . , nk ) 6∈ D, hält die Turingmaschine nicht!
Dabei nehmen wir an, dass Tupel wie (n1 , . . . , nk ) geeignet codiert
auf dem Band der Turingmaschine dargestellt werden.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
182/388
Eine beliebte Modellvariante ist die k-Band-Turingmaschine, die
statt einem Band k, k ≥ 1, Arbeitsbänder zur Verfügung hat, deren
Lese-/Schreibköpfe sie unabhängig voneinander bewegen kann.
Oft existiert auch ein spezielles Eingabeband, das nur gelesen, aber
nicht geschrieben werden kann (read-only). Der Lesekopf kann
jedoch normalerweise in beiden Richtungen bewegt werden.
Ebenso wird oft ein spezielles Ausgabeband verwendet, das nur
geschrieben, aber nicht gelesen werden kann (write-only). Der
Schreibkopf kann dabei nur nach rechts bewegt werden.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
183/388
Beispiel 108 (k-Band-Turingmaschine)
...
...
...
...
...
...
..
.
...
?
M
6
...
? ...
eseköpfe, die unabhängig voneinander bewegt wer
Turingmaschine kann man durch eine 1-Band Turin
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
184/388
Satz 109
Jede k-Band-Turingmaschine kann effektiv durch eine 1-Band-TM
simuliert werden.
Beweis:
Wir simulieren die k Bänder auf k Spuren eines Bandes, wobei wir
das Teilalphabet für jede Spur auch noch so erweitern, dass die
Kopfposition des simulierten Bandes mit gespeichert werden
kann.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
185/388
Definition 110
Eine Sprache A ⊆ Σ∗ heißt rekursiv oder entscheidbar, falls es eine
deterministische TM M gibt, die auf allen Eingaben ∈ Σ∗ hält und
A erkennt.
Definition 111
Eine Sprache A ⊆ Σ∗ heißt rekursiv aufzählbar (r.a.) oder
semi-entscheidbar, falls es eine TM N gibt, für die
L(N ) = A ,
also, falls A Chomsky-0 ist.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
186/388
Definition 112
Sei A ⊆ Σ∗ . Die charakteristische Funktion χA von A ist
(
1 falls w ∈ A
χA (w) =
0 sonst
Definition 113
Sei A ⊆ Σ∗ . χ0A ist definiert durch
(
1
0
χA (w) =
undefiniert
Info IV
c
Ernst
W. Mayr
falls w ∈ A
sonst
1.1 Turing-Berechenbarkeit
187/388
Satz 114
A ist rekursiv ⇔ χA ist berechenbar.
Beweis:
Folgt aus der Definition von rekursiv: es gibt eine TM, die ja oder
nein liefert. Wandle das Ergebnis in 1 oder 0.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
188/388
Satz 115
A ist rekursiv aufzählbar ⇔ χ0A ist berechenbar.
Beweis:
Folgt unmittelbar aus der Definition.
Satz 116
A ist rekursiv ⇔ χ0A und χ0Ā sind berechenbar (⇔ A und Ā sind
r.a.)
Beweis:
Nur ⇐ ist nichttrivial. Wir lassen hier eine TM für A und eine TM
für Ā Schritt für Schritt parallel laufen.
Info IV
c
Ernst
W. Mayr
1.1 Turing-Berechenbarkeit
189/388
1.2 WHILE-Berechenbarkeit
WHILE-Programme sind wie folgt definiert:
Variablen: x1 , x2 , x3 , . . .
Konstanten: 0, 1, 2, . . .
Trennsymbole: ; :=
Operatoren: + - 6=
Schlüsselwörter: WHILE DO END
Info IV
c
Ernst
W. Mayr
1.2 WHILE-Berechenbarkeit
190/388
Der Aufbau von WHILE-Programmen:
xi := c, xi := xj + c, xi := xj − c sind WHILE-Programme
Die Interpretation dieser Ausdrücke erfolgt, wie üblich, mit der
Einschränkung, dass xj − c als 0 gewertet wird, falls c > xj .
Sind P1 und P2 WHILE-Programme, so ist auch
P1 ; P2
ein WHILE-Programm.
Interpretation: Führe zuerst P1 und dann P2 aus.
Ist P ein WHILE-Programm, so ist auch
WHILE xi 6= 0 DO P END
ein WHILE-Programm.
Interpretation: Führe P solange aus, bis xi den Wert 0 hat.
Achtung: Zuweisungen an xi im Innern von P beeinflussen
dabei den Wert von xi !
Info IV
c
Ernst
W. Mayr
1.2 WHILE-Berechenbarkeit
191/388
Satz 117
Ist eine Funktion WHILE-berechenbar, so ist sie auch
Turing-berechenbar.
Beweis:
Die Turingmaschine merkt sich den Programmzähler des
WHILE-Programms sowie die aktuellen Werte aller Variablen. Der
Platz dafür muss notfalls immer wieder angepasst werden.
Wir werden später auch die umgekehrte Aussage des obigen Satzes
zeigen.
Info IV
c
Ernst
W. Mayr
1.2 WHILE-Berechenbarkeit
192/388
1.3 GOTO-Berechenbarkeit
GOTO-Programme sind wie folgt definiert:
Variablen: x1 , x2 , x3 , . . .
Konstanten: 0, 1, 2, . . .
Trennsymbole: ; :=
Operatoren: + - =
Schlüsselwörter: IF THEN GOTO HALT
Info IV
c
Ernst
W. Mayr
1.3 GOTO-Berechenbarkeit
193/388
Ein GOTO-Programm ist eine Folge von markierten Anweisungen
M1 : A1 ; M2 : A2 ; . . . ; Mk : Ak
wobei die Ai Anweisungen und die Mi Zielmarken für Sprünge sind.
Als Anweisungen können auftreten:
Wertzuweisung: xi := xj ± c
unbedingter Sprung: GOTO Mi
bedingter Sprung: IF xj = c THEN GOTO Mi
Stopanweisung: HALT
Dabei ist c jeweils eine (beliebige) Konstante.
Info IV
c
Ernst
W. Mayr
1.3 GOTO-Berechenbarkeit
194/388
Satz 118
Jedes WHILE-Programm kann durch ein GOTO-Programm
simuliert werden.
Beweis:
Ersetze jede WHILE-Schleife WHILE xi 6= 0 DO P END durch
folgendes Konstrukt:
M1 :
M2 :
Info IV
c
Ernst
W. Mayr
IF xi = 0 THEN GOTO M2
P;
GOTO M1
...
1.3 GOTO-Berechenbarkeit
195/388
Satz 119
Jedes GOTO-Programm kann durch ein WHILE-Programm
simuliert werden.
Info IV
c
Ernst
W. Mayr
1.3 GOTO-Berechenbarkeit
196/388
Beweis:
Gegeben sei das GOTO-Programm
M1 : A1 ; M2 : A2 ; . . . ; Mk : Ak
Wir simulieren dies durch ein WHILE-Programm mit genau einer
WHILE-Schleife:
c := 1;
WHILE c 6= 0 DO
IF c = 1 THEN A01 END;
IF c = 2 THEN A02 END;
..
.
IF c = k THEN A0k END;
END
Info IV
c
Ernst
W. Mayr
197/388
Beweis:
wobei


xj := xl ± b; c := c + 1





c := `
0
Ai := IF xj = b THEN c := `



ELSE c := c + 1 END




c := 0
falls Ai = xj := xl ± b
falls Ai = GOTO M`
falls Ai = IF xj = b THEN
GOTO M`
falls Ai = HALT
Es bleibt als Übungsaufgabe überlassen, die IF-Anweisungen
ebenfalls durch WHILE-Schleifen zu ersetzen.
Info IV
c
Ernst
W. Mayr
1.3 GOTO-Berechenbarkeit
197/388
Satz 120
Aus Turing-Berechenbarkeit folgt GOTO-Berechenbarkeit.
Beweis:
Die Konfiguration (α, q, β) einer (det.) 1-Band-TM wird in den
Variablen xl , xQ , xr codiert. Die Zeichenreihen α und β werden als
Zahlen (zu einer geeigneten Basis) aufgefasst, mit der
niedrigstwertigen Ziffer bei der Position des Lese-/Schreibkopfes.
Jedes Tupel der Übergangsfunktion der TM wird durch ein
geeignetes kleines Programmstück simuliert. Dabei werden
Operationen wie Multiplikation mit, Division durch und
Modulorechnung zur Basis benötigt.
Info IV
c
Ernst
W. Mayr
1.3 GOTO-Berechenbarkeit
198/388
1.4 Primitiv-rekursive Funktionen
Betrachte die kleinste Klasse der Funktion Nk0 → N0 , für die gilt:
1 Sie enthält die konstanten Funktionen.
2 Sie enthält die Nachfolgerfunktionen: n 7→ n + 1.
3 Sie enthält die Projektionsfunktionen:
projk,i : Nk0 3 (x1 , . . . , xk ) 7→ xi ∈ N0
4
5
Sie ist abgeschlossen unter Komposition.
Sie ist abgeschlossen unter primitiver Rekursion, d.h. mit
g : Nn0 → N0
h : Nn+2
→ N0
0
ist auch
f (0, y1 , . . . , yn ) := g(y1 , . . . , yn )
f (m + 1, y1 , . . . , yn ) := h(f (m, y1 , . . . , yn ), m, y1 , . . . , yn )
(primitive Rekursion) in der Klasse (und sonst nichts).
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
199/388
Die soeben definierte Funktionenklasse sind die primitiv-rekursiven
Funktionen.
Beispiel 121
Die folgenden Funktionen sind primitiv-rekursiv:
1
(x, y) 7→ x + y;
2
(x, y) 7→ x ∗ y;
3
(x, y) 7→ max{x − y, 0};
4
x 7→ 2x ;
5
x 7→ 2
.2
..
2
2
Info IV
c
Ernst
W. Mayr
(Turm der Höhe x).
1.4 Primitiv-rekursive Funktionen
200/388
Satz 122
Jede primitiv-rekursive Funktion ist total.
Beweis:
Induktion über den Aufbau einer primitiv-rekursiven Funktion.
Satz 123
Jede primitiv-rekursive Funktion ist berechenbar.
Beweis:
Induktion über den Aufbau einer primitiv-rekursiven Funktion.
Korollar 124
Die primitiv-rekursiven Funktionen sind eine echte Teilklasse der
berechenbaren totalen Funktionen.
Es gibt nicht-totale berechenbare Funktionen.
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
201/388
Definition 125
Sei P (x) ein Prädikat, d.h. ein logischer Ausdruck, der in
Abhängigkeit von x ∈ N0 den Wert true oder false liefert. Dann
können wir diesem Prädikat in natürlicher Weise eine 0-1 Funktion
P̂ : N0 → {0, 1}
zuordnen, indem wir definieren, dass P̂ (x) = 1 genau dann, wenn
P (x) = true ist.
Wir nennen P (x) primitiv-rekursiv genau dann, wenn P̂ (x)
primitiv-rekursiv ist.
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
202/388
Definition 126
Beschränkter max-Operator: Zu einem Prädikat P (x) definieren wir
q : N0 → N0
(
0
n 7→
max{x < n; P (x)}
falls ¬P (x) für alle x < n
sonst
Dann gilt: Ist P primitiv-rekursiv, so auch q, denn:
q(0) = 0
(
n
falls P (n)
q(n + 1) =
q(n) sonst
= q(n) + P̂ (n) ∗ (n − q(n))
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
203/388
Definition 127
Beschränkter Existenzquantor: Zu einem Prädikat P (x) definieren
wir ein neues Prädikat Q(x) mittels:
Q(n) ist genau dann true, wenn ein x < n existiert, so dass
P (x) = true.
Dann gilt: Ist P primitiv-rekursiv, so auch Q, denn:
Q̂(0) = 0
Q̂(n + 1) = P̂ (n) + Q̂(n) − P̂ (n) ∗ Q̂(n)
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
204/388
Beispiel 128
Zur bijektiven Abbildung von 2-Tupeln (bzw. n-Tupeln bei
iterierter Anwendung der Paarbildung) natürlicher Zahlen in die
Menge der natürlichen Zahlen verwendet man eine Paarfunktion,
z.B.:
0
1
2
3
..
.
0
0
1
3
6
1
2
4
7
11
2
5
8
12
3
9
13
4
14
···
n2
n1
Info IV
c
Ernst
W. Mayr
205/388
Beispiel 128
Zur bijektiven Abbildung von 2-Tupeln (bzw. n-Tupeln bei
iterierter Anwendung der Paarbildung) natürlicher Zahlen in die
Menge der natürlichen Zahlen verwendet man eine Paarfunktion,
z.B.:
Betrachte: p : N20 → N0 mit
p(n1 , n2 ) := (n1 +n2 )(n2 1 +n2 +1) + n2
c1 : N0 → N0
c1 (n) := s − (n − s(s+1)
2 );
i(i+1)
s := max{i; 2 ≤ n}
c2 : N0 → N0
c2 (n) := n − s(s+1)
,
2
Info IV
c
Ernst
W. Mayr
wobei
s wie oben
1.4 Primitiv-rekursive Funktionen
205/388
Satz 129
1
2
p stellt eine primitiv-rekursive, bijektive Paarfunktion von N20
nach N0 mit den Umkehrfunktionen c1 und c2 dar.
Die Umkehrfunktionen c1 , c2 sind ebenfalls primitiv-rekursiv.
Beweis:
Übungsaufgabe.
Info IV
c
Ernst
W. Mayr
1.4 Primitiv-rekursive Funktionen
206/388
1.5 LOOP-Berechenbarkeit
LOOP-Programme sind wie folgt definiert:
Variablen: x1 , x2 , x3 , . . .
Konstanten: 0, 1, 2, . . .
Trennsymbole: ; :=
Operatoren: + Schlüsselwörter: LOOP DO END
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
207/388
Der Aufbau von LOOP-Programmen:
xi := c, xi := xj + c, xi := xj − c sind LOOP-Programme.
Die Interpretation dieser Ausdrücke erfolgt, wie üblich, mit der
Einschränkung, dass xj − c als 0 gewertet wird, falls c > xj .
Sind P1 und P2 LOOP-Programme, so ist auch
P1 ; P2
ein LOOP-Programm.
Interpretation: Führe zuerst P1 und dann P2 aus.
Ist P ein LOOP-Programm, so ist auch
LOOP xi DO P END
ein LOOP-Programm.
Interpretation: Führe P genau xi -mal aus.
Achtung: Zuweisungen an xi im Innern von P haben keinen
Einfluss auf die Anzahl der Schleifendurchläufe!
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
208/388
Definition 130
Eine Funktion f heißt LOOP-berechenbar genau dann, wenn es ein
LOOP-Programm gibt, das f berechnet.
LOOP-Programme können IF . . . THEN . . . ELSE . . . END
Konstrukte simulieren. Der Ausdruck IF x = 0 THEN A END kann
durch folgendes Programm nachgebildet werden:
y := 1;
LOOP x DO y := 0 END;
LOOP y DO A END;
LOOP-berechenbare Funktion sind immer total, denn:
LOOP-Programme stoppen immer. Damit stellt sich natürlich die
Frage, ob alle totalen Funktionen LOOP-berechenbar sind.
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
209/388
Satz 131
f ist primitiv-rekursiv ⇐⇒ f ist LOOP-berechenbar.
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
210/388
Beweis:
Wir zeigen zunächst ⇐“: Sei also P ein LOOP-Programm, das
”
f : Nn0 → N0 berechnet. P verwende die Variablen x1 , . . . , xk ,
k ≥ n.
Zu zeigen: f ist primitiv-rekursiv.
Der Beweis erfolgt durch strukturelle Induktion über den Aufbau
von P .
Info IV
c
Ernst
W. Mayr
211/388
Beweis:
Induktionsanfang: P : xi := xj ± c
Wir zeigen: Es gibt eine primitiv-rekursive Funktion
gP (ha1 , . . . , ak i)
|
{z
}
Belegung der Variablen
beim Start von P
=
hb1 , . . . , bk i
| {z }
Belegung der Variablen
am Ende von P
Für P : xi := xj ± c erhält man:
gP (ha1 , . . . , ak i) = ha1 , . . . , ai−1 , aj ± c, ai+1 , . . . , ak i
Info IV
c
Ernst
W. Mayr
211/388
Beweis:
Induktionsschritt: Hier unterscheiden wir 2 Fälle:
1
Sei P : Q; R. Dann ist gP (x) = gR (gQ (x)).
2
Sei nun P : LOOP xi DO Q END.
Idee: Definiere Funktion h(n, x), die die Belegung der
Variablen berechnet, wenn man mit Belegung x startet und
dann Q genau n mal ausführt. Dann ist:
h(0, x) = x
h(n + 1, x) = gQ (h(n, x))
und damit gP (x) = h(di (x), x), wobei di die i-te
Umkehrfunktion von hx1 , . . . , xk i ist, also
di (hx1 , . . . , xk i) = xi .
Die Richtung ⇒“ wird durch strukturelle Induktion über den
”
Aufbau von f gezeigt (Übungsaufgabe).
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
211/388
Definition 132
Die Ackermann-Funktion a : N20 → N0 :


falls x = 0
y + 1
a(x, y) := a(x − 1, 1)
falls x ≥ 1, y = 0


a(x − 1, a(x, y − 1)) falls x, y ≥ 1
Einige Eigenschaften der Ackermann-Funktion, die man per
Induktion zeigen kann:
1
a(1, y) = y + 2, a(2, y) = 2y + 3 für alle y
2
y < a(x, y)
3
a(x, y) < a(x, y + 1)
4
a(x, y + 1) ≤ a(x + 1, y)
5
a(x, y) < a(x + 1, y)
Info IV
c
Ernst
W. Mayr
∀x, y
∀x, y
∀x, y
∀x, y
1.5 LOOP-Berechenbarkeit
212/388
Genauer:
0
1
y→
2
3
4
5
0
1
x 2
↓ 3
1
2
3
5
2
3
5
13
3
4
7
29
4
5
9
61
5
6
11
125
6
7
13
253
4
5
13
65533
65533
...
265536 − 3
−3
...
Info IV
c
Ernst
W. Mayr
22
65536
1.5 LOOP-Berechenbarkeit
−3
22
265536
213/388
Lemma 133
Sei P ein LOOP-Programm mit den Variablen x1 , . . . , xk , und sei
X
X
n0i ;
ni ≤ n},
fP (n) = max{
i
i
wobei, für i = 1, . . . , k, n0i der Wert von xi nach Beendigung von
P und ni der Startwert von xi vor Beginn von P ist. Dann gibt es
ein t ∈ N, so dass
∀n ∈ N0 : fP (n) < a(t, n).
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
214/388
Beweis:
durch Induktion über den Aufbau von P .
Induktionsanfang:
P = xi := xj ± c, o.E. c ∈ {0, 1}. Es ist klar, dass
fP (n) ≤ 2n + 1 < 2n + 3 = a(2, n) für alle n
⇒ t = 2 tut es!
Info IV
c
Ernst
W. Mayr
215/388
Beweis:
durch Induktion über den Aufbau von P .
Induktionsschritt:
1. Fall: P = P1 ; P2 . Nach Induktionsannahme gibt es k1 , k2 ∈ N,
so dass für i = 1, 2 und für alle n ∈ N0 fPi < a(ki , n).
Damit
fP (n) ≤ fP2 (fP1 (n))
≤ fP2 (a(k1 , n))
Monotonie von fP2
< a(k2 , a(k1 , n))
I.A., setze k3 := max{k2 , k1 − 1}.
≤ a(k3 , a(k3 + 1, n)) Monotonie!
= a(k3 + 1, n + 1)
≤ a(k3 + 2, n)
Eigenschaft 4 der Ackermannfkt.
und t = k3 + 2 tut es hier!
Info IV
c
Ernst
W. Mayr
215/388
Beweis:
durch Induktion über den Aufbau von P .
Induktionsschritt:
2. Fall: P = LOOP xi DO Q END.
Die Abschätzung erfolgt analog zum 1. Fall und wird als
Übungsaufgabe überlassen.
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
215/388
Satz 134
Die Ackermann-Funktion ist nicht LOOP-berechenbar.
Beweis:
Angenommen doch. Sei P ein zugehöriges LOOP-Programm, das
g(n) := a(n, n)
berechnet.
Nach Definition von fP gilt g(n) ≤ fP (n) für alle n ∈ N0 .
Wähle gemäß dem obigen Lemma t mit fP (·) < a(t, ·) und setze
n = t:
fP (t) < a(t, t) = g(t) ≤ fP (t)
⇒ Widerspruch!
Info IV
c
Ernst
W. Mayr
1.5 LOOP-Berechenbarkeit
216/388
1.6 µ-rekursive Funktionen
Für eine Funktion f liefert der so genannte µ-Operator das kleinste
Argument, für das f gleich 0 wird (falls ein solches existiert). Der
µ-Operator gestattet so z.B., vorab die Anzahl der Durchläufe einer
WHILE-Schleife zu bestimmen, bis die Laufvariable gleich 0 wird.
Definition 135
Sei f eine (nicht notwendigerweise totale) k + 1-stellige Funktion.
Die durch Anwendung des µ-Operators entstehende Funktion fµ
ist definiert durch:
fµ : Nk0 → N0


min{n ∈ N0 ; f (n, x1 , . . . , xk ) = 0} falls
(x1 , . . . , xk ) 7→
f (m, x1 , . . . , xk ) definiert für alle m ≤ n


⊥ (undefiniert)
sonst
Info IV
c
Ernst
W. Mayr
1.6 µ-rekursive Funktionen
217/388
Definition 136
Die Klasse der µ-rekursiven Funktionen ist die kleinste Klasse von
(nicht notwendigerweise totalen) Funktionen, die die
Basisfunktionen (konstante Funktionen, Nachfolgerfunktion,
Projektionen) enthält und alle Funktionen, die man hieraus durch
(evtl. wiederholte) Anwendung von Komposition, primitiver
Rekursion und/oder des µ-Operators gewinnen kann.
Satz 137
f µ-rekursiv ⇐⇒ f WHILE-berechenbar.
Beweis:
Der Beweis ist elementar.
Info IV
c
Ernst
W. Mayr
1.6 µ-rekursive Funktionen
218/388
2. Entscheidbarkeit, Halteproblem
Wir wollen nun zeigen, dass es keinen Algorithmus geben kann, der
als Eingabe ein (beliebiges) Programm P und Daten x für P erhält
und (für jedes solches Paar (P, x)!) entscheidet, ob P hält, wenn
es mit Eingabe x gestartet wird.
Wir erinnern uns:
1
Eine Sprache A ist rekursiv gdw die charakteristische Funktion
χA berechenbar ist.
2
Eine Sprache A ist rekursiv aufzählbar (r.a.) gdw die
semi-charakteristische Funktion χ0A berechenbar ist.
Info IV
c
Ernst
W. Mayr
2.0 µ-rekursive Funktionen
219/388
2.1 Rekursive Aufzählbarkeit
Definition 138
Eine Sprache A ⊆ Σ∗ heißt rekursiv auflistbar, falls es eine
berechenbare Funktion f : N0 → Σ∗ gibt, so dass
A = {f (0), f (1), f (2), . . .} .
Bemerkung: Es ist nicht verlangt, dass die Auflistung in einer
gewissen Reihenfolge (z.B. lexikalisch) erfolgt!
Info IV
c
Ernst
W. Mayr
2.1 Rekursive Aufzählbarkeit
220/388
Beispiel 139
Σ∗ (mit Σ = {0, 1}) ist rekursiv auflistbar. Wir betrachten dazu
etwa folgende Funktion:
alle nullstelligen Wörter
alle einstelligen Wörter
alle zweistelligen Wörter
alle dreistelligen Wörter
Info IV
c
Ernst
W. Mayr
f (0) = (
f (1) = 0
f (2) = 1


f (3) = 00



f (4) = 01

f (5) = 10



f (6) = 11
(
f (7) = 000
..
.
221/388
Beispiel 139
Eine weitere Möglichkeit, eine Funktion f anzugeben, die alle
Wörter ∈ {0, 1}∗ auflistet, ist:
f (n) = Binärkodierung von n + 1 ohne die führende 1
Also:
f (0) = 1
f (1) = 10
f (2) = 11
f (3) = 100
..
..
.
.
Info IV
c
Ernst
W. Mayr
221/388
Beispiel 139
LT M = {w ∈ {0, 1}∗ ; w ist Codierung einer TM} ist rekursiv
auflistbar:
Wir listen {0, 1}∗ rekursiv auf, prüfen jedes erzeugte Wort, ob es
eine syntaktisch korrekte Codierung einer Turing-Maschine ist, und
verwerfen es, falls nicht.
Wir wählen stattdessen die kanonische Auflistung von {0, 1}∗ und
ersetzen jedes dabei erzeugte Wort, das keine korrekte Codierung
darstellt, durch den Code einer Standard-TM, die ∅ akzeptiert.
Info IV
c
Ernst
W. Mayr
2.1 Rekursive Aufzählbarkeit
221/388
Satz 140
Eine Sprache A ist genau dann rekursiv auflistbar, wenn sie
rekursiv aufzählbar (semi-entscheidbar) ist.
Info IV
c
Ernst
W. Mayr
2.1 Rekursive Aufzählbarkeit
222/388
Beweis:
Wir zeigen zunächst ⇒“.
”
Sei f : N0 → Σ∗ eine berechenbare Funktion, die A auflistet.
Betrachte folgenden Algorithmus:
lies die Eingabe w ∈ Σ∗
x := 0
while true do
if w = f (x) then return ( ja“); halt fi
”
x := x + 1
od
Info IV
c
Ernst
W. Mayr
223/388
Beweis:
Wir zeigen nun ⇐“.
”
Sei P eine WHILE-Programm, das die semi-charakteristische
Funktion χ0A berechnet, und sei f eine berechenbare Funktion, die
Σ∗ auflistet.
Betrachte folgenden Algorithmus:
lies die Eingabe n ∈ N0
count := −1; k := −1
repeat
k := k + 1
w := f (c1 (k)); m := c2 (k)
if P hält bei Eingabe w in genau m Schritten then
count := count + 1
until count = n
return w
Hier sind c1 und c2 die Umkehrfunktionen einer Paarfunktion.
Info IV
c
Ernst
W. Mayr
2.1 Rekursive Aufzählbarkeit
223/388
2.2 Halteproblem
Definition 141
Unter dem speziellen Halteproblem Hs versteht man die folgende
Sprache:
Hs = {w ∈ {0, 1}∗ ; Mw angesetzt auf w hält}
Hierbei ist (M , M0 , M1 , . . .) eine berechenbare Auflistung der
Turing-Maschinen.
Wir definieren weiter
Definition 142
Ld = {w ∈ Σ∗ ; Mw akzeptiert w nicht}
Info IV
c
Ernst
W. Mayr
2.2 Halteproblem
224/388
Satz 143
Ld ist nicht rekursiv aufzählbar.
Beweis:
Wäre Ld r.a., dann gäbe es ein w, so dass Ld = L(Mw ).
Dann gilt:
Mw akzeptiert w nicht
⇔
⇔
⇔
w ∈ Ld
w ∈ L(Mw )
Mw akzeptiert w
=⇒“ Widerspruch!
”
Korollar 144
Ld ist nicht entscheidbar.
Info IV
c
Ernst
W. Mayr
2.2 Halteproblem
225/388
Satz 145
Hs ist nicht entscheidbar.
Beweis:
Angenommen, es gäbe eine Turing-Maschine M , die Hs
entscheidet. Indem man i.W. die Antworten von M umdreht,
erhält man eine TM, die Ld entscheidet. Widerspruch!
Info IV
c
Ernst
W. Mayr
2.2 Halteproblem
226/388
2.3 Unentscheidbarkeit
Definition 146
Unter dem (allgemeinen) Halteproblem H versteht man die
Sprache
H = {hx, wi ∈ {0, 1}∗ ; Mx angesetzt auf w hält}
Satz 147
Das Halteproblem H ist nicht entscheidbar.
Beweis:
Eine TM, die H entscheidet, könnten wir benutzen, um eine TM
zu konstruieren, die Hs entscheidet.
Bemerkung: H und Hs sind beide rekursiv aufzählbar!
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
227/388
Definition 148
Seien A, B ⊆ Σ∗ . Dann heißt A (effektiv) reduzierbar auf B gdw
∃f : Σ∗ → Σ∗ , f total und berechenbar mit
(∀w ∈ Σ∗ )[w ∈ A ⇔ f (w) ∈ B] .
Wir schreiben auch
A ,→f B bzw. A ,→ B .
bzw. manchmal
A ≤ B oder auch A f B .
Ist A mittels f auf B reduzierbar, so gilt insbesondere
f (A) ⊆ B und f (Ā) ⊆ B̄ .
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
228/388
Satz 149
Sei A ,→f B.
(i) B rekursiv ⇒ A rekursiv.
(ii) B rekursiv aufzählbar ⇒ A rekursiv aufzählbar.
Beweis:
(i) χA = χB ◦ f .
(ii) χ0A = χ0B ◦ f .
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
229/388
Definition 150
Das Halteproblem auf leerem Band H0 ist
H0 = {w ∈ {0, 1}∗ ; Mw hält auf leerem Band} .
Satz 151
H0 ist unentscheidbar (nicht rekursiv).
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
230/388
Beweis:
Betrachte die Abbildung f , die definiert ist durch:
{0, 1}∗ 3 w 7→ f (w),
f (w) ist die Gödelnummer einer TM, die, auf leerem Band
angesetzt, zunächst c2 (w) auf das Band schreibt und sich dann wie
Mc1 (w) (angesetzt auf c2 (w)) verhält. Falls das Band nicht leer ist,
ist es unerheblich, wie sich Mf (w) verhält.
f ist total und berechenbar.
Es gilt: w ∈ H
⇔ Mc1 (w) angesetzt auf c2 (w) hält
⇔ Mf (w) hält auf leerem Band
⇔ f (w) ∈ H0
also H ,→f H0 und damit H0 unentscheidbar.
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
231/388
Bemerkung
Es gibt also keine allgemeine algorithmische Methode, um zu
entscheiden, ob ein Programm anhält.
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
232/388
Satz 152 (Rice)
Sei R die Menge aller (TM)-berechenbaren Funktionen und S eine
nichttriviale Teilmenge von R (also S 6= R, S 6= ∅). Dann ist
G(S) := {w ∈ {0, 1}∗ ; die von Mw berechnete Funktion ist in S}
unentscheidbar.
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
233/388
Beweis:
Sei Ω die total undefinierte Funktion.
1. Fall: Ω ∈ S
Sei q ∈ R − S (es gibt ein derartiges q, da S nichttrivial), Q eine
TM für q.
Zu w ∈ {0, 1}∗ sei f (w) ∈ {0, 1}∗ Gödelnummer einer TM, für die
gilt:
1
bei Eingabe x ignoriert Mf (w) diese zunächst und verhält sich
wie Mw auf leerem Band.
2
wenn obige Rechnung hält, dann verhält sich Mf (w) wie Q auf
der Eingabe x.
f ist total und berechenbar.
Info IV
c
Ernst
W. Mayr
234/388
Beweis:
Sei Ω die total undefinierte Funktion.
1. Fall: Ω ∈ S
w ∈ H0
⇔ Mw hält auf leerem Band
⇔ Mf (w) berechnet die Funktion q (6= Ω)
⇔ die von Mf (w) -berechnete Funktion ist nicht in S
⇔ f (w) 6∈ G(S)
Also: H̄0 ,→f G(S).
H0 unentscheidbar (nicht rekursiv) ⇒ H̄0 unentscheidbar ⇒ G(S)
unentscheidbar.
Wir zeigen hier nur diesen Satz. Setzt man weitere Eigenschaften
von S voraus, kann man sogar zeigen, dass G(S) nicht einmal
rekursiv aufzählbar ist.
Info IV
c
Ernst
W. Mayr
234/388
Beweis:
Sei Ω die total undefinierte Funktion.
2. Fall: Ω 6∈ S
Seien q ∈ S, Q, f wie im Fall 1.
w ∈ H0
⇔ Mf (w) berechnet die Funktion q (6= Ω)
⇔ die von Mf (w) berechnete Funktion ist in S
⇔ f (w) ∈ G(S)
Also: H0 ,→f G(S).
H0 unentscheidbar ⇒ G(S) unentscheidbar.
Info IV
c
Ernst
W. Mayr
2.3 Unentscheidbarkeit
234/388
3. Anwendung der Unentscheidbarkeitsresultate auf
kontextfreie Sprachen
Wie wir gesehen haben, gilt:
1
die regulären Sprachen sind unter allen Booleschen
Operationen abgeschlossen.
2
die kontextfreien Sprachen sind nicht unter Komplement und
Durchschnitt abgeschlossen.
Können wir entscheiden, ob der Durchschnitt zweier kontextfreier
Sprachen leer ist?
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
235/388
Sie M eine (beliebige) TM (mit nur einem Band) mit
Bandalphabet Σ und Zustandsmenge Q, sei # 6∈ Σ ∪ Q.
Definition 153
Definiere die Sprachen
(0)
R
R
CM := {c0 #cR
m ≥ 0, ci ist Konfi1 #c2 #c3 . . . c2m+1 ;
guration von M , c0 ist Anfangskonfiguration auf
leerem Band, c2m+1 ist Endkonfiguration oder
c2m = c2m+1 und c2m ist Endkonfiguration, und
c2j+1 ist Nachfolgekonfiguration von c2j für alle j
}
(1)
R
R
CM := {c0 #cR
wie oben, jetzt aber:
1 #c2 #c3 . . . c2m+1 ;
c2j ist Nachfolgekonfiguration von c2j−1 für alle
zutreffenden j ≥ 1}
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
236/388
(0)
Bemerkung: CM enthält nicht nur echte“ Rechnungen von M ,
”
da c2j−1 → c2j nicht unbedingt ein Schritt sein muss; das fordern
wir jeweils nur für c2j → c2j+1 .
Lemma 154
(0)
(1)
Die Sprachen CM und CM sind deterministisch kontextfrei.
Beweis:
Es ist einfach, jeweils einen DPDA dafür zu konstruieren.
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
237/388
Bemerkung: Ein Kellerautomat ist lange nicht so mächtig wie eine
Turingmaschine. Aber zwei Kellerautomaten (oder eine endliche
Kontrolle mit zwei Kellern) sind so mächtig wie eine
Turingmaschine (siehe Übung).
Lemma 155
(0)
(1)
w ∈ H0 ⇔ CMw ∩ CMw 6= ∅
Beweis:
Unmittelbar aus der Definition der beiden Sprachen!
Bemerkung: Falls Mw deterministisch ist und w ∈ H0 , dann
(0)
(1)
enthält CMw ∩ CMw genau ein Element, nämlich die eine
Rechnung von Mw auf leerem Band.
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
238/388
Satz 156
Das Schnittproblem für kontextfreie Sprachen ist unentscheidbar!
Beweis:
siehe oben
Wir haben sogar gezeigt: Das Schnittproblem für deterministisch
kontextfreie Sprachen ist unentscheidbar!
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
239/388
In der Literatur wird dieser Satz üblicherweise mit dem Post’schen
Korrespondenzproblem (PCP) bewiesen, das nach Emil Post
(1897–1954) benannt ist.
Definition 157 (Post’sches Korrespondenzproblem)
Gegeben: (x1 , y1 ), (x2 , y2 ), . . . (xn , yn ) mit xi , yi ∈ Σ+
Frage: gibt es eine Folge von Indizes i1 , i2 , . . . ir ∈ {1, . . . , n}, so
dass
xi1 xi2 . . . xir = yi1 yi2 . . . yir ?
Satz 158
PCP ist unentscheidbar.
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
240/388
Beweis:
Wir skizzieren, wie man mit Hilfe des PCP die Berechnung einer
(det.) TM simulieren kann. Wir haben dazu (u.a.) Paare
(a, a) für alle a ∈ Σ
(u1 u2 u3 , aqb) gemäß der inversen Übergangsfkt
der TM, mit a, b ∈ Σ, q ∈ Q und
u1 , u 2 , u 3 ∈ Σ ∪ Q
Dies bedeutet, dass die TM bei der lokalen Konfiguration aqb diese
im nächsten Schritt zu u1 u2 u3 ändert.
Info IV
c
Ernst
W. Mayr
241/388
Beweis:
Die allgemeine Situation sieht dann so aus, dass eine geeignete
Indexfolge i1 , . . . , ik folgende Zeichenreihen erzeugt:
x
y
c1
c1
...
...
cr−1
cr−1
x1
...
xi−1
q
xi
xi+1
...
xs
Es müssen nun die einzelnen xi durch Paare der Form (a, a)
gematcht werden, lediglich xi−1 qxi kann nur durch (genau bzw.
höchstens) ein Paar der zweiten Form gematcht werden.
Damit ergibt sich wieder die allgemeine Situation wie oben, mit r
um 1 erhöht, und man kann das Argument per Induktion
abschließen.
Wir überlassen es als Übungsaufgabe herauszufinden, wie auch
Anfang und Ende der TM-Berechnung geeignet durch das PCP
simuliert werden können.
Info IV
c
Ernst
W. Mayr
3.0 Unentscheidbarkeit
241/388
Kapitel III Algorithmen und Datenstrukturen
1. Analyse von Algorithmen
Wir wollen die Ressourcen bestimmen, die, in Abhängigkeit von der
Eingabe, ein Algorithmus benötigt, z.B.
1
Laufzeit
2
Speicherplatz
3
Anzahl Prozessoren
4
Programmlänge
5
Tinte
6
...
Info IV
c
Ernst
W. Mayr
1.0 Unentscheidbarkeit
242/388
Beispiel 159
Prozedur für Fakultätsfunktion
func f ak(n)
m := 1
for i := 2 to n do
m := m ∗ i
do
return (m)
Diese Prozedur benötigt O(n) Schritte bzw. arithmetische
Operationen.
Jedoch: die Länge der Ausgabe ist etwa
dlog2 n!e = Ω(n log n) Bits.
Info IV
c
Ernst
W. Mayr
1.0 Unentscheidbarkeit
243/388
Bemerkung:
Um die Zahl n ∈ N0 in Binärdarstellung
man
(
1
`(n) :=
1 + blog2 (n)c
(
1
=
dlog2 (n + 1)e
hinzuschreiben, benötigt
für n = 0
sonst
für n = 0
sonst
Um die Notation zu vereinfachen, vereinbaren wir im
Zusammenhang mit Komplexitätsabschätzungen
log(0) := 0 .
Info IV
c
Ernst
W. Mayr
1.0 Unentscheidbarkeit
244/388
1.1 Referenzmaschine
Wir wählen als Referenzmaschine die Registermaschine (engl.
random access machine, RAM) oder auch WHILE-Maschine, also
eine Maschine, die WHILE-Programme verarbeiten kann, erweitert
durch
IF . . . THEN . . . ELSE . . . FI
Multiplikation und Division
indirekte Adressierung
arithmetische Operationen wie
Info IV
c
Ernst
W. Mayr
√
n, sin n,. . .
1.1 Referenzmaschine
245/388
1.2 Zeit- und Platzkomplexität
Beim Zeitbedarf zählt das uniforme Kostenmodell die Anzahl der
von der Registermaschine durchgeführten Elementarschritte, beim
Platzbedarf die Anzahl der benutzten Speicherzellen.
Das logarithmische Kostenmodell zählt für den Zeitbedarf eines
jeden Elementarschrittes
`(größter beteiligter Operand),
beim Platzbedarf
X
`(größter in x gespeicherter Wert) ,
x
also die maximale Anzahl der von allen Variablen x benötigten
Speicherbits.
Info IV
c
Ernst
W. Mayr
1.2 Zeit- und Platzkomplexität
246/388
Beispiel 160
Wir betrachten die Prozedur
func dbexp(n)
m := 2
for i := 1 to n do
m := m2
do
return (m)
n
Die Komplexität von dbexp, die n 7→ 22 berechnet, ergibt sich bei
Eingabe n zu
uniform
logarithmisch
Info IV
c
Ernst
W. Mayr
Zeit
Θ(n)
Θ(2n )
1.2 Zeit- und Platzkomplexität
Platz
Θ(1)
Θ(2n )
247/388
Bemerkung:
Das (einfachere) uniforme Kostenmodell sollte also nur verwendet
werden, wenn alle vom Algorithmus berechneten Werte gegenüber
den Werten in der Eingabe nicht zu sehr wachsen, also z.B. nur
polynomiell.
Info IV
c
Ernst
W. Mayr
1.2 Zeit- und Platzkomplexität
248/388
1.3 Worst Case-Analyse
Sei A ein Algorithmus. Dann sei
TA (x) := Laufzeit von A bei Eingabe x .
Diese Funktion ist i.A. zu aufwändig und zu detailliert. Stattdessen:
TA (n) := max TA (x)
|x|=n
Info IV
c
Ernst
W. Mayr
(= maximale Laufzeit bei Eingabelänge n)
1.3 Worst Case-Analyse
249/388
1.4 Average Case-Analyse
Oft erscheint die Worst Case-Analyse als zu pessimistisch. Dann:
P
x; |x|=n TA (x)
TAave (n) =
|{x; |x| = n}|
oder allgemeiner
TAave (n) =
X
TA (x) · Pr {x | |x| = n}
= E|x|=n [TA (x)] ,
wobei eine (im Allgemeinen beliebige)
Wahrscheinlichkeitsverteilung zugrunde liegt.
Info IV
c
Ernst
W. Mayr
1.4 Average Case-Analyse
250/388
Bemerkung:
Wir werden Laufzeiten TA (n) meist nur bis auf einen
multiplikativen Faktor genau berechnen, d.h. das genaue
Referenzmodell, Fragen der Implementierung, usw. spielen dabei
eine eher untergeordnete Rolle.
Info IV
c
Ernst
W. Mayr
1.4 Average Case-Analyse
251/388
2. Sortierverfahren
Unter einem Sortierverfahren versteht man ein algorithmisches
Verfahren, das als Eingabe eine Folge a1 , . . . , an von n Schlüsseln
∈ Σ∗ erhält und als Ausgabe eine auf- oder absteigend sortierte
Folge dieser Elemente liefert. Im Folgenden werden wir im
Normalfall davon ausgehen, dass die Elemente aufsteigend sortiert
werden sollen. Zur Vereinfachung nehmen wir im Normalfall auch
an, dass alle Schlüssel paarweise verschieden sind.
Für die betrachteten Sortierverfahren ist natürlich die Anzahl der
Schlüsselvergleiche eine untere Schranke für die Laufzeit, und oft
ist letztere von der gleichen Größenordnung, d.h.
Laufzeit = O(Anzahl der Schlüsselvergleiche) .
Info IV
c
Ernst
W. Mayr
2.0 Average Case-Analyse
252/388
2.1 Selection-Sort
Sei eine Folge a1 , . . . , an von Schlüsseln gegeben, indem ai im
Element i eines Feldes A[1..n] abgespeichert ist.
Algorithmus SelectionSort
for i := n downto 2 do
m := Index des maximalen Schlüssels in A[1..i]
vertausche A[i] und A[m]
od
Nach Beendigung von SelectionSort ist das Feld A aufsteigend
sortiert.
Info IV
c
Ernst
W. Mayr
2.1 Selection-Sort
253/388
Satz 161
SelectionSort
benötigt zum Sortieren von n Elementen genau
n
2 Vergleiche.
Beweis:
Die Anzahl der Vergleiche (zwischen Schlüsseln bzw. Elementen
des Feldes A) zur Bestimmung des maximalen Schlüssels in A[1..i]
ist i − 1.
Damit ergibt sich die Laufzeit von SelectionSort zu
TSelectionSort =
n
X
i=2
Info IV
c
Ernst
W. Mayr
(i − 1) =
n−1
X
i=1
2.1 Selection-Sort
n(n − 1)
i=
=
2
n
.
2
254/388
2.2 Insertion-Sort
Sei eine Folge a1 , . . . , an von Schlüsseln gegeben, indem ai im
Element i eines Feldes A[1..n] abgespeichert ist.
Algorithmus InsertionSort
for i := 2 to n do
m := Rang (∈ [1..i]) von A[i] in {A[1], . . . , A[i − 1]}
a := A[i]
schiebe A[m..i − 1] um eine Position nach rechts
A[m] := a
od
Nach Beendigung von InsertionSort ist das Feld A aufsteigend
sortiert.
Info IV
c
Ernst
W. Mayr
2.2 Insertion-Sort
255/388
Der Rang von A[i] in {A[1], . . . , A[i − 1]} kann trivial mit i − 1
Vergleichen bestimmt werden. Damit ergibt sich
Satz 162
InsertionSort
benötigt zum Sortieren von n Elementen
n
maximal 2 Vergleiche.
Beweis:
Übungsaufgabe!
Info IV
c
Ernst
W. Mayr
2.2 Insertion-Sort
256/388
Die Rangbestimmung kann durch binäre Suche verbessert werden.
Dabei benötigen wir, um den Rang eines Elementes in einer
k-elementigen Menge zu bestimmen, höchstens
dlog2 (k + 1)e
Vergleiche, wie man durch Induktion leicht sieht.
Satz 163
InsertionSort mit binärer Suche für das Einsortieren benötigt
zum Sortieren von n Elementen maximal
n dld ne
Vergleiche.
Beweis:
Die Abschätzung ergibt sich durch einfaches Einsetzen.
Info IV
c
Ernst
W. Mayr
2.2 Insertion-Sort
257/388
Achtung: Die Laufzeit von InsertionSort ist dennoch auch bei
Verwendung von binärer Suche beim Einsortieren im schlechtesten
Fall Ω(n2 ), wegen der notwendigen Verschiebung der Feldelemente.
Verwendet man statt des Feldes eine doppelt verkettete Liste, so
wird zwar das Einsortieren vereinfacht, es kann jedoch die binäre
Suche nicht mehr effizient implementiert werden.
Info IV
c
Ernst
W. Mayr
2.2 Insertion-Sort
258/388
2.3 Merge-Sort
Sei wiederum eine Folge a1 , . . . , an von Schlüsseln im Feld A[1..n]
abgespeichert.
Algorithmus MergeSort
proc merge (r, s) co sortiere A[r..s]oc
if s ≤ r return
r+s fi
merge(r, 2 ); merge( r+s
+ 1, s)
2
verschmelze die beiden sortierten Teilfolgen
end
merge(1, n)
Info IV
c
Ernst
W. Mayr
2.3 Merge-Sort
259/388
Das Verschmelzen sortierter Teilfolgen A[r..m] und A[m + 1, s]
funktioniert wie folgt unter Benutzung eines Hilfsfeldes B[r, s]:
i := r; j := m + 1; k := r
while i ≤ m and j ≤ s do
if A[i] < A[j] then B[k] := A[i]; i := i + 1
else B[k] := A[j]; j := j + 1 fi
k := k + 1
od
if i ≤ m then kopiere A[i, m] nach B[k, s]
else kopiere A[j, s] nach B[k, s] fi
kopiere B[r, s] nach A[r, s] zurück
Nach Beendigung von MergeSort ist das Feld A aufsteigend
sortiert.
Info IV
c
Ernst
W. Mayr
2.3 Merge-Sort
260/388
Satz 164
MergeSort sortiert ein Feld der Länge n mit maximal n · dld(n)e
Vergleichen.
Beweis:
In jeder Rekursionstiefe werde der Vergleich dem kleineren Element
zugeschlagen. Dann erhält jedes Element pro Rekursionstiefe
höchstens einen Vergleich zugeschlagen.
Info IV
c
Ernst
W. Mayr
2.3 Merge-Sort
261/388
2.4 Quick-Sort
Beim Quick-Sort-Verfahren wird in jeder Phase ein Element p der
zu sortierenden Folge als Pivot-Element ausgewählt (wie dies
geschehen kann, wird noch diskutiert). Dann wird in situ und mit
einer linearen Anzahl von Vergleichen die zu sortierende Folge so
umgeordnet, dass zuerst alle Elemente < p, dann p selbst und
schließlich alle Elemente > p kommen. Die beiden Teilfolgen links
und rechts von p werden dann mit Quick-Sort rekursiv sortiert
(Quick-Sort ist also ein Divide-and-Conquer-Verfahren).
Quick-Sort benötigt im schlechtesten Fall, nämlich wenn als
Pivot-Element stets das kleinste oder größte der verbleibenden
Elemente ausgewählt wird,
n−1
X
n
(n − i) =
2
i=1
Vergleiche.
Info IV
c
Ernst
W. Mayr
2.4 Quick-Sort
262/388
Satz 165
QuickSort benötigt zum Sortieren eines Feldes der Länge n
durchschnittlich nur
2 ln(2) · n ld(n) + O(n)
viele Vergleiche.
Beweis:
Siehe Vorlesung Diskrete Strukturen II
Info IV
c
Ernst
W. Mayr
2.4 Quick-Sort
263/388
Entscheidend für die Laufzeit von Quick-Sort ist eine gute“ Wahl
”
des Pivotelements. U.a. werden folgende Varianten verwendet:
1
Nimm stets das letzte Element der (Teil-)Folge als
Pivotelement
Nachteil: sehr schlecht bei vorsortierten Arrays!
2
Median-of-3 Verfahren: Wähle den Median (das mittlere
Element) des ersten, mittleren und letzten Elements des
Arrays
Analyse Übungsaufgabe!
3
Wähle ein zufälliges Element als Pivotelement
liefert die o.a. durchschnittliche Laufzeit, benötigt aber einen
Zufallsgenerator.
Info IV
c
Ernst
W. Mayr
2.4 Quick-Sort
264/388
2.5 Heap-Sort
Definition 166
Ein Heap ist ein Binärbaum, an dessen Knoten Schlüssel
gespeichert sind, so dass gilt:
1
alle inneren Knoten bis auf maximal einen haben genau zwei
Kinder;
2
alle Knoten mit weniger als zwei Kindern (also insbesondere
die Blätter) befinden sich auf der untersten oder der
zweituntersten Schicht;
3
die unterste Schicht ist von links nach rechts aufgefüllt;
4
für jeden Knoten (mit Ausnahme der Wurzel) gilt, dass sein
Schlüssel kleiner ist als der seines Vaters (Heap-Bedingung).
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
265/388
Bemerkungen:
1
Die hier definierte Variante ist ein max-Heap.
2
Die Bezeichnung heap wird in der Algorithmentheorie auch
allgemeiner für Prioritätswarteschlangen benutzt!
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
266/388
Beispiel 167
9
8
5
7
3
Info IV
c
Ernst
W. Mayr
1
6
2
4
0
2.5 Heap-Sort
267/388
Der Algorithmus HeapSort besteht aus zwei Phasen.
1
In der ersten Phase wird aus der unsortierten Folge von n
Elementen ein Heap gemäß Definition aufgebaut.
2
In der zweiten Phase wird dieser Heap ausgegeben, d.h. ihm
wird n-mal jeweils das größte Element entnommen (das ja an
der Wurzel steht), dieses Element wird in die zu sortierende
Folge aufgenommen und die Heap-Eigenschaften wird wieder
hergestellt.
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
268/388
Betrachten wir nun zunächst den Algorithmus Reheap zur
Korrektur der Datenstruktur, falls die Heap-Bedingung höchstens
an der Wurzel verletzt ist.
Algorithmus Reheap
sei v die Wurzel des Heaps;
while Heap-Eigenschaft in v nicht erfüllt do
sei v 0 das Kind von v mit dem größeren Schlüssel
vertausche die Schlüssel in v und v 0
v := v 0
od
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
269/388
Zweite Phase von HeapSort
for i := n downto 1 do
sei r die Wurzel des Heaps
sei k der in r gespeicherte Schlüssel
A[i] := k
sei b das rechteste Blatt in der untersten Schicht des Heaps
kopiere den Schlüssel von b in die Wurzel r
entferne das Blatt b
Reheap
od
Nach Beendigung der zweiten Phase von HeapSort ist das Feld
A[1..n] aufsteigend sortiert.
Mit geeigneten (kleinen) Modifikationen kann HeapSort in situ
implementiert werden. Die Schichten des Heaps werden dabei von
oben nach unten und von links nach rechts im Feld A
abgespeichert.
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
270/388
In der ersten Phase von HeapSort müssen wir mit den
gegebenen n Schlüsseln einen Heap erzeugen.
Wir tun dies iterativ, indem wir aus zwei bereits erzeugten Heaps
und einem weiteren Schlüssel einen neuen Heap formen, indem wir
einen neuen Knoten erzeugen, der die Wurzel des neuen Heaps
wird. Diesem neuen Knoten ordnen wir zunächst den zusätzlichen
Schlüssel zu und und machen die beiden alten Heaps zu seinen
Unterbäumen. Damit ist die Heap-Bedingung höchstens an der
Wurzel des neuen Baums verletzt, was wir durch Ausführung der
Reheap-Operation korrigieren können.
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
271/388
Beispiel 168
[Initialisierung des Heaps]
3
3
6
5
8
2
1
0
6
9
4
7
5
8
7
0
2
9
8
9
2
7
0
Info IV
c
Ernst
W. Mayr
1
9
1
3
6
4
4
5
8
5
6
2
2.5 Heap-Sort
7
0
4
3
1
272/388
Lemma 169
Die Reheap-Operation erfordert höchstens O(Tiefe des Heaps)
Schritte.
Beweis:
Reheap führt pro Schicht des Heaps nur konstant viele Schritte
aus.
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
273/388
Lemma 170
Die Initialisierung des Heaps in der ersten Phase von HeapSort
benötigt nur O(n) Schritte.
Beweis:
Sei d die Tiefe (Anzahl der Schichten) des (n-elementigen) Heaps.
Die Anzahl der Knoten in Tiefe i ist ≤ 2i (die Wurzel habe Tiefe
0). Wenn ein solcher Knoten beim inkrementellen Aufbau des
Heaps als Wurzel hinzugefügt wird, erfordert die Reheap-Operation
≤ d − i Schritte, insgesamt werden also
≤
d−1
X
(d − i)2i = O(n)
i=0
Schritte benötigt.
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
274/388
Satz 171
HeapSort benötigt maximal O(n log n) Schritte.
Beweis:
In der zweiten Phase werden < n Reheap-Operationen auf Heaps
der Tiefe ≤ log n durchgeführt.
Bemerkung:
1
2
Eine genauere Analyse ergibt eine Schranke von
2n ld(n) + o(n).
Carlsson hat eine Variante von HeapSort beschrieben, die
mit n ld n + O(n log log n) Vergleichen auskommt:
Svante Carlsson:
A variant of heapsort with almost optimal number of
comparisons.
Inf. Process. Lett., 24(4):247–250, 1987
Info IV
c
Ernst
W. Mayr
2.5 Heap-Sort
275/388
2.6 Vergleichsbasierte Sortierverfahren
Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert,
d.h. sie greifen auf Schlüssel k, k 0 (außer in Zuweisungen) nur in
Vergleichsoperationen der Form k < k 0 zu, verwenden aber nicht,
dass etwa k ∈ N0 oder dass k ∈ Σ∗ .
Satz 172
Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case
mindestens
n ld n + O(n)
Vergleiche und hat damit Laufzeit Ω(n log n).
Info IV
c
Ernst
W. Mayr
2.6 Vergleichsbasierte Sortierverfahren
276/388
Beweis:
Wir benutzen ein so genanntes Gegenspielerargument (engl.
adversary argument). Soll der Algorithmus n Schlüssel sortieren,
legt der Gegenspieler den Wert eines jeden Schlüssels immer erst
dann fest, wenn der Algorithmus das erste Mal auf ihn in einem
Vergleich zugreift. Er bestimmt den Wert des Schlüssels so, dass
der Algorithmus möglichst viele Vergleiche durchführen muss.
Am Anfang (vor der ersten Vergleichsoperation des Algorithmus)
sind alle n! Sortierungen der Schlüssel möglich, da der Gegenspieler
jedem Schlüssel noch einen beliebigen Wert zuweisen kann.
Info IV
c
Ernst
W. Mayr
277/388
Beweis:
Seien nun induktiv vor einer Vergleichsoperation A[i] < A[j] des
Algorithmus noch r Sortierungen der Schlüssel möglich.
Falls der Gegenspieler die Werte der in A[i] bzw. A[j]
gespeicherten Schlüssel bereits früher festgelegt hat, ändert sich
die Anzahl der möglichen Sortierungen durch den Vergleich nicht,
dieser ist redundant.
Info IV
c
Ernst
W. Mayr
277/388
Beweis:
Andernfalls kann der Gegenspieler einen oder beide Schlüssel so
festlegen, dass immer noch mindestens r/2 Sortierungen möglich
sind (wir verwenden hier, dass die Schlüssel stets paarweise
verschieden sind).
Nach k Vergleichen des Algorithmus sind also immer noch n!/2k
Sortierungen möglich. Der Algorithmus muss jedoch Vergleiche
ausführen, bis nur noch eine Sortierung möglich ist (die dann die
Ausgabe des Sortieralgorithmus darstellt).
Damit
#Vergleiche ≥ dld(n!)e = n ld n + O(n)
mit Hilfe der Stirlingschen Approximation für n!.
Info IV
c
Ernst
W. Mayr
2.6 Vergleichsbasierte Sortierverfahren
277/388
Alternativer Beweis mit Hilfe des Entscheidungsbaums
Ein vergleichsbasierter Algorithmus kann auf die Werte der
Schlüssel nur durch Vergleiche k < k 0 zugreifen. Wenn wir
annehmen, dass alle Schlüssel paarweise verschieden sind, ergeben
zu jedem Zeitpunkt die vom Algorithmus erhaltenen binären
Antworten auf seine Anfragen der obigen Art an die
Schlüsselmenge seine gesamte Information über die (tatsächliche)
Ordnung der Schlüssel.
Am Ende eines jeden Ablaufs des Algorithmus muss diese
Information so sein, dass die tatsächliche Ordnung der Schlüssel
eindeutig festliegt, dass also nur eine Permutation der n zu
sortierenden Schlüssel mit der erhaltenen Folge von Binärantworten
konsistent ist.
Wir stellen alle möglichen Abläufe (d.h., Folgen von Vergleichen),
die sich bei der Eingabe von n Schlüsseln ergeben können, in
einem so genannten Entscheidungsbaum dar.
Info IV
c
Ernst
W. Mayr
2.6 Vergleichsbasierte Sortierverfahren
278/388
Entscheidungsbaum:
k < k0 ?
j
n
0
k0 < k0
?
n
0
k00 < k00
?
0
k0..0 < k0..0
?
0
k1 < k1
?
j
n
0
k01 < k01
?
0
k0..1 < k0..1
?
0
k10 < k10
?
Info IV
c
Ernst
W. Mayr
π0..1
0
k11 < k11
?
0
k1..0 < k1..0
?
n
π0..0
j
j
0
k1..0 < k1..0
?
0
k1..0 < k1..1
?
π1..0
π1..1
2.6 Vergleichsbasierte Sortierverfahren
279/388
Damit muss es für jede der n! Permutationen mindestens ein Blatt
in diesem Entscheidungsbaum geben. Da dieser ein Binärbaum ist,
folgt daraus:
Die Tiefe des Entscheidungsbaums (und damit die Anzahl der
vom Sortieralgorithmus benötigten Vergleiche im worst-case)
ist
≥ dld(n!)e = n ld n + O(n) .
Diese untere Schranke gilt sogar im Durchschnitt (über alle
Permutationen).
Info IV
c
Ernst
W. Mayr
2.6 Vergleichsbasierte Sortierverfahren
280/388
2.7 Bucket-Sort
Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier
können z.B. n Schlüssel aus
{0, 1, . . . , B − 1}d
in Zeit O(d(n + B)) sortiert werden, indem sie zuerst gemäß dem
letzten Zeichen auf B Behälter verteilt werden, die so entstandene
Teilsortierung dann stabil gemäß dem vorletzten Zeichen auf B
Behälter verteilt wird, usw. bis zur ersten Position. Das letzte
Zeichen eines jeden Schlüssels wird also als das niedrigwertigste
aufgefasst.
Bucket-Sort sortiert damit n Schlüssel aus {0, 1, . . . , B − 1}d in
Zeit O(nd), also linear in der Länge der Eingabe (gemessen als
Anzahl der Zeichen).
Info IV
c
Ernst
W. Mayr
2.7 Bucket-Sort
281/388
3. Suchverfahren
Es ist eine Menge von Datensätzen gegeben, wobei jeder
Datensatz Di durch einen eindeutigen Schlüssel ki gekennzeichnet
ist. Der Zugriff zu den Datensätzen erfolgt per Zeiger über die
zugeordneten Schlüssel, so dass wir uns nur mit der Verwaltung der
Schlüssel beschäftigen.
I. A. ist die Menge der Datensätze dynamisch, d.h. es können
Datensätze neu hinzukommen oder gelöscht werden, oder
Datensätze bzw. Schlüssel können geändert werden.
Info IV
c
Ernst
W. Mayr
3.0 Bucket-Sort
282/388
Definition 173
Ein Wörterbuch (engl. dictionary) ist eine Datenstruktur, die
folgende Operationen auf einer Menge von Schlüsseln effizient
unterstützt:
1
is member(k): teste, ob der Schlüssel k in der Schlüsselmenge
enthalten ist;
2
insert(k): füge den Schlüssel k zur Schlüsselmenge hinzu, falls
er noch nicht vorhanden ist;
3
delete(k): entferne den Schlüssel k aus der Schlüsselmenge,
falls er dort vorhanden ist.
Info IV
c
Ernst
W. Mayr
3.0 Bucket-Sort
283/388
Es gibt zwei grundsätzlich verschiedene Ansätze, um Wörterbücher
zu implementieren:
Suchbäume
Hashing (Streuspeicherverfahren)
Wir betrachten zuerst Suchbäume. Wir nehmen an, dass die
Schlüssel aus einer total geordneten Menge, dem Universum U
stammen.
Sind die Schlüssel nur in den Blättern des Suchbaums gespeichert,
sprechen wir von einem externen Suchbaum, ansonsten von einem
internen Suchbaum (wo dann der Einfachheit halber Schlüssel nur
in den internen Knoten gespeichert werden).
Info IV
c
Ernst
W. Mayr
3.0 Bucket-Sort
284/388
3.1 Binäre/natürliche Suchbäume
In binären Suchbäumen gilt für alle Knoten x
key(x) ist größer als der größte Schlüssel im linken
Unterbaum von x;
key(x) ist kleiner als der kleinste Schlüssel im rechten
Unterbaum von x.
Info IV
c
Ernst
W. Mayr
3.1 Binäre/natürliche Suchbäume
285/388
Die Wörterbuch-Operationen werden wie folgt realisiert:
1
2
3
is member(k): beginnend an der Wurzel des Suchbaums, wird der
gesuchte Schlüssel k mit dem am Knoten gespeicherten Schlüssel k 0
verglichen. Falls k < k 0 (k > k 0 ), wird im linken (rechten)
Unterbaum fortgefahren (falls der Unterbaum leer ist, ist der
Schlüssel nicht vorhanden), ansonsten ist der Schlüssel gefunden.
insert(k): es wird zuerst geprüft, ob k bereits im Suchbaum
gespeichert ist; falls ja, ist die Operation beendet, falls nein, liefert
die Suche die Position (den leeren Unterbaum), wo k hinzugefügt
wird.
delete(k): es wird zuerst geprüft, ob k im Suchbaum gespeichert ist;
falls nein, ist die Operation beendet, falls ja, sei x der Knoten, in
dem k gespeichert ist, und es sei x0 der linkste Knoten im rechten
Unterbaum von x (x0 ist nicht unbedingt ein Blatt!); dann wird
key(x0 ) im Knoten x gespeichert und x0 durch seinen rechten
Unterbaum ersetzt (falls vorhanden) bzw. gelöscht. Spezialfälle, wie
z.B., dass x0 nicht existiert, sind kanonisch zu behandeln.
Info IV
c
Ernst
W. Mayr
3.1 Binäre/natürliche Suchbäume
286/388
Beispiel 174
10
7
4
14
8
12
17
13
Der Schlüssel 13 wird hinzugefügt.
Info IV
c
Ernst
W. Mayr
3.1 Binäre/natürliche Suchbäume
287/388
Beispiel
Der Schlüssel 10 (also die Wurzel) wird gelöscht:
10
7
4
14
8
12
17
13
Info IV
c
Ernst
W. Mayr
288/388
Beispiel
Der Schlüssel 10 (also die Wurzel) wird gelöscht:
12
7
4
14
8
17
13
Info IV
c
Ernst
W. Mayr
3.1 Binäre/natürliche Suchbäume
288/388
Satz 175
In einem natürlichen Suchbaum der Höhe h benötigen die
Wörterbuch-Operationen jeweils Zeit O(h).
Beweis:
Folgt aus der obigen Konstruktion!
Bemerkung:
Das Problem bei natürlichen Suchbäumen ist, dass sie sehr
entartet sein können, z.B. bei n Schlüsseln eine Tiefe von n − 1
haben. Dies ergibt sich z.B., wenn die Schlüssel in aufsteigender
Reihenfolge eingefügt werden.
Info IV
c
Ernst
W. Mayr
3.1 Binäre/natürliche Suchbäume
289/388
3.2 AVL-Bäume
AVL-Bäume sind interne binäre Suchbäume, bei denen für jeden
Knoten gilt, dass sich die Höhe seiner beiden Unterbäume um
höchstens 1 unterscheidet. AVL-Bäume sind nach ihren Erfindern
G. Adelson-Velskii und Y. Landis (1962) benannt.
Satz 176
Ein AVL-Baum der Höhe h enthält mindestens Fh+3 − 1 und
höchstens 2h+1 − 1 Knoten, wobei Fn die n-te Fibonacci-Zahl
(F0 = 0, F1 = 1) und die Höhe die maximale Anzahl von Kanten
auf einem Pfad von der Wurzel zu einem Blatt ist.
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
290/388
Beweis:
Die obere Schranke ist klar, da ein Binärbaum der Höhe h
höchstens
h
X
2j = 2h+1 − 1
j=0
Knoten enthalten kann.
Info IV
c
Ernst
W. Mayr
291/388
Beweis:
Induktionsanfang:
1
ein AVL-Baum der Höhe h = 0 enthält mindestens einen
Knoten, 1 ≥ F3 − 1 = 2 − 1 = 1
2
ein AVL-Baum der Höhe h = 1 enthält mindestens zwei
Knoten, 2 ≥ F4 − 1 = 3 − 1 = 2
Info IV
c
Ernst
W. Mayr
291/388
Beweis:
Induktionsschluss: Ein AVL-Baum der Höhe h ≥ 2 mit minimaler
Knotenzahl hat als Unterbäume der Wurzel einen AVL-Baum der
Höhe h − 1 und einen der Höhe h − 2, jeweils mit minimaler
Knotenzahl. Sei
fh := 1 + minimale Knotenanzahl eines AVL-Baums der Höhe h .
Dann gilt demgemäß
f0 = 2
= F3
f1 = 3
= F4
fh − 1 = 1 + fh−1 − 1 + fh−2 − 1 ,
fh = fh−1 + fh−2
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
also
= Fh+3
291/388
Korollar 177
Die Höhe eines AVL-Baums mit n Knoten ist Θ(log n).
Satz 178
In einem AVL-Baum mit n Schlüsseln kann in Zeit O(log n)
festgestellt werden, ob sich ein gegebener Schlüssel in der
Schlüsselmenge befindet oder nicht.
Beweis:
Klar!
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
292/388
Beispiel 179 (Einfügen eines Knotens in AVL-Baum)
7
4
9
2
1
6
3
8
5
0
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
293/388
2. In diesem Schritt wird die Höhenbedingung wieder hergestellt. Es dürfte klar sein,
ZurdieWiederherstellung
benutzen
wireingefügten
so
dass
Höhenbedingung nurder
aufHöhenbedingung
dem Pfad von der Wurzel
zu dem
genannte
Rotationen
undverfolgen
Doppelrotationen.
Knoten
verletzt
sein kann. Wir
daher den Pfad von unten nach oben und
stellen die Höhenbedingung wieder her. Dazu nutzen wir sogenannte Rotationen.
Beispiel
(Rotation
um (x,umy))
Die
folgende180
Skizze
zeigt eine Rotation
x-y:
y b
@
@
@
x b
C
@
C
@
C
C
C
CC
C
C
C
C
C
AC
B C (y, +∞)
C
C
(−∞, x)
bx
@
@
@by
Rechtsrotation
Linksrotation
C
C
C
AC
C
(−∞, x)
(x, y)
C
C
C
BC
C
@
@
C
C
C
CC
C
(x, y)
(y, +∞)
Wie man unschwer erkennen kann wird durch diese Operation die Höhe der Teilbäume verändert. Sehen wir uns daher ein Beispiel an, wie man die Rotation zum
Wiederherstellen der Höhenbedingung verwenden kann:
Info IV
c
Ernst
W. Mayr
b x
HH
3.2 AVL-Bäume
H
y b
HH
294/388
H
C
(−∞, x)
C
(x, y)
C
(x, y)
C
(y, +∞)
Wie man unschwer
erkennen kann wird durch
Operation die Höhe der TeilBeispiel
181 (Wiederherstellung
der diese
Höhenbedingung)
bäume verändert. Sehen wir uns daher ein Beispiel an, wie man die Rotation zum
Wiederherstellen der Höhenbedingung verwenden kann:
b x
HH
y b
HH
HH
HH
Rotation
b y
x b
C 6
6 D
@
@
C
D
@
@
C h-1
D
h
C
C
C
6
D
6
6
6
C
C
C
C
D
D
A C ? h-1 C
C h-1
h-1 C
D
D h
(−∞, x)
C
C
C
C D
?
D
(y, +∞)
B C
A C
B C ?
?
D
?
(x, y)
(−∞, x)
(x, y)
C D ?
(y, +∞)
Während im Knoten y die Höhenbedingung nach dem Einfügen noch gilt, ist sie in
x verletzt. Nach der Rotation gilt die Höhenbedingung jedoch wieder. Die Höhe der
Teilbäume von y ist gleich der Höhe der Teilbäume von x vor dem Einfügen. Damit
ist die Höhenbedingung jetzt überall im Baum erfüllt.
Mitunter
muss man eine Doppelrotation
vornehmen, um den Baum zu rebalancieren.
Info IV
3.2 AVL-Bäume
295/388
c
Ernst
W. Mayr
(y, +∞)
Während im Knoten y die Höhenbedingung nach dem Einfügen noch gilt, ist sie in
x verletzt. Nach der Rotation gilt die Höhenbedingung jedoch wieder. Die Höhe der
Teilbäume182
von y(Doppelrotation
ist gleich der Höhe der Teilbäume
von x vor dem Einfügen. Damit
Beispiel
zur Rebalancierung)
ist die Höhenbedingung jetzt überall im Baum erfüllt.
Mitunter muss man eine Doppelrotation vornehmen, um den Baum zu rebalancieren.
h
b x
PPP
Pb z
6 D
y b
D
D
D 6
D
D
C 6
6 D
D h
C
D
D
C h-1 D
A D h D
?
D
(−∞, x)
D CC
C ? D D ?
D (z, +∞)
B D (y, z)
?
h
b y
PPP b
x b
z
@
@
@
@
6 D
D 6
6 D
C 6
C
D
D
D
C
D
D
D h
h
h-1
D
D CC
D
C ? D
D
D A D
B D (y, z)
D D ?
?
?
(−∞, x)
(x, y)
(z, +∞)
(x, y)
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
296/388
Zur Rebalancierung des AVL-Baums sind Rotationen und
Doppelrotationen nur entlang des Pfades zum eingefügten Knoten
erforderlich. Damit ergibt sich
Lemma 183
In einen AVL-Baum mit n Knoten kann ein neuer Schlüssel in Zeit
O(log n) eingefügt werden.
Ebenso kann man zeigen
Lemma 184
In einen AVL-Baum mit n Knoten kann ein im Baum vorhandener
Schlüssel in Zeit O(log n) gelöscht werden.
Damit
Satz 185
In einem AVL-Baum mit n Knoten kann jede
Wörterbuch-Operation in Zeit O(log n) ausgeführt werden.
Info IV
c
Ernst
W. Mayr
3.2 AVL-Bäume
297/388
7
Beispiel 186
4
9
2
1
6
3
8
5
0
4
2
1
0
Info IV
c
Ernst
W. Mayr
7
3
6
5
3.2 AVL-Bäume
9
8
298/388
Beispiel 187 (Rebalancierung mit Doppelrotation)
7
2
9
1
5
0
4
3
8
6
5
2
7
1
0
Info IV
c
Ernst
W. Mayr
4
3
6
9
8
3.2 AVL-Bäume
299/388
3.3 (a, b)-Bäume
Definition 188
Ein (a, b)-Baum ist ein externer Suchbaum, für den gilt:
1
alle Blätter haben die gleiche Tiefe
2
alle internen Knoten haben ≤ b Kinder
3
alle internen Knoten außer der Wurzel haben ≥ a, die Wurzel
hat ≥ 2 Kinder
4
b ≥ 2a − 1
5
in jedem internen Knoten sind jeweils die größten Schlüssel
seiner Unterbäume mit Ausnahme des letzten gespeichert
Info IV
c
Ernst
W. Mayr
3.3 (a, b)-Bäume
300/388
Beispiel 189
21·39
7·15
1·4
9
32
17
24
52·62
35
43·47
53·56 67
1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 62 67 71
Info IV
c
Ernst
W. Mayr
3.3 (a, b)-Bäume
301/388
Bemerkung:
(a, b)-Bäume mit b = 2a − 1 heißen auch B-Bäume. Diese wurden
erstmals in einer Arbeit von R. Bayer und E.M. McCreight im Jahr
1970 beschrieben. (2,3)-Bäume wurden von J. Hopcroft ebenfalls
1970 eingeführt.
Insert-Operation: Übersteigt durch eine Insert-Operation ein
Knoten die Anzahl der zulässigen Kinder, so wird er in zwei Knoten
geteilt.
Delete-Operation: Fällt durch eine Delete-Operation die Anzahl
der Kinder eines Knoten unter a, so wird ein Kind vom linken oder
rechten Geschwister des Knoten adoptiert.
Info IV
c
Ernst
W. Mayr
3.3 (a, b)-Bäume
302/388
Beispiel 190 (Füge 60“ in (2,3)-Baum ein)
”
21·39
7·15
1·4
9
32
17
24
52·62
35
43·47
53·56 67
1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 62 67 71
Info IV
c
Ernst
W. Mayr
303/388
Beispiel 190 (Füge 60“ in (2,3)-Baum ein)
”
21·39
7·15
1·4
9
32
17
24
52·62
35
43·47 53·56·60
67
1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71
Info IV
c
Ernst
W. Mayr
303/388
Beispiel 190 (Füge 60“ in (2,3)-Baum ein)
”
21·39
7·15
1·4
9
32
17
24
52·56·62
35
43·47
53
60 67
1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71
Info IV
c
Ernst
W. Mayr
303/388
Beispiel 190 (Füge 60“ in (2,3)-Baum ein)
”
39
21
56
7·15
1·4
9
32
17
24
52
35
43·47
62
53
60 67
1 4 7 9 15 17 21 24 32 35 39 43 47 52 53 56 60 62 67 71
Info IV
c
Ernst
W. Mayr
3.3 (a, b)-Bäume
303/388
Korollar 191
In einem (a, b)-Baum mit n gespeicherten Schlüsseln können die
Wörterbuchoperationen in Zeit O(loga n) durchgeführt werden.
Bemerkung: Die Wahl von a und b hängt wesentlich von der
Anwendung und der Größe des (a, b)-Baums ab.
Liegt der (a, b)-Baum im RAM, dann wählt man b klein, um
in jedem inneren Knoten den richtigen Unterbaum schnell zu
finden.
Andernfalls wählt man a groß. Der Baum hat dadurch nur
geringe Tiefe, seine oberen Schichten können im RAM
gehalten werden, und die Anzahl der Zugriffe auf den
Sekundärspeicher (Festplatte) ist klein.
Info IV
c
Ernst
W. Mayr
3.3 (a, b)-Bäume
304/388
4. Hashing
Hash- oder auch Streuspeicherverfahren sind dadurch
gekennzeichnet, dass jedem Schlüssel aus einem Universum U
durch eine (effizient berechenbare) Funktion h (die Hashfunktion)
eine Adresse ∈ {0, . . . , m − 1} zugeordnet wird. Der Schlüssel k
wird dann im Prinzip im Element A[h(k)] des m-elementigen
Feldes A[0..m − 1] gespeichert.
Im Idealfall sind dann die Wörterbuchoperationen effizient
ausführbar, bestimmt durch den Aufwand für die Berechnung von
h(k).
Info IV
c
Ernst
W. Mayr
4 Hashing
305/388
Da |U | m, kann h natürlich nicht injektiv sein, und es kommt
zu Kollisionen:
h(x) = h(y) für gewisse x 6= y .
Normalerweise sind wir nur an einer kleineren Teilmenge S ⊂ U
von Schlüsseln interessiert (|S| = n), und wir haben, der
Speichereffizienz halber, z.B.
m ∈ {n, . . . , 2n}
Selbst in diesem Fall sind Kollisionen jedoch zu erwarten, wie z.B.
das so genannte Geburtstagsparadoxon zeigt:
Info IV
c
Ernst
W. Mayr
4 Hashing
306/388
In einer Menge von mindestens 23 zufällig gewählten Personen gibt
es mit Wahrscheinlichkeit größer als 12 zwei Personen, die am
gleichen Tag des Jahres Geburtstag haben (Schaltjahre werden hier
nicht berücksichtigt).
Das Geburtstagsparadoxon ist äquivalent dazu, dass in einer
Hashtabelle der Größe 365, die mindestens 23 Einträge enthält,
wobei die Hashadressen sogar zufällig gewählt sind, bereits mit
einer Wahrscheinlichkeit von mehr als 12 eine Kollision vorkommt.
Info IV
c
Ernst
W. Mayr
4 Hashing
307/388
Satz 192
In einer Hashtabelle der Größe m mit n Einträgen tritt mit einer
Wahrscheinlichkeit von mindestens 1 − e−n(n−1)/(2m) mindestens
eine Kollision auf, wenn für jeden Schlüssel die Hashadresse
gleichverteilt ist.
Beweis:
Die Wahrscheinlichkeit, dass auch der i-te eingefügte Schlüssel
keine Kollision verursacht, ist
m − (i − 1)
.
m
Die Wahrscheinlichkeit, dass für alle n Schlüssel keine Kollision
eintritt, ist daher
!
n
n−1
X Y
i
m − (i − 1)
= exp
ln 1 −
Pr {keine Kollision} =
m
m
i=1
Info IV
c
Ernst
W. Mayr
i=0
308/388
Satz 192
In einer Hashtabelle der Größe m mit n Einträgen tritt mit einer
Wahrscheinlichkeit von mindestens 1 − e−n(n−1)/(2m) mindestens
eine Kollision auf, wenn für jeden Schlüssel die Hashadresse
gleichverteilt ist.
Beweis:
Da ln(1 + x) ≤ x für alle x ∈ R, folgt damit
!
n−1
X i
Pr {keine Kollision} = exp
ln 1 −
m
i=0
!
n−1
X i ≤ exp
−
m
i=0
n(n − 1)
.
= exp −
2m
Info IV
c
Ernst
W. Mayr
4 Hashing
308/388
Korollar 193
√
Hat eine Hashtabelle der Größe m mindestens ω( m) Einträge,
wobei für jeden Schlüssel die Hashadressen gleichverteilt sind, so
tritt mit Wahrscheinlichkeit 1 − o(1) eine Kollision auf.
Definition 194
Eine Hashfunktion h heißt ideal, wenn gilt
(∀i ∈ {0, . . . , m − 1}
X
k∈U
h(k)=i
Pr {k} =
1
,
m
wobei Pr {k} die Wahrscheinlichkeit ist, mit der der Schlüssel
k ∈ U vorkommt.
Info IV
c
Ernst
W. Mayr
4 Hashing
309/388
Beispiele für gebräuchliche Hashfunktionen:
1
Additionsmethode:
h(k) =
r X
(k mod 2αi ) div 2βi
!
mod m
i=0
für αi ≥ βi ∈ {0, . . . , `(|U |) − 1}
2
Multiplikationsmethode: Sei a ∈ (0, 1) eine Konstante.
h(k) = bm · (ka − bkac)c
Eine gute Wahl für a ist z.B.
√
5−1
1
a=
= ≈ 0, 618 . . . ,
2
ϕ
wobei ϕ =
Info IV
c
Ernst
W. Mayr
√
1+ 5
2
der Goldene Schnitt ist.
310/388
Beispiele für gebräuchliche Hashfunktionen:
3
Teilermethode:
h(k) = k mod m ,
wobei m keine Zweier- oder Zehnerpotenz und auch nicht von
der Form 2i − 1 sein sollte. Eine gute Wahl für m ist i.A. eine
Primzahl, die nicht in der Nähe einer Zweierpotenz liegt.
Info IV
c
Ernst
W. Mayr
4 Hashing
310/388
4.1 Kollisionsauflösung
Hashing durch Verkettung
In jedem Feldelement der Hashtabelle wird eine lineare Liste der
Schlüssel abgespeichert, die durch die Hashfunktion auf dieses
Feldelement abgebildet werden. Die Implementierung der
Operationen is member, insert und delete ist offensichtlich.
n
Sei α = m
der Füllgrad der Hashtabelle. Dann beträgt, bei
Gleichverteilung der Schlüssel, die Länge einer jeden der linearen
Listen im Erwartungswert α und der Zeitaufwand für die Suche
nach einem Schlüssel im
α
erfolgreichen Fall 1 +
2
erfolglosen Fall 1 + α
Für die Operationen insert und delete ist darüber hinaus lediglich
ein Zeitaufwand von O(1) erforderlich.
Info IV
c
Ernst
W. Mayr
311/388
Hashing durch Verkettung
In jedem Feldelement der Hashtabelle wird eine lineare Liste der
Schlüssel abgespeichert, die durch die Hashfunktion auf dieses
Feldelement abgebildet werden. Die Implementierung der
Operationen is member, insert und delete ist offensichtlich.
n
Sei α = m
der Füllgrad der Hashtabelle. Dann beträgt, bei
Gleichverteilung der Schlüssel, die Länge einer jeden der linearen
Listen im Erwartungswert α und der Zeitaufwand für die Suche
nach einem Schlüssel im
α
2
erfolglosen Fall 1 + α
erfolgreichen Fall 1 +
Hashing durch Verkettung (engl. chaining) ist ein Beispiel für ein
geschlossenes Hashverfahren.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
311/388
r
0
ha (x) fest, andernfalls gibt es auch hier m Möglichkeiten, a0 zu wählen.
sen von Kollisionen
Beispiel 195 (Hashing durch Verkettung)
ategien für die Auflösung von Kollisionen sind:
tten:
0
1
2
3
4
5
6
7
8
9
10
r
r
Alle Elemente, die
auf 0 abgebildet wurden.
r
res Sortieren: Idee: Wird ein Element x auf den i-ten Speicherplatz in M
bgebildet, so wird es dort gespeichert, falls der Platz noch nicht belegt ist.
Info IV
4.0 Kollisionsauflösung
312/388
Sonst wird
es im i + 1-ten Speicherplatz
gespeichert, falls dieser noch
frei ist,
c
Ernst W. Mayr
Lineare Sondierung
Man führt eine erweiterte Hashfunktion h(k, i) ein. Soll der
Schlüssel k neu in die Hashtabelle eingefügt werden, wird die Folge
h(k, 0), h(k, 1), h(k, 2), . . . durchlaufen, bis die erste freie Position
in der Tabelle gefunden wird.
Beim Verfahren des linearen Sondierens (engl. linear probing) ist
h(k, i) = (h(k) + i)
(mod m) .
Für den Zeitaufwand für die Suche nach einem Schlüssel kann man
zeigen im
1
1
1+
erfolgreichen Fall:
2
1−α
1
1
erfolglosen Fall:
1+
2
(1 − α)2
Info IV
c
Ernst
W. Mayr
313/388
Lineare Sondierung
Man führt eine erweiterte Hashfunktion h(k, i) ein. Soll der
Schlüssel k neu in die Hashtabelle eingefügt werden, wird die Folge
h(k, 0), h(k, 1), h(k, 2), . . . durchlaufen, bis die erste freie Position
in der Tabelle gefunden wird.
Beim Verfahren des linearen Sondierens (engl. linear probing) ist
h(k, i) = (h(k) + i)
(mod m) .
Die Implementierung von insert ist kanonisch, bei delete ist jedoch
Sorge zu tragen, dass keine der Sondierungsfolgen
h(k, 0), h(k, 1), h(k, 2), . . . unterbrochen wird. Oft werden
gelöschte Elemente daher nicht wirklich entfernt, sondern nur als
gelöscht markiert.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
313/388
Ein großes Problem der linearen Sondierung ist, dass sich durch
Kollisionen große zusammenhängende Bereiche von belegten
Positionen der Hashtabelle ergeben können, wodurch die Suchfolge
bei nachfolgenden Einfügungen sehr lang werden kann und auch
solche Bereiche immer mehr zusammenwachsen können. Dieses
Problem wird als primäre Häufung (engl. primary clustering)
bezeichnet.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
314/388
Lineares Sortieren: Idee: Wird ein Element x auf den i-ten Speicherplat
abgebildet, so wird es dort gespeichert, falls der Platz noch nicht be
Sonst wird es im i + 1-ten Speicherplatz gespeichert, falls dieser noch
Beispiel
196 (Lineare Sondierung)
andernfalls . . .
0
1
2
3
4
5
6
7
8
9
10
r
r
r
r





r
r
r
r





Überläufer der 0




Überläufer der 5




Faustregel: Diese Möglichkeit ist nur brauchbar, falls |M | |S|.
Doppeltes Hashen: h(k, i) = h1 (k) + i · h2 (k) mod m, wobei h1 und h
Info Hashfunktionen
IV
315/388
sind. 4.0 Kollisionsauflösung
c
Ernst
W. Mayr
Quadratische Sondierung
Beim Verfahren des quadratischen Sondierens (engl. quadratic
probing) ist
h(k, i) = (h(k) − (−1)i (di/2e2 ))
(mod m) .
Surjektivität der Folge h(k, 0), h(k, 1), h(k, 2), . . . kann garantiert
werden, wenn z.B. m prim und m ≡ 3 mod 4 ist. Für den
Zeitaufwand für die Suche nach einem Schlüssel kann man zeigen
im
1
α
erfolgreichen Fall: 1 − + ln
2
1−α
2
1
α
+ ln
erfolglosen Fall: 1 +
1−α
1−α
Für die Implementierung von delete gilt die gleiche Bemerkung wie
beim linearen Sondieren.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
316/388
Doppeltes Hashing
Beim Verfahren des doppelten Hashings (engl. double hashing) ist
h(k, i) = (h(k) + i · h0 (k))
(mod m) .
Dabei sollte h0 (k) für alle k teilerfremd zu m sein, z.B.
h0 (k) = 1 + (k mod (m − 1)) oder h0 (k) = 1 + (k mod (m − 2)).
Surjektivität der Folge h(k, 0), h(k, 1), h(k, 2), . . . kann dann
garantiert werden, wenn m prim ist. Für den Zeitaufwand für die
Suche nach einem Schlüssel kann man zeigen im
1
1
erfolgreichen Fall: ln
α
1−α
1
erfolglosen Fall:
1−α
Für die Implementierung von delete gilt die gleiche Bemerkung wie
beim linearen Sondieren.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
317/388
Bemerkung:
Hashing mit Kollisionsauflösung durch lineares oder quadratisches
Sondieren, wie auch doppeltes Hashing, sind Beispiele für so
genannte
offene Hashverfahren,
da die Schlüssel nicht unbedingt an ihrer (ersten) Hashadresse
abgespeichert werden.
Info IV
c
Ernst
W. Mayr
4.0 Kollisionsauflösung
318/388
Vergleiche für erfolgreiche Suche (abh. vom Füllgrad)
50
Lineare Sondierung
Quadratische Sondierung
Doppeltes Hashing
Verkettung
40
30
20
10
0
0
0.1
Info IV
c
Ernst
W. Mayr
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
319/388
Vergleiche für erfolglose Suche (abh. vom Füllgrad)
50
Lineare Sondierung
Quadratische Sondierung
Doppeltes Hashing
Verkettung
40
30
20
10
0
0
0.1
Info IV
c
Ernst
W. Mayr
0.2
0.3
0.4
0.5
4.0 Kollisionsauflösung
0.6
0.7
0.8
0.9
1
319/388
4.1 Universelle Hashfunktionen
Definition 197
Eine Menge H von Hashfunktionen heißt universell, falls gilt:
∀x, y ∈ U, x 6= y
|{h ∈ H; h(x) = h(y)}|
1
≤
|H|
m
|
{z
}
Pr{h(x)=h(y)}
Satz 198
Sei H eine universelle Familie von Hashfunktionen (für eine
Hashtabelle der Größe m, sei S ⊂ U eine feste Menge von
Schlüsseln mit |S| = n ≤ m, und sei h ∈ H eine zufällig gewählte
Hashfunktion (wobei alle Hashfunktionen ∈ H gleich
wahrscheinlich sind). Dann ist die erwartete Anzahl von Kollisionen
eines festen Schlüssels x ∈ S mit anderen Schlüsseln in S kleiner
als 1.
Info IV
c
Ernst
W. Mayr
4.1 Universelle Hashfunktionen
320/388
Beweis:
Es gilt
E[# Kollisionen mit x] =
X 1
n−1
=
< 1.
m
m
y∈S
y6=x
Sei nun m = p eine Primzahl. Dann ist Zp = {0, 1, . . . , p − 1} ein
Körper.
Wir betrachten im Folgenden U = {0, 1, . . . , p − 1}r+1 .
Info IV
c
Ernst
W. Mayr
4.1 Universelle Hashfunktionen
321/388
Sei die Familie H = {hα ; α ∈ U } von Hashfunktionen definiert
durch
!
r
X
αi · xi mod p
hα (x0 , . . . , xr ) =
i=0
Satz 199
H ist universell.
Info IV
c
Ernst
W. Mayr
4.1 Universelle Hashfunktionen
322/388
Beweis:
Sei x 6= y, o.B.d.A. x0 6= y0 . Dann gilt hα (x) = hα (y) gdw
α0 (y0 − x0 ) =
r
X
αi (xi − yi ) .
i=1
Für jede Wahl von (α1 , . . . , αr ) gibt es daher genau ein α0 , das zu
einer Kollision führt.
Es gilt daher
pr
1
1
|{h ∈ H; h(x) = h(y)}|
= r+1 = =
|H|
p
p
m
Info IV
c
Ernst
W. Mayr
4.1 Universelle Hashfunktionen
323/388
5. Vorrangwarteschlangen (priority queues)
Definition 200
Eine Vorrangwarteschlange (priority queue) ist eine Datenstruktur,
die die folgenden Operationen effizient unterstützt:
1
Insert
2
ExtractMin Extrahieren und Löschen des Elements mit dem
kleinsten Schlüssel
3
DecreaseKey Verkleinern eines Schlüssels
4
Union (meld) Vereinigung zweier (disjunkter) Priority Queues
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
324/388
Wir besprechen die Implementierung einer Vorrangwarteschlange
als Binomial Heap. Diese Implementierung ist (relativ) einfach,
aber asymptotisch bei weitem nicht so gut wie modernere
Datenstrukturen für Priority Queues, z.B. Fibonacci Heaps (die in
der weiterführenden Vorlesung EA1 besprochen werden).
Hier ist ein kurzer Vergleich der Zeitkomplexitäten:
Insert
ExtractMin
DecreaseKey
Union
Info IV
c
Ernst
W. Mayr
BinHeap
O(log n)
O(log n)
O(log n)
O(log n)
worst case
FibHeap
O(1)
O(log n)
O(1)
O(1)
amortisiert
5 Vorrangwarteschlangen (priority queues)
325/388
Definition 201
Der Binomialbaum B0 besteht aus genau einem Knoten.
Den Binomialbaum Bk , k ≥ 1, erhält man, indem man die
Wurzel eines Bk−1 zu einem zusätzlichen Kind der Wurzel
eines zweiten Bk−1 macht.
B0
Info IV
c
Ernst
W. Mayr
B1
B2
5 Vorrangwarteschlangen (priority queues)
B3
326/388
Rekursiver Aufbau des Binomialbaums Bk
(rekursive Verfolgung des rechten Zweigs)
Bk
Bk
Bk−1
...
Bk−1
Info IV
c
Ernst
W. Mayr
Bk−1 Bk−2
5 Vorrangwarteschlangen (priority queues)
B2
B1
B0
327/388
Rekursiver Aufbau des Binomialbaums Bk
(rekursive Verfolgung des linken Zweigs)
Bk
Bk
Bk−1
Bk−2
Bk−1
Bk−1
Info IV
c
Ernst
W. Mayr
B0
B0
B1
5 Vorrangwarteschlangen (priority queues)
328/388
Satz 202
Für den Binomialbaum Bk , k ≥ 0, gilt:
1
2
3
er hat Höhe k und enthält 2k Knoten;
er enthält genau ki Knoten der Tiefe i, für alle
i ∈ {0, . . . , k};
seine Wurzel hat k Kinder, alle anderen Knoten haben < k
Kinder.
Beweis:
Der Beweis ergibt sich sofort aus dem rekursiven Aufbau des Bk
und der Rekursionsformel
k
k−1
k−1
=
+
i
i
i−1
für Binomialkoeffizienten.
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
329/388
Definition 203
Ein Binomial Heap ist eine Menge H von Binomialbäumen, wobei
jedem Knoten v ein Schlüssel key(v) zugeordnet ist, so dass
folgende Eigenschaften gelten:
1
jeder Binomialbaum ∈ H erfüllt die Heap-Bedingung und ist
ein min-Heap:
(∀ Knoten v, w)[v Vater von w ⇒ key(v) ≤ key(w)]
2
H enthält für jedes k ∈ N0 höchstens einen Bk
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
330/388
Für jeden Binomial Heap H gilt also
1
Enthält H n Schlüssel, n ∈ N, so besteht H höchstens aus
max{1, dld ne} Binomialbäumen.
2
In jedem von H’s Binomialbäumen ist ein kleinster Schlüssel
an der Wurzel gespeichert; verlinkt man daher die Wurzeln
aller Binomialbäume von H in einer zirkulären Liste, kann ein
minimaler Schlüssel in H durch einfaches Durchlaufen dieser
Liste gefunden werden.
Korollar 204
In einem Binomial Heap mit n Schlüsseln benötigt FindMin Zeit
O(log n).
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
331/388
Wir betrachten nun die Realisierung der Union-Operation. Hierbei
wird vorausgesetzt, dass die Objektmengen, zu denen die Schlüssel
in den beiden zu verschmelzenden Binomial Heaps H1 und H2
gehören, disjunkt sind. Es ist jedoch durchaus möglich, dass der
gleiche Schlüssel für mehrere Objekte vorkommt.
1. Fall H1 und H2 enthalten jeweils nur einen Binomialbaum Bk
(mit dem gleichen Index k):
In diesem Fall fügen wir den Bk , dessen Wurzel den größeren
Schlüssel hat, als neuen Unterbaum der Wurzel des anderen Bk
ein, gemäß der rekursiven Struktur der Binomialbäume. Es entsteht
ein Bk+1 , für den per Konstruktion weiterhin die Heap-Bedingung
erfüllt ist.
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
332/388
2. Fall Sonst. Sei H1 = {Bi1 ; i ∈ I1 ⊂ N0 } und sei
H2 = {Bi2 ; i ∈ I2 ⊂ N0 }.
Wir durchlaufen dann alle Indizes k ∈ [0, max{I1 ∪ I2 }] in
aufsteigender Reihenfolge und führen folgende Schritte durch:
1 falls kein Binomialbaum mit Index k vorhanden ist: noop
2 falls genau ein Binomialbaum mit Index k vorhanden ist, wird
dieser in den verschmolzenen Binomial Heap übernommen
3 falls genau zwei Binomialbäume mit Index k vorhanden sind,
werden diese gemäß dem 1. Fall verschmolzen; der
entstehende Bk+1 wird im nächsten Schleifendurchlauf wieder
betrachtet. Dadurch kann auch der folgende Fall eintreten!
4 falls genau drei Binomialbäume mit Index k vorhanden sind,
wird einer davon in den verschmolzenen Binomial Heap
übernommen; die beiden anderen werden gemäß dem 1. Fall
verschmolzen; der entstehende Bk+1 wird im nächsten
Schleifendurchlauf wieder betrachtet.
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
333/388
Man beachte, dass nie mehr als 3 Binomialbäume mit gleichem
Index auftreten können!
Bemerkung:
Es besteht eine einfache Analogie zur Addition zweier Binärzahlen,
wobei das Verschmelzen zweier gleich großer Binomialbäume dem
Auftreten eines Übertrags entspricht!
Lemma 205
Die Union-Operation zweier Binomial Heaps mit zusammen n
Schlüsseln kann in Zeit O(log n) durchgeführt werden.
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
334/388
Die Operation Insert(H, k):
1
2
erzeuge einen neuen Binomial Heap H0 = {B0 } mit k als
einzigem Schlüssel
H := Union(H, H0 )
Falls H n Schlüssel enthält, beträgt die Laufzeit der
Insert-Operation offensichtlich O(log n).
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
335/388
Die Operation ExtractMin(H):
1
durchlaufe die Liste der Wurzeln der Binomialbäume in H und
finde den/einen Baum mit minimaler Wurzel
2
gib den Schlüssel dieser Wurzel zurück
3
entferne diesen Binomialbaum aus H
4
5
erzeuge einen neuen Binomial Heap H0 aus den Unterbäumen
der Wurzel dieses Baums
H := Union(H, H0 )
Falls H n Schlüssel enthält, beträgt die Laufzeit der
ExtractMin-Operation offensichtlich O(log n).
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
336/388
Die Operation DecreaseKey(H, v, k) (diese Operation ersetzt, falls
k < key(v), key(v) durch k):
1
sei Bi der Binomialbaum in H, der den Knoten v enthält
2
falls k < key(v), ersetze key(v) durch k
3
stelle, falls nötig, die Heap-Bedingung auf dem Pfad von v zur
Wurzel von Bi wieder her, indem, solange nötig, der Schlüssel
eines Knotens mit dem seines Vaters ausgetauscht wird
Falls H n Schlüssel enthält, beträgt die Laufzeit der
DecreaseKey-Operation offensichtlich O(log n).
Info IV
c
Ernst
W. Mayr
5 Vorrangwarteschlangen (priority queues)
337/388
6. Mengendarstellungen — Union-Find-Strukturen
Gegeben ist eine (endliche) Menge S von Objekten, die in Klassen
Xi partitioniert ist:
S = X1 ] X2 ] . . . ] Xl
Für jede Klasse Xi gibt es dabei einen Repräsentanten ri ∈ Xi .
Es wird eine Datenstruktur gesucht, die die folgenden Operationen
effizient unterstützt:
1 Init(S): jedes Element ∈ S bildet eine eigene Klasse mit sich
selbst als Repräsentant
2 Union(r, s): vereinige die beiden Klassen mit r bzw. s als
Repräsentanten, wähle r als Repräsentant der neuen Klasse
(die beiden alten Klassen verschwinden)
3 Find(x): bestimme zu x ∈ S den Repräsentanten der
eindeutigen aktuellen Klasse, die x enthält
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
338/388
Eine entsprechende Datenstruktur nennt man auch
Union-Find-Struktur.
Eine triviale Implementierung, in der zu jedem Element aus S sein
Repräsentant (bzw. ein Verweis darauf) gespeichert wird, benötigt
im worst case Laufzeit Ω(|S|) für die Union-Operation.
Um logarithmische Laufzeit zu erreichen, realisieren wir die
Datenstruktur als Vereinigung von zur Wurzel hin gerichteten
Bäumen. Dabei bilden die Repräsentanten die Wurzeln und die
restlichen Elemente der Klasse die restlichen Knoten.
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
339/388
Beispiel 206
c
d
Info IV
c
Ernst
W. Mayr
b
a
g
h
e
6 Mengendarstellungen — Union-Find-Strukturen
f
340/388
Die Operationen Find und Union werden wie folgt implementiert:
Find(x) verfolge von x aus den Pfad zur Wurzel und gib diese
aus; die worst-case Laufzeit ist proportional zur
maximalen Höhe eines Baums in der
Union-Find-Struktur.
Union(r, s) hänge die Wurzel des niedrigeren Baums als neues
Kind der Wurzel des anderen Baums ein; vertausche
notfalls r und s, damit r an der Wurzel des neuen
Baums zu liegen kommt.
Wir nennen die bei der Union-Operation verfolgte Strategie
gewichtete Vereinigung. Um sie effizient implementieren zu
können, wird für jeden Baum der Union-Find-Struktur seine Höhe
mitgeführt.
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
341/388
Lemma 207
Sei T ein Baum einer Union-Find-Struktur mit gewichteter
Vereinigung. Dann gilt für seine Höhe h(T )
h(T ) ≤ ld(|T |) ,
wobei |T | die Anzahl der Knoten in T bezeichnet.
Beweis:
Beweis durch Induktion über die Höhe.
Induktionsanfang: Für Bäume der Höhe 0 oder 1 stimmt die
Behauptung.
Info IV
c
Ernst
W. Mayr
342/388
Lemma 207
Sei T ein Baum einer Union-Find-Struktur mit gewichteter
Vereinigung. Dann gilt für seine Höhe h(T )
h(T ) ≤ ld(|T |) ,
wobei |T | die Anzahl der Knoten in T bezeichnet.
Beweis:
Induktionsschluss: Sei o.B.d.A. h(Tr ) ≥ h(Ts ). Ist h(Tr ) > h(Ts ),
so ist die neue Höhe = h(Tr ) und die Behauptung erfüllt.
Ist h(Tr ) = h(Ts ), so ist die neue Höhe = h(Tr ) + 1, und es gilt:
ld(|Tr | + |Ts |) ≥ ld(2 min{|Tr |, |Ts |})
= 1 + ld(min{|Tr |, |Ts |})
≥ 1 + h(Ts )
Info IV
c
Ernst
W. Mayr
gemäß I.A.
6 Mengendarstellungen — Union-Find-Strukturen
342/388
Satz 208
In einer Union-Find-Datenstruktur mit gewichteter Vereinigung
lässt sich die Union-Operation in Zeit O(1), die Find-Operation in
Zeit O(log n) durchführen.
Beweis:
Die Kosten der Find-Operation sind durch die Tiefe der Bäume
beschränkt.
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
343/388
Bei einer Operation Find(x) durchlaufen wir im zu x gehörigen
Baum den Pfad von x zur Wurzel r. Nach Erreichen von r können
wir alle Kanten auf diesem Pfad direkt auf r umlenken und damit
zukünftige Find-Operationen beschleunigen.
Bemerkung: Eine andere Variante ist, für jeden Knoten y auf
diesem Pfad die Kante von y zu seinem Vater auf seinen Großvater
umzulenken. Dadurch wird der Pfad i.W. durch zwei Pfade der
halben Länge ersetzt, die Umsetzung kann jedoch bereits beim
Durchlaufen des Pfades von x aus zu r erfolgen.
Strategien wie die gerade beschriebenen zur Verkürzung von
Find-Suchpfaden nennt man Pfadkompression (engl. path
compression).
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
344/388
Satz 209
Union-Find mit Pfadkompression (und ohne gewichtete
Vereinigung) erfordert Zeit Θ(log n) pro Operation im
worst-case.
Union-Find mit gewichteter Vereinigung und mit
Pfadkompression benötigt für eine (beliebige) Folge von m
Union- und Find-Operationen Zeit O(m log∗ n).
Union-Find mit gewichteter Vereinigung und mit
Pfadkompression benötigt für eine (beliebige) Folge von m
Union- und Find-Operationen Zeit O(m · α(m, n)). Dabei ist
α(m, n) eine Inverse der Ackermannfunktion, definiert durch
j m k
α(m, n) := min{i; A i,
≥ ld n}
n
Beweis:
Ohne Beweis.
Info IV
c
Ernst
W. Mayr
6 Mengendarstellungen — Union-Find-Strukturen
345/388
7. Graphenalgorithmen
7.1 Kürzeste Pfade
Gegeben: Digraph G = (V, A), |V | = n, |A| = m, mit einer
Längenfunktion d : A → Q+ , sowie ein Startknoten s ∈ V .
Gesucht: für alle t ∈ V \ {s} die Entfernung (bzw. ein kürzester
Pfad) von s nach t.
Im Folgenden bezeichne für einen Knoten v ∈ V Γ+ (v) die von v
aus mittels einer Kante erreichbare Nachbarschaft von v:
Γ+ (v) = {w ∈ V ; (v, w) ∈ A}
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
346/388
Der Algorithmus Dijkstra(G, d, s):
W := {s}
for all v ∈ V do 

falls v = s
0
ρ[v]
:=
d(s, v) falls v ∈ Γ+ (s)


sonst
(∞
pred[v]
:=
s
falls v ∈ Γ+ (s)
nil sonst
while W 6= V do
bestimme x0 ∈ V \ W so, dass ρ[x0 ] = min{ρ[v]; v ∈ V \ W }
W := W ∪ {x0 }
for all v ∈ Γ+ (x0 ) ∩ (V \ W ) do
if ρ[v] > ρ[x0 ] + d(x0 , v) then
ρ[v] := ρ[x0 ] + d(x0 , v); pred[v] := x0
return ρ, pred
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
347/388
Satz 210
Der Algorithmus Dijkstra bestimmt, für s und für alle t ∈ V ,
einen kürzesten Pfad bzw. die Länge eines solchen von s nach t.
Bemerkung:
Wir nennen das entsprechende algorithmische Problem das single
source shortest path Problem (sssp).
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
348/388
Beweis:
Wir zeigen folgende Invarianten:
1
∀v ∈ W :
ρ[v] = Länge eines kürzesten Pfades von s nach v
2
∀v ∈ V \ W :
ρ[v] = Länge eines kürzesten Pfades von s nach v, der als
innere Knoten nur solche aus W enthält
3
die im Feld pred gespeicherten Verweise liefern jeweils die
genannten Pfade
Induktionsanfang: Die Invarianten sind durch die im Algorithmus
erfolgte Initialisierung gewährleistet.
Info IV
c
Ernst
W. Mayr
349/388
EN
Beweis:
Induktionsschritt: Betrachte den Schleifendurchlauf mit
W := W ∪ {x0 }.
Es ist gemäß I.A. ρ[x0 ] gleich der Länge eines kürzesten Pfades
von s nach x0 , der als innere Knoten nur solche aus (dem alten)
W enthält.
Angenommen,
85 es gäbe einen kürzeren
Pfad P 0 . Sei y 6= x0 der erste Knoten
auf P 0 außerhalb W . Dann gilt nach
W
Wahl von x0 : ρ[y] ≥ ρ[x0 ], also
Länge(P 0 ) ≥ ρ[y] ≥ ρ[x0 ] = Länge(P ) ,
P
und damit Widerspruch!
sr
pred[x0 ]
r
r
y
r x0
P
0
Wir verwenden hier essentiell, dass
d ≥ 0. Die beiden anderen Invarianten
sind damit klar.
bt doch einen anderen, kürzeren s − x0 Pfad P 0 . Dann
mindestens einen Knoten enthalten, der außerhalb von W
Info IV
7.1 Kürzeste Pfade
0
erste Knoten
auf
c
Ernst
W. P
Mayraußerhalb von W .
349/388
Eine naive Implementierung von Dijkstra’s Algorithmus (mit ρ als
Array) ergibt eine Laufzeit O(n2 ).
Implementiert man dagegen ρ als Priority Queue (wobei jedes
v ∈ V mit dem Schlüssel ρ[v] eingetragen wird), so ergibt sich
Satz 211
Für die Laufzeit des Dijkstra-Algorithmus für das
Single-Source-Shortest-Path-Problem gilt:
# Aufrufe
Insert
ExtractMin
DecreaseKey
Insgesamt
Info IV
c
Ernst
W. Mayr
n
n−1
≤m
Kosten pro Aufruf
BinHeaps
FibHeaps
O(log n)
O(1)
O(log n)
O(log n)
O(log n)
O(1)
O((n + m) log n) O(m + n log n)
7.1 Kürzeste Pfade
350/388
Gegeben: Digraph G = (V, A), V = {v1 , . . . , vn }, |A| = m, mit
einer Längenfunktion d : A → Q+ .
Gesucht: für alle s, t ∈ V die Entfernung (bzw. ein kürzester Pfad)
von s nach t.
Bemerkung:
Wir nennen das entsprechende algorithmische Problem das all pairs
shortest path Problem (apsp).
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
351/388
Der Algorithmus Floyd-Warshall(G, d):
for all i, j ∈ {1, . . 
. , n} do

falls i = j
0
0
D [i, j] :=
d(vi , vj ) falls (vi , vj ) ∈ A


∞
sonst
for k = 1 to n do
∀i, j: Dk [i, j] := min{Dk−1 [i, j], Dk−1 [i, k] + Dk−1 [k, j]}
return Dn
Satz 212
Der Floyd-Warshall-Algorithmus berechnet in Zeit O(n3 ) die
kürzeste Entfernung für alle s, t ∈ V .
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
352/388
Beweis:
Es ist leicht zu sehen, dass Dk [i, j] die Länge eines kürzesten
Pfades von vi nach vj ist, der als innere Knoten nur solche
∈ {v1 , . . . , vk } benützt (i und j selbst können > k sein).
Damit ergibt sich die Korrektheit des Algorithmus durch Induktion.
Die Schranke für die Laufzeit ist offensichtlich.
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
353/388
Bemerkungen
1
Der Floyd-Warshall-Algorithmus funktioniert auch mit
negativen Kantenlängen, solange der Graph keine Kreise
negativer Länge enthält (im letzteren Fall ist der kürzeste
Abstand nicht überall wohldefiniert, sondern wird −∞). Das
Vorhandensein negativer Kreise kann an den Werten der
Diagonale von Dn erkannt werden.
2
Man beachte die Ähnlichkeit des Algorithmus zum
Algorithmus für die Konstruktion eines regulären Ausdrucks
zu einem gegebenen endlichen Automaten.
3
Für ungerichtete Graphen mit trivialer Längenfunktion (also
Kantenlänge = 1) liefert Breitensuche eine effizientere
Methode!
Info IV
c
Ernst
W. Mayr
7.1 Kürzeste Pfade
354/388
7.2 Transitive Hülle
Gegeben: Digraph G = (V, A), |V | = n, |A| = m.
Gesucht: die transitive Hülle G∗ = (V, A∗ ) von G, wobei gilt:
A∗ = {(v, w) ∈ V × V ; es gibt in G einen Pfad von v nach w}
Bemerkungen
1
Für Digraphen kann der Floyd-Warshall-Algorithmus benutzt
werden. Die Kante (v, w) ist in A∗ gdw die Entfernung von v
nach w endlich ist.
2
Für die Transitive Hülle gibt es effizientere Algorithmen, die in
der Vorlesung EA besprochen werden.
3
In ungerichteten Graphen entspricht die Berechnung der
Transitiven Hülle der Bestimmung der
Zusammenhangskomponenten.
Info IV
c
Ernst
W. Mayr
7.2 Transitive Hülle
355/388
7.3 Minimale Spannbäume
Sei G = (V, E) ein zusammenhängender, ungerichteter Graph mit
einer Gewichtsfunktion w : E → Q+ . Das Gewicht P
eines
Teilgraphen G0 = (V 0 , E 0 ) von G ist dann w(G0 ) = e∈E 0 w(e).
Definition 213
Ein minimaler Spannbaum von G = (V, E) ist ein Spannbaum von
G (also ein Baum (V, E 0 ) mit E 0 ⊆ E) mit minimalem Gewicht
unter allen Spannbäumen von G.
Anwendungen: Verdrahtungs- und Routingprobleme,
Zuverlässigkeit von Netzwerken
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
356/388
Lemma 214 (rote Regel)
Sei G = (V, E), e ∈ E schwerste Kante auf einem Kreis C in G.
Dann gibt es einen minimalen Spannbaum von G, der e nicht
enthält (d.h. dann ist jeder minimale Spannbaum von G − e auch
minimaler Spannbaum von G). Ist e die einzige schwerste Kante
auf einem Kreis C in G, dann ist e in keinem minimalen
Spannbaum von G enthalten.
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
357/388
Beweis:
Sei e schwerste Kante in C, und sei M ein minimaler Spannbaum
von G, der e enthält. Durch Entfernen von e zerfällt M in zwei
Teilbäume, die, da C ein Kreis ist, durch eine geeignete Kante
f 6= e aus C wieder verbunden werden können. Der dadurch
entstehende Spannbaum M 0 von G enthält e nicht und hat das
Gewicht
w(M 0 ) = w(M ) − w(e) + w(f ) .
Falls e einzige schwerste Kante in C ist, wäre w(M 0 ) < w(M ) im
Widerspruch zur Tatsache, dass M minimaler Spannbaum von G
ist.
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
358/388
Der Algorithmus Kruskal(V, E, w):
sortiere E aufsteigend: w(e1 ) ≤ w(e2 ) ≤ . . . ≤ w(em )
initialisiere Union-Find-Struktur für V
T := ∅
for i = 1 to m do
bestimme die Endpunkte v und w von ei
if Find(v) 6= Find(w) then
T := T ∪ {ei }
Union(Find(v),Find(w))
return T
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
359/388
Satz 215
Kruskal’s Algorithmus bestimmt einen minimalen Spannbaum des
zusammenhängenden Graphen G = (V, E) in Zeit O(m log n).
Beweis:
Find(v) = Find(w) gdw die Kante (v, w) schwerste Kante auf
einem Kreis in G ist. Die Korrektheit des Algorithmus folgt damit
aus dem vorigen Lemma.
Die Laufzeit für das Sortieren beträgt O(m log n) (m ≥ n − 1, da
G zusammenhängend). Bei geeigneter Implementierung
(gewichtete Vereinigung) ist die Zeitkomplexität jeder
Find-Operation O(log n).
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
360/388
Lemma 216 (blaue Regel)
Sei G = (V, E), (W, V \ W ) ein Schnitt von G (d.h. ∅ =
6 W 6= V ).
Sei ferner e eine leichteste Kante ∈ W × (V \ W ) ∩ E. Dann gibt
es einen minimalen Spannbaum von G, der e enthält. Ist e die
einzige leichteste Kante in dem Schnitt, dann ist e in jedem
minimalen Spannbaum von G enthalten.
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
361/388
Beweis:
Sei (W, V \ W ) ein Schnitt in G und e leichteste Kante in diesem
Schnitt. Sei ferner M ein minimaler Spannbaum von G, der e nicht
enthält. Durch Hinzufügen von e zu M entsteht (genau) ein Kreis,
der, da M ein Spannbaum ist, mindestens eine weitere Kante f
aus dem Schnitt (W, V \ W ) enthält. Entfernt man nun f , so
entsteht wieder ein Spannbaum M 0 , mit dem Gewicht
w(M 0 ) = w(M ) − w(f ) + w(e) .
Falls e einzige leichteste Kante im Schnitt ist, wäre
w(M 0 ) < w(M ) im Widerspruch zur Tatsache, dass M minimaler
Spannbaum von G ist.
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
362/388
Der Algorithmus Prim(V, E, w):
W := {s} für ein beliebiges s ∈ V ; T := ∅
initialisiere Priority-Queue-Struktur R für V , Schlüssel ρ(v) von
v gleich


falls v = s
0
ρ(v)
:=
d(s, v) falls v ∈ Γ(s)


sonst
(∞
pred[v]
:=
s
falls v ∈ Γ(s)
nil sonst
while W 6= V do
x := ExtractMin(R)
W := W ∪ {x}; T := T ∪ {x, pred[x]}
for all v ∈ Γ(x) ∩ (V \ W ) do
if ρ(v) > w(x, v) then
DecreaseKey(R, v, w(x, v)); pred[v] := x
return T
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
363/388
Satz 217
Prim’s Algorithmus bestimmt einen minimalen Spannbaum des
zusammenhängenden Graphen G = (V, E) in Zeit O(m + n log n)
(bei Verwendung von Fibonacci-Heaps).
Beweis:
Betrachte in jeder Iteration den Schnitt (W, V \ W ). Die
Korrektheit des Algorithmus folgt damit aus dem vorigen Lemma.
Der Algorithmus benötigt i.W. ≤ m DecreaseKey-Operationen und
n − 1 ExtractMin-Operationen einer Priority-Queue. Damit ergibt
sich die behauptete Zeitkomplexität.
Info IV
c
Ernst
W. Mayr
7.3 Minimale Spannbäume
364/388
Kapitel IV Komplexitätstheorie
1. Definitionen
Definition 218
Sei M eine deterministische Turingmaschine und Σ = {0, 1}.
1
2
3
TIMEM (x) := Anzahl der Schritte, die M bei Eingabe x ∈ Σ∗
durchführt
DTIME(f ) := Menge aller Sprachen, für die es eine
deterministische Mehrband-Turingmaschine M gibt mit
TIMEM (x) ≤ f (|x|) für alle x ∈ Σ∗
[
P=
DTIME(p)
p Polynom
P ist die Menge der polynomiell lösbaren Probleme, es wird
allgemein mit der Klasse der effizient lösbaren Probleme
gleichgesetzt.
Info IV
c
Ernst
W. Mayr
1 Definitionen
365/388
Beispiel 219 (Probleme in P)
2-COLORING: Gegeben ein Graph G = (V, E), ist χ(G) ≤ 2?
2-COLORING ∈ P, da χ(G) ≤ 2 gdw G bipartit.
Shortest-Distance: Gegeben ein gewichteter Digraph
G = (V, E, d), s, t ∈ V und eine Zahl D, ist die Entfernung
von s nach t in G ≤ D?
Die Frage kann z.B. mit Dijkstra’s Algorithmus in
polynomieller Zeit entschieden werden.
Maximaler Fluss: Gegeben ein gewichteter Digraph
G = (V, E, c) und s, t ∈ V (c wird als Kapazität interpretiert),
was ist der maximale Fluss von s nach t?
Dafür gibt es zahlreiche (auf dem max-flow-min-cut Prinzip
basierende) polynomielle Algorithmen.
...
Info IV
c
Ernst
W. Mayr
1 Definitionen
366/388
Definition 220
Sei N eine nichtdeterministische Turingmaschine. Dann
1


minimale Anzahl der




Schritte, die N benötigt,
falls x ∈ L(N )
TIMEN (x) := um x ∈ Σ∗ zu akzeptieren






0
sonst
2
NTIME(f ) := Menge aller Sprachen, für die es eine
nichtdeterministische Mehrband-Turingmaschine N gibt mit
TIMEN (x) ≤ f (|x|) für alle x ∈ Σ∗
3
NP =
[
NTIME(p)
p Polynom
Info IV
c
Ernst
W. Mayr
1 Definitionen
367/388
Man beachte, da wir bei nichtdeterministischen Maschinen i.W. an
akzeptierenden Berechnungen interessiert sind, die etwas
ungewöhnliche Festlegung für x 6∈ L(N ).
Eine alternative Definition für N P ist
Definition 221
N P ist die Klasse der Probleme L, für die es ein Prädikat P ∈ P
und ein Polynom p gibt, so dass
(∀x ∈ Σ∗ ) [x ∈ L ⇔ (∃y ∈ Σ∗ )[|y| ≤ p(|x|) ∧ P (x, y)]]
Info IV
c
Ernst
W. Mayr
1 Definitionen
368/388
Beispiel 222 (Probleme in N P)
k-COLORING: Gegeben ein Graph G = (V, E), ist χ(G) ≤ k?
k-COLORING ist in N P, da eine nichtdet. TM eine gültige
k-Färbung raten und dann verifizieren kann (in der
alternativen Definition wäre y die Beschreibung einer solchen
k-Färbung!)
COLORING: Gegeben ein Graph G = (V, E) und k ∈ N, ist
χ(G) ≤ k?
Begründung i.W. wie oben; hier ist jedoch k Teil der
Probleminstanz, also der Eingabe!
SAT: Gegeben eine boolesche Formel F , hat F eine erfüllende
Belegung?
Eine nichtdet. TM kann einfach eine erfüllende Belegung, falls
eine solche existiert, raten und verifizieren.
Info IV
c
Ernst
W. Mayr
1 Definitionen
369/388
Eine der wichtigsten offenen Fragen der Informatik (und nicht nur
der Theoretischen Informatik!) ist
P =? N P
Eine der wichtigsten offenen Fragen der Theoretischen Informatik
ist
Wie könnte man P =
6 N P beweisen?
Info IV
c
Ernst
W. Mayr
1 Definitionen
370/388
2. N P-Vollständigkeit
Definition 223
Seien A ⊆ Σ∗ und B ⊆ Γ∗ Sprachen. Dann heißt A polynomiell
reduzierbar auf B (polynomiell many-one-reduzierbar; i.Z. A p B
oder A m-1
B oder auch A ≤p B), falls es eine polynomiell
p
berechenbare totale Funktion f : Σ∗ → Γ∗ gibt, so dass gilt
(∀x ∈ Σ∗ )[x ∈ A ⇔ f (x) ∈ B]
Bemerkungen:
1 Die Relation ist transitiv, d.h.
p
A p B ∧ B p C ⇒ A p C
2
A p B ∧ B ∈ P ⇒ A ∈ P
3
A p B ∧ B ∈ N P ⇒ A ∈ N P
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
371/388
Definition 224
1
Eine Sprache A heißt N P-schwer (oder N P-hart, engl.
N P-hard), falls für alle Sprachen B aus N P gilt:
B p A
2
Eine Sprache A heißt N P-vollständig (engl. N P-complete),
falls A ∈ N P und A N P-schwer ist.
Intuitiv sind die N P-vollständigen Probleme die “schwersten”
Probleme in N P.
N P-harte Probleme sind “mindestens so schwer” wie alle
Probleme in N P, müssen aber selbst nicht in N P sein, können
also noch viel höhere Komplexität haben.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
372/388
Satz 225
SAT ist N P-vollständig.
Beweis:
Offensichtlich ist SAT ∈ N P.
Es bleibt zu zeigen, dass SAT N P-hart ist, d.h. ∀L ∈ N P
L p SAT .
Wir tun dies, indem wir die Berechnung einer nichtdet. TM so in
einer Formel kodieren, dass diese genau dann erfüllbar ist, wenn die
Maschine in polynomiell vielen Schritten akzeptiert.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
373/388
Beweis (Forts.):
Für jedes L ∈ N P gibt es eine Maschine N und ein Polynom p, so
dass (∀x ∈ L) [TIMEN (x) ≤ p(|x|)].
Für die Reduktion zeigen wir jetzt, wie man daraus eine Formel
F = F (x) von in |x| polynomieller Größe konstruiert, mit
x = x1 · · · xn ∈ L gdw F ist erfüllbar
Die Formel F besteht aus mehreren Teilen:
F =R∧A∧U ∧E
Info IV
c
Ernst
W. Mayr
374/388
Beweis (Forts.):
Wir führen folgende Variablen ein:
s – die i-te Zelle des Bandes enthält zum Zeitpunkt t das
Bi,t
Symbol s ∈ Σ, Σ das Bandalphabet von N ;
Ztq – die Turingmaschine befindet sich zum Zeitpunkt t im
Zustand q ∈ Q, Q die Zustandsmenge von N ;
Pti – der Schreib-/Lesekopf der Turingmaschine befindet sich
zum Zeitpunkt t an Position i.
Für |x| = n sei t̂ = p(n). Dann ist 0 ≤ t ≤ t̂, −t̂ ≤ i ≤ t̂, q ∈ Q
und s ∈ Σ.
Insgesamt haben wir also nur O(t̂2 ) = O(p(n)2 ) viele Variablen.
Info IV
c
Ernst
W. Mayr
374/388
Beweis (Forts.):
Die Teilformel R gibt die Randbedingungen, dass
1 die Turingmaschine zu jedem Zeitpunkt t auf genau einem
 

Feld i steht 
^
_
Pti  ∧ 

2
die Turingmaschine zu jedem Zeitpunkt t in genau einem
Zustand q ist 
 

_
^

0≤t≤t̂
3
Pti ⇒ ¬Ptj  ,
i6=j
−t̂≤i≤t̂
0≤t≤t̂
^
Ztq  ∧ 
0
^
Ztq ⇒ ¬Ztq  und
q6=q 0
q∈Q
zu jedem Zeitpunkt t an jeder Bandposition i genau ein
Symbol s steht 

! 
^
_

0≤t≤t̂
−t̂≤i≤t̂
Info IV
c
Ernst
W. Mayr
s∈Σ
s
Bi,t
∧
^
0
s
s 
Bi,t
⇒ ¬Bi,t
s6=s0
374/388
Beweis (Forts.):
Die Teilformel A gibt die Anfangsbedingung, dass zum Zeitpunkt 0
die Turingmaschine im Startzustand q0 an Position 1 des Bandes
ist und auf dem Band die Eingabe x1 · · ·xn steht:
Z0q0 ∧ P01 ∧
^
1≤i≤n
xi
Bi,0
∧
^
Bi,0
,
−t̂≤i<1∨
n<i≤t̂
wobei das Leerzeichen ist.
Info IV
c
Ernst
W. Mayr
374/388
Beweis (Forts.):
Die Teilformel U stellt sicher, dass die Übergänge zwischen zwei
Zeitpunkten t und t + 1 entsprechend der Übergangsrelation
δ : Q × Σ → 2Q×Σ×{−1,0,1} der Turingmaschine sind.
Die Teilformel U ergibt sich aus der Konjunktion von
s
s
¬Pti ∧ Bi,t
⇒ Bi,t+1
und
_
Pti ∧
0
0
q
i+d
s
s
Bi,t
∧ Ztq ⇒ Bi,t+1
∧ Zt+1
∧ Pt+1
(q 0 ,s0 ,d)∈δ(q,s)
für alle 0 ≤ t < t̂ und alle −t̂ ≤ i ≤ t̂.
Info IV
c
Ernst
W. Mayr
374/388
Beweis (Forts.):
Die Teilformel E modelliert schließlich die Bedingung, dass die
Turingmaschine einen akzeptierenden Zustand erreicht.
O.B.d.A. nehmen wir an, dass N nach Erreichen eines
Endzustandes (also q ∈ Qf ) in diesem verbleibt, d.h. für alle
q ∈ Qf , s ∈ Σ gilt δ(q, s) = (q, s, 0). Dann ist E gegeben durch:
_
Ztq
q∈Qf
0≤t≤t̂
Daher ergibt sich:
x ∈ L gdw F ist erfüllbar.
Beachte: Für n = |x| hat F die Größe O(p(n)3 ).
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
374/388
Definition 226
3SAT ist die Menge der booleschen Formeln in konjunktiver
Normalform, die in jeder Klausel höchstens drei Literale enthalten
und die erfüllbar sind.
Satz 227
3SAT ist N P-vollständig.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
375/388
Beweis:
Offensichtlich ist 3SAT ∈ N P.
Es bleibt zu zeigen, dass 3SAT N P-schwer ist.
Wir tun dies, indem wir SAT polynomiell auf 3SAT reduzieren.
Info IV
c
Ernst
W. Mayr
376/388
Beweis:
Sei F eine beliebige boolesche Formel in konjunktiver Normalform.
Wir ersetzen jede Klausel
(x1 ∨ x2 ∨ . . . ∨ xk )
(xi bezeichnet hier ein beliebiges Literal) durch
(x1 ∨ x2 ∨ z2 ) ∧ (z2 ∨ x3 ∨ z3 ) ∧ . . . ∧ (zk−2 ∨ xk−1 ∨ xk ) ,
wobei z2 , . . . , zk−2 neue Variable sind.
Es gibt eine Belegung für die zi , so dass alle Klauseln erfüllt sind,
gdw mindestens eines der Literale xj wahr ist.
Die Größe der konstruierten Formel ist polynomiell in der Größe der
Ausgangsklausel. Daraus folgt, dass die obige Umformung eine
p -Reduktion ist.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
376/388
Satz 228
3-COLORING ist N P-vollständig.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
377/388
Beweis:
Es ist wiederum klar, dass 3-COLORING ∈ N P.
Um zu zeigen, dass 3-COLORING N P-schwer ist, reduzieren wir
3SAT auf 3-COLORING.
Sei also eine boolesche Formel mit den Literalen x1 , x1 , . . . , xn , xn
und den Klauseln c1 , . . . , cm gegeben.
Info IV
c
Ernst
W. Mayr
378/388
Beweis:
Wir konstruieren dazu folgenden Graphen:
x1
x1
c1
x2
x3
x2
x3
c2
xr
xn
xr
xn
cm
Die ersten beiden Klauseln sind hier
c1 = x1 ∨ x2 ∨ x¯3
c2 = x¯1 ∨ x3 ∨ xr
Info IV
c
Ernst
W. Mayr
378/388
Beweis:
Um zu erzwingen, dass alle Variablen nur mit Farben ∈ {0, 1}
gefärbt werden, verbinden wir alle “Literal”-Knoten mit einem
zusätzlichen Knoten, der (per Vereinbarung) die Farbe 2 erhält.
2
x1
1
x1
x2
x2
0
0
1
0
2
0
c1
x3
0
2
Info IV
c
Ernst
W. Mayr
c2
xr
xr
xn
xn
1
0
1
1
0
1
1
2
1
x3
0
1
2
cm
0
378/388
Beweis:
Wie am Beispiel der Klausel c2 ersichtlich, muss der unterste
Knoten (der Ausgang) der Klausel die Farbe 0 erhalten, falls alle
Literale der Klausel die Farbe 0 haben.
Falls nicht alle Literale einer Klausel die Farbe 0 haben, kann der
Ausgang der Klausel, wie am Beispiel von c1 ersichtlich, mit der
Farbe 2 gefärbt werden.
Wir führen nun noch einen weiteren Hilfsknoten ein, der (per
Vereinbarung) mit der Farbe 0 gefärbt wird (ansonsten werden die
Farben entsprechend umbenannt). Damit ergibt sich:
Info IV
c
Ernst
W. Mayr
378/388
Beweis:
x1
1
2
x1
x2
x2
0
0
1
0
2
0
c1
x3
0
2
c2
xr
xr
xn
xn
1
0
1
1
0
1
1
2
1
x3
0
cm
1
2
0
0
und es gilt: F erfüllbar ⇐⇒ G mit 3 Farben färbbar.
Info IV
c
Ernst
W. Mayr
2 N P-Vollständigkeit
378/388
2.1 Weitere Varianten von SAT
Auch die folgenden Varianten von 3SAT sind N P-vollständig:
UNIQUE 3SAT
Instanz: Ausdruck in 3CNF-Form
Frage: Gibt es eine Belegung, so dass in jeder Klausel genau
ein Literal wahr wird?
NOT-ALL-EQUAL 3SAT
Instanz: Ausdruck in 3CNF-Form
Frage: Gibt es eine Belegung, so dass in jeder Klausel
mindestens ein wahres und mindestens ein falsches Literal
vorkommt?
Info IV
c
Ernst
W. Mayr
2.1 Weitere Varianten von SAT
379/388
Definition 229
Sei F ein boolescher Ausdruck in CNF. Der zu F gehörige
Klauselgraph enthält einen Knoten xi für jede Variable (!) xi und
einen Knoten Cj für jede Klausel Cj in F . Die Kante {xi , Cj }
existiert genau dann, wenn Cj das Literal xi oder xi enthält.
Info IV
c
Ernst
W. Mayr
2.1 Weitere Varianten von SAT
380/388
Und noch einige N P-vollständige Varianten von 3SAT:
PLANAR 3SAT
Instanz: Ausdruck in 3CNF-Form, dessen Klauselgraph planar
ist
Frage: Ist der Ausdruck erfüllbar?
R-3SAT (restricted 3SAT)
Instanz: Ausdruck in 3CNF-Form, in dem jede Variable
höchstens 5 mal auftritt
Frage: Ist der Ausdruck erfüllbar?
Info IV
c
Ernst
W. Mayr
2.1 Weitere Varianten von SAT
381/388
2.2 Weitere NP-vollständige Probleme
Definition 230
Das Clique-Problem ist
Instanz: Graph G = (V, E), k ∈ N
Frage: Enthält G einen vollständigen (knoteninduzierten)
Teilgraphen mit mindestens k Knoten?
Info IV
c
Ernst
W. Mayr
2.2 Weitere NP-vollständige Probleme
382/388
Definition 231
Sei G = (V, E) ein Graph. Eine Knotenmenge I ⊆ V heißt
unabhängig (in G), falls I × I ∩ E = ∅.
Definition 232
Das Independent Set-Problem ist
Instanz: Graph G = (V, E), k ∈ N
Frage: Enthält G eine unabhängige Teilmenge I der Knoten
mit |I| ≥ k?
Info IV
c
Ernst
W. Mayr
2.2 Weitere NP-vollständige Probleme
383/388
Satz 233
Die Probleme CLIQUE und INDEPENDENT-SET sind
N P-vollständig.
Beweis:
siehe z.B.
Garey, Michael R. and David S. Johnson:
Computers and intractability. A guide to the theory of
N P -completeness.
W.H. Freeman and Company:New York-San Francisco, 1979
Beobachtung: G hat eine Clique ≥ k gdw der
Komplementärgraph Ḡ eine unabhängige Knotenmenge der Größe
≥ k hat.
Info IV
c
Ernst
W. Mayr
2.2 Weitere NP-vollständige Probleme
384/388
Die folgenden Entscheidungsprobleme sind N P-vollständig:
HAMILTONSCHER KREIS (HC)
Instanz: Graph G = (V, E) (oder Digraph)
Frage: Gibt es in G einen Kreis, der jeden Knoten genau
einmal enthält?
VERTEX-COVER (VC)
Instanz: Graph G = (V, E), k ∈ N
Frage: Gibt es eine Teilmenge V 0 ⊆ V der Knoten, |V 0 | ≤ k,
so dass jede Kante in G zu einem Knoten in V 0 inzident ist?
Info IV
c
Ernst
W. Mayr
2.2 Weitere NP-vollständige Probleme
385/388
Ebenso sind N P-vollständig:
3-PARTITION
Instanz: 3n (nicht notwendig paarweise verschiedene) Zahlen
ai ∈ N, i = 1, . . . , 3n
Frage: Können die 3n Zahlen so in n Tripel partitioniert
werden, dass alle Tripelsummen gleich sind?
PARTITION
Instanz: a1 , . . . , an ∈ N
Frage: Gibt es I ⊂ {1, . . . , n} mit
X
X
ai =
ai ?
i∈I
i6∈I
(0-1) KNAPSACK
Instanz: a1 , . . . , an , b ∈ N
Frage: Gibt es I ⊆ {1, . . . , n} mit
X
ai = b ?
i∈I
Info IV
c
Ernst
W. Mayr
2.2 Weitere NP-vollständige Probleme
386/388
2.3 Stark/schwach NP-vollständige Probleme
Definition 234
1
Ein Problem heißt stark N P-vollständig, falls es auch
N P-vollständig bleibt, wenn in den Probleminstanzen
auftretende Zahlen in unärer Darstellung geschrieben werden.
2
Ein Algorithmus heißt pseudopolynomiell, falls es polynomiell
ist, wenn die Probleminstanzen in unärer Darstellung
geschrieben werden.
3
Ein Problem heißt schwach N P-vollständig, falls es
N P-vollständig ist und einen pseudopolynomiellen
Algorithmus besitzt.
Info IV
c
Ernst
W. Mayr
2.3 Stark/schwach NP-vollständige Probleme
387/388
Satz 235
3-PARTITION ist stark-N P-vollständig.
PARTITION und KNAPSACK sind schwach-N P-vollständig.
Beweis:
ohne Beweis; siehe GJ
Info IV
c
Ernst
W. Mayr
2.3 Stark/schwach NP-vollständige Probleme
388/388
Herunterladen