Formale Grundlagen

Werbung
Mathematik und Logik
2005W
Franz Binder
21. Juni 2006
Inhaltsverzeichnis
1 Logik
1.1 Aussagen und Beweise . . . . . . .
1.2 Aussagenlogik . . . . . . . . . . . .
Implikation, (⇒) . . . . . . . . . .
Konjunktion (Logisches Und, ∧, &)
Disjunktion, Logisches Oder . . . .
1.3 Konstruktionen/Beweise . . . . . .
Implikation . . . . . . . . . . . . .
Konjunktion . . . . . . . . . . . . .
Disjunktion . . . . . . . . . . . . .
1.4 Prädikatenlogik . . . . . . . . . . .
Existenz-Quantor . . . . . . . . . .
1.5 Boolsche Logik . . . . . . . . . . .
Negation . . . . . . . . . . . . . . .
Entscheidbare Aussagen . . . . . .
Wahrheitstafeln . . . . . . . . . . .
Gleichungen der Boolschen Algebra
Disjunktive Normalform . . . . . .
Klassische Logik . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
6
6
7
9
11
11
12
13
14
15
17
17
18
19
19
19
21
2 Mengen
2.1 Äquivalenzrelationen . . . . . . .
2.2 Konstruktionen für Mengen . . .
Funktionen . . . . . . . . . . . .
Direktes Produkt . . . . . . . . .
Direkte Summe . . . . . . . . . .
2.3 Potenzmenge . . . . . . . . . . .
Teilmengen . . . . . . . . . . . .
Mengenalgebra . . . . . . . . . .
Beispiele . . . . . . . . . . . . . .
2.4 Gleichmächtigkeit . . . . . . . . .
2.5 Konstruktion der Zahlenmengen
Ganze Zahlen . . . . . . . . . . .
Rationale Zahlen . . . . . . . . .
Irrationale Zahlen . . . . . . . .
Reelle Zahlen . . . . . . . . . . .
2.6 Kombinatorik . . . . . . . . . . .
Permutationen . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
24
24
26
26
27
27
28
30
31
33
33
36
37
37
38
38
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Kombinationen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Rekursion
3.1 Natürliche Zahlen . . . . . . . . . .
Konstruktoren . . . . . . . . . . .
Peano-Induktion . . . . . . . . . .
Selektoren . . . . . . . . . . . . . .
Gleichheit . . . . . . . . . . . . . .
Vorgänger . . . . . . . . . . . . . .
Addition . . . . . . . . . . . . . . .
3.2 Teilbarkeit . . . . . . . . . . . . . .
3.3 Modulare Arithmetik . . . . . . . .
3.4 Primzahlen . . . . . . . . . . . . .
RSA-Verfahren . . . . . . . . . . .
3.5 Listen . . . . . . . . . . . . . . . .
Introduktion: Listen-Konstruktoren
Elimination: Listen-Induktion . . .
Selektor: Rekursion . . . . . . . . .
Gleichheit . . . . . . . . . . . . . .
Länge . . . . . . . . . . . . . . . .
Hintenanfügen und Umkehren . . .
Listenverkettung . . . . . . . . . .
Auswahl . . . . . . . . . . . . . . .
Geordnete Listen . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
40
40
40
40
41
41
43
45
46
48
50
52
54
54
54
55
55
57
57
58
60
61
4 Algebra
63
4.1 Halbgruppen, Monoide . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.3 Ringe und Körper . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5 Lineare Algebra
5.1 Affine Räume . . . . . . . . . .
5.2 Lineare Räume (Vektorräume)
5.3 Basis . . . . . . . . . . . . . . .
5.4 Lineare Abbildungen . . . . . .
5.5 Matrizen . . . . . . . . . . . . .
5.6 Lineare Gleichungen . . . . . .
5.7 Euklidische Raume . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Codierungstheorie
7 Relationen
Relationenprodukt . . .
7.1 Äquivalenzrelationen . .
7.2 Ordnungsrelationen . . .
7.3 Funktionale Relationen .
66
66
68
69
71
72
75
76
77
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
82
82
84
85
86
8 Graphentheorie
8.1 Einführung . . . . . . . .
Grundlegende Begriffe . .
Relationen und Graphen .
Isomorphie . . . . . . . .
Endliche Graphen . . . .
Grad . . . . . . . . . . . .
8.2 Wege . . . . . . . . . . . .
Zusammenhang . . . . . .
Eulersche Graphen . . . .
Hamiltonsche Kreise . . .
8.3 Bäume . . . . . . . . . . .
Zyklenrang . . . . . . . .
Aufspannende Bäume . .
Wurzelbäume . . . . . . .
Binärbäume . . . . . . . .
8.4 Planare Graphen . . . . .
Einbettungen . . . . . . .
Eulersche Polyederformel
Kuratowski-Graphen . . .
8.5 Färbbarkeit . . . . . . . .
k-Färbung . . . . . . . . .
Bipartite Graphen . . . .
3-Färbbarkeit . . . . . . .
Landkarten . . . . . . . .
8.6 Kürzeste Wege . . . . . .
8.7 Flußprobleme . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
88
88
88
89
90
90
91
92
92
92
93
93
93
94
95
96
98
98
98
99
100
100
100
101
101
102
103
9 Automaten, Formale Sprachen, Berechenbarkeit
9.1 Wörter . . . . . . . . . . . . . . . . . . . . . . . . .
9.2 Formale Sprachen . . . . . . . . . . . . . . . . . . .
9.3 Endliche Automaten . . . . . . . . . . . . . . . . .
9.4 Reguläre Sprachen . . . . . . . . . . . . . . . . . .
9.5 Reguläre Sprachen . . . . . . . . . . . . . . . . . .
9.6 Grammatiken . . . . . . . . . . . . . . . . . . . . .
9.7 Kontexfreie Sprachen . . . . . . . . . . . . . . . . .
9.8 Kontextsensitive Sprachen . . . . . . . . . . . . . .
9.9 Turingmaschine . . . . . . . . . . . . . . . . . . . .
9.10 Rekursiv und Rekursiv aufzählbar . . . . . . . . .
9.11 Abschlußeigenschaften . . . . . . . . . . . . . . . .
9.12 Entscheidbarkeitseigenschaften . . . . . . . . . . .
9.13 Berechenbarkeit . . . . . . . . . . . . . . . . . . . .
9.14 Entscheidbarkeit . . . . . . . . . . . . . . . . . . .
9.15 Komplexitätsklassen . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
104
104
105
106
108
110
112
114
115
116
117
118
118
118
119
120
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Kapitel 4
Algebra
4.1
Halbgruppen, Monoide
4.1.1 Definition. Sei A eine Menge und ◦ : A → A → A eine zweistellige
Operation darin. Dann heißt A zusammen mit ◦ eine Halbgruppe genau dann
wenn ◦ assoziativ ist, d.h. wenn für alle x, y, z : A gilt
(x ◦ y) ◦ z = x ◦ (y ◦ z).
4.1.2 Beispiel. Halbgruppen sind
1. alle Zahlenmengen, sowohl mit der Addition als auch mit der Multiplikation: (N, +), (Z, +), (Q, +), (A, +), (R, +); (N, ·), . . . , (R, ·);
2. die logischen Aussagen zusammen mit ∧ oder ∨, also (Ω, ∧) und (Ω, ∨);
3. die Potenzmenge einer Menge X zusammen mit Durchschnitt oder Vereinigung, also (P(X), ∩) und (P(X), ∪); Für eine beliebige Menge X, die
Listen über diesem Alphabet zusammen mit der Listenverkettung, also
(X ∗ , ¦);
4. die Menge aller Funktionen einer Menge X in sich zusammen mit der
Hintereinanderausführung, (X → X, ◦).
5. Die Menge aller Relationen auf einer Menge X zusammen mit dem Relationenprodukt.
Keine Halbgruppe erhält man dagegen mit dem Potenzieren, und mit der
Subtraktion (Assoziativität verletzt); ferner mit dem Listeneinfügen (hier handelt es sich nicht einmal um eine zweistellige Operation in der Menge), bei
der logischen Implikation und Äquivalenz (ebenfalls nicht assoziativ). Bei der
Implikation beachte man besonders, daß wir gezeigt haben, daß eine Aussage der Form A =⇒ (B =⇒ C stets zu (A ∧ B) =⇒ C äquivalend
ist, was im allgemeinen nicht dasselbe ist wie (A =⇒ B) =⇒ C. Bei
der Äquivalenz ist zu beachten, daß die Notation A ⇐⇒ B ⇐⇒ C als
Abkürzung für (A ⇐⇒ B) ∧ (B ⇐⇒ C) zu verstehen ist, und daher weder
zu (A ⇐⇒ B) ⇐⇒ C noch zu A ⇐⇒ (B ⇐⇒ C) äquivalent ist.
Ebenfalls keine Halbgruppe bilden etwa die ungeraden Zahlen zusammen mit
der Addition (weil die Summe zweier ungerader Zahlen nicht wieder ungerade
ist), wohl aber mit der Multiplikation.
63
4.1.3 Definition. Sei (H, ◦) eine Halbgruppe und e : H. Dann heißt e ein
neutrales Element wenn für alle h : H gilt
e ◦ h = h = h ◦ e.
Man nennt dann H zusammen mit ◦ und e, also (H, ◦, e), ein Monoid.
Sind e1 , e1 : H zwei neutrale Elemente einer Halbgruppe, dann gilt einerseits
e1 ◦ e2 = e2 (weil e1 neutral ist) und andererseits e1 ◦ e2 = e1 (weil auch e2
neutral ist. Daher muß e1 = e2 sein, d.h. in jeder Halbgruppe gibt es höchstens
ein neutrales Element. Man kann daher gefahrlos auch einfach vom Monoid
(H, ◦) reden, da das neutrale Element eindeutig bestimmt ist. Alle erwähnten
Beispiele von Halbgruppen enthalten ein neutrales Element und können daher
als Monoide betrachtet werden. Das neutrale Element für die Addition ist stets 0,
das für die Multiplikation ist 1. Bei den logischen Verknüpfungen sind > bzw. ⊥
neutral, bei der Potenzmenge ist es die leere Menge bzw. die Grundmenge. Bei
der Listenverkettung ist es die leere Liste und bei der Hintereinanderausführung
von Funktionen die identische Funktion.
Kein neutrales Element haben dagegen etwa die strikt positiven Zahlen zusammen mit der Addition: hier fehlt die Null; oder die geraden Zahlen, mit der
Multiplikation (weil 1 nicht in der Menge ist).
In einem Monoid H kann man auch Potenzieren: ist h : H und n : N, dann
definiert man rekursiv
h0 = 1
h
= h ◦ hn .
n+1
(Dies funktioniert natürlich auch für Halbgruppen ohne neutrales Element, wenn
man mit h1 = h anfängt.) Es gilt dann das bekannte Rechengesetz
hm ◦ hn = hm+n ,
(4.1)
im allgemeinen aber nicht (g ◦ h)n = g n ◦ hn , weil dies Kommutativität von ◦
voraussetzt. In jedem Fall aber gilt hm ◦ hn = hn ◦ hm . Man beachte, daß wir
hier nur von positiven Exponenten reden.
4.2
Gruppen
4.2.1 Definition. Sei (G, ◦, 1) ein Monoid. Dann heißen g, h : G zueinander
invers, wenn g ◦ h = 1 = h ◦ g gilt. Besitzt jedes Element ein inverses, dann
ist dieses eindeutig bestimmt und wird mit g −1 bezeichnet (oder mit −g, bei
additiver Schreibweise). Das Monoid zusammen mit dieser zusätzlichen (einstelligen) Operation heißt dann eine Gruppe. D.h., (G, ◦, 1, (−1 )) ist eine Gruppe
falls (G, ◦, 1) ein Monoid ist und für alle g : G gilt
g ◦ g −1 = 1 = g −1 ◦ g.
Die Notation für das Inverse passt gut zum Potenzieren, da damit tatsächlich
die Beziehung in Gleichung 4.1 auf beliebige ganzzahlige Exponenten erweitert
wird.
64
Einige unserer Standardbeispiele für Halbgruppen führen tatsächlich zu Gruppen: (Z, +, 0, −), (Q, ·, (−1 )), (R, ·, (−1 )). Keine inversen Elemente gibt es dagegen bei der Listenverkettung. Auch die erwähnten logischen Operationen erlauben keine Inversen (¬A ist nicht invers zu A, denn A ∧ ¬A = ⊥, neutral ist
aber >). Auch (X → X, ◦) führt zu keiner Gruppe, da Funktionen nur dann
ein Inverses haben, wenn sie bijektiv sind. Allerdings ergibt die Hintereinanderausführung von bijektiven Funktionen wieder eine bijektive Funktion (es gilt
konkret: (f ◦ g)−1 = g −1 ◦ f −1 , man beachte die Umkehrung der Reihenfolge),
weshalb die Menge der bijektiven Funktionen von X → X, oft auch Permutationen von X genannt und mit P (X) bezeichnet, sehr wohl eine Gruppe bildet.
Im Gegensatz zu den erwähnten Gruppen mit Zahlen, ist die Gruppe der Permutationen nicht kommutativ.
4.3
Ringe und Körper
Bei Gruppen betrachtet man nur zwei der üblichen vier Grundrechnungsarten.
4.3.1 Definition. Sei (R, +, 0, −) eine kommutative Gruppe und (R, ·, 1) ein
Monoid, dann heißt (R, +, 0, −, ·, 1) ein Ring, falls zusätzlich die Distributivgesetze
(a + b) · c = a · c + b · c
a · (b + c) = a · b + a · c
gelten.
Da sich die jeweiligen neutralen Elemente und die Operation für das Inverse
eindeutig ergeben, spricht man kürzer vom Ring (R, +, ·), oder einfach vom
Ring R, falls auch die Operationen aus dem Zusammenhang klar sind.
Man beachte, daß man beide Distributivgesetze benötigt, da die Multiplikation nicht immer als kommutativ vorausgesetzt wird. Die bekannten Beispiele
(Z, +, ·), (Q, +, ·), (R, +, ·) sind allerdings allsamt kommutative Ringe. Nichtkommutative Ringe ergeben sich in natürlicher Weise in der Linearen Algebra
duch lineare Abbildungen oder Matrizen.
Eine weitere wichtige Klasse von kommutativen Ringen bilden die Restklassenringe Zm , welche im wesentlichen dem Ring Z entsprechen, allerdings werden
zwei Elemente als gleich betrachtet, wenn die modulo m denselben Rest ergeben,
d.h. Zm = {0, 1, . . . , m − 1}.
Weiters sind die Polynomringe zu erwähnen: ist R ein kommutativer Ring,
dann bezeichnen wir mit R[x] den Ring aller Polynome in der Variablen x mit
Koeffizienten aus R, d.h.
R[x] = {
n
X
k=0
ak xk | n : N, a1 . . . , an : R}.
65
Kapitel 5
Lineare Algebra
5.1
Affine Räume
Ein Punkt in einer Ebene (oder im 3-dimensionalen Raum unserer Anschauung)
bezeichnet eine ganz bestimmte Stelle. Er hat keine Ausdehnung, Farbe oder
sonstige weitere Eigenschaften.
Es macht keinen geometrischen Sinn, einen Punkt mit einer Zahl zu multiplizieren oder zwei Punkte zu addieren. Wohl aber läßt sich zwei Punkten P
und Q derjenige Punkt M zuordnen, welcher genau in der Mitte dieser beiden
liegt. Es liegt nahe, M mit 12 P + 21 Q zu bezeichnen, obwohl wir gerade bemerkt
haben, daß die Hälfte eines Punktes geometrisch keinen Sinn ergibt.
Die Idee, den Mittelpunkt zu betrachten, läßt sich verallgemeinern. Sei V
der Mittelpunkt von P und M , also
V = 21 P + 21 M
= 12 P + 21 ( 12 P + 12 Q)
= 34 P + 41 Q
(Definition von V )
(Definition von M eingesetzt)
(übliche Rechenregeln)
Obwohl die Anwendung der üblichen Rechenregeln sich hier bloß aus der gewählten
Notation für den Mittelpunkt ergab und überhaupt nicht geometrisch gerechtfertigt wurde, kann das Ergebnis sehr gut geometrisch interpretiert werden, denn
V liegt gerade bei einem Viertel des Weges auf der Strecke von P nach Q. Mit
dieser Interpretation ist auch klar, daß etwa der Punkt 23 P + 31 Q auf einem Drittel des Weges zu liegen hat. Allgemeiner bezeichnet (1 − λ)P + λQ denjenigen
Punkt, welcher einen Anteil von λ an der Strecke von P nach Q bezeichnet. Dies
ist allgemein verständlich, falls 0 ≤ λ ≤ 1 gilt. Für λ = 0 erhalten wir insbesondere 1P + 0Q = P . Schwieriger wird die Interpretation, wenn etwa λ = −1 ist.
Das bedeutet, daß die Strecke von P nach Q minus einmal zurückgelegt wurde,
was man am besten so interpretiert, daß man an einem Punkt N angelangt
ist, nachdem die volle Strecke in der entgegengesetzten Richtung zurückgelegt
wurde. Es gilt dann P = 12 N + 12 Q, und eine Umformung gemäß den üblichen
Rechenregeln ergibt dann N = 2P − Q, was tatsächlich genau dem Fall λ = −1
entspricht.
Sind P und Q Punkte, und λ, µ ∈ R mit λ + µ = 1, dann heißt λP + µQ
eine Affinkombination der Punkte P und Q. Mittels der obigen Überlegungen
haben wir jeder Affinkombination von Punkten in einer Ebene (oder im Raum)
66
eine geometrische Bedeutung gegeben, d.h. einen passenden Punkt auf der Verbindungsgeraden zugeordnet.
Es können auch mehrere Punkte affin kombinert werden.
Pn
5.1.1 Definition.
Pn Für beliebige Zahlen λ1 , . . . , λn ∈ R mit k=1 λk bezeichnet
der Ausdruck k=1 λk Pk eine Affinkombination von P1 , . . . , Pn . Die Zahlen λk
heißen Koeffizienten oder Gewichte.
Die Bezeichnung Gewichte kann man durchaus
Pn wörtlich nehmen: Sind in den
Punkten Pk die Gewichte λk verteilt, so ist k=1 λk Pk gerade deren Schwerpunkt. Das gilt auch für negative Gewichte, also Kräfte, die nach oben wirken.
5.1.2 Definition. Ist jeder Affinkombination von Elementen einer Menge wieder ein Element derselben Menge zugeordnet, sodaß für die Affinkombinationen
die der Notation entsprechenden üblichen Rechenregeln gelten, dann spricht
man von einem affinen Raum.
Beispiele: Ebene, Raum, aber auch z.B. unendliche Folgen von Punkten (hier
erfolgen die Affinkombinationen komponentenweise).
5.1.3 Definition. Sind P1 , . . . , Pn Punkte eines affinen
PnRaumes, dann heißt die
Gesamtheit
aller
Affinkombinationen
dieser
Punkte
{
k=1 λk Pk | λ1 , . . . , λn ∈
Pn
R, k=1 λk = 1} die affine Hülle von P1 , . . . , Pn .
Jede affine Hülle bildet einen affinen Raum.
Die affine Hülle von zwei verschiedenen Punkten ist eine Gerade.
Die affine Hülle von drei Punkten ist eine Ebene, außer sie liegen zufällig
alle auf einer Geraden.
5.1.4 Definition. Eine Menge von Punkten heißt affin unabhängig, falls die
Darstellung jedes Punktes in deren affiner Hülle eindeutig ist. Ansonsten ist sie
affin abhängig.
5.1.5 Satz. Eine Menge von Punkten ist affin abhängig falls sich einer dieser
Punkte als Affinkombination der anderen darstellen läßt, oder falls sich trotz
Weglassen eines geeigneten Punktes dieselbe affine Hülle ergibt.
5.1.6 Definition. Eine Menge von Punkten eines affinen Raumes heißt aufspannend, falls sich jeder Punkt des Raumes als Affinkombination von Punkten
aus dieser Menge darstellen läßt, d.h. wenn die affine Hülle dieser Menge der
ganze Raum ist.
5.1.7 Definition. Eine affin unabhängige aufspannende Menge von Punkten
eines affinen Raumes heißt affine Basis dieses Raumes.
Es läßt sich zeigen, daß die Anzahl der Elemente zweier affiner Basen desselben Raumes stets gleich ist. Die Dimension eines affinen Raums ist die um
eins verminderte Anzahl der Elemente einer affinen Basis.
Beispiel: Jede Ebene hat eine affine Basis bestehend aus 3 Punkten. Sie hat
daher die Dimension 2.
5.1.8 Definition. Eine Affinkombination heißt Konvexkombination, wenn alle
Koeffizienten ≥ 0 sind.
Entsprechend ergibt sich der Begriff der konvexen Hülle.
67
5.1.9 Beispiel. Der statistische Mittelwert ist eine Konvexkombination aller beobachteten Werte. Wurden n verschiedene Werte x1 , . . . , xn beobachtet,
dann wird jeder Wert mit
Pndessen relativer Häufigkeit hn (xk ) gewichtet, was
zur Konvexkombination k=1 hn (xk )xk führt. Man beachte, daß die relativen
Häufigkeiten stets ≥ 0 sind und in Summe stets 1 ergeben, was gerade die Bedingungen für eine Konvexkombination sind.
Der Erwartungswert E(X) einer Zufallsgröße X ist eine Konvexkombination aller möglichen Werte x1 , . . . , xn , und die Koeffizienten entsprechen gerade
den Wahrscheinlichkeiten
Pn P (X = xk ) für das Auftreten der entsprechenden
Werte. Also E(X) = xk P (X = xk )xk . Anmerkung: Dies ist genaugenommen
natürlich nur dann richtig, wenn X eine diskrete Zufallsgröße ist, die nur endlich
viele Werte annehmen kann. Ansonsten muß man unendliche Konvexkombinationen bzw. ein Integral (bei kontinuierlichen Zufallsgrößen) betrachten. Darauf
wollen wir hier aber nicht eingehen.
Alle statistischen Methoden, die mit dem Mittelwert arbeiten, funktionieren
daher nur dann sinnvoll, wenn die Werte der Zufallsgrößen nach Belieben zumindest konvex kombiniert werden können. In der Statistik spricht man dann
von einem metrischen Merkmal.
5.2
Lineare Räume (Vektorräume)
Daß bei einer Affinkombination die Summe der Koeffizienten stets gleich 1 sein
muß, ist ein lästiger Schönheitsfehler. Insbesondere die Notation kann sehr verwirrend sein, da etwa 21 P + 12 Q eine Bedeutung hat, obwohl 21 P und 12 Q sinnlos
sind.
Zur Schönheitskorrektur wählt man irgendeinen Punkt O als besonderen
Punkt (Nullpunkt, Ursprung), und betrachtet alle Punkte relativ zu diesem.
Damit wird jeder Punkt P mit dem Vektor von O nach P identifiziert. Ein
Vektor wird üblicherweise als Pfeil dargestellt, ist aber als Bewegungsrichtung
zu verstehen, d.h. parallelverschobene Pfeile bezeichnen denselben Vektor.
Ein Vektor v kann mit beliebigen Zahlen skaliert werden: 12 v bezeichnet den
Vektor, der in dieselbe Richtung zeigt wie v, aber nur halb so lang ist; −v zeigt
in die umgekehrte Richtung.
Sind v, w Vektoren, so köennen diese Bewegungsrichtungen“ auch zusam”
mengesetzt werden: man bewegt sich zuerst entlang v und von dort ausgehend
entlang w. Dieser zusammengesetzte Vektor wird mit v + w bezeichnet und
bildet tatsächlich eine sinnvolle Addition. Insbesondere ist sie assoziativ, der
Nullvektor o (der Vektor von O nach O) verhält sich neutral, es gibt Inverse (−v + v = o = v − v), und sie ist auch kommutativ: v + w = w + v
(Kräfteparallelogramm). Die Addition von Vektoren führt daher zu einer (additiv geschriebenen) kommutativen Gruppe.
Mit Vektoren können somit beliebige Linearkombinationen gebildet werden.
D.h.,
Pn sind v1 , . . . , vn Vektoren und λ1 , . . . , λn beliebige Zahlen, dann ist auch
k=1 λk vk ein Vektor, und es gelten die üblichen Rechengesetze.
Da Vektoren neben der Addition auch noch die Skalierung zulassen, haben
sie eine reichere algebraische Struktur als die einer kommutative Gruppe. Sie
bilden einen Vektorraum (auch: linearer Raum). Genauer:
5.2.1 Definition. Wird für eine kommutative Gruppe V jede Zahl λ mit einer
68
Abbildung V → V identifiziert, sodaß die folgenden Rechengesetze gelten,
λ(v + w) = λv + λw)
λ(µv) = (λµ)v
1v = v
(λ + µ)v = λv + µv
dann spricht man vom Vekorraum (oder linearen Raum) V .
Analog zur affinen Hülle, besteht die lineare Hülle einer Menge von Vektoren
aus all denjenigen Vektoren, die man daraus mittels Linearkombinationen erhält.
Eine solche Menge von Vektoren identifiziert man dabei am besten mit der
Menge aller zugehörigen Punkte, also derjenigen, die mit einem der Vektoren
aus der Menge vom Ursprung aus erreicht werden. Man beachte, daß dann die
lineare Hülle eines einzigen Vektors bereits eine Gerade ergibt, und die lineare
Hülle von zwei Vektoren eine Ebene (außer einer der Vektoren ist ein Vielfaches
des anderen). Ist T eine Menge von Vektoren, dann bezeichnen wir mit L(T )
deren lineare Hülle.
Eine Menge von Vektoren heißt linear unabhängig, falls die Darstellung jedes
Vektores in deren linearen Hülle eindeutig ist. Ansonsten ist sie linear abhängig.
Eine Menge von Vektoren ist linear abhängig falls sich einer dieser Vektoren
als Linearkombination der anderen darstellen läßt, oder falls sich trotz Weglassen eines geeigneten Vektors dieselbe lineare Hülle ergibt.
Eine Menge von Vektoren ist bereits dann linear unabhängig, wenn sich der
Nullvektor nur auf die eine Weise (nämlich alle Koeffizienten 0) darstellen läßt.
Eine Menge von Vektoren eines linearen Raumes heißt aufspannend, falls
sich jeder Vektor des Raumes als Linearkombination von Vektoren aus dieser
Menge darstellen läßt, d.h. wenn die lineare Hülle dieser Menge der ganze Raum
ist.
5.3
Basis
Eine linear unabhängige aufspannende Menge von Vektoren eines linearen Raumes heißt lineare Basis dieses Raumes (oder einfach Basis).
Es läßt sich zeigen, daß die Anzahl der Elemente zweier Basen desselben
Raumes stets gleich ist. Die Dimension eines linearen Raums ist die Anzahl der
Elemente einer Basis.
Beispiel: Jede Ebene hat eine Basis bestehend aus 2 Vekoren. Sie hat daher
die Dimension 2.
Selbstverständlich ist jeder lineare Raum auch ein affiner Raum (weil jede Affinkombination eine Linearkombination ist). Umgekehrt kann man jeden
affinen Raum als linearen Raum betrachten, sobald ein Ursprung gewählt ist.
Der Unterschied besteht daher nur in der Betrachtungsweise: ist ein besonderer
Punkt ausgezeichnet oder nicht?
Auch Vektoren sind immer noch eher geometrische Gebilde, mit denen man
nicht rechnen kann. Wir wählen daher zusätzlich zum Ursprung noch eine Basis B. Ist der Vektorraum n-dimensional, so besteht diese aus n Vektoren, welche
wir mit b1 , . . . , bn bezeichnen. Sei nun v ein beliebiger Vektor, dann läßt sich
dieser eindeutig als Linearkombination der Basiselemente P
darstellen, d.h. es gibt
n
eindeutig bestimmte Koeffizienten λ1 , . . . , λn , sodaß v = k=1 λk bk . Diese Koeffizienten heißten die Koordinaten von v bezüglich b1 , . . . , bn .
Damit ist es uns gelungen, jedem Punkt eindeutig eine endliche Folge von
Zahlen zuzuordnen. Und damit kann man effektiv rechnen, denn, wie nicht
69
schwer zu erkennen, findet man die Koeffizienten einer Linearkombination einfach, indem man dieselbe Linearkombination komponentenweise für alle Koeffizenten durchführt. Z.B.
n
X
λk bk +
k=1
α
n
X
k=1
n
X
µk bk =
λk bk =
n
X
(λk + µk )bk ;
k=1
n
X
(αλk )bk .
k=1
k=1
Zu beachten ist auch, daß diese Operationen für die einzelnen Koeffizienten
unabhängig voneinander sind, d.h. parallel ausgeführt werden können. Dies ist
insbesondere dann von Vorteil, wenn man einen Parallelrechner mit n Prozessoren zur Verfügung hat, da dann eine Addition von Vektoren genausolange
dauert wie die Addition von Zahlen.
Da Vektoren als Zahlenfolgen (fixer Länge) dargestellt werden können, bilden
auch diese selbst, mit komponentenweisen Linearkombinationen, einen Vektorraum. Damit erhalten Zahlenfolgen eine geometrische Interpretation.
5.3.1 Beispiel. Der einfachste Vektorraum ist R selbst. Geometrisch interpretiert entspricht er einer Geraden. Entsprechend sind R2 und R3 , mit komponentenweisen Linearkombinationen, Vektorräume und als Ebene bzw. Raum
zu interpretieren. Dasselbe gilt natürlich auch für höherdimensionale Rn , wobei
dann natürlich die menschliche Vorstellungskraft etwas überfordert ist, was aber
nicht viel ausmacht, weil sich ohnehin nicht viel gegenüber dem R3 ändert.
Selbst unendlich lange Folgen bilden einen Vektorraum. Dies läßt sich nochmals verallgemeinern: Ist V ein Vektorraum und X eine beliebige Menge, so
liegt auch auf der Menge aller Funktionen X → V eine Vektorraumstruktur
vor, wobei die Operationen wieder komponentenweise (oder punktweise) definiert werden, konkret: sind f, g : X → V und λ ∈ R, dann werden f + g und λf
definiert als
(f + g)(x) = f (x) + g(x),
(λf )(x) = λ(f (x)).
Auch auf dem direkten Produkt V × W von zwei Vektorräumen läßt sich in
natürlicher Weise (d.h. hier wieder: komponentenweise) eine Vektorraumstruktur definieren. Die Räume Rn können als Spezialfälle sowohl dieser als auch der
vorigen Konstruktion angesehen werden.
Ist U eine Teilmenge eines Vektorraums V , welche gegenüber Linearkombinationen abgeschlossen ist, dann ist U selbst ein Vektorraum, und man schreibt
dann U ≤ V und bezeichnet U als Untervektorraum. Dies gilt insbesondere für
alle linearen Hüllen: Ist T eine beliebige Teilmenge von V , dann ist deren lineare
Hülle L(T ) ≤ V . Beispiel: für jedes k ∈ R ist {(x, kx) | x ∈ R ein Untervektorraum von R2 , ebenso {(0, x) | x ∈ R}. Dies sind tatsächlich alle: sie entsprechen
genau den Geraden duch den Ursprung. Alle anderen Geraden sind nur affine
Unterräume, d.h. gegenüber Affinkombinationen abgeschlossen.
Betrachen wir irgendein Zufallsexperiment. Dann bildet die Menge aller dazugehörigen Zufallsgrößen, welche Werte in einem bestimmen Vektorraum V
annehmen können, ebenfalls einen Vektorraum.
70
5.4
Lineare Abbildungen
5.4.1 Definition. Lineare Abbildungen sind jene, welche mit Linearkombinationen verträglich sind. Genauer: Seien V, W Vektorräume; dann heißt eine Abbildung h : V → W linear, falls für alle Vektoren v1 , . . . , vn und Skalare λ1 , . . . , λn gilt
h(
n
X
λ k vk ) =
k=1
n
X
λk h(vk ).
k=1
Diese Forderung ist äquivalent dazu, daß für alle Vektoren v, w und Skalare λ, µ
gilt
h(λv + µw) = λh(v) + µh(w).
5.4.2 Beispiel. Sie α ein beliebiger Skalar. Dann ist die Abbildung, welche
jeden Vektor ver-α-facht, also
h(v) = αv,
linear, denn
h(λv + µw) = α(λv + µw)
= α(λv) + α(µv)
= λ(αv) + µ(αv)
= λh(v) + µh(w).
Auch anschaulich ist dieser Sachverhalt unmittelbar einsichtig. Eine solche lineare Abbildungen heißt Streckung.
Weitere einfache Beispiele sind Spiegelungen (an einem ebenen Spiegel), Projektionen auf eine Ebene oder Gerade, sowie alle Drehungen um einen Punkt
innerhalb einer Ebene oder um eine Gerade (Drehachse).
Ein weniger geometrisches Beispiel ist die Abbildung, welche eine Funktion
auf deren Ableitung abbildet, denn auch hier gilt
(f + g)0 = f 0 + g 0
(λf )0 = λ(f 0 ).
Ein Beispiel für eine lineare Funktion in der Statistik liefert der Erwartungswert,
wegen
E(X + Y ) = E(X) + E(Y )
E(λX) = λE(X).
Keine lineare Abbildung dagegen ist eine Translation, das ist eine Abbildung der Form tc : v 7→ v + c, wobei c ein beliebiger Vektor 6= o ist. So ist
etwa tc (2v) = (2v + c) 6= 2(v + c) = 2tc (v). Translationen erhalten allerdings
alle Affinkombinationen und bilden daher das typische Beispiel für eine affine
Abbildung, die nicht linear ist.
Ganz entscheidend ist, daß die Koordinatenabbildung linear ist: Ist V ein ndimensionaler Vektorraum und B eine Basis von V , dann ist die Abbildung V →
Rn , welche jedem Vektor dessen Koordinaten zuordnet, eine lineare Abbildung.
Dies erlaubt uns, mit den Koordinaten eines Vektors anstatt mit dem Vektor
selbst zu rechnen. Genauer:
71
5.4.3 Definition. Eine lineare Abbildung V → W heißt Isomorphismus, wenn
sie außerdem bijektiv ist. Die Vektorräume V und W heißen dann isomorph.
Isomorphe Vektorräume haben exakt die selbe Struktur, da sich die Elemente zusammen mit den Rechenoperationen (Linearkombinationen) eins zu eins
übertragen lassen. Insbesondere ist die Koordinatenabbildung ein Isomorphismus und alle n-dimensionalen Vektorräume sind daher isomorph zu Rn . Dies ist
gerade die Grundlage der Darstellung von Vektoren als Zahlentupel.
5.5
Matrizen
So wie die Vektorräume selbst, sind auch lineare Abbildungen zuerst einmal rein
geometrische Objekte. Wird in den betroffenen Vektorräumen aber jeweils eine
Basis festgelegt, dann ergibt sich auch für lineare Abbildung eine sehr konkrete
numerische Darstellung.
Seien V, W Vektorräume, h : V → W eine lineare Abbildung und {b1 , . . . , bn }
eine Basis von V . Dann gilt bekanntlich
n
n
X
X
λj h(bj ),
λ j bj ) =
h(
j=1
j=1
für beliebige Koeffizienten λ1 , . . . , λn , und jeder Vektor v hat eine solche Darstellung als Linearkombination mit passenden Koeffizient. Dies hat weitreichende
Konsequenzen: eine lineare Abbildung ist durch ihre Werte auf den Basiselementen, also durch die n Vektoren h(b1 ), . . . , h(bm ), bereits festgelegt. Anstatt
festzulegen, wie jeder der unendlich vielen Vektoren von V abzubilden ist, und
hinterher nachzurechnen, daß das Ergebnis tatsächlich linear ist, brauchen nur
noch n Vektoren angegeben, und erhalten automatisch eine lineare Abbildung.
Sei nun weiters c1 , . . . , cm eine Basis von W . Dann läßt sich jedes h(bj ) (so wie
jeder andere Vektor von W ) eindeutig als Linearkombination darstellen:
h(bj ) =
m
X
ai,j ci ,
i=1
sodaß die lineare Abbildung h schließlich durch nm Skalare spezifiziert ist. Diese
werden zu einer Matrix, der Abbildungmatrix von h bezüglich B und C, zusammengefaßt, und man schreibt:


a1,1 . . . a1,n

.. 
hB,C =  ... · · ·
. 
am,1 . . . am,n
Damit entspricht jeder linearen Abbildung von n-dimensionalen Raum V in den
m-dimensionalen Raum W genau eine Matrix mit m Zeilen und n Spalten.
Gilt V = W , ist also h eine Abbildung eines Vektorraumes in sich, so ist
es üblich, auch dieselben Basen zu wählen, also B = C. Insbesonere ist die
Abbildungsmatrix in diesem Fall stets quadratisch (wegen n = m.
5.5.1 Beispiel. Sei α ein Skalar und sα die Streckung um den Faktor α. Egal,
welche Basis man wählt (es handelt sich um eine Abbildung V → V , daher nur
72
eine Basis), als Abbildungsmatrix ergibt sich stets eine Diagonalmatrix, das ist
eine Matrix der Gestalt,


α 0 ... 0
 0 α ... 0 


 .. .. . . .. 
. .
. .
0 0 ... α
denn jeder Basisvektor bi wird auf αbi abgebildet. Die Anzahl der Zeilen und
Spalten dieser Matrix entspricht dabei der Dimension von V .
Sei s die Spiegelung an einer Geraden durch den Ursprung. Als Basis wählen
wir einen Vektor b1 in Richtung der Geraden und einen Vektor b2 , welcher auf
b1 im rechten Winkel steht. Dann gilt s(b1 ) = b1 und s(b2 ) = −b2 . Die
Abbildungsmatrix ist daher
¶
µ
1 0
0 −1
Ist p die Projektion eines Vektors im dreidimensionalen Raum auf die von b1
und b2 aufgespannte Ebene. Als Basis wählen wir b1 , b2 , b3 , wobei b3 ein Vektor
ist, der senkrecht auf die Ebene steht. Dann gelten p(b1 ) = b1 , p(b2 ) = b2 und
p(b2 ) = o. Die Abbildungsmatrix ist daher


1 0 0
0 1 0
0 0 0
Sei i die lineare Abbildung, welche jeden Vektor der Ebene um 90◦ . Als Basis
wählen wir zwei gleichlange Vektoren, die aufeinander senkrecht stehen, sodaß
i(b1 ) und i(b2 ) = −b1 ist. Dann erhalten wir als Abbildungsmatrix
¶
µ
0 1
−1 0
Bei diesen Beispielen waren die Abbildungsmatrizen immer besonders einfach, da die Basen passend gewählt wurden.
Sei ein Vekorraum V fixiert. Dann ist mit dα jedem Skalar α eindeutig eine
lineare Abbildung zugeordnet. Lineare Abbildungen, und daher auch Matrizen, können somit auch als verallgemeinerte Zahlen“ aufgefaßt werden. Diese
”
Betrachtungsweise macht nur dann Sinn, wenn auch die wichtigsten Rechenoperationen verallgemeinert werden können.
Zwei lineare Abbildungen g, h : V → W können punktweise addiert werden:
(g + h)v = gv + hv.
Die entsprechenden Abbildungsmatrizen werden dabei komponentenweise addiert (sie haben dasselbe Format). Diese Addition führt tatsächlich zu einer
kommutativen Gruppe. Auch die Skalierung funktioniert punkt- bzw. komponentenweise. Damit bildet die Gesamtheit aller linearen Abbildungen zwischen
zwei Vektorrämen wieder einen Vektorraum, ebenso die alle Matrizen eines bestimmten Formats. Die komponentenweise Multiplikation ist dagegen nicht in
73
ähnlicher Weise mit einer Operation für lineare Abbildungen in Verbindung zu
bringen und daher nicht interessant. Dennoch gibt es auch eine sinnvolle Multiplikation von linearen Abbildungen bzw. von Matrizen.
Seien g : U → V , h : V → W lineare Abbildungen, dann können sie, so wie
nicht-lineare Abbildungen auch, hintereinander ausgeführt werden. Dies ist ein
sinnvoller Multiplikationsbegriff, denn es gelten beide Distributivgesetze:
(h1 + h2 )g = h1 g + h2 g
h(g1 + g2 ) = hg1 + hg2
Man beachte, diese beiden Gesetze keineswegs äquivalent sind: das erste entspricht der Definition für die Addition und gilt auch für nicht-lineare Abbildungen; das zweite dagegen besagt gerade, daß h linear ist.
Seien A, B, C Basen von U, V, W . Analog zur Situation bei der Addition,
sollte für die Multiplikation von Matrizen gelten.
hB,C · gA,B = (h ◦ g)A,C .
Etwas Rechnung ergibt dann, daß Matrizen Ã
auf folgende !
Weise zu multiplizieµ a1,1 ... a1,n ¶
b1,1 ... b1,p
..
..
..
..
, B =
, dann ist A · B =
ren sind: Seien A =
.
···
.
.
···
.
am,1 ... am,n
bn,1 ... bn,p
µ c1,1 ... c1,p ¶
..
..
, mit
.
···
.
cm,1 ... cm,p
ci,k =
X
ai,j bj,k .
j=1
Damit bilden auch die quadratischen Matrizen (jeweils mit fixer Dimension)
einen Ring (genauer: eine lineare Algebra). Man kann daher mit Matrizen oder
linearen Abbildungen ganz ähnlich wie mit Zahlen rechnen. Hauptunterschied,
neben dem Fehlen des Kommutativgesetzes, ist, daß es bei Matrizen (und linearen Abbildungen) verschiedene Abstufungen zwischen Null und Nicht-Null gibt,
insbesondere muß eine von der Nullmatrix verschiedene Matrix nicht invertierbar sein, etwa die Projektionsmatrix (10 00), denn
¶
¶ µ
¶µ
µ
a b
a b
1 0
,
=
0 0
c d
0 0
was niemals mit dem neutralen Element (10 01) übereinstimmen kann. Insbesondere ist auch die Nullteilerfreiheit verletzt, d.h. das Produkt von zwei Matrizen
kann durchaus die Nullmatrix ergeben, ohne daß einer der Faktoren die Nullmatrix ist:
¶
¶ µ
¶µ
µ
0 0
0 0
1 0
=
0 0
3 4
2 0
Dies hat zur Folge, daß sich gegenüber Zahlen vor allem dann etwas ändert,
wenn Divisionen ins Spiel kommen.
Erwähnenswert ist auch, daß sich damit auch Wurzeln negativer Zahlen konstruieren lassen. Sei etwa i, wie oben, eine Drehung um 90◦ in einer Ebene. Dann
entspricht i2 einer Drehung um 180◦ . Das ist aber dasselbe wie die Streckung
74
2
s−1 , welche
√ wir der Zahl −1 identifizieren können. Damit erhalten wir i = −1,
bzw. i = −1. Die entsprechende Gleichheit für Matrizen ist
µ
5.6
0 −1
1 0
¶2
=
µ
−1 0
0 −1
¶
Lineare Gleichungen
Sind a, b Skalare, dann heißt
ax = b
eine lineare Gleichung. Diese heißt homogen, wenn b = 0, inhomogen sonst. Im
homogenen Fall gibt es auf jeden Fall die Lösung x = 0. Wenn a 6= 0 ist dies auch
die einzige Lösung, anderenfalls ist jede Zahl eine Lösung. Im inhomogenen Fall
erhält man, wenn a 6= 0 ist, ebenfalls genau eine Lösung, anderenfalls aber keine
Lösung. Für lineare Abbildungen und Matrizen ist die Situation ganz ähnlich,
es gibt aber mehrere Abstufungen.
Sei h eine lineare Abbildung. Dann heißt hx = o eine homogene Gleichung.
Die Lösungsmenge dieser Gleichung ist dann {x : V | hx = o}, besteht also aus
all jenen Vektoren, welche durch h auf den Nullvektor abgebildet werden; sie
heißt daher auch der Nullraum von h. Im eindimensionalen Fall gibt es nur die
zwei Fälle: Nullraum besteht nur aus dem Nullvektor, und Nullraum besteht
aus ganz V . Im allgemeinen kann der Nullraum ein beliebiger Unterraum von
V sein. Die möglichen Lösungen einer inhomogenen Gleichung hx = b dagegen
sind gerade die affinen Unterräume.
In der Matrizenform hat eine lineare Gleichung die Gestalt Ax = b, wobei
A eine m×n-Matrix ist und b ein Spaltenvektor mit m Zeilen. Für die Lösung x
kommt damit nur ein Spaltenvektor mit n Zeilen in Frage. Man spricht in diesem
Zusammenhang auch von einem Gleichungssystem, genauer
von einem
System
¶
µ ¶
µ
von m Gleichungen in n Unbekannten, denn mit A =
µ x1 ¶
und x = ... liest sich das ausgeschrieben als
a1,1 ... a1,n
..
..
.
.
···
am,1 ... am,n
,b=
b1
..
.
bn
xn
µ a1,1
..
.
am,1
... a1,n ¶
..
···
.
... am,n
·
µ x1 ¶
..
.
xn
=
µ b1 ¶
..
.
bn
und ausmultipliziert als
a1,1 x1 + . . . a1,n xn = b1
a2,1 x1 + . . . a2,n xn = b2
.........................
am,1 x1 + . . . am,n xn = bm
Eine Darstellung der Lösungsmenge (d.h. eine spezielle Lösung und eine Basis
für den Nullraum) erhält man z.B. mit dem Gauss’schen Eliminationsverfahren
(systematisches Nullenerzeugen“ durch geeignetes Kombinieren der Zeilen).
”
75
5.7
Euklidische Raume
Skalarprodukt, Cauchy-Schwarz, Winkel, Länge (Norm), Dreiecksungleichung,
Zeilenraum orthogonal zum Nullraum.
76
Kapitel 6
Codierungstheorie
Wir beschäftigen uns mit dem Problem, Nachrichten über einen störungsanfälligen
Kanal (z.B. Internet, Satelliten, Schall, Speichermedium) zu übertragen. Wichtigste Aufgabe in diesem Zusammenhang ist es, Methoden zu entwickeln, um die
ursprünglich gesendete Nachricht aus der gestörten Nachricht zu rekonstruieren.
Um dies zu erreichen, muss die Nachricht zusammen mit zusätzlicher, eigentlich
redundanter Information gesendet werden.
Im einfachsten Fall wird die Nachricht einfach wiederholt. Kommt beidemal
dieselbe Nachricht, so ist sie wahrscheinlich richtig übertragen worden; anderenfalls weiß man, daß ein Fehler aufgetreten ist, und kann eine passende Maßnahme
ergreigen, z.B. nocheinmal senden.
Das Wort PILL wird damit als PILLPILL codiert. Falls dann, wegen der
Störung, das Wort PILLKILL ankommt, weiss man immerhin, daß ein Fehler
passiert sein muß. Die ursprüngliche Nachricht kann aber nicht rekonstruiert
werden – sie könnte PILL, KILL, oder auch etwa PILZ gewesen sein. Kommt
dagegen PILZPILZ an, so bleibt der Fehler natürlich unerkannt – aber das ist
doch ein eher unglücklicher Zufall.
Um Fehler auch automatisch zu korrigieren, kann man die Nachricht dreimal
senden, als z.B. PILLPILLPILL. Kommt dann PILLKILLPILL an, so kann man
halbwegs sicher sein, das ursprünglich PILL gesendet werden sollte. Man kann
auch noch öfter wiederholen, um auch mehrfache Fehler zu korrigieren und so
die Wahrscheinlichkeit einer fälschlichen Übertragung beliebig klein gestalten.
Diese, eben besprochenen, Wiederholungscodes haben den Nachteil, daß das
zu übertragene Codewort ziemlich lang wird, was teuer sein kann, und obendrein die Anzahl der Fehler erhöht – wenn das zu übertragende Wort doppelt
so lange ist, ist auch mit der doppelten Fehleranzahl zu rechnen. Ziel der Codierungstheorie ist es, bessere Codes zu entwickeln.
Ab sofort nehmen wir generell an, daß alle zu übertragenden Nachrichten
Folgen aus 0 und 1 sind. Die Nachrichten sind also Elemente von Bk , für ein passendes k. Dabei ist zu beachten, daß, um 2k verschiedene Wörter zu übertragen,
prinzipiell eine Bitfolge der Länge k notwendig ist (d.h. die Nachricht hat k bit
Information).
6.0.1 Definition. Ein Code heißt t-fehlererkennend falls alle fehlerhaften Codewörter mit höchstens t Fehlern als fehlerhaft erkannt werden können.
Ein Code heißt s-fehlerkorrigierend falls alle Codewörter mit höchstens s
77
Fehlern automatisch korrigiert werden können.
Ein Code hat die Informationsrate nk , falls er zur Übertragung von k bit
Information eine Codewort der Länge n benötigt.
Zweimaliges Senden ergibt einen 1-fehlererkennenden Code. Dreimaliges Senden ergibt einen 1-fehlerkorrigierenden Code. Die Informationsrate dieser Codes
ist 12 bzw. 13 .
6.0.2 Beispiel (Paritätskontrolle). Eine Folge x1 . . . xk , mit xi ∈ {0, 1}
wird codiert, indem eine Prüfziffer xk+1 angehängt wird, sodaß die Anzal der
Einser gerade wird, also
xk+1 = x1 + · · · + xk
(mod 2)
Dieser Code ist 1-fehlerkorrigierend, so wie der einfache Wiederholugscode, aber
k
.
mit der deutlich besseren Informationsrate k+1
6.0.3 Beispiel. Wir führen die Idee der Paritätskontrolle fort, indem wir gleich
3 Prüfsymbole einführen. Für k = 3 sieht das dann so aus:
x4 = x1 + x2
x5 = x1
x6 =
+ x3
x2 + x3
Dieser Code kann doppelte Fehler erkennen und einfache Fehler korrigieren, so
wie der doppelte Wiederholungscode, hat aber die deutlich bessere Informationsrate 21 .
6.0.4 Definition. Ein binärer symmetrischer Kanal ist ein Uebertragungskanal für Bitfolgen, in dem jedes einzelne Bit, unabhängig von den anderen, mit
einer Wahrscheinlichkeit p korrekt und mit einer Wahrscheinlichkeit q := 1 − p
falsch übertragen wird.
p
p
q
0
1
q
Die die Anzahl der Fehler in einer Bitfolge der Länge n ist dann binomialverteilt. Insbesondere beträgt die mittlere Fehleranzahl nq, die Wahrscheinlichkeit
n
n−1
q, für t Fehler
¡für
¢ eine fehlerfreie Übertragung ist p , für einen Fehler np
n n−t t
p
q
.
Für
p
=
99
%
und
n
=
50
bedeutet
dies
konkret:
t
t
Wahrscheinlichkeit für t Fehler
0
1
2
60, 50 %
30, 56 %
7, 56 %
3
4
1, 22 %
0, 15 %
5
0, 01 %
78
Tatsächlich geht die Wahrscheinlichkeit für sehr viele Fehler sehr schnell gegen
0 geht, falls p > 12 ist.
Ein mit der Codierung nahe verwandtes Problem ist es, möglichst viele
”
Orangen in einen Schiffstank reinzupferchen“:
6.0.5 Problem (Kugelpackung). Wie kann man eine große Menge gleichgroßer Kugeln möglichst dicht anordnen?
Für 2-dimensionale Kugeln“ ist dieses Problem relativ einfach zu lösen:
”
Der Nachweis, daß diese Kreise tatsächlich nicht dichter angeordnet werden
können, ist nicht allzu schwer. Ganz anders die Situation im 3-dimensionalen
Fall: Hier kann man die unterste Schicht Kugeln so wie oben anordnen und
darauf die nächste Schicht so legen, daß die Kugeln gerade in den Vertiefungen
angeordnet werden. Darauf kommt dann in derselben Weise die nächste Schicht,
usw. Es ist aber nicht bekannt, ob es nicht doch eine bessere Lösung gibt.
Dieses Problem läßt sich auch auf höherdimensionale Räume ausdehnen.
Und anstatt der normalen Euclid’schen Metrik (Abstandbegriff) kann auch eine
andere verwendet werden, um den Begriff Kugel zu definieren.
6.0.6 Definition. Sei X eine beliebige Menge. Eine Abbildung d : X × X →
[0, ∞] heißt Metrik falls für alle x, y, z ∈ X gilt:
d(x, y) = 0 ⇐⇒ x = y
d(x, y) = d(y, x)
(Definitheit)
(Symmetrie)
d(x, z) ≤ d(x, y) + d(y, z)
(Dreiecksungleichung)
Die Menge X, zusammen mit der Metrik, heißt dann ein metrischer Raum.
6.0.7 Definition. Sei (X, d) ein metrischer Raum, x ∈ X und ² ≥ 0. Dann
heißt
K(x, ²) := {y | d(x, y) ≤ ²}
79
die Kugel mit Mittelpunkt x und Radius ².
Für Bn ist die Hamming-Distanz eine naheliegende Metrik:
d(x, y) = die Anzahl der Stellen, an denen sich x und y unterscheiden.
6.0.8 Definition. Ein binärer Code C der Länge n ist eine Teilmenge von Bn .
Wird ein Codewort x ∈ C übermittelt und y ∈ X erhalten, so heißt e := y − x
der Fehler.
Aufgabe des Dekodierverfahrens ist es nun, einem gegebenen y ein passendes Codewort zuzuordnen. Gemäß unserer Diskussion nach Definition 6.0.4 ist
es sinnvoll, dasjenige x zu wählen, welches zu y den kleinsten Abstand hat
(maximum likelihood decoding).
Ist für Bn eine Kugelpackung gegeben, so kann man die Mittelpunkte der
Kugeln als gültige Codewörter auffassen. Beim maximum likelihood decoding
werden dann alle Wörter innerhalb einer Kugel dem entsprechenden Mittelpunkt
zugeordnet. Haben die Kugeln der Kugelpackung einen Radius t, dann ist dieser
Code t-fehlerkorrigierend und (2t − 1)-fehlererkennend.
Allgemeiner nennt man den minimalen Abstand zweier verschiedener Codewörter die Hamming-Distanz des Codes, also
dmin := min d(x, y).
x,y∈C
x6=y
6.0.9 Satz. Ein Code mit Hamming-Distanz d kann bis zu d−1 Fehler erkennen
und b d−1
2 c Fehler korrigieren.
6.0.10 Definition. Ein k-dimensionaler linearer Unterraum mit Minimaldistanz d heißt ein des Bn heißt ein linearer Code oder ein (n, k, d)-Code.
Wir haben bisher fast nur lineare Codes kennengelernt.
6.0.11 Definition. Sei H eine (n − k) × n Matrix von vollem Zeilenrang. Dann
ist C := {Hx = o} ein linearer Code und C heißt die Paritätskontrollmatrix
(parity-check matrix ) von C.
Von den Dekodierungsverfahren sei hier nur dasjenige für eine sehr spezielle
Klasse linearer Codes erwähnt.
6.0.12 Definition. Ein (binärer) linearer Code Cm der Länge n = 2m − 1,
m ≥ 2, dessen Paritätskontrollmatrix die Dimension m×n hat und deren Spalten
aus allen nicht-verschwindenden (binären) Vektoren besteht, heißt ein binärer
Hamming Code.
6.0.13 Theorem. Jeder Hamming Code Cm ist 1-fehlererkennend und hat
Informationsrate n−m
n . Die Dekodierung gestaltet sich denkbar einfach: Wird
das Wort y erhalten, so bestimmt das sogenannte Syndrom Hy. Falls dieses
nicht der Nullvektor ist, ist ein Fehler passiert, und zwar an jener Stelle, deren
Binärdarstellung das Syndrom ist.
6.0.14 Beispiel. Der Hamming Code C3 hat die Paritätskontrollmatrix


0 0 0 1 1 1 1
H =  0 1 1 0 0 1 1 .
1 0 1 0 1 0 1
80
(Die Spalten entsprechen gerade den Binärdarstellungen der Zahlen von 1 bis 7.)
Angenommen es wird das Wort y = 0011101 erhalten. Wir berechnen das Syndrom Hy = 101, was der Zahl 5 entspricht. An der 5. Stelle trat also ein
Fehler auf. Das ursprünglich kodierte Wort war daher 0011001. Die eigentliche Nachricht, die damit kodiert wurde ist daher 1001 (oder die Zahl 9). Letztere entspricht den Stellen x3 , x5 , x6 , x7 . Die anderen Stellen sind Prüfziffern:
x1 = x3 + x5 + x7 , x2 = x3 + x6 + x7 und x4 = x5 + x6 + x7 .
Es gibt natürlich noch viel mehr brauchbare Codes als die besprochenen
(lineare und nicht-lineare), und auch zahlreiche Methoden, um aus bekannten Codes neue zu gewinnen. Die Brauchbarkeit eines Codes ergibt sich einerseits aus dessen Qualität, d.h. einer möglichst hohen Informationsrate für
den gewünschten Grad der Fehlererkennung, -korrektur, und andererseits aus
der Verfügbarkeit von effizienten Codierungs- und Decodierungsverfahren. Allgemein läßt sich sagen: Je mehr bits zu einem Codewort zusammengefaßt werden, desto bessere Codes können gefunden werden; allerdings muß man dann
typischerweise weniger effiziente (De-)Codierungsverfahren in Kauf nehmen.
81
Kapitel 7
Relationen
Ω bezeichne die Menge aller Aussagen.
7.0.15 Definition. Sei n : N, und X1 , . . . , Xn Datentypen. Dann heißt jede
Konstruktion R vom Typ
R : X1 → · · · → Xn → Ω
ein n-stelliges Prädikat.
Ist n = 2, so heißt R ein binäres Prädikat von X1 nach X2 . Binäre Prädikate
auf X sind vom Typ X → X → Ω. Sind die Xi Mengen, und R wohldefiniert,
dann heißt R auch n-stellige Relation.
7.0.16 Bemerkung. Ist R eine binäre Relation, so schreibt man statt Rxy
R
meist x R y oder x → y; oder einfach x → y, falls R aus dem Zusammenhang
ersichtlich ist. Man sagt dann auch, x und y sind in Relation. Oft werden auch
diverse spezielle Symbole verwendet.
Da mittels Currying X → Y → Ω praktisch dasselbe ist wie X × Y → Ω,
was wiederum nichts anderes ist als P(X × Y ), kann man eine binäre Relation
auch genausogut als Teilmenge von X × Y betrachten. Man schreibt daher auch
gerne (x, y) ∈ R. Mit dieser Betrachtungsweise kann man zwei Relationen auch
so wie Teilmengen vergleichen; es gilt dann
^ ¡ R
¢
S
R ⊆ S ⇐⇒
x → y =⇒ x → y .
x,y : X
Auch die Vereinigung und der Durchschnitt von Relationen sind damit definiert.
Die leere Menge heißt in diesem Zusammenhang dann auch die leere Relation,
und X × Y die Allrelation.
Analoges gilt für allgemeine Relationen.
Relationenprodukt
7.0.17 Definition. Gegeben seien die Relationen R : X → Y → Ω und
S : Y → Z → Ω. Dann wird das Relationenprodukt (R; S) definiert durch
_ R
R;S
S
x → z ⇐⇒
x → y ∧ y → z.
y: Y
82
7.0.18 Bemerkung. Vorsicht! Statt der Notation R; S sind auch R ◦ S und
S ◦ R sowie RS und SR gebräuchlich.
7.0.19 Satz. Das Relationenprodukt ist assoziativ.
Beweis. Übung.
7.0.20 Definition. Auf jeder Menge X definiert die Gleichheit eine als Diagonale ∆X bezeichnete Relation, durch
x ∆X y ⇐⇒ x = y.
7.0.21 Satz. Für jede Relation R : X → Y gilt
R; ∆Y = R = ∆X ; R.
7.0.22 Definition. Zu jeder Relation R von X nach Y definiert man die zu
R inverse Relation durch
R−1
R
x → y ⇐⇒ y → x.
7.0.23 Satz. Für jede Relation R : X → Y gelten
R; R−1 ⊆ idX
und
R−1 ; R ⊆ idY ,
aber nicht notwendigerweise die entsprechenden Gleichheiten.
7.0.24 Satz. Die Relationen auf einer Menge X, d.h. die Menge X → X → Ω,
bilden zusammen mit dem Relationenprodukt und der Diagonale ∆X als neutralem Element ein Monoid.
7.0.25 Bemerkung. Es ergibt sich jedoch keine Gruppe, obwohl es inverse
Relationen gibt, weil in Satz 7.0.23 nicht die Gleichheit gilt.
7.0.26 Definition. So wie für assoziative Operationen üblich, verwenden wir
auch für Relationen die Notation mit Potenzen:
R1
=R
2
R
= R; R
n+1
R
= Rn ; R = R; Rn
0
R
= idX
7.0.27 Satz. Sei R eine Relation von X nach Y . Es gelten für alle n, m : N:
Rn ; Rm = Rn+m = Rm ; Rn ,
(Rn )m = Rn·m = (Rm )n .
Und für Relationen R, S auf X gilt
(R; S)−1 = S −1 ; R−1
Die Relationen R, S sind genau dann vertauschbar (d.h. R; S = S; R) wenn für
alle n : Z gilt
(R; S)n = Rn ; S n ,
83
7.1
Äquivalenzrelationen
7.1.1 Definition. Sei X ein Datentyp. Dann heißt ein binäres Prädikat R
auf X
^
R
x → x;
reflexiv
falls
x: X
symmetrisch
^ ¡
falls
x,y : X
transitiv
falls
^
x,y,z : X
R
R ¢
x → y ⇐⇒ y → x ;
¡
R
R
R ¢
x → y ∧ y → z =⇒ x → z .
7.1.2 Definition. Eine binäre Relation auf X heißt Äquivalenzrelation falls
sie reflexiv, symmetrisch und transitiv ist.
7.1.3 Bemerkung. Für Äquivalenzrelationen verwendet man gerne Symbole
.
wie =, ≡, ∼
=, ∼, ', ,, =.
7.1.4 Bemerkung. Auf jeder Menge ist die Diagonale ∆X eine Äquivalenzrelationen.
7.1.5 Satz. Ist ≡ eine Äquivalenzrelation auf Y und f : X → Y , dann wird
durch
x ≡f y ⇐⇒ f (x) ≡ f (y)
eine Äquivalenzrelation auf X definiert.
7.1.6 Satz. Eine Relation R auf eine Menge X ist
reflexiv
⇐⇒ R ⊇ R0 ;
symmetrisch ⇐⇒ R = R−1 ;
transitiv
⇐⇒ R ⊇ R2 .
7.1.7 Definition. Unter der reflexiven, symmetrischen oder transitiven Hülle
einer Relation R auf X versteht man die kleinste R umfassende Relation auf X,
welche die entsprechende Eigenschaft hat.
7.1.8 Satz. Sei R eine Relation auf einer Menge X. Dann gelten
reflexive Hülle von R = R0 ∪ R;
symmetrische Hülle von R = R ∪ R−1 ;
n
[
Rk =: R+
transitive Hülle von R =
reflexiv-transitive Hülle von R =
k=1
n
[
k=0
Rk = R0 ∪ R+ =: R∗
7.1.9 Satz. Ist R reflexiv bzw. symmetrisch, so gilt dies auch für deren transitive Hülle R+ , und natürlich auch für R∗ . Insbesondere ist daher (R ∪ R−1 )∗
stets eine Äquivalenzrelation. Sie heißt die von R erzeugte Äquivalenzrelation,
weil sie die kleinste ist, die R umfaßt.
84
7.1.10 Bemerkung. Man beachte jedoch, daß die symmetrische Hülle einer
transitiven Relation nicht transitiv sein muß, d.h. es gilt nur R+ ∪ (R+ )−1 ⊆
(R ∪ R−1 )+ .
7.1.11 Definition. Eine Teilmenge P von PX nennt man eine Partition
von X falls
1. alle Elemente von P mindestens ein Element enthalten;
2. die Vereinigung aller Elemente von P die Grundmenge X ergibt;
3. je zwei Elemente von P leeren Durchschnitt haben.
7.1.12 Definition. Sei R eine Äquivalenzrelation auf X und x : X. Dann heißt
R
[x]R := {y | x → y}
die Äquivalenzklasse von x bezüglich R.
Die Menge X/R = {[x]R | x : X} aller Äquivalenzklassen von R heißt Faktormenge. Dadurch wird jeder Relation auf natürliche Weise eine Partition zugeordnet.
Umgekehrt wird jeder Partition mit
_
x ≡P y ⇐⇒
x∈A∧y ∈A
A∈P
auf ebenso natürliche Weise eine Äquivalenzrelation zugeordnet.
7.1.13 Bemerkung. Aus den obigen Konstruktionen erkennt man, daß Äquivalenzrelationen und Partitionen eigentlich dasselbe“ sind.
”
Die Faktormenge X/R kann man auch als diejenige Menge auffassen, welche
dieselben Elemente hat wie X, aber die Äquivalenzrelation R als Gleichheitsbegriff.
7.2
Ordnungsrelationen
7.2.1 Definition. Eine Relation auf X heißt Quasi-Ordung falls sie reflexiv
und transitiv ist.
7.2.2 Bemerkung. Für (Quasi-)Ordnungen verwendet man gerne Symbole wie
≤, ⊆, v, ¹, ≥. Dabei bedeutet dann üblicherweise z.B. x ≤ y dasselbe wie y ≥ x.
Der englische Begriff quasi order steht bei manchen Autoren nicht für Quasiordnung sondern für eine transitive und irreflexive Relation.
7.2.3 Satz. Sei v eine Quasiordnung auf X. Dann wird durch
x ≡ y ⇐⇒ x v y ∧ y v x
eine Äquivalenzrelation definiert.
7.2.4 Definition. Eine Relation R auf einer Menge X heißt antisymmetrisch
falls
^ ¡ R
¢
R
x → y ∧ y → x =⇒ x = y .
x,y : X
Eine antisymmetrische Quasiordnung heißt partielle Ordnung oder einfach Ordnung.
85
7.2.5 Satz. Jede Quasiordnung v auf X kann als Ordnung auf X/≡ aufgefaßt
werden.
7.2.6 Definition. Ein Ordnung v auf X heißt linear falls
^
x v y ∨ y v x.
x,y : X
Im allgemeinen gibt es zu einer partiellen Ordnung mehrere lineare Ordnungen, welche sie umfassen. Das Problem, zu einer partiellen Ordung v irgendeine
diese umfassende lineare Ordnung ≤ mit (v) ⊆ (≤) zu finden, heißt topologisches Sortieren.
7.3
Funktionale Relationen
Im allgemeinen kann es zu einem x mehrere y geben, sodaß x → y. Bedeutet
→ etwa die Input/Output-Relation eines Computer-Programmes, so heißt dies,
daß der Output nicht notwendigerweise deterministisch vom Input abhängt.
7.3.1 Definition. Eine Relation p von X nach Y heißt deterministisch, wohldefiniert, funktional oder eine partielle Funktion falls gilt
^ ^ ¡ p
¢
p
x → y ∧ x → z =⇒ y = z .
x : X y,z : Y
Sie heißt terminierend oder total, falls gilt
^ _
p
x → y.
x: X y: Y
Erfüllt sie beide Eigenschaften, so nennt man sie eine (totale) Funktion.
7.3.2 Bemerkung. Für eine deterministische Relation p gibt es daher zu jedem
p
x höchstens ein y mit x → y, und man schreibt dann auch y = px. Es ist aber zu
beachten, daß es so ein y möglicherweise gar nicht gibt. Bei einer Input/OutputRelation entspricht das dem Fall, daß das Programm nie stehen bleibt (oder
abstürzt, was mathematisch gesehen dasselbe ist). Die Termination dagegen
garantiert, daß das Programm tatsächlich zu jedem gültigen Input irgendwann
auch einen gültigen Output liefert.
7.3.3 Bemerkung. Der hier neu eingeführte Funktionsbegriff stimmt mit dem
bekannten überein: Die Teminations-Eigenschaft besagt gerade, daß zu jedem x
ein y zu konstruieren ist, und die Wohldefiniertheit ergibt sich daraus, weil diese
Konstruktion deterministisch sein muß. Auch die Hintereinanderausführung von
Funktionen entspricht genau dem Relationenprodukt, wobei allerdings auf die
Reichenfolge zu achten ist: g ◦ f = f ; g. Ebenso ist die Umkehrfunktion eine
Spezialfall der inversen Relation.
7.3.4 Bemerkung. Jede Relation R : X → Y → Ω läßt sich als Funktion
von Typ X → PY auffassen. R(x) bezeichnet dann die Menge aller möglichen
R
Outputs, also R(x) = { y | x → y }.
86
7.3.5 Definition. Eine Funktion f : X → Y heißt injektiv falls
^
f (x) = f (y) =⇒ x = y;
x,y : X
sie heißt surjektiv falls
^ _
f x = y;
y: Y x: X
und bijektiv falls sie injektiv und surjektiv ist.
7.3.6 Bemerkung. Diese Eigenschaften sind dual zu den definierenden Eigenschaften für Funktionen. Die Injektivität bedeutet gerade, daß auch f −1
deterministisch ist, die Surjektivität bedeutet daß f −1 terminiert, und die Bijektivität, daß auch f −1 wieder eine Funktion ist. Insbesondere gilt für bijektive
Funktionen
f −1 ◦ f = idX
und
87
f ◦ f −1 = idY .
Kapitel 8
Graphentheorie
8.1
Einführung
8.1.1 Beispiel.
1. Drei Häuser sollen je durch eine eigene Leitung mit dem
Wasser-, Gas- und Elektrizitätswerk verbunden werden. Frage: Ist es möglich,
die Leitungen so zu verlegen, daß sie sich nicht kreuzen?
2. Man suche für den Springer auf dem Schachbrett eine Rundreise“, welche
”
nur aus den üblichen Rösselsprüngen besteht und jedes der 64 Felder genau
einmal benutzt.
3. Ein 8-Liter Krug ist mit Wein gefüllt, und je ein leerer Krug von 5 und 3 Litern steht daneben. Die Flüssigkeitsmenge soll, lediglich durch Umschütten,
halbiert werden, so daß sich also am Schluß in jedem der beiden grösseren
Krüge je 4 Liter befinden.
4. Ein Dominostein enthält zwei quadratische Felder, auf denen je eine Anzahl von 0 bis n Punkten eingeprägt ist (üblich: n = 6). Ein Domino-Set
enthält von jedem möglichen Stein genau ein Exemplar. Frage: Kann man
sämtliche Steine eines Sets so in einer geschlossenen Linie auslegen, daß
immer Felder mit gleicher Punktezahl zusammenstoßen?
5. Man färbe die Länder ein Landkarte mit möglichst wenig verschiedenen
Farben so ein, daß angrenzende Länder stets unterschiedlich gefärbt sind.
Grundlegende Begriffe
8.1.2 Definition. Ein (ungerichteter) Graph Γ besteht aus
• einer Menge von Knoten oder Ecken V = V (Γ),
• einer Menge von Kanten E = E(Γ),
• sowie einer Funktion, welche jeder Kante e eine ein- bis zweielementige
Menge E(e) von Endknoten zuordnet.
Man sagt, die Kante e verbindet die Knoten a und b, wenn E(e) = { a, b }.
Die beiden Knoten heißen dann auch benachbart oder adjazent, und jeder dieser
Knoten inzidiert mit der Kante e. Enthält die Menge der Endknoten einer Kante
nur ein Element, so nennt man die Kante eine Schlinge.
88
8.1.3 Definition. Ein gerichteter Graph besteht aus
• einer Menge von Knoten V = V (Γ),
• einer Menge von Pfeilen A = A(Γ),
• sowie zwei Funktion s, t : A → V , welche jeder Kante e einen Anfangsknoten s(e) und einen Zielknoten t(e) zuordnen.
Gelten s(e) = a und t(e) = b, so nennt man a einen Vorgänger von b und b einen
Nachfolger von a.
8.1.4 Bemerkung. Jedem gerichteten Graphen wird durch E(e) = { s(e), t(e) }
(Vergessen der Richtung) auf natürliche Weise ein normaler (ungerichteter)
Graph zugeordnet werden. Gerichtete Graphen erscheinen daher als ungerichte Graphen mit zusätzlicher Struktur (der Richtung der Kanten). Auf diese
Weise können die für ungerichtete Graphen definierten Begriffe auch im Zusammenhang mit gerichteten Graphen verwendet werden. Man beachte aber, daß
manche Begriffe leicht unterschiedlich definiert werden.
8.1.5 Definition. Man spricht von Parallelkanten, wenn zwei verschiedene
Kanten e, f dieselben Endknoten haben; dies bedeutet
• bei ungerichteten Kanten: E(e) = E(f );
• bei gerichteten Kanten: s(e) = s(f ) und t(e) = t(f ).
8.1.6 Bemerkung. Zwei Kanten in einem gerichteten Graphen, die sich nur
durch die Richtung unterscheiden, gelten somit nicht als Parallelkanten; es sei
denn, sie verbinden einen Knoten mit sich selbst.
8.1.7 Definition. Eine Kante e, welche einen Knoten mit sich selbst verbindet,
heißt eine Schlinge.
8.1.8 Bemerkung. Eine Schlinge ist somit eine Kante e, welche |E(e)| = 1
bzw. s(e) = t(e) erfüllt.
8.1.9 Definition. Ein Graph ohne Parallelkanten und ohne Schlingen heißt
schlicht.
8.1.10 Bemerkung. Die Bezeichnung Graph wird nicht überall einheitlich
verwendet. Traditionell versteht man darunter stets einen schlichten Graphen,
meist ungerichtet (außer er wird als gerichteter Graph bezeichnet). Oft läßt
man aber auch Schlingen, und manchmal auch Parallelkanten zu. Graphen, deren Kanten mehr als 2 Endknoten haben, heißen Hypergraphen, und werden
traditionell nicht im Rahmen der Graphentheorie behandelt.
8.1.11 Definition. Sind den Kanten eines Graphen zusätzliche Informationen
zugeordnet, so spricht von einem bewerteten Graphen.
Relationen und Graphen
• In einem (nicht bewerteten) Digraphen ohne Parallelkanten ist jede Kante
eindeutig durch ihren Anfangs- und Endpunkt festgelegt, d.h. ein solcher
ist nichts anderes als eine binäre Relation auf der Menge der Kanten.
89
• Eine reflexive (oder irreflexive) Relation entspricht einem schlichten Graphen.
• Eine symmetrische Relation entspricht einem (ungerichteten) Graphen.
• Ein Graph, der der Allrelation entspricht, heißt vollständig, und einer, der
der leeren Relation entspricht ein Nullgraph.
Isomorphie
8.1.12 Definition. Zwei Graphen heißen isomorph, falls es Bijektionen sowohl zwischen deren Knoten als auch zwischen deren Kanten gibt, welche mit
Inzidenzbeziehung verträglich sind. Bei gerichteten Graphen ist auch auf die
Richung zu achten.
Formal ausgedrückt: Seien V1 , V2 die Knotenmengen und E1 , E2 die Kantenmengen der Graphen Γ1 bzw. Γ2 . Dann sind Γ1 und Γ2 isomporph falls es
Bijektionen g : V1 → V2 und h : E1 → E2 gibt, sodaß für alle Kanten e : E1 gilt:
• bei ungerichteten Graphen: g(E(e)) = E(h(e);
• bei gerichteten Graphen: g(s(e)) = s(h(e)) und g(t(e)) = t(h(e)).
Da bei Graphen ohne Parallelkanten jede Kante bereits durch die Endknoten
bestimmt ist, ergibt sich bei diesen auch die Kantenabbildung h eindeutig aus
der Knotenabbildung g, sodaß man einfacher schreibt: g : Γ1 → Γ2 .
8.1.13 Definition. Ein Graph ohne Kanten heißt Nullgraph, und ein Graph,
der auch keine Knoten hat, ist eine leerer Graph. Umgekehrt heißt ein Graph
vollständig, wenn jedes Paar verschiedener Knoten durch eine Kante verbunden
ist.
8.1.14 Satz. Sei i : N. Dann sind alle vollständigen schlichten Graphen mit
i Knoten zueinander isomorph und werden üblicherweise mit Ki bezeichnet.
Auch alle Nullgraphen mit i Knoten sind zueinander isomorph und werden mit
Ni bezeichnet.
Endliche Graphen
8.1.15 Definition. Ein Graph mit endlich vielen Kanten und endlich vielen
Knoten heißt endlich
8.1.16 Bemerkung. Wesentlich ist hier, daß es nur endlich viele Kanten gibt.
8.1.17 Satz. Für endliche Graphen kann man Induktionsbeweise z.B. nach
der Anzahl der Kanten führen, d.h., um zu beweisen daß eine Aussage für alle
Graphen gilt reicht es, wenn gezeigt wird:
• die Aussage gilt für alle Nullgraphen;
• und wenn die Aussage für irgendeinen Graphen gilt, dann gilt sie auch für
jeden weiteren, welcher aus diesem durch Hinzufügen einer Kante entsteht.
8.1.18 Bemerkung. Wir beschäftigen uns im folgenden nur mit endlichen
Graphen.
90
Grad
8.1.19 Definition. Sei a ein Knoten eines gerichteten Graphen. Dann heißt
die Anzahl der Kanten mit Anfangsknoten a der äußere Halbgrad d+ (a) von a.
Analog heißt die Anzahl der Kanten mit Zielknoten a der innere Halbgrad d− (a)
von a. Der Grad d(a) ist dann die Summe von äußerem und innerem Halbgrad:
d(a) = d+ (a) + d− (a).
Der Grad ist auch für ungerichtete Graphen wohldefiniert, wenn man die
Richutung ignorert. Der Grad ist dann einfach die Anzahl der mit einem Knoten inzidenten Kanten. Eventuelle Schlingen werden dabei allerdings doppelt
gezählt.
8.1.20 Definition. Knoten vom Grad 0 heißen isoliert. Und ein Graph heißt
regulär, wenn alle Knoten denselben Grad haben.
8.1.21 Satz. Isomorphismen müssen den Knotengrad erhalten, d.h. ist g die
Knotenabbildung eines Graphen-Isomorphismus, dann gilt:
d(a) = d(g(a)).
8.1.22 Bemerkung. Man beachte aber, daß dies eine notwendige Bedingung
für Isomorphie ist, aber keine hinreichende.
8.1.23 Satz. Sei Γ ein endlicher Graph mit m Kanten und den Knoten a1 , . . . , an .
Dann gilt
2·m=
n
X
d(ai ).
i=1
Beweis. Wir beweisen mittels Induktion über die Anzahl der Kanten.
Für Nullgraphen ist die Beziehung klar.
Wird ein Graph, der die obige Beziehung erfüllt, um eine Kante erweitert,
dann erhöht sich bei zwei Knoten der Grad jeweils um eins (oder bei einem
Knoten um zwei, wenn es sich um eine Schlinge handelt). Damit erhöht sich die
Summe der Grade um 2, und die Beziehung bleibt erhalten.
8.1.24 Folgerung. Die Anzahl der Knoten ungerade Grades ist gerade.
Beweis. Sie g die Anzahl der Knoten geraden Grades und u die Anzahl der
Knoten ungeraden Grades. Wir betrachten die Beziehung des vorigen Satzen
modulo 2:
0≡2·m≡
n
X
i=1
d(ai ) ≡ g · 0 + u · 1 ≡ u (mod 2).
8.1.25 Folgerung. In einem regulären Graphen vom Grad r mit n Knoten
und m Kanten gilt
2m = nr.
91
8.2
Wege
Zusammenhang
8.2.1 Definition. Ein Kantenzug in einem ungerichtenen Graphen ist eine
endliche Folge e1 , . . . , en von Kanten, sodaß zwei aufeinanderfolgende Kanten jeweils einen Endpunkt gemeinsam haben, d.h. genauer, falls es Knoten a0 , . . . , an
gibt, sodaß ei die Knoten ai−1 und ai verbindet (für alle i = 1, . . . , n). a0 und
an heißen dann auch die Endknoten des Weges, und man spricht von einem Weg
von a0 nach an .
Bei Kantenzügen in gerichteten Graphen ist zu beachten, daß der Endknoten
einer Kante der Anfangsknoten der nächsten Kante ist (t(ai−1 ) = s(ai )). a0 heißt
in diesem Fall der Anfangsknoten des Weges.
Ein Kantenzug, dessen Anfangs- und Endknoten übereinstimmen, heißt geschlossen. Ansonsten ist er offen.
Ein Kantenzug, der bei jedem Knoten nur höchstens einmal vorbeikommt,
heißt ein Weg. Ein geschlossenen Kantenzug, bei dem nur die Endknoten übereinstimmen
heißt ein Kreis.
8.2.2 Beispiel.
1. Der Graph mit Knotenmenge { 1, 2, . . . , n } und einer
Kante zwischen x und y genau dann wenn |x − y| = 1, heißt der lineare Graph mit n Knoten.
2. Der Graph mit Knotenmenge Zn und einer Kante zwischen x und y genau
dann wenn |x − y| ≡n 1, heißt Polygon mit n Ecken, oder ein n-Eck, und
wird mit Cn bezeichnet.
8.2.3 Satz. Ein Weg ist ein zu einem linearen Graphen isomorpher Teilgraph;
und ein Kreis ist ein zu einm Kreis isomorpher Teilgraph.
8.2.4 Definition. Zwei Knoten a, b eines ungerichteten Graphen hängen zusammen falls es einen Weg von a nach b gibt. Wenn jeder Knoten mit jedem
anderen zusammenhängt, so heißt der Graph zusammenhängend. Ansonsten
zerfällt der Graph in mehrere Zusammenhangskomponenten.
8.2.5 Bemerkung. Jede Zusammenhangskomponente ist zusammenhängend
und enthält mindestens einen Knoten. Ein leerer Graph (d.h. einer mit 0 Knoten) hat 0 Zusammenhangskomponenten. Jeder Knoten (und jede Kante) gehört
zu genau einer Zusammenhangskomponente.
Eulersche Graphen
8.2.6 Definition. Ein Eulerscher Kantenzug ist ein solcher, welcher jede Kante
genau einmal benutzt. Er kann offen oder geschlossen sein. Ein Graph der einen
Eulerschen Kantenzug enthält heißt auch Eulergraph.
8.2.7 Theorem (Euler). Ein zusammenhängender Graph besitzt genau dann
einen geschlossenen Eulerschen Kantenzug, wenn alle Knoten geraden Grad
haben. Und genau dann einen offenen Eulerschen Kantenzug, wenn genau zwei
Knoten einen ungeraden Grad haben. Es gibt einen effizienten Algorithmus, um
zu entscheiden, ob ein endlicher Graph Eulersch ist und gegebenenfalls einen
Eulerschen Kantenzug zu finden.
92
Beweis. Ein Knoten in einem geschlossenen Eulerschen Kantenzug kann durchaus mehrmals besucht werden. Er muß aber genau so oft verlassen werden wie
er erreicht wird. Da jede Kante genau einmal benutzt wird, muß daher der Grad
stets gerade sein. Damit ist diese Bedingung notwendig.
Hat umgekehrt ein zusammenhängender Graph die Eigenschaft, daß allen
Knotengrade gerade sind, so kann man ein einfaches rekursives Verfahren zum
Auffinden eines Eulerschen Kreises angeben: Man beginne in irgendeinem Knoten und bilde von diesem ausgehend irgend einen Weg K, bis es keinen Nachbarknoten mehr gibt. Dabei entsteht stets ein Kreis, weil sonst der letzte Knoten
einen ungeraden Grad hätte. Es kann aber sein, daß dabei nicht alle Kanten erfaßt werden. Im Restgraphen, bestehend aus allen noch nicht erfaßten Kanten,
haben alle Knoten einen geraden Grad, weil der Kreis in jedem Knoten eine gerade Anzahl von Kanten verbraucht. Der Restgraph muß nicht zusammenhängend
sein, wohl aber jede seine Zusammenhangskomponenten Zi , und jedes Zi hat
wegen der Zusammenhangseigenschaft mit diesem Kreis K mindestens einen
Knoten vi gemeinsam. Nun bestimmen wir rekursiv in allen Zusammenhangskomponenten Zi geschlossene Eulersche Kantenzüge, die wir in K einbinden,
indem wir in jedem Knoten vi den passenden Umweg einfügen.
Den Fall offener Kantenzüge führen wir auf den besprochenen Fall zurück,
indem wir zum Graphen einen zusätzlichen Knoten mit Kanten zu den Endknoten des Weges bzw. zu den beiden Knoten ungeraden Grades hinzufügen.
Alternativ könnten wir zur Konstruktion einen offenen Kantenzuges mit irgendeinem die beiden Knoten ungeraden Grades verbindenden Weg K beginnen,
und wie oben fortfahren.
8.2.8 Beispiel. Eulersches Brückenproblem, Dominospiel.
Hamiltonsche Kreise
8.2.9 Definition. Ein Hamiltonscher Kreis in einem Graphen ist ein Kreis,
welcher jeden Knoten genau einmal benutzt.
8.2.10 Theorem. Das Problem, in einem beliebigen Graphen einen Hamiltonschen Kreis zu finden (oder festzustellen, daß es keinen gibt) ist NP-vollständig,
und daher im allgemeinen nicht effizient lösbar.
8.2.11 Beispiel. Weg durch alle Ecken eines Dodekaeders, Rösselsprünge.
Eine Variante dieses Problems ist das Travelling Salesman Problem“: In
”
einem bewerteten Graphen finde man den kürzesten Kreis, welche alle Knoten besucht. Auch dieses Problem ist NP-vollständig. Es ist aber möglich, mit
wesentlich kürzerem Aufwand eine sehr gute Näherungslösung liefern.
8.3
Bäume
Zyklenrang
8.3.1 Definition. Einen zyklenfreien Graphen nennt man einen Wald. Ein
zusammenhängender Wald heißt Baum.
93
Da jede Zusammenhangskomponente eines Waldes ein Baum ist, ist die aus
Biologie entnommene Terminologie gerechtfertigt. Ein Wald besteht also aus
einer Menge von Bäumen.
8.3.2 Definition. In einem Graphen Γ mit n Knoten, m Kanten und p Zusammenhangskomponenten heißt die Zahl ν = m − n + p der Zyklenrang von Γ.
8.3.3 Definition. Eine Kante heißt Brücke, wenn sich durch ihre Entfernung
die Anzahl der Zusammenhangskomponenten erhöht.
8.3.4 Satz. Jeder Graph hat Zyklenrang ν ≥ 0, und er ist genau dann ein
Wald, wenn ν = 0.
Beweis. Die Eigenschaft ν ≥ 0 gilt für jeden Graphen ohne Kanten (m = 0,
n = p). Wird zu einem Graphen, der ν ≥ 0 erfüllt, eine Kante hinzugefügt,
dann erhöht sich m um 1, während p entweder um 1 vermindert (wenn die neue
Kante eine Brücke ist) oder gleich bleibt. In jedem Fall bleibt der Zyklenrang
positiv. Da jeder Graph durch Hinzufügen von Kanten aus dem Nullgraphen
hervorgeht, ist der erste Teil der Behauptung beweisen.
Ist Γ ein Wald, so kann die neue Kante in der obigen Überlegung stets
eine Brücke sein, da ansonsten ein Kreis entstehen würde. Deshalb muß der
Zyklenrang = 0 bleiben.
Umgekehrt entsteht stets ein Wald, wenn die neue Kante stets eine Brücke
ist.
8.3.5 Satz. Ein Graph mit n Knoten, m Kanten und p Zusammenhangskomponenten ist genau dann ein Baum wenn
1. er zwei der drei folgenden Eigenschaften erfüllt:
(a) p = 1 (zusammenhängend),
(b) ν = 0 (kreisfrei),
(c) m = n − 1;
2. Jede Kante eine Brücke ist;
3. er maximal kreisfrei ist;
4. er minimal zusammenhängend ist;
5. jedes Paar von Knoten durch genau einen Weg verbunden ist.
Beweis. Übung.
Aufspannende Bäume
8.3.6 Definition. Ein Teilgraph eines Graphen Γ heißt ein aufspannend wenn
er alle Knoten von Γ umfaßt.
8.3.7 Satz. Jeder zusammenhängende Graph enthält einen aufspannenden Baum.
94
Beweis. Sei T ein Baum und Teilgraph des zusammenhängenden Graphen Γ.
Falls T alle Knoten von Γ enthält, dann ist T bereits ein aufspannender Baum.
Wenn nicht, dann enthält Γ eine Kante, welche T mit einem Knoten außerhalb
von T verbindet, weil Γ zusammenhängend ist. Durch eine solche Kante wird T
ergänzt, und das Ergebnis ist wiederum ein Baum. Dieser Schritt wird solange
wiederholt, bis ein aufspannender Baum gefunden wird.
8.3.8 Satz. Der vollständige Graph Kn enthält nn−2 Gerüste.
8.3.9 Definition. Sei Γ ein mit positiven Zahlen bewerteter Graph. Ein Minimalgerüst (minimal spanning tree ist ein Gerüst, dessen Gesamtgewicht (Summe
der Bewertungen aller seiner Kanten) minimal ist.
Man beachte, daß ein Graph durchaus mehrere Minimalgerüste enthalten
kann.
8.3.10 Satz. Jeder zusammenhängende Graph enthält ein Minimalgerüst, welches auf effiziente Weise gefunden werden kann.
Beweis. Im Verfahren zum Auffinden eines Gerüstes (Beweis von Satz 8.3.7)
wählen wir unter allen in Frage kommenden Kanten eine mit minimaler Bewertung. Es läßt sich zeigen, daß man auf diese Weise stets ein Minimalgerüst
erhält.
Das obige Verfahren zum Auffinden eines Minimalgerüstes ist ein typisches
Beispiel für einen Greedy-Algorithmus.
Wurzelbäume
Um einen Baum zu konstruieren, wählen wir irgendeinen Knoten a0 als Wurzelknoten. Von diesem ausgehend zeichnen wir Kanten zu den Nachbarknoten a1 , a2 , . . . (den Söhnen), und von diesen weiter wieder Kanten zu deren
Nachbarknoten a11 , a12 , . . . , a21 , a22 , . . . , usw (vgl. Abbildung 8.1). Weil ein Baum
zusammenhängend ist, wird jeder Knoten irgendwann erreicht, und weil er keine Kreise beinhaltet, wird jeder Knoten nur einmal erreicht. Knoten, die keinen
Sohn mehr haben, heißen Blätter.
Die obige Konstruktion entspricht einem rekursivem Aufbau: Ein Baum besteht aus einem Wurzelknoten und einer (möglicherweise leeren) Menge weiterer
Bäume (den Teilbäumen). Damit kann man Bäume als hierarchische Struktur
und als Verallgemeinerung von Listen auffassen; in Haskell könnte man etwa
definieren;
data Tree a = Tree a (Forest a)
data Forest a = List (Tree a)
Wenn die hierarchische Struktur des Baumes betont wird, hat naturgemäß der
Wurzelknoten eine spezielle Bedeutung (d.h. muß bei einem Baumisomorphismus erhalten bleiben). Man spricht dann gelegentlich etwas deutlicher von einem
Wurzelbaum.
8.3.11 Satz. Ein Baum mit n Knoten hat n − 1 Kanten. Ein Wald mit k
Zusammenhangskomponenten und n Knoten hat n − k Kanten.
Bäume treten immer dann auf, wenn eine Struktur aus gleichartigen Unterstrukturen besteht, bzw. wenn sich ein Problem in Teilprobleme zerlegen läßt.
Typische Beispiele: Sortier- und Suchprobleme.
95
a0
a1
a11
a2
a12
a21
a3
a22
a23
Abbildung 8.1: Rekursiver Aufbau eines Baumes
Binärbäume
8.3.12 Definition. Ein binärer Baum ist entweder leer, oder er besteht aus
einem Wurzelknoten und einem linken und einem rechten binären (Teil)baum.
Formal könnte man diese Definition etwa so schreiben:
data BTree a = Null | Btree a (BTree a) (BTree a)
Dies macht die Analogie zur Definition von Listen noch deutlicher (bei letzteren
fehlt lediglich der zweite Teilbaum).
Prinzipiell sind binäre Bäume einfach Bäume, bei denen jeder Knoten höchstens
zwei Nachfolger hat. Aber nicht genau: Im Unterschied zu Bäumen wird bei
binären Bäumen zwischen dem linken und dem rechten Nachfolger unterschieden. Insbesondere sind
und
als verschiedene binäre Bäume zu betrachten. Außerdem kann ein Binärbaum,
so wie ein Wald, aber im Gegensatz zu einem Baum, leer sein. Tatsächlich
kann man jedem binären Baum auf natürliche Weise einen Wald zuordnen und
umgekehrt:
• Interpretiert man den linken Nachfolger in einem binären Baum als ältester
”
Sohn“ und den linken Nachfolger als nachfolgender Bruder“, so bekommt
”
jeder Knoten eine entsprechende Menge Söhne, wodurch ein Wald entsteht.
• Zeichnet man umgekehrt in einem Wald nur zu einem Sohn eine Kante,
und dafür von jedem Sohn eine zum nächsten, so entsteht ein binärer
Baum.
96
Dies heißt allerdings nicht, daß Bäume und binäre Bäume damit zwei Varianten
desselben Konzeptes wären. Denn ein Baum besteht ja aus einem Knoten und
einer Menge von Teilbäumen. Die Interpretation als binärer Baum legt aber
eine Reihenfolge der Teilbäume fest (nächstälterer Bruder). Insbesondere sind
die Bäume
und
als gleich zu betrachten, führen aber mit der obigen Zuordnung zu den unterschiedlichen binären Bäumen:
und
Entsprechend dem rekursiven Aufbau eines binären Baumes, kann man eine
Rekursion oder Induktion ähnlich wie für Listen führen, mit dem Unterschied,
daß eben beide Zweige berücksichtigt werden müssen.
Zum Beispiel erhalten wir analog zur Länge von Listen die Anzahl der Knoten in einem binären Baum:
• Der leere Baum hat 0 Knoten;
• Die Anzahl der Knoten in einem nicht-leeren binären Baum ist um 1 höher
als die Summe der Anzahl der Knoten in den beiden Teilbäumen.
Ersetzt man in dieser Definition Summe“ durch Maximum“, so erhält man
”
”
die Höhe des binären Baumes.
8.3.13 Definition. Ein binärer Baum ist sortiert falls er entweder leer ist
oder wenn beide Teilbäume sortiert sind und alle Elemente im linken Teilbaum
kleiner als der Wurzelknoten sowie alle Elemente im rechten Teilbaum größer
als der Wurzelknoten sind.
Es ist leicht, eine Funktion tree2list zu schreiben, welche zu einem sortierten
binären Baum die sortierte Liste derselben Elemente bestimmt:
• tree2list von einem leeren Baum ergibt die leere Liste;
• ansonsten bildet man tree2list vom linken Teilbaum, hängt den Wurzelknoten an, und dann tree2list vom rechten Teilbaum.
97
8.3.14 Definition. Diese Vorgangsweise, daß man zuerst den linken Teilbaum
behandelt, dann den Wurzelknoten, dann den rechten Teilbaum, nennt man ganz
allgemein in-order. Analog gibt es pre-order (zuerst der Wurzelknoten, dann
die Teilbäume) und post-order (zuerst die Teilbäume, dann der Wurzelknoten)
sowie double-order (zuerst der Wurzelknoten, dann die beiden Teilbäume, dann
nocheinmal der Wurzelknoten).
Das Berechnen von arithmetischen Ausdrücken (lassen sich in recht natürlicher
Weise als Bäume darstellen) ist ein typisches Beispiel, bei dem post-order gefragt
ist. Beim Suchen nach einem bestimmten Element in einem binären Baum (z.B.
nach einer Datei mit einer bestimmten Eigenschaft) dagegen verwendet man
pre-order. Hierarchisch organisierte Arbeitsabläufe funktionieren üblicherweise
nach double-order: Zuerst delegiert der Chef Teilprobleme an die direkt unterstellten Mitarbeiter (und diese delegieren weiter) und später, wenn diese mit
Ihrer Arbeit fertig sein, muß alles noch irgendwie kombiniert werden.
8.4
Planare Graphen
Einbettungen
Graphen werden anschaulich, falls die Knoten als Punkte in einer Ebene und
die Kanten als (nicht notwendigerweise geradlinige) Verbindungslinien zwischen
deren Endknoten gezeichnet werden.
8.4.1 Definition. Ein Graph heißt planar falls er in einer Ebene so gezeichnet
werden kann, daß sich die Verbindungslinien nicht kreuzen.
Die Formulierung kann gezeichnet werden“ bedeutet dabei, dass es einen
”
dazu isomorphen Graphen gibt, welcher die geforderte Eigenschaft hat.
Offenbar ist ein Graph genau dann planar wenn jede seiner Zusammenhangskomponenten planar ist. Man kann sich daher nach Belieben auf zuammenhängende schlichte Graphen beschränken.
Planarität läßt sich auch rein kombinatorisch beschreiben.
Jede Einbettung eines Graphen in der Ebene definiert eine zyklische Ordnung
des Graphen, d.h. in jedem Knoten eine Reihenfolge der in diesem inzidenten
Kanten (ohne Anfang und Ende), etwa durch den Uhrzeigersinn. Eine Masche
ist dann ein geschlossner Kantenzug, in dem eine darin nachfolgende Kante gerade diejenige ist, welche in der zyklischen Ordnung als nächstes kommt, und
welcher solange fortgesetzt wird, bis die erste Kante wieder in derselben Richtung durchlaufen wird.
Eulersche Polyederformel
Durch einen kreuzungsfrei gezeichneten Graphen wird die Ebene in mehrere
Gebiete zerteilt. Jedes dieser Gebiete entspricht genau einer Masche, und das
Gebiet um den ganzen Graphen herum entspricht der Masche, welche am Weg
entlang des Außenrandes des Graphen führt.
8.4.2 Theorem (Eulersche Polyederformel). Ein kreuzungsfrei gezeichneter zusammenhängender schlichter Graph mit n Knoten und m Kanten zerlegt
die Ebene in m − n + 2 Gebiete.
98
Beweis. Die Behauptung stimmt für eine Graphen mit nur einem Knoten und
ohne Kanten, also für den Fall m = 0, n = 1. Wird zu einem kreuzungsfreien
Graphen eine Kante zusammen mit einem neuen Knoten hinzugefügt, so ändert
sich die Zahl der Gebiete nicht, und auch nicht die Differenz m − n. Verbindet
eine neue Kante dagegen zwei schon vorhandene Knoten, dann geht sich das nur
dann kreuzungsfrei aus, wenn dadurch ein Gebiet zerteilt wird. Daher erhöht
sich in diesem Falls sowohl die Anzahl der Gebiete als auch die Differenz m − n
um 1. Der Fall, daß ein Knoten ohne Kante hinzugefügt wird, kann wegen der
Zusammenhangseigenschaft unberücksichtigt bleiben.
Die Anzahl der Mascheneines kreuzungsfrei gezeichneten Graphen stimmt
mit der Anzahl der Gebbiete überein. Sie ist aber auch für nicht kreuzungsfrei
gezeichnete Graphen definiert, kann dann aber kleiner sein als m − n − 2. Es
läßt sich zeigen, daß ein Graph genau dann planar ist, wenn es eine zyklischen
Ordnung gibt, die zu genau dieser maximal möglichen maximalen Maschenzahl
führt.
8.4.3 Satz. Sei Γ ein zusammenhängender planarer schlichter Graph mit n
Knoten und m Kanten. Dann gilt:
1. m + 6 ≤ 3n;
2. falls Γ kein Dreieck enthält, dann gilt sogar m + 4 ≤ 2n;
3. Γ enthält mindestens einen Punkt mit Grad ≤ 5.
Beweis. Jede Fläche ist durch mindestens 3 Kanten begrenzt. Daher ist 3(m −
n − 2) ≤ 2m, was nach einer Vereinfachung die erste Behauptung ergibt. Wenn
aber jede Fläche sogar durch mindestens 4 Kanten begrenzt ist, dann ergibt
sich 4(m − n − 2) ≤ 2m, was nach einer Vereinfachung zur zweiten Behauptung
führt.
Die Summe der Kantengrade aller Knoten ist 2m. Hat aber jeder Knoten
Grad ≥ 6, dann ist diese Summe mindestens 6n, was der ersten Behauptung
widerspricht.
Kuratowski-Graphen
8.4.4 Beispiel. Nicht planar sind (Übung)
1. K5 , der vollständige Graph mit 5 Knoten, und
2. K3,3 , der vollständige bipartite Graph mit zweimal 3 Knoten.
Diese beiden Graphen heißen der erste bzw. zweite Kuratowski-Graph.
8.4.5 Theorem (Kuratowski). Ein schlichter zusammenhängender Graph ist
genau dann nicht planar, wenn er eine Unterteilung eines der beiden KuratowsiGraphen als Teilgraph besitzt.
Daß ein Graph, der einen nicht-planaren Teilgraphen enthält, niemals planar
sein kann, ist unmittelbar einsichtig. Der Beweis für die andere Richtung ist
deutlich schwieriger und ein klassisches Resultat der Graphentheorie (1930) (zu
finden z.B. in Martin Aigner, Graphentheorie, Kapitel 4, Teubner, 1984.)
99
8.4.6 Satz. Für das Problem, festzustellen, ob ein Graph planar ist, gegebenfalls
eine Einbettung in die Ebene zu finden (sogar eine geradlinige, auf Wunsch auch
als gutes Bild“), oder anderenfalls einen Kuratowski-Graphen als Beweis für
”
die Nicht-Planarität zu finden, gibt es effiziente Algorithmen.
Auf die weiteren Detail dieser Algorithmen sie hier nicht eingegangen. Bemerkenswert ist noch, daß ein planarer Graph stets so kreuzungsfrei gezeichnet
werden kann, daß alle Kanten sogar Strecken sind. Und daß die Verfahren auch
dahingehend verbessert werden können, daß am Ende gute“ Bilder des Graphen
”
generiert werden.
8.5
Färbbarkeit
Das Einfärben einer Landkarte kann als graphentheoretisches Problem interpretiert werden: Man nehme die Länder als Knoten des Graphen und zeichne eine
Kante zwischen zwei Knoten, falls die entsprechenden Länder eine gemeinsame
Grenze haben. (Dies ist gerade der Graph, der zum demjenigen Graphen, der
die Grenzen zeichnet, dual ist.) Dem Einfärben einer Landkarte entspricht dann
die Zuordnung von Farben zu den Knoten des Graphen.
k-Färbung
8.5.1 Definition. Eine k-Färbung eines Graphen Γ ist eine Funktion f : X →
{0, . . . , k−1}, sodaß für zwei adjazente Knoten a, b stets f (a) 6= f (b). Der Graph
heißt k-färbbar, wenn er eine k-Färbung zuläßt. Das kleinste k, für welches Γ
eine k-Färbung zuläßt, heißt dessen chromatische Zahl χ(Γ). Ein χ(Γ)-Färbung
ist optimal.
8.5.2 Beispiel. χ(Kn ) = n.
Ist Γ ein Kreis, dann ist χ(Γ) = 2, wenn er gerade Länge hat, und χ(Γ) = 3,
wenn er ungerade Länge hat.
Bipartite Graphen
8.5.3 Definition. Ein Graph heißt bipartit wenn er 2-färbbar ist.
8.5.4 Satz. Ein Graph ist genau dann bipartit, wenn er keine Kreise ungerader
Länge enthält.
8.5.5 Satz. Es gibt ein effizientes Verfahren um festzustellen, ob ein Graph
eine 2-Färbung zuläßt, und diese gegebenenfalls zu finden.
Beweis. Wir starten in irgendeinem Knoten aund geben diesem die Farbe 0.
Alle Nachbarknoten von a müssen anders gefärbt werden, erhalten also die Farbe 1. Anschließend färben wir alle Nachbarknoten der Nachbarknoten von a
mit Farbe 0. Falls einer dieser Knoten aber vorher bereits die Farbe 1 erhalten
hat, dann ist der Graph nicht 2-färbbar. Wir fahren auf analoge Weise bei den
Nachbarknoten der Nachbarknoten der Nachbarknoten von n fort.
Das obige Verfahren zum Auffinden einer 2-Färbung ist ein typisches Beispiel
für einen Breadth-First-Suchalgorithmus.
100
8.5.6 Beispiel. Ein Rahmen ist nur dann stabil wenn er gewisse Diagonalverbindungen enthält.
Man bildet einen bipartiten Graphen, dessen Knoten den Zeilen bzw. den
Spalten des Rahmens entsprechen. Eine Kante zeigt dann an, ob in diesem
Bereich eine Diagonalverbindung besteht.
Die Konstruktion ist genau dann stabil, wenn dieser Graph zusammenhängend
ist. Und die Anzahl der Diagonalverbindungen ist minimal (um Festigkeit zu erreichen), genau dann, wenn der Graph ein aufspannender Baum ist. Framework.
Außerdem liefert dieses Verfahren auch einen Beweis für den folgenden Satz.
8.5.7 Definition. Ein Graph heißt eindeutig färbbar, wenn jede optimale
Färbung zu den denselben Farbklassen führt.
8.5.8 Satz. Jeder zusammenhängende bipartite Graph ist eindeutig färbbar.
Bipartite Graphen entsprechen damit Relationen der Form X → Y → Ω.
Die Knotenmenge ist dann die direkte Summe X + Y .
8.5.9 Beispiel. Framework.
Viele Stahlbetonbauten erhalten ihre Festigkeit durch ein rechteckiges Stahlgerüst. Damit es fest bleibt, müssen auch gewisse Diagonalverbindungen eingefügt werden.
Man bildet eine bipartiten Graphen, dessen Knoten den Zeilen bzw. den
Spalten entsprechen. Eine Kante zeigt dann an, ob in diesem Bereich eine Diagonalverbindung besteht.
Die Konstruktion ist genau dann fest, wenn dieser Graph zusammenhängend
ist. Und die Anzahl der Diagonalverbindungen ist minimal (um Festigkeit zu
erreichen), genau dann, wenn der Graph ein Gerüst ist.
3-Färbbarkeit
Man kann versuchen, die (recht einfache und einleuchtende) Idee für die Lösung
der 2-Färbbarkeit auf die 3-Färbbarkeit zu verallgemeinern. Dabei ergibt sich jedoch ein wesentlicher Unterschied: während beim Problem der 2-Färbbarkeit die
Farbe für alle Nachbarknoten eindeutig bestimmt ist, ist bei der 3-Färbbarkeit
für jeden Nachbarknoten aus 2 Farben auszuwählen. Diese Auswahlmöglichkeit
bedeutet letztendlich, daß im schlimmsten Fall alle Möglichkeiten durchprobiert
werden müssen. Tatsächlich läßt sich beweisen, daß es keine wesentlich bessere
Methode gibt:
8.5.10 Satz. Das Problem der 3-Färbung ist NP-vollständig.
Landkarten
8.5.11 Theorem (4-Farben-Satz). Jeder planare Graph ist 4-färbbar.
In etwas anschaulicherer Formulierung:
8.5.12 Folgerung. Jede Landkarte kann so mit 4 Farben eingefärbt werden,
daß keine zwei angrenzenden Länder dieselbe Farbe erhalten.
101
Ein Beweis dafür, daß stets 5 Farben ausreichen, wurde schon vor langem
gefunden; doch das 4-Farben-Problem war lange Zeit ein bekanntes ungelöstes
Problem. Erst Ende der 90er Jahre konnte das Problem auf ca 2000 Fälle
zurückgeführt werden, die dann alle mittels Computer aufwendig nachgerechnet
wurden.
Der Satz gilt nur für planare Graphen. Landkarten mit nicht-zusammenhängenden
Ländern (Enklaven, Kolonien) können zu nicht-planaren Graphen führen, für die
der 4-Farben-Satz nicht gilt. Man kann das Problem aber auch für Graphen auf
allgemeineren Flächen betrachten. Eine Ebene und eine Kugeloberfläche sind
ja, was die Planarität betrifft, äquivalent. Aber für Graphen (Landkarten) auf
einem Torus benötigt man zum Beispiel 7 Farben. Es konnte sogar der folgende
Satz bewiesen werden:
8.5.13 Theorem (Formel von Heawood). Die zum Färben von beliebigen
Landkarten auf einer Oberfläche mit g Löchern notwendige Anzahl von Farben
ist
p
1
b (7 + 1 + 48g)c.
2
(Eine Kugeloberfläche hat 0 Löcher, der Torus (Oberfläche eines Schwimmreifens) 1 Loch, zwei zusammengeklebte Toren 3, usw.)
(Die Notation bxc bezeichnet die größte ganze Zahl, die noch kleiner als x
ist (durch Abrunden); also b3.2c = b3.7c = b3.99c = bπc = b3c = 3, aber
b−3.7c = b−3.01c = b−4c = −4. Analoges gilt für die Notation dxe.
8.6
Kürzeste Wege
Gibt es mehrere Wege zwischen zwei Knoten, so ist im allgemeinen der kürzeste
interessant. Die Länge eines Weges in einem bewerteten Graphen ist definiert
als die Summe der Bewertungen der betroffenen Kanten.
8.6.1 Theorem (Dijkstra). Sei Γ ein mit positiven Zahlen bewerteter Graph.
Dann gibt es ein effizientes Verfahren, um den kürzesten Weg zwischen zwei
Knoten zu bestimmen (oder festzustellen, daß es keinen Weg gibt).
Beweis. Wir gehen von einem Knoten a aus. Wir suchen uns eine von a ausgehende Kante (zu einem Knoten b) mit minimaler Bewertung. Damit haben wir
auf jeden Fall den kürzesten Weg von a nach b gefunden. Wenn b der Knoten ist,
zu dem wir den kürzesten Weg suchen, sind wir damit fertig. Ansonsten müssen
wir weitersuchen.
Zu den anderen von a aus direkt erreichbaren Knoten haben wir ebenfalls bereits einen Weg gefunden, allerdings kann man nur vermuten, daß diese Direktverbindungen optimal sind (es könnte ja ein Umweg über b zu einem kürzerem
Weg führen. Jedenfalls merken wir uns, wie lange der kürzeste bisher gefundene Weg zu diesen Knoten ist. Dasselbe machen wir für alle von b aus direkt
erreichbaren Knoten. Unter all diesen bereits gefundenen, aber noch nicht als
minimal erkannten Wegen suchen wir uns den kürzesten aus. Dieser muß minimal sein, da jeder noch nicht gefundene Weg mindestens so lange wie dieser
ist(hier wird verwendet, daß die Kantenbewertung positiv ist). Damit haben
wir einen weiteren Knoten c gefunden, zu dem wir den kürzesten Weg kennen.
102
Wieder merken wir uns alle Wege zu allen direkt von c aus erreichbaren Knoten.
Falls wir auf diese Weise zu einem Knoten mehrere Wege finden, merken wir
uns nur den kürzeren. Danach suchen wir uns wieder den kürzesten bereits gefundenen, aber noch nicht als minimal erkannten Weg, und setzen fort, bis wir
den kürzesten Weg zu dem Knoten gefunden haben, zu dem wir den kürzesten
Weg suchen. Wenn wir bei diesem nie ankommen, gibt es zu diesem überhaupt
keinen Weg.
Der im obigen Beweis vorgestellte Algorithmus ist ein Beispiel für dynamische Programmierung, deren Grundidee es ist, daß man sich die Zwischenergebnisse merkt, um sie später nicht wieder berechnen zu müssen.
8.7
Flußprobleme
In diesem Zusammenhang werden Kantenbewertungen als maximale DurchflußKapazität zwischen den betroffenen Knoten interpretiert.
8.7.1 Definition. Sei X die Knotenmenge eines Graphen Γ.
1. Unter einem Fluß versteht man dann eine asymmetrische Funktion φ : X →
X → Z, also eine Funktion mit φ(x, y) = φ(y, x).
2. Die Flußstärke ρ(x) im Knoten x ist definiert als
X
ρ(x) =
φ(x, y),
y∈Γ(x)
wobei Γ(x) die Menge aller Nachbarknoten von x bezeichnet.
3. Sind a, b Knoten, dann heißt der Fluß φ ein a-b-Fluß, wenn ρ(x) = 0, außer
für x ∈ {a, b}.
Für einen a-b-Fluß gilt ρ(a) = −ρ(b). Daß die Flußstärke überall sonst gleich
Null ist, bedeutet lediglich, daß aus jedem Knoten genauso viel herausfließt wie
auch hineinfließt. Die Knoten a und b heißen dann auch die Quelle und das Ziel
des Flusses. Und ρ(a) ist der Gesamtdurchfluß von a nach b.
8.7.2 Definition. Sei c : X → X → N eine Kantenbewertung von Γ; mit
c(x, y) = 0, wenn es keine Kante von x nach y gibt. Dann heißt ein Fluß φ
zulässig, wenn für alle x, y ∈ X gilt:
φ(x, y) ≤ c(x, y).
Das Problem besteht nun darin, ein zulässiges φ zu finden, sodaß der Gesamtdurchfluß maximal wird.
8.7.3 Algorithmus (Ford-Fulkerson). Man verwende irgendeinen Weg
von a nach b. Der Durchfluß auf diesem Weg entspricht dem Minimum aller
Kantenbewertungen darin. Dieser Durchfluß wird. Danach betrachtet man den
Graphen mit den Restkapazitäten und fährt entsprechend fort, uns zwar solange
sich ein zulässiger Weg von a nach b mit einem positivem Durchfluß finden läßt.
103
Kapitel 9
Automaten, Formale
Sprachen, Berechenbarkeit
9.1
Wörter
9.1.1 Notation. Für jede Menge Σ, bezeichne Σ∗ die Menge aller Listen von
Objekten vom Typ Σ. Wenn Σ endlich ist, nennt man deren Elemente gelegentlich Zeichen oder Symbole, und Σ heißt dann ein Alphabet, und die Elemente
von Σ∗ heißen dann Zeichenketten (Strings) oder Wörter über dem Alphabet Σ. Die Länge eines Wortes w wird mit |w| bezeichnet. Die leere Liste heißt
dann das leere Wort und wird meist mit ² bezeichnet. Die Verkettung von
Wörtern wird meist ohne Symbol, einfach durch Nebeneinanderstellen, bezeichnet (u ¦ v = uv). Wir verwenden auch Potenznotation (u0 = ², un+1 = un u).
Ferner steht jedes Symbol gleichzeitig als Abkürzung für das entsprechende Wort
der Länge 1 (α / u = αu, Σ ⊆ Σ∗ ). Zur besseren Lesbarkeit und der Einfachheit
halber bezeichnen wir hier Symbole zumeist mit kleinen griechischen Buchstaben
(α, β, γ, usw.) und Wörter mit kleinen lateinischen Buchstaben (u, v, w, usw.).
9.1.2 Bemerkung. So wie jede Listenverkettung ist auch die Wortverkettung
eine assoziative Operation, und das leere Wort ist neutrales Element:
(uv)w = u(vw);
(9.1)
u² = u = ²u.
(9.2)
Die Wörter über Σ bilden daher ein Monoid, das freie Wortmonoid über Σ.
9.1.3 Satz. Für jedes Alphabet Σ ist die Wortlänge ein Homomorphismus in
das additive Monoid der natürlichen Zahlen (N, +), d.h.
|²| = 0;
|uv| = |u| + |v| .
(9.3)
(9.4)
9.1.4 Bemerkung. Funktionen auf Wörtern werden so wie für Listen üblich
typischerweise rekursiv definiert.
9.1.5 Beispiel. Die Spiegelung eines Wortes wird definiert durch: s : Σ∗ → Σ∗ ,
s(²) = ²,
s(αw) = s(w)α.
104
(9.5)
(9.6)
9.1.6 Beispiel. Ein Palindrom ist ein Wort w, für welches w = s(w) gilt.
9.1.7 Theorem. Sei M ein beliebiges Monoid. Dann läßt sich jede Abbildung f : Σ → M zu genau einem Homomorphismus f ∗ : Σ∗ → M fortsetzen.
Beweis. Jeder derartige Homomorphismus muß die folgenden Gleichungen erfüllen.
f ∗ (²) = ²,
f ∗ (αw) = f (α)f ∗ (w).
(9.7)
(9.8)
Tatsächlich wird dadurch eindeutig eine Funktion definiert, und man kann mit
Induktion zeigen, daß diese tatsächlich ein Homomorphismus ist.
9.2
Formale Sprachen
9.2.1 Definition. Sei Σ ein Alphabet. Jede Teilmenge von Σ∗ nennt man eine
formale Sprache über Σ.
9.2.2 Bemerkung. Da Sprachen Teilmengen sind, stehen auch für Sprachen die
üblichen Mengenoperationen zur Verfügung, insbesondere Vereinigung, Durchschnitt, Mengendifferenz. Darüberhinaus können weitere Operationen für Sprachen definiert werden, die sich aus der Übertragung von Operationen für Wörter
ergeben.
9.2.3 Definition. Seien L, L1 , L2 Sprachen über dem Alphabet Σ. Dann definiert man
L1 L2 = { uv | u ∈ L1 , v ∈ L2 }
L0 = { ² }
Ln+1 = LLn
[
L∗ =
Lk
(Verkettung)
(einelementig)
(für n : N)
(9.9)
(9.10)
(9.11)
(Iteration)
(9.12)
k: N
9.2.4 Bemerkung. Mit dieser Verkettung von Sprachen ist somit auch auf
der Menge P(Σ∗ ) aller Sprachen über einem Alphabet eine Monoidstruktur
definiert.
9.2.5 Beispiel. Sei ∆ ein weiteres Alphabet. Dann nennt man eine Abbildung
der Form f : Σ → P(∆∗ ) eine Substitution; sie wird natürlich ebenfalls auf Σ∗
fortgesetzt zu f ∗ : Σ∗ → ∆∗ mittels
f ∗ (²) = ²,
∗
(9.13)
∗
f (αw) = f (α)f (w).
(9.14)
9.2.6 Beispiel. Ist h : Σ∗ → ∆∗ ein Homomorphismus und sind L1 : P(Σ∗ ),
L2 : P(∆∗ ) Sprachen, dann heißt die Sprache h(L) = { h(w) | w ∈ L } ein
homomorphes Bild von L, und die Sprache h−1 (L) = { w : Σ∗ | h(w) ∈ L } ist
ein inverses homomorphes Bild.
Für jedes α : Σ ist { α } eine Sprache; sie besteht nur aus einem Wort. Noch
trivialer sind die Sprachen { ² } und ∅.
105
Jede endliche Sprache läßt mit Verkettung und Vereinigung aus diesen trivialen Sprachen bilden.
Die Klasse aller endlichen Sprachen ist abgeschlossen gegenüber Vereinigung,
Durchschnitt, Differenz und Verkettung, nicht aber gegenüber Komplement und
Iteration.
9.3
Endliche Automaten
9.3.1 Definition. Ein deterministischer, endlicher Halbautomat besteht aus
• einer endlichen Menge Q von Zuständen (states);
• einer endlichen Menge Σ, dem Eingabealphabet;
• einer Zustandsüberführungsfunktion δ : Σ → (Q → Q);
Dieser (Halb-)Automat A wird dann auch mit dem Tripel A = (Q, Σ, δ) bezeichnet.
9.3.2 Bemerkung. Man beachte, daß die Menge aller Abbildungen Q → Q mit
der Hintereinanderausführung von Abbildungen ein Monoid bildet. Wir schreiben dazu f ; g = g ◦ f . Die Zustandsüberführungsfunktion δ läßt sich somit, wie
jede Funktion von Σ in ein Monoid, gemäß (9.1.7) zu einem Homomorphismus
definiert auf dem freien Wortmonoid Σ∗ fortsetzen, was hier konkret bedeutet:
δ²∗ = id Q
∗
∗
= δα ; δw
δαw
(9.15)
(9.16)
Für α ∈ Σ und q ∈ Q wird der Folgezustand am übersichtlichsten als δα (q)
geschrieben. Insbesondere ist δα : Q → Q.
Übersichtlich darstellen läßt sich ein Automat durch einen bewerteten gerichteten Graphen, seinen Zustandsgraphen: Die Zustände werden zu den Knoten
des Graphen, und es gibt genau dann eine (mit α ∈ Σ bewertete Kante) von i
nach j wenn δα (i) = j. Derartige Graphen haben die Eigenschaft, daß für jedes
α ∈ Σ von jedem Knoten genau eine Kante mit der Bewertung α ausgeht, weil
es ja stets genau einen Folgezustand gibt. Es macht aber durchaus Sinn, auf
diese Einschränkung zu verzichten.
9.3.3 Definition. Ein nicht-deterministischer, endlicher Halbautomat besteht
aus
• einer endlichen Menge Q von Zuständen;
• einer endlichen Menge Σ, dem Eingabealphabet;
• einer Zustandsüberführungsrelation δ : Σ → Q → Q → B;
Dieser Automat wird dann auch mit dem Tripel (Q, Σ, δ) bezeichnet. Ein solcher Automat kann eindeutig durch seinen Zustandsgraphen, einem bewerteten
gerichteten Graphen (mit Schlingen und Mehrfachkanten), dargestellt werden:
Die Zustände dienen als Knoten, das Alphabet als Kantenbewertung.
106
Der einzige Unterschied besteht also darin, daß für die Zustandsüberführung
beliebige Relationen (nicht nur Funktionen) erlaubt sind. In jeder Situation kann
es damit einen, mehrere, oder auch gar keinen Folgezustand geben. Damit entspricht jeder bewertete gerichtete Graph (in dem zusätzlich ein Anfangszustand
und eine Teilmenge von Finalzuständen gekennzeichnet sind) genau einem nichtdeterministischen, endlichen Automaten.
Die Zustandsüberführung kann man auch als Funktion vom Typ δ : Σ →
Q → P(Q) auffassen.
9.3.4 Definition. Ein nicht-deterministischer Akzeptor besteht aus
• einer endlichen Menge Σ, dem Eingabealphabet;
• einer endlichen Menge Q von Zuständen;
• einem Anfangszustand (initial state) q0 ∈ Q;
• einer Zustandsüberführungsrelation δ : Σ → Q → Q → B;
• einer Teilmenge F ∈ P(Q) von Finalzuständen.
Dieser Automat wird dann auch mit dem Quintupel (Σ, Q, q0 , δ, F ) bezeichnet.
Jeder deterministische Automat kann als Spezialfall eines nicht-deterministischen
Automaten aufgefaßt werden. Zwischenformen: Ein partieller (deterministischer)
Automat hat stets höchstens einen Folgezustand. Und ein vollständiger Automat
hat stets mindestens einen Folgezustand. Weiters betrachtet man gelegentlich
Automaten mit spontanen Übergängen (das sind solche, die keine Eingabe erfordern). Ein derartiger Automat kann stets auf einen funktionsgleichen ohne
spontane Übergange zurückgeführt werden.
Ein Akzeptor besteht somit aus:
1. einem Halbautomaten;
2. einem Anfangszustand q0 ∈ Q;
3. einer Teilmenge F ∈ P(Q) von Finalzuständen.
Der Anfangszustand wird dann üblicherweise durch einen Pfeil gekennzeichnet,
und jeder Finalzustand durch doppeltes einkreisen.
9.3.5 Definition. Wenn Σ ein Alphabet ist, dann bezeichnet Σ∗ die Menge
aller Wörter über diesem Alphabet. Dabei ist eine Wort nichts anderes als eine
Liste über der Menge Σ, aber statt α / w und v ¦ w schreiben wir einfach αw
bzw. vw, und die leere Liste, das leere Wort, bezeichnen wir mit ². Ferner kürzt
man z.B. das Wort ααααα durch α5 ab, und α0 = ².
Eine Teilmenge von Σ∗ heißt dann eine Formale Sprache (über dem Alphabet Σ).
9.3.6 Definition. Die Zustandsüberführungsfunktion eines deterministischen
Automaten wird rekursiv durch
δ²∗ = id Q,
∗
∗
◦ δα
= δw
δαw
107
zu δ ∗ : Σ∗ → Q → Q verallgemeinert.
Für nicht-deterministische Automaten definiert man ähnlich
δ²∗ = id Q,
[
∗
∗
(y).
δw
(q) =
δαw
y∈δα (q)
∗
δw
(q) bezeichnet damit in jedem Fall die Menge aller Zustände, in welchen sich
der Automat nach der Eingabe des Wortes w befinden kann, wenn er zuvor im
Zustand q war. Insbesondere ist δα = δα∗ , für α ∈ Σ.
9.3.7 Definition. Sei A = (Σ, Q, q0 , δ, F ) ein deterministischer Automat.
Dann definiert man die Sprache des Automaten als
L(A ) := {w ∈ Σ∗ | δ ∗ (q0 ) ∈ F },
und man sagt, daß der Automat A eine Sprache L ∈ P(Σ∗ ) erkennt (accepts),
wenn L = L(A ).
Für nicht-deterministische Automaten definiert man ähnlich
L(A ) := {w ∈ Σ∗ | δ ∗ (q0 ) ∩ F 6= ∅},
9.3.8 Satz. Zu jedem nicht-deterministischen Automaten gibt es einen deterministischen Automaten, der dieselbe Sprache erkennt.
Beweis. Im Prinzip ersetzt man die Zustandsmenge Q des nicht-deterministischen
Automaten durch deren Potenzmenge P(Q), um die Zustandüberführung künstlich
deterministisch zu machen“. Allerdings sind dann die meisten Zustände gar
”
nicht erreichbar, sodaß man einfacher folgendermaßen vorgeht: Als Startzustand
verwendet man die einelementige Menge {qo }. Dann betrachtet man für jede
Eingabe α ∈ Σ die Menge aller Zustände, in welche der Automat damit gelangen kann. Für jede dieser Mengen bestimmt man wieder für jede Eingabe
die Menge der dann möglichen Folgezustände, bis keine neuen Teilmengen mehr
gefunden werden. Eine Teilmenge ist dann genau dann ein Finalzustand wenn
sie mindestens einen Finalzustand des ursprünglichen Automaten enthält.
Damit kann man stets einen deterministischen Automaten voraussetzen, und
trotzdem auch nicht-deterministische (auch mit spontanen Übergängen) verwenden, wenn das einfacher ist.
9.4
Reguläre Sprachen
9.4.1 Definition. Die kleinste Klasse von formalen Sprachen, welche alle endlichen Sprachen umfaßt und abgeschlossen ist gegenüber Verkettung, Vereinigung
und Iteration, heißt die Klasse der regulären Sprachen.
Reguläre Sprachen werden zumeist durch reguläre Ausdrücke (regular expression, regex) beschrieben:
9.4.2 Definition. Sei Σ ein Alphabet. Dann ist jedes α ∈ Σ ein regulärer
Ausdruck, und wenn r, s reguläre Ausdrücke sind, dann auch (rs), (r|s) und r∗ ,
entsprechend den definierenden Konstruktionen für reguläre Sprachen.
108
Natürlich kann man bei regulären Ausdrücken auf Klammern verzichten,
wenn der Aufbau auch ohne diese klar ist. Darüberhinaus verwenden die meisten der gängigen Programme zur Verarbeitung von regulären Ausdrücken aus
praktischen Gründen diverse Abkürzungen, z.B.
r? = (r|²)
r+ = rr∗
[xyz] = x|y|z
.=Σ
[c − u] = c|d| . . . |t|u
[ˆxyz] = l1 |l2 |l3 | . . . |ln , falls Σ \ {x, y, z} = {l1 , . . . , ln }
und viele mehr. Einen Vergleich der Syntaxregeln für reguläre Ausdrücke in
verschiedenen Programmiersprachen bietet:
http://www.greenend.org.uk/rjk/2002/06/regexp.html
Automaten lassen sich auch verbinden:
9.4.3 Definition. Seien A1 , A2 zwei Automaten über demselben Eingabealphabet.
Bei der Serienschaltung A1 A2 dieser Automaten werden alle Finalzustände
von A1 mit dem Anfangszustand von A2 durch einen spontanen Übergang verbunden; der Anfangszustand wird von A1 übernommen, die Menge der Finalzustände von A2 ; die gesamte Zustandsmenge ist dabei die direkte Summe (disjunkte Vereinigung) der einzelnen Zustandsmengen.
Bei der Parallelschaltung A1 +A2 dagegen wird, zusätzlich zur direkten Summe der Zustandsmengen, ein weiterer Zustand als Anfangszustand eingeführt,
zusammen mit spontanen Übergängen von diesem zu den Anfangszuständen der
Ausgangsautomaten; Für die Menge der Finalzustände wird die Vereinigung gebildet.
Für die Rückkoppelung A ∗ braucht man nur einen Automaten, der durch
spontane Übergänge von jedem Finalzustand zum Anfangszustand ergänzt wird;
ferner wird die Menge der Finalzustände um den Anfangszustand ergänzt.
9.4.4 Definition. Seien L1 und L1 formale Sprachen über dem Alphabet Σ.
Dann definiert man deren Verkettung als
L1 L2 := {vw | v ∈ L1 , w ∈ L2 }.
Ferner definiert man die Iteration einer fomalen Sprache L als
[
Ln ,
L∗ :=
n∈N
wobei Ln rekursiv definiert wird als L0 = {²}, Ln+1 = Ln L.
9.4.5 Satz. Seinen A1 , A2 endliche Automaten. Dann gilt
L(A1 A2 ) = L(A1 )L(A2 )
L(A1 + A2 ) = L(A1 ) ∪ L(A2 )
L(A1∗ ) = L(A1 )∗ .
109
9.4.6 Satz. Eine Sprache ist genau dann regulär wenn sie durch einen endlichen Automaten erkannt wird.
Beweis. Klarerweise kann man zu jeder endlichen Sprache einen erkennenden
Automaten bilden. Und Satz 9.4.5 besagt gerade, wie die entsprechenden Automaten für eine Verkettung, Vereinigung oder Iteration einer Sprache zu konstruieren sind.
Sei nun umgekehrt ein Automat A gegeben. Wir zeigen, daß L(A ) regulär
ist. Dazu definieren wir zuerst die folgenden Sprachen:
Y
∗
Ri,j
:= {w ∈ Σ∗ | δw
(i) = j∧δv∗ (i) ∈ Y für jedes echte Präfix v von w mit 0 < |v| < |w|}
Y
Ri,j
besteht damit aus all jenen Wörtern, die vom Zustand i in den Zustand j
führen, und dabei zwischendurch nur in Zustände aus der Menge Y führen (i, j
müssen aber keine Elemente von Y sein). Dann gilt
[ Q
L(A ) =
R0,j .
j∈F
Q
regulär ist. Zu diesem Zweck fahren
Wir müssen also noch zeigen, daß jedes R0,j
wir rekusiv folgendermaßen fort
Y ∪{ k }
Ri,j
Y
Y
Y
Y
= Ri,j
∪ Ri,k
(Rk,k
)∗ Rk,j
,
∅
sodaß wir alles auf die Ri,j
zurückführen, die aber alle endlich sind.
9.4.7 Satz. Die Klasse der regulären Sprachen ist gegenüber allen boolschen
Mengenoperationen (also auch Durchschnitt und Komplement) sowie gegenüber
Spiegelung abgeschlossen.
Beweis. Es ist nicht offensichtlich, wie ein regulärer Ausdruck für das Komplement einer regulärer Sprache ausschauen soll. Dafür kann man zu jedem Automaten A ganz einfach jenen konstruieren, der alle Wörter erkennt, die A nicht
erkennt: man verwendet einfach Q \ F als Finalzustände. Für den Durchschnitt
kann man dann etwa ein De Morgan Gesetz verwenden:
L1 ∩ L2 = {({L1 ∪ {L2 ).
Für die Spiegelung dagegen muß man lediglich den regulären Ausdruck spiegeln.
9.4.8 Bemerkung. Ferner ist die Klasse der regulären Sprachen gegenüber
homomorphen Bildern und Substitutionen abgeschlossen.
9.5
Reguläre Sprachen
9.5.1 Definition. Ein vollständiger deterministischer endlicher Automat A
heißt minimal wenn jeder andere Automat, der dieselbe Sprache erkennt, mindestens soviel Zustände wie A hat.
9.5.2 Satz. Zu jeder regulären Sprache gibt es, bis auf Isomorphie, genau einen
diese erkennenden minimalen Automaten.
9.5.3 Satz. Alle folgenden Probleme sind für reguläre Sprachen entscheidbar:
110
1. L = ∅;
2. L ist endlich;
3. w ∈ L;
4. L1 = L2 ;
5. L1 ⊆ L2 .
Beweis.
1. Für die leere Sprache gibt es entweder gar keinen regulären Ausdruck, oder sie wird durch ein spezielles Symbol bezeichnet, dessen Vorkommen dann lediglich zu prüfen ist. Auch einem durch seinen Zustandsgraphen dargestellen Automaten kann man das leicht anmerken: er erkennt
genau dann die leere Sprache, wenn es keinen Weg vom Anfangszustand
zu einem Finalzustand gibt.
2. Ein regulärer Ausdruck beschreibt genau dann eine endliche Sprache, wenn
keine Iteration vorkommt. Für einen Automaten müßte man prüfen, ob
sein Zustandsgraph einen Zyklus enthält, von dem aus es eine Abzweigung
zu einem Finalzustand gibt.
3. Festzustellen, ob ein Wort zu einer Sprache gehört oder nicht, ist gerade
die Aufgabe, die ein erkennender Automat (optimal) beherrscht.
4. Es ist mitunter nicht so offensichtlich, ob zwei reguläre Ausdrücke dieselbe Sprache beschreiben. Man kann aber von beiden einen minimalen
Automaten berechnen und feststellen, ob diese isomorph sind.
5. L1 ⊆ L2 gilt genau dann wenn L1 ∪ L2 = L2 .
9.5.4 Lemma (Pumping Lemma). Zu jeder regulären Spache L gibt es eine
Zahl n ∈ N, sodaß jedes Wort z ∈ L mit |z| ≥ n derart in
z = uvw
zerlegt werden kann, daß gilt:
• |v| ≥ 1;
• |uv| ≤ n;
• uv i w ∈ L, für alle i ∈ N.
Beweis. Laut Voraussetzung wird L von einem deterministischen endlichen Automaten erkannt. Wird nun ein Wort z ∈ L eingegeben, dessen Länge n größer
ist als die Anzahl der Zustände des Automaten, so muß zumindest ein Zustand z2
mindestens zwei Mal angenommen werden. Entsprechend zerlegen wir z = uvw
derart, daß der Automat nach der Eingabe von u im Zustand q2 ist und die
Eingabe von v von q2 wieder nach q2 führt (w ist dann das Restwort). Dann
gilt |v| ≥ 1 und |uv| ≤ n. Wird nun statt z = uvw ein Wort der Form uv i w
eingegeben, so ändert sich nicht allzuviel, außer daß eben der Zyklus bei q2 nun
i Mal durchlaufen wird.
111
Das Pumping Lemma kann man verwenden, um nachzuweisen, daß eine bestimmte Sprache nicht regulär ist. Dazu ist die negierte Variante praktisch:
9.5.5 Folgerung. Sei L eine formale Spache L.
Kann man zu jedem n ∈ N ein ein Wort z ∈ L mit |z| ≥ n konstruieren derart,
daß für jede Zerlegung
z = uvw
mit
• |v| ≥ 1;
• |uv| ≤ n;
ein i gefunden werden kann, sodaß uv i w 6∈ L,
dann ist L nicht regulär.
9.6
Grammatiken
9.6.1 Definition. Eine Grammatik G = (T, N, S, P) besteht aus
• einem Alphabet Σ von Terminalzeichen;
• einem Alphabet N von Nicht-Terminalzeichen;
• einem Startsymbol S ∈ N ;
• einer Menge von Produktionsregeln der Form
l ⇒ r,
mit l ∈ (N ∪ Σ)∗ \ Σ∗ und r ∈ (N ∪ Σ)∗ .
9.6.2 Definition. Sei G = (Σ, N, S, P) eine Grammatik, und u, w ∈ (N ∪ Σ)∗ .
Dann ist w aus u ableitbar (Schreibweise: u _ w) wenn es Zerlegungen u = ale
und w = are gibt, sodaß l ⇒ r eine Produktionsregel der Grammatik ist.
Wie üblich, bezeichnet weiters _∗ die reflexiv-transitive Hülle von _.
9.6.3 Definition. Die von einer Grammatik G = (Σ, N, S, P) erzeugte Sprache
ist definiert durch
L(G) = {u ∈ Σ∗ | S _∗ u}.
¡
¢
9.6.4 Beispiel. Gegeben sie die Sprache G1 = {a, b}, {S}, S, P , wobei P aus
folgenden Produktionen bestehe:
S ⇒ ²,
S ⇒ SS,
S ⇒ aSb,
S ⇒ bSa.
112
Dann ist bespielsweise abba ein Wort der durch diese Grammatik erzeugten
Sprache, denn es ist folgendermaßen aus S ableitbar:
S ⇒ SS _ aSbS _ aSbbSa _∗ abba.
Tatsächlich gilt:
L(G1 ) = {w ∈ {a, b}∗ | #a (w) = #b (w)}.
Begründung: einerseits ist klar, daß keine Produktionsregel die Bedingung #a (w) =
#b (w) ändert, und umgekehrt läßt sich für jedes Wort, welches diese Bedingung
erfüllt, eine Ableitung konstruieren. Sei z.B. w = avb, und gelte #a (w) = #b (w).
Dann gilt auch #a (v) = #b (v), und daher (mit Induktion nach der Länge von w)
S _∗ v. Mit S ⇒ aSb folgt dann S _∗ w.
Ist eine Sprache durch eine Grammatik definiert, so können alle Wörter der
Sprache effektiv aufgezählt werden. Ein passendes Programm muß nur, ausgehend vom Startsymbol, systematisch alle Möglichkeiten, Produktionsregeln
anzuwenden, durchgehen, und alle dabei gefundenen Wörter von T ∗ ausgeben.
Ein Test, ob ein gegebenes Wort w ∈ Σ∗ zu der Sprache gehört, ist damit
allerdings nicht möglich. Im positiven Fall läßt sich dies zwar feststellen (weil es
irgendwann einmal in der Aufzählung vorkommt), aber im negativen Fall muß
man mitunter unendlich lange warten (Semientscheidungsverfahren).
In vielen Fällen kann man sich auf gewisse Typen von Produktionsregeln
beschränken. Die bekannteste Klassifizierung der Grammatiken is die ChomskyHierarchie.
9.6.5 Definition. Eine Grammatik (G = (Σ, N, S, P) heißt rechtslinear, falls
alle Produktionsregel die Form
A⇒x
oder
A ⇒ xB
haben, mit A, B ∈ N , x ∈ (N ∪ Σ)∗ .
Analog definiert man linkslineare Grammatiken (mit A ⇒ Bx statt A ⇒
xB).
9.6.6 Theorem. Eine Sprache läßt sich genau dann durch eine rechtslineare
Grammatik definieren, wenn sie regulär ist.
Beweis. Wir können uns auf den Fall beschränken, daß alle Produktionsregeln
der Form A ⇒ xB ein x der Länge 1 verwenden (was gegebenenfalls durch
Einführung zusätzlicher Nichtterminalsymbole erzwungen werden kann). Sei
G = (Σ, N, S, P) eine rechtslineare Grammatik. Wir konstruieren eine Automaten, der L(G) erkennt: Als Eingabemenge ist natürlich Σ zu wählen. Als
Zustandsmenge verwenden wir N ∪ {²}, wobei ² 6∈ Σ ∪ N . Startzustand ist S,
der einzige Finalzustand ist ². Ein Zustandsübergang von einem Zustand A in
einen Zustand B ∈ N sei dann bei der Eingabe α genau dann möglich, wenn
A ⇒ αB in G ist. Ferner sei ein Zustandsübergang von einem Zustand A in den
Zustand ² bei der Eingabe α genau dann möglich, wenn A ⇒ α in G ist.
Umgekehrt kann man (auf dieselbe Weise) jedem Automaten eine rechtslineare Sprache zuordnen.
113
9.6.7 Satz. Eine Sprache L läßt sich genau dann durch eine linkslineare Grammatik definieren wenn ihre Spiegelung Lr durch eine rechtslineare Grammatik
definierbar ist.
Man beachte, daß die Klasse der regulären Sprachen unter Spiegelung abgeschlossen ist. Damit ergibt sich sofort:
9.6.8 Folgerung. Eine Sprache ist genau dann durch eine linkslineare Grammatik definierbar wenn sie durch eine rechtslineare Grammatik definierbar ist.
9.7
Kontexfreie Sprachen
9.7.1 Definition. Eine Grammatik G = (Σ, N, S, P) heißt kontextfrei, falls
alle Produktionsregel die Form
A⇒r
haben, mit A ∈ N , r ∈ (N ∪ Σ)∗ . Eine Sprache heißt kontextfrei wenn sie durch
eine kontextfreie Grammatik definiert werden kann.
Wird eine Sprache durch eine nicht-kontextfreie Grammatik definiert, so
heißt dies noch lange nicht, daß sie nicht kontextfrei ist: es könnte ja eine andere,
kontextfreie, Grammatik geben, welche dieselbe Sprache erzeugt.
9.7.2 Satz. Jede reguläre Sprache ist kontextfrei.
Beweis. Alle Produktionsregeln, die in einer rechtslinearen Grammatik erlaubt
sind, sind auch in einer kontextfreien Grammatik erlaubt.
9.7.3 Satz. Zu jeder Ableitung in einer kontextfreien Grammatik gibt es einen
Ableitungsbaum (auch: Syntaxbaum).
9.7.4 Beispiel. Ableitungsbaum.
9.7.5 Definition. Eine Grammatik heißt eindeutig, wenn es zu jedem Wort
der dadurch definierten Sprache genau einen Ableitungsbaum gibt.
9.7.6 Definition. Ein Kellerautomat ist ähnlich wie ein normaler (endlicher)
Automat, kann aber zusätzlich auf einen Kellerspeicher (Stack, Stapel) zugreifen. Das heißt die Zustandsüberführung darf zusätzlich vom obersten Zeichen
im Kellerspeicher abhängen, und sie darf auch, als Nebeneffekt, ein Zeichen
im Kellerspeicher ablegen oder davon entfernen. Ein Kellerautomat erkennt ein
Eingabewort, wenn er sich nach dessen Abarbeitung in einem Finalzustand befindet und der Keller leer ist.
9.7.7 Satz. Kellerautomaten erkennen genau die kontextfreien Sprachen.
9.7.8 Beispiel. Kellerautomat zu kontextfreier Grammatik.
Um nachzuweisen, daß eine Sprache nicht kontextfrei ist, genügt es natürlich
nicht, wenn sie durch eine nicht-kontextfreie Grammtik gegeben ist. Man kann
zu diesem Zweck wieder ein Pumping Lemma verwenden.
9.7.9 Theorem. Für jede kontextfreie Sprache ist entscheidbar, ob sie
114
• ein bestimmtes Wort enthält;
• leer ist;
• endlich ist.
Nicht entscheibar dagegen ist, ob zwei kontextfreie Sprachen gleich sind oder ob
die eine die andere enthält.
9.7.10 Theorem. Die Klasse der kontextfreien Sprachen ist abgeschlossen gegenüber Verkettung, Iteration und Vereinigung, nicht aber gegenüber Komplement und Durchschnitt.
9.7.11 Lemma (Pumping Lemma). Zu jeder kontextfreien Spache L gibt es
eine Zahl n ∈ N, sodaß jedes Wort z ∈ L mit |z| > n derart in
z = uvwxy
zerlegt werden kann, daß gilt:
• |vx| > 0;
• |vwx| ≤ n;
• uv i wxi y ∈ L, für alle i ∈ N.
9.7.12 Beispiel. Die Sprache
L = {an bn cn | n ≥ 0}
ist nicht kontextfrei.
Für jedes n ∈ N wählen wir
z = an bn cn ,
welches offensichtlich in L liegt und |z| > 0 erfüllt.
Sei nun eine Zerlegung
z = uvwxy
gegeben, welche |vx| > 0 und |vwx| ≤ n erfüllt. Die erste Bedingung ergibt,
daß v und x nicht beide leer sein können, und aus der zweiten erhalten wir,
daß in vwx nicht alle drei Buchstaben vorkommen können. Wir müssen dann
ein i finden, sodaß uv i wxi y 6∈ L. Wir wählen i = 2. Tatsächlich kommt der
Buchstabe, der in vwx nicht vorkommt, in uv 2 wx2 y genauso oft vor wie in
uvwxy, was aber für zumindest einen der anderen Buchstaben nicht zutrifft.
Daher ist uv 2 wx2 y 6∈ L, woraus folgt, daß L nicht kontextfrei sein kann, weil
das Pumping Lemma verletzt ist.
9.8
Kontextsensitive Sprachen
9.8.1 Definition. Eine Grammatik G = (Σ, N, S, P) heißt kontextsensitiv, falls
alle Produktionsregel die Form
uAv ⇒ urv
haben, mit A ∈ N , r, u, v ∈ (N ∪ Σ)∗ , r 6= ². Eine Sprache heißt kontextsensitiv
wenn sie durch eine kontextsensitive Grammatik definiert werden kann.
115
Wird eine Sprache durch eine nicht-kontextsensitive Grammatik definiert, so
heißt dies noch lange nicht, daß sie nicht kontextsensitiv ist: es könnte ja eine
andere, kontextsensitive, Grammatik geben, welche dieselbe Sprache erzeugt.
9.8.2 Satz. Jede kontextfreie Sprache ist kontextsensitiv.
Beweis. Die meisten Produktionsregeln, die in einer kontextfreien Grammatik
erlaubt sind, sind auch in einer kontextsensitiven Grammatik erlaubt. Ausnahme: Regeln der Form A ⇒ ². Es läßt sich aber zeigen (nicht ganz so leicht), daß
man auf derartige Regeln verzichten kann.
Es läßt sich sogar zeigen, daß jede monotone Grammatik (bei allen Regeln
ist die rechte Seite leer oder länger als die linke) eine kontextsensitive Sprache
beschreibt.
Eine linear beschränkte Turingmaschine ist eine Turingmaschine (bzw. Rechenmaschine, Computer), die mit einem Hilfsspeicher auskommt, dessen Größe
durch eine konstantes Vielfaches der Länge des Eingabewortes beschränkt werden kann.
9.8.3 Theorem. Eine Sprache ist genau dann kontextsensitiv, wenn sie durch
eine linear beschränkte Turingmaschine erkannt wird.
9.8.4 Theorem. Für jede kontextsensitive Sprache ist entscheidbar, ob sie ein
bestimmtes Wort enthält, nicht aber ob sie leer oder endlich ist. Nicht entscheibar ist auch, ob zwei kontextsensitive Sprachen gleich sind oder ob die eine
die andere enthält.
9.8.5 Theorem. Die Klasse der kontextsensitiven Sprachen ist abgeschlossen
gegenüber Verkettung, Iteration sowie allen boolschen Mengenoperationen.
Im Vergleich zu den kontextfreien Sprachen gewinnen wir damit wieder alle Abgeschlossenheitseigenschaften (wie bei den regulären Sprachen) zurück,
müssen dafür aber zwei Entscheidbarkeitseigenschaften opfern, nicht aber die
wichtigste.
9.9
Turingmaschine
Ein Automat hat außer einer endlichen Mengen von Zuständen Zugriff auf ein
Eingabeband, welches sequentiell gelesen wird, und, wenn es ein Vollautomat
ist, auf ein Ausgabeband, welches sequentiell beschrieben wird. Es ist nicht
möglich, diese Bänder als Hilfsspeicher zu verwenden. Da der interne Speicher
eines Automaten daher stets endlich ist, kann er nur reguläre Sprachen erkennen.
Eine Verallgemeinerung stellen die Kellerautomaten dar, welche zusätzlich auf
einen Kellerspeicher zugreifen können, und daher auch kontextfreie Sprachen
erkennen können.
Eine deutliche Verallgemeinerung ergibt sich, wenn das Eingabeband auch
beschrieben und beliebig hin- und herbewegt werden kann. Man nennt dies
dann eine Turingmaschine. Sie entspricht in etwa dem, wie man auch auf Papier mit Bleistift und Radiergummi mit Symbolen hantiert, d.h. rechnet. Das
Band der Turingmaschine ist theoretisch unendlich lange; in endlicher Zeit kann
aber nur ein endlicher Teil davon beschrieben werden. Dies entspricht einem unerschöpflichen Vorrat an Schmierpapier.
116
Der Folgezustand einer Turingmaschine ergibt sich aus dem momentanen
Zustand und dem Zeichen an der aktuellen Leseposition des Bandes. Bei jeder Zustandsänderung wird darüberhinaus ein geeignetes Zeichen auf das Band
geschrieben und dieses eventuell nach vor oder zurück bewegt. Gelegentlich
ist es bequemer, auch mehrere Bänder zuzulassen. Außerdem gibt es auch bei
den Turingmaschinen, so wie bei den Automaten, deterministische und nichtdeterministische Varianten.
Eine deterministische Turingmaschine entspricht daher grob der Arbeitsweise eines gängigen Computers (mit beliebig erweiterbarem Speicher), während
eine nicht-deterministische Turingmaschine einem Parallelrechner mit einem unbeschränkten Vorrat an Prozessoren entspricht.
Die Turingmaschine wurde 1936 von Alan Turing eingeführt, um Berechenbarkeit und Entscheidbarkeit zu studieren. In der Folge wurde zahlreiche weitere
Modelle für Rechenmaschinen entwickelt. Es stellte sich heraus, daß all diese Machinen dieselben Probleme bewältigen können, also gewissermaßen äquivalent
sind. Man kann sich daher unter einer Turingmaschine genausogut ein Programm in einer gängigen Programmiersprache oder einen konkreten Computer
vorstellen, oder auch einen Menschen, der mit Symbolen hantiert. Es liegt daher
nahe, festzulegen, daß ein Problem genau dann berechenbar oder entscheidbar
ist, wenn dies eine Turingmaschine zu leisten vermag. Diese Annahme heißt auch
Churchsche These.
9.10
Rekursiv und Rekursiv aufzählbar
Sei Σ ein endliches Alphabet.
9.10.1 Definition. Eine Funktion Σ∗ → Σ∗ heißt rekursiv, wenn sie durch
eine Turingmaschine berechenbar ist.
9.10.2 Definition. Eine Teilmenge von Σ∗ (Sprache) heißt rekursiv, wenn ihre
Indikatorfunktion rekursiv ist.
Wenn eine Funktion von einer Turingmaschine berechnet wird, so bedeutet
dies insbesondere, daß sie für jede mögliche Eingabe irgendwann einmal stehen
bleibt (in einem finalen Zustand landet). Im allgemeinen kann es aber passieren,
daß sie unentwegt fortläuft, ohne je ein Ergebnis zu liefern.
9.10.3 Definition. Eine Sprache A ⊆ Σ∗ heißt rekursiv aufzählbar falls sie
von einer Turingmaschine erkannt wird, d.h. wenn es eine Turingmaschine gibt,
welche genau dann irgendwann einmal stehen bleibt, wenn ein w ∈ A eingegeben
wird.
9.10.4 Satz. Jede durch eine Grammatik definierte Sprache ist rekursiv aufzählbar.
9.10.5 Satz. Jede kontextsensitive Sprache ist rekursiv.
117
9.11
Abschlußeigenschaften
Operation
regulär
kontextfrei
kontextsensitiv
rekursiv
rekursiv aufzählbar
ja
ja
ja
ja
ja
ja
ja
ja
nein
nein
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
Verkettung
Iteration
Vereinigung
Durchschnitt
Komplement
9.12
Entscheidbarkeitseigenschaften
Problem
regulär
kontextfrei
kontextsensitiv
rekursiv
rekursiv aufzählbar
w∈L
L=∅
L endlich
L1 = L2
L1 ⊆ L2
ja
ja
ja
ja
ja
ja
ja
ja
nein
nein
ja
nein
nein
nein
nein
ja
nein
nein
nein
nein
nein
nein
nein
nein
nein
9.13
Berechenbarkeit
Wir haben die logischen Operatoren (Konjunktion, Disjunktion, Implikation,
Allquantor, Existenzquantor) mittels Introduktions- und Eliminationsregeln definiert. Ebenso ⊥, die Aussage, die stets falsch ist, und >, und ¬P steht als
Abkürzung für P =⇒ ⊥. Dieses logische System heißt konstruktive (genauer:
intuitionistische Logik).
Ganz analog dazu haben wir Mengen, insbesondere die natürliche Zahlen,
eingeführt. Wenn mittels dieser Regeln eine Funktion f : A → B definiert wird,
so ist sichergestellt, daß zu jedem α ∈ A effektiv ein Term für f (x) angegeben
werden kann.
Durch Hinzunahme der Regel Tertium non datur, dem Prinzip vom ausgeschlossenen Dritten, ergibt sich die klassische Logik, welche der Großteil der
mathematischen Literatur des 20. Jahrhunderts verwendet.
Die klassische Logik ist irgendwie einfacher, denn sie hat nur 2 Wahrheitswerte, während die konstruktive Logik unendlich viele Wahrheitswerte unterscheidet, die nochdazu sehr kompliziert strukturiert sind. Außerdem gibt es in
der klassischen Logik mehr Möglichkeiten, Sätze zu beweisen, und man kann
damit auch Sätze beweisen, die konstruktiv nicht bewiesen werden könnten.
Ein Nachteil der klassischen Logik ist dagegen, daß damit die Existenz von
Funktionen bewiesen werden kann, die nicht einmal theoretisch berechnet werden können, also gar nicht funktionieren“. Dies ist insbesondere in der Compu”
terwissenschaft recht lästig, da hier nur die berechenbaren Funktionen interessant sind, und zu deren Definition man Maschinenmodelle benötigt, von denen
nicht unbedingt klar ist, ob damit wirkich der intuitive Begriff berechenbar erfaßt wird.
Die Annahme, daß eine Funktion genau dann berechenbar ist, wenn sie auf
einer Turing-Maschine berechenbar ist, heißt Church-Turing-These. Sie wird dadurch gerechtfertigt, daß die Funktionsweise heutiger Computer im wesentlichen
118
der Turingmachine entspricht, sowie, daß zahlreiche weitere Methoden, den Berechenbarkeitsbegriff festzulegen, dazu äquivalent sind rekursive Funktionen.
Allerdings gibt es dabei auch Probleme: Einerseits ist der Begriff rekursiv
einheitlich nur Funktionen von eimem Typ wie Σ∗ → Σ∗ oder N → N definiert,
nicht aber z.B. für Funktionen vom komplizierterem Typ, wie R → R.
Andererseits betrachten wir die Funktion p : N → N
(
0 falls es unendlich viele Primzahlzwillinge gibt
p(n) =
1 falls es nur endlich viele Primzahlzwillinge gibt.
Mittels Prinzip vom ausgeschlossenen Dritten erkennen wir sofort, daß diese
Funktion konstant ist. Damit ist sie auch rekursiv. Andererseits weiß niemand,
ob es unendlich viele Primzahlzwillinge gibt oder nicht. (Und wenn diese Frage
doch irgendwann einmal geklärt werden sollte, nimmt man einfach irgendein anderes ungeklärtes Problem.) Daher haben wir keine Möglichkeit zur Verfügung,
auch nur einen Funktionswert, etwa p(1), zu berechenen, nichteinmal, wenn uns
beliebig viel Zeit und Speicherplatz zur Verfügung stünde. Schlimmer noch, es
könnte sogar sein, daß die Frage, ob es unendlich viele Primzahlzwillinge gibt
oder nicht, tatsächlich unentscheidbar ist (jedenfalls weiß man, daß es solche
unentscheibare Aussagen über die natürlichen Zahlen gibt).
Bis auf diese solche Fragen im Grenzbereich stimmen aber die rekursiven
Funktionen mit denjenigen, deren Existenz konstruktiv bewiesen werden kann,
überein, und beschreiben sehr gut den intuitiven Berechenbarkeitsbegriff.
9.14
Entscheidbarkeit
Das Prinzip vom ausgeschlossenen Dritten liefert definitiv einen Widerspruch,
wenn es eine Aussage P gibt, sodaß
P ⇐⇒ ¬P,
also eine Aussage, die genau dann wahr ist, wenn sie falsch ist. Tatsächlich läßt
die deutsche Sprache derartige Aussagen zu, z.B.:
P = Dieser Satz ist falsch“.
”
Wenn P wahr ist, dann heißt das gerade, daß P falsch ist, und wenn P falsch ist,
dann stimmt der Datz offensichtlich. Gilt nun das Prinzip vom ausgeschlossenen
Dritten, so hat man damit einen Widerspruch, und damit ist jeder Satz sowohl
wahr als auch falsch (ex falsum quodlibet), wodurch das ganze logische System
sinnlos wird.
Damit ist zuerst einmal klar, daß man bei natürlichen Sprachen die Regeln für klassische Logik nur mit Bedacht anwenden darf. Für formale Sprachen
dagegen kann man derartige selbstbezügliche Sätze ausschließen. Sobald man allerdings die natürlichen Zahlen verwendet, hat man auch das Rekursionsprinzip,
welches ja auch eine Art Selbstbezüglichkeit ausdrückt. Tatsächlich gelingt es
einen Satz über die natürlichen Zahlen zu konstruieren, der dem obigen Satz P
entspricht. Dies ist ein bemerkenswertes klassisches Resultat der Logik:
9.14.1 Theorem (Gödel’scher Unvollständigkeitssatz). Jedes formale
logische System, welches ausdrucksstark genug ist, um darin die natürlichen
119
Zahlen zu beschreiben, ist entweder widersprüchlich oder beinhaltet unbeweisbare
Sätze, von denen auch die Negation nicht beweisbar ist.
Das Prinzip vom ausgeschlossenen Dritten läßt sich daher nur dadurch retten, daß man klar zwischen beweisbaren und wahren Sätzen unterscheidet. Dabei
ergibt sich allerdings das praktische Problem, daß es unmöglich ist, die Klasse
der wahren Sätze über die natürlichen Zahlen irgendwie formal zu definieren
(sie sind nicht rekursiv aufzählbar). Für die Praxis relevant sind daher in jedem
Fall nur die beweisbaren Sätze.
Eine Variante dieses Satzes besagt, daß es unmöglich ist, die Konsistenz eines
hinreichend komplexen logischen Systems zu beweisen.
9.15
Komplexitätsklassen
Um die Komplexität von Algorithmen festzustellen, zählt man, wieviele Schritte
dafür auf einer bestimmten Maschine (etwa einer Turingmaschine) notwendig
sind Diese Zählung ist freilich sehr vom verwendeten Maschinenmodell ab und
ist außerdem unnötig kompliziert. Meist versucht man, die Komplexität durch
eine von der Länge des Inputs abhängige Funktion zu beschränken, wobei konstante Faktoren unberücksichtigt bleiben (O-Notation), womit, außer der Vereinfachung, auch eine gewisse Maschinenunabhängigkiet erreicht wird.
Zu O-Notation: http://en.wikipedia.org/wiki/Big_O_notation
9.15.1 Definition. Ein Algorithmus ist polynomial, wenn es einen (fixen!)
Exponenten k gibt, sodaß die Komplexität bei einem Input der Länge n durch
O(nk ) beschränkt werden kann.
9.15.2 Beispiel.
Die Addition von höchstens n-stelligen Binär- oder Dezimalzahlen ist (mit dem
üblichen Algorithmus) durch O(n) beschränkt, also insbesondere polynomial
(mit k = 1, er ist daher sogar linear ).
Der übliche Algorithmus für die Multiplikation benötigt O(n2 ) Schritte, ist also
ebenfalls polynomial, aber nicht linear. (Es gibt aber auch schnellere Algorithmen, die sich bei sehr großen Zahlen auszahlen; der Rekord liegt derzeit bei
O(n log n log log n), was nur geringfügig mehr als linear ist).
9.15.3 Definition.
• Ein Problem ist in der Klasse P, wenn es mit einer deterministischen
Turingmaschine in polynomialer Zeit berechnet werden kann.
• Ein Problem ist in der Klasse NP, wenn es auf einer nicht-deterministischen
Turingmaschine in polynomialer Zeit berechnet werden kann. Oder: wenn
dessen Lösung mit einer deterministischen Turingmaschine in polynomialer Zeit überprüft werden kann.
• Ein Problem ist in der Klasse EXPSPACE, wenn es mit einer Turingmaschine mit einem höchstens exponentiell ansteigenden Speicher (wieder
abhängig von der Länge des Inputs) gelöst werden kann.
• Ein Problem heißt primitiv rekursiv (Klasse PR), wenn sie mit primitiver
Rekursion (das heißt vereinfacht: nur mit for-Schleifen, aber ohne whileSchleifen) gelöst werden kann.
120
• Ein Problem ist rekursiv (mit while-Schleifen, aber terminierend) wird mit
R bezeichnet.
• Die Klasse RE besteht aus den Problemen, für die eine Turingmaschine in
endlicher Zeit JA sagen kann, aber statt der Antwort NEIN möglicherweise
nie terminiert.
Natürlich gibt es dazwischen noch mehrere Abstufungen und Verfeinerungen, vgl. etwa
http://en.wikipedia.org/wiki/List_of_complexity_classes, oder noch genauer http://qwiki.caltech.edu/wiki/Complexity_Zoo.
9.15.4 Satz. Es gilt:
P ⊆ N P ⊂ EXPSPACE ⊂ P R ⊂ R ⊂ RE
Es ist ein bekanntes offenes Problem, ob P = N P gilt.
9.15.5 Definition. Ein Problem ist NP-vollständig (NP-complete) wenn es in
der Klasse NP ist und jedes andere NP-Problem in polynomialer Zeit darauf
zurückgeführt werden kann.
9.15.6 Beispiel. Die üblichen arithmetischen Operationen, insbesondere das
Lösen von linearen Gleichungssymstem und linearen (nicht-diskreten) Optimierungsproblemen), sowie die einfacheren“ graphentheoretischen Probleme (Eu”
lerscher Weg, kürzester Weg, maximaler Durchfluß, Planarität, 2-Färbbarkeit)
sind in der Klasse P . Auch das Erkennen kontexfreier Sprachen ist in der Klasse P .
Viele diskrete Optimierungsaufgaben und Suchprobleme sind in der N P -vollständig,
z.B. Graphen-Isomorphie, Hamiltonscher Weg in einem Graphen, TravellingSalesman-Problem, 3-Färbbarkeit.
Das Lösen von algebraischen Gleichungssystemen über den rationalen Zahlen
ist in EXPSPACE.
Die Preßburger Arithmetik (eine Theorie der natürlichen Zahlen ohne Rekursion) oder die Theorie der formal rellen Körper (eine Theorie der reellen Zahlen
ohne Grenzwerte) sind noch schwieriger, lassen sich mit primitiver Rekursion
entscheiden.
Die Ackermann-Funktion ist rekursiv, aber nicht primitiv rekursiv.
Die Klasse der (in einem formalen System) beweisbaren Sätze ist rekursiv aufzählbar,
aber im allgemeinen nicht rekursiv. Ebenso die Menge der pariell rekursiven
Funktionen, oder die Menge der rekursiv aufzählbaren Probleme.
Die Menge der wahren Sätze über die natürlichen Zahlen ist nicht rekursiv
aufzählbar, ebenso wie die Menge der rekursiven Funktionen oder der Probleme
der Klasse R.
121
Herunterladen