Vorwort zur 1. Auflage

Werbung
Vorwort zur 1. Auflage
Dieses Buch umfasst den Inhalt der Theoretischen Informatik, wie er in etwa
an der Universität Koblenz-Landau im Grundstudium des Diplomstudienganges Informatik gelehrt wird. Es ist aus verschiedenen Vorlesungen von Lutz
Priese und zwei Skripten von Sven Hartrumpf und Katrin Erk entstanden.
Zum Zeitpunkt der Erstellung dieses Buches war Frau Erk noch Studentin.
Das Buch ist das Ergebnis eines Ringens beider Autoren aus zwei unterschiedlichen Warten: Die professorale Sichtweise von Priese auf formale
Korrektheit und die studentische Sichtweise von Erk auf Klarheit und Vermittelbarkeit der Inhalte sind hier eine Symbiose eingegangen. Das Resultat
ist ein (hoffentlich) formal korrektes und doch relativ leicht lesbares Buch,
in dem der gesamte relevante Stoff der Grundstudiumsvorlesungen mit allen
Beweisen dargestellt ist. Wir haben nicht den leichten (modernen?) Weg beschritten, Beweise überall dort, wo sie anspruchsvoll werden, zu übergehen
oder nur noch zu skizzieren. Im Gegenteil, je anspruchsvoller der Beweis, um
so mehr Details haben wir zu übermitteln versucht, um Studenten zu helfen,
sich die Beweise zu erarbeiten. Wir glauben, dass gerade eine vollständige Beweisführung an allen Stellen das Verstehen des Buches erleichtert und
nicht etwa erschwert. So werden z.B. die Existenz der Greibach-Normalform
in kontextfreien Grammatiken, die Gleichwertigkeit von µ-rekursiven und
Turing-berechenbaren Funktionen, die Existenz universeller Maschinen, der
Abschluss kontextsensitiver Sprachen unter Komplementbildung etc. im Detail bewiesen.
Danksagen möchten wir zahlreichen Studenten, deren Kommentare und
Fragen zu Skript-Vorläufern sehr hilfreich waren. Besonderer Dank gilt Sven
Hartrumpf für eine sehr schöne erste Skriptversion zum Teil Berechenbar”
keit“ (einschließlich des Kapitels Turing-Maschinen“) sowie Mark Eggen”
stein, Christoph Gilles, Harro Wimmel und Jörg Zeppen für das Korrekturlesen des Textes. Vielen Dank schließlich auch an den Springer-Verlag für die
gute Zusammenarbeit.
Koblenz, im Januar 2000
Lutz Priese, Katrin Erk
Vorwort zur 2. Auflage
Wir haben den Text der ersten Auflage unverändert gelassen, bis auf die Verbesserung einiger weniger Schreibfehler. Neu ist ein Abschnitt zu reversiblen
Rechnungen (14.8) im Kapitel Alternative Berechnungsmodelle“. Mit re”
versiblen Rechnungen kann man einige interessante Rechenmodelle abstrakt
beschreiben: In der Chemie werden nahe dem thermodynamischen Gleichgewicht Prozesse umkehrbar. In der Physik sind reversible Prozesse ohne
Informationsverlust wichtig in der Quantenmechanik. Sie spielen eine grundlegende Rolle für Quantenrechner, ein aktuelles Forschungsgebiet. Wir stellen
reversiblen Rechnungen als eine unkonventionelle Grundlage für weitere alternative Rechenmodelle recht ausführlich auf 33 neuen Seiten vor.
Koblenz, im August 2001
Lutz Priese, Katrin Erk
Vorwort zur 3. Auflage
Der Text der zweiten Auflage wurde für die dritte Auflage um einen Abschnitt über formale Splicing-Systeme im Kapitel über alternative Berechnungsmodelle ergänzt, und es wurden die Beweise zweier Sätze neu geführt.
Einige wenige Schreibfehler wurden korrigiert und eine Umstellung auf eine
entschärfte Version der neuen deutschen Rechtschreibung durchgeführt.
In den letzten Jahrzehnten haben biologisch motivierte Rechenkonzepte
einen starken Auftrieb erhalten. Hierzu zählen ältere Konzepte wie Genetische Algorithmen und Neuronale Netze, die in der Praktischen Informatik einen festen Platz gefunden haben. Aus dem Bereich des DNA Computing wurden diverse Varianten von formalen Splicing-Regeln in die Theoretische Informatik aufgenommen. Wir stellen davon H-Syteme und Test-tubeSysteme vor. In dem neuen Abschnitt zeigen wir detailliert, dass endliche HSyteme nur reguläre Sprachen generieren können, während man mit sehr einfachen Test-tube-Systemen die Rechnung beliebiger Turing-Maschinen nachspielen kann.
Satz 14.8.19 in der zweiten Auflage erwies sich leider als inkorrekt. In
diesem Satz wurde im Wesentlichen gesagt, dass zu jeder Grammatik G =
(V, T, R, S) über einem Alphabet Σ mit der erzeugten Sprache L(G) = {w ∈
Σ ∗ |S =⇒∗G w} eine chemisch reversible Grammatik G0 = (V 0 , T, R0 , S 0 ) und
ein Sondersymbol ω 6∈ Σ existieren mit L(G) = {w ∈ T ∗ |S 0 =⇒∗G0 w ω}.
Dies ist aber nicht richtig, vielmehr benötigt man für die chemisch reversible
Grammatik G0 zwei Sondersymbole, α als Startmarker und ω als Endmarker,
und es gilt dann L(G) = {w ∈ T ∗ |S 0 =⇒∗G0 α w ω}.
Ferner wurden wir dankenswerterweise von Herrn Immanuel Stampfli aus
Bern auf einen recht versteckten Fehler im Beweis von Lemma 13.6.12 hingewiesen. Dieses Lemma besagte, dass jede Rechnung eines Postschen Normalsystems in einem geeignetem Postschen Korrespondenzsystem nachgespielt werden kann, und wurde im Satz 13.6.9 zum Beweis der Unentscheidbarkeit des Postschen Korrespondenzproblems benötigt. Klassischerweise simuliert man mit Postschen Korrespondenzsystemen die Arbeit von TuringMaschinen oder Grammatiken und nicht von Postschen Normalsystemen, wie
wir es versucht hatten. Da sich der Fehler nicht einfach beheben ließ, folgen
wir in dieser dritten Auflage dem üblichen Weg und simulieren im neuen Lem-
X
Vorwort
ma 13.6.12 mit Postschen Korrespondenzsystemen die Arbeit von speziellen
Grammatiken, nämlich Semi-Thue-Systemen.
Koblenz, im September 2007
Lutz Priese
2. Begriffe und Notationen
In diesem und dem nächsten Kapitel versuchen wir, alle mathematischen
Konzepte, die in diesem Buch benutzt werden, kurz vorzustellen. Tatsächlich
kann eine Einführung in die Theoretische Informatik mit erstaunlich wenigen mathematischen Sachverhalten auskommen. Trotzdem können wir in
diesem Kapitel nicht über eine knappe Beschreibung hinausgehen. Insofern
ist natürlich ein vertrauterer Umgang mit der Mathematik hilfreich für das
Verständnis dieses Buches.
2.1 Logische Formeln und Konnektoren
Aussagen sind hier Sätze, von denen man sinnvollerweise sagen kann, dass
sie wahr oder falsch sind (ohne dass konkret bekannt sein muss, ob sie wahr
sind). Wahre Aussagen sind zum Beispiel
Das Wort Opossum hat 7 Buchstaben“ und
”
5 ist eine natürliche Zahl.“
”
Eine falsche Aussage ist dagegen
5 ist eine gerade Zahl.“
”
Auch der Satz
Es gibt unendlich viele Primzahlzwillinge‘, d.h. Paare p1 , p2 von
”
’
Primzahlen, für die p2 − p1 = 2 gilt.“
ist eine Aussage – nur weiß man bis heute nicht, ob sie wahr oder falsch
ist. Um allgemein über eine Aussage sprechen zu können, gibt man ihr einen
Namen. So kann zum Beispiel der Name x stehen für 5 ist eine gerade Zahl“,
”
und wir können dann sagen, dass x eine falsche Aussage ist. Für eine Aussage
x sagt man statt x ist wahr“ auch x gilt“ oder einfach x“. Der Name x
”
”
”
steht für die Aussage in derselben Weise, wie ein Funktionsname f für eine
Funktion steht: Über die tatsächliche Berechnungsvorschrift sagt der Name
f nichts aus, es kann dahinter eine simple Addition stehen oder eine beliebig
aufwendige Funktion. Genauso sagt auch der Name x nichts über den Inhalt,
die Bedeutung der Aussage aus.
Einzelne Aussagen lassen sich verknüpfen zu komplexeren Aussagen. Betrachten wir zum Beispiel den Satz
4
2. Begriffe und Notationen
Das Wort funkelnagelneu ist ein Substantiv, und Reliefpfeiler
”
ist ein Palindrom.“
Dieser Satz ist eine zusammengesetzte Aussage, und die Teilaussagen sind
mit und“ verknüpft. Ist die Aussage wahr oder falsch? Die erste Teilaussage
”
ist falsch, die zweite ist wahr. Die Teilaussagen sind mit und“ verbunden,
”
und intuitiv würde man sagen, dass die Behauptung, es gelte etwas Falsches
und etwas Wahres, falsch ist. So ist es auch in der Logik: Die obige Aussage ist
falsch. Allgemein gilt: Ob eine zusammengesetzte Aussage wahr oder falsch
ist, hängt davon ab, ob ihre Teilaussagen wahr oder falsch sind, und davon,
wie die Teilaussagen verknüpft sind.
Wenn nun der Name x für den ersten Teil der obigen Aussage steht und y
für den zweiten, dann lässt sich die gesamte Aussage schreiben als x und y“
”
oder, in Symbolen, als x ∧ y“. Wenn man so von den Inhalten der Aussagen
”
abstrahiert hat und nur noch Aussagennamen und verknüpfende Symbole vor
sich hat, spricht man statt von einer Aussage oft von einer Formel.
Insgesamt wollen wir die folgenden Konnektoren (logischen Symbole für
Verknüpfungen) verwenden:
F ∧ G steht für F und G“. Eine und“-Aussage ist wahr, falls beide
”
”
Teilaussagen wahr sind. Zum Beispiel ist
Das Wort Opossum hat 8 Buchstaben, und es enthält genau 2
”
o‘.“
’
eine falsche Aussage – die erste Teilaussage ist falsch.
F ∨ G steht für F oder G“. Eine oder“-Aussage ist wahr, falls mindes”
”
tens eine Teilaussage wahr ist. Das oder“ ist hier also nicht exklusiv,
”
im Sinn eines entweder-oder“, gemeint. Eine wahre Aussage ist zum
”
Beispiel
5 ist eine gerade Zahl, oder 8 ist durch 2 teilbar.“
”
¬F steht für nicht F“. Die Negation einer Aussage ist wahr genau dann,
”
wenn die Aussage falsch ist. Eine wahre Aussage ist zum Beispiel
Es ist nicht der Fall, dass 4 eine Primzahl ist.“
”
F =⇒ G steht für wenn F , dann G“ oder aus F folgt G“. Die wenn”
”
”
dann“-Aussage F =⇒ G ist wahr, falls entweder F und G beide wahr
sind, oder falls F falsch ist. Aus einer falschen Voraussetzung kann man
also alles Beliebige schließen. Zum Beispiel ist
Wenn 3! = 6 ist, dann ist 4! = 24“
”
eine wahre Aussage, genau wie
Wenn 3! = 5 ist, dann ist 4! = 2.“
”
Dagegen ist
Wenn 6 durch 3 teilbar ist, dann ist 6 eine Primzahl“
”
offenbar eine falsche Aussage.
In F =⇒ G heißt F auch die Prämisse, G die Konklusion der Folgerung.
2.1 Logische Formeln und Konnektoren
5
F ⇐⇒ G steht für F genau dann, wenn G“. Eine solche Aussage ist
”
wahr, wenn entweder beide Teilaussagen wahr oder beide falsch sind.
Eine wahre Aussage ist zum Beispiel
Die Zahl 234978 ist durch 3 teilbar genau dann, wenn die Quer”
summe von 234978 durch 3 teilbar ist.“
Im Fließtext schreiben wir statt ⇐⇒ auch gdw. Wenn das genau dann,
”
wenn“ in Definitionen verwendet wird, etwa in der Form Eine natürliche Zahl
”
heißt ungerade genau dann, wenn sie nicht durch 2 teilbar ist“, verwenden
wir das Zeichen :⇐⇒“ in Analogie zu :=“.
”
”
Bisher haben wir nur Aussagen über einzelne Objekte betrachtet, etwa
die Zahl 5 oder das Wort Opossum. Oft geht es uns aber um Mengen von Objekten, von denen manche eine bestimmte Eigenschaft haben, andere nicht.
Zum Beispiel haben manche Elemente der Menge der natürlichen Zahlen die
Eigenschaft, gerade zu sein, und andere Elemente haben diese Eigenschaft
nicht. Im Gegensatz zu den oben betrachteten Aussagen der Art 8 ist eine
”
gerade Zahl“ enthält eine Eigenschaft eine (oder mehr) Variablen, wie in n
”
ist eine gerade Zahl“. Eine solche Eigenschaft, ein sogenanntes Prädikat, kann
je nach den Werten, die für die Variablen eingesetzt werden, wahr oder falsch
werden. Zum Beispiel lässt sich der gerade genannte Satz, n ist eine gerade
”
Zahl“, auffassen als ein Prädikat mit der Variablen n, P (n). Für n = 2 ist
dies Prädikat wahr, für n = 3 ist es falsch. Für den Umgang mit Prädikaten
übernehmen wir zwei weitere Symbole aus der Logik:
∀x P (x) steht für für alle x gilt P (x)“. Zum Beispiel kann man die Tat”
sache, dass durch 6 teilbare Zahlen auch durch 3 teilbar sind, ausdrücken
als ∀x ∈ N (x mod 6 = 0 =⇒ x mod 3 = 0).
∀ heißt auch Allquantor.
∃x P (x) steht für es gibt (mindestens) ein x, so dass P (x)“. Ein Bei”
spiel dafür wäre etwa Es gibt mindestens ein Wort der deutschen Spra”
che, das genau 5 e‘ und keine anderen Vokale enthält“ oder in Zeichen
’
∃x (D(x) ∧ E(x)), falls D(x) heißt x ist ein Wort der deutschen Sprache“
”
und E(x) steht für x enthält genau 5 e‘ und keine anderen Vokale“.
”
’
∃ heißt auch Existenzquantor.
∃!x P (x) steht für es gibt genau ein
¡ x, so dass P (x)“. Es kann
¢ als
”
Abkürzung gesehen werden für ∃x P (x) ∧ ∀y (P (y) ⇐⇒ y = x) .
Dazu sollte man noch anmerken:
¡
¢
• ∀x ∈ A P (x)“ steht für ∀x ¡x ∈ A =⇒ P (x)¢ , und
”
• ∃x ∈ A P (x)“ steht für ∃x x ∈ A ∧ P (x) .
”
• Als eine¡ weitere Abkürzung
schreiben wir ∃x ∈ A, y ∈ B P (x, y)“ für
¢
”
∃x ∈ A ∃y ∈ B P (x, y) .
6
2. Begriffe und Notationen
Beispiel 2.1.1.
¡
¢
∀ε > 0 ∃δ > 0 ∀x |x − x0 | < δ =⇒ |f (x) − f (x0 )| < ε
heißt: Für alle ε, die größer als 0 sind, gibt es ein δ größer 0, so dass für jedes
beliebige x gilt: Wenn |x − x0 | < δ ist, dann ist auch |f (x) − f (x0 )| < ε. Das
ist gerade die bekannte Definition dafür, dass die Funktion f an der Stelle x0
stetig ist. (x, x0 , ε und δ sind in diesem Kontext Variablen für reelle Zahlen.)
Hier kann man sich auch gut klarmachen,
entspricht,
¡ dass es der Intuition
¢
∀x ∈ A P (x)“ auf eine Implikation ∀x x ∈ A =⇒ P (x) zurückzuführen,
”
und nicht auf ein ∧ wie ∃-Ausdrücke. Für alle ε gilt: Falls ε größer 0 ist, dann
gibt es ein zugehöriges δ, so dass . . .
Generell benutzen wir x, y, z, x1 , x2 etc. für Variablen über unterschiedliche Wertebereiche. Für welche Arten von Objekten (z.B. reelle Zahlen,
natürliche Zahlen, deutsche Wörter, Formeln etc.) x, y, z gerade stehen, wird
jeweils aus dem Zusammenhang klar. n, m, ni etc. benutzen wir meist als Variablen für natürliche Zahlen, f, g, h etc. für Funktionen, und F, G, H etc. für
Formeln. Letztlich werden wir den Gebrauch von Bezeichnungen für Variablen sehr liberal handhaben, wie in der Informatik üblich.
Neben den Konnektoren, die wir gerade eingeführt haben, benutzen wir
auch die anderen üblichen mathematischen Abkürzungen, wie o.E. (ohne Einschränkung) oder o.B.d.A. (ohne Beschränkung der Allgemeinheit).
Die Operatoren, die wir bislang eingeführt haben, binden unterschiedlich
stark, nämlich – in fallender Bindungspriorität aufgeführt –
1. ¬, ∀, ∃ 2. ∧, ∨ 3. =⇒ , ⇐⇒
Um andere Bindungen auszudrücken, verwendet man Klammern, wie es auch
oben im Beispiel zum ∀“ geschehen ist: Ohne die Klammerung hätte das
”
∀x“, das stärker bindet als das =⇒“, sich nur auf x mod 6 = 0“ bezogen.
”
”
”
Beispiel 2.1.2. Ein Beweisverfahren, das wir in diesem Buch immer wieder
verwenden, ist das der Induktion: Wenn man per Induktion beweisen will,
dass alle Zahlen n ∈ N eine Eigenschaft P (n) haben, dann reicht es, zweierlei
zu zeigen: Erstens, dass die Zahl 0 die Eigenschaft P besitzt; zweitens, dass,
falls eine Zahl n die Eigenschaft P hat, auch n+1 diese Eigenschaft hat. Damit
gilt dann schon, dass alle natürlichen Zahlen die Eigenschaft P haben.
Das Prinzip der Induktion kann man mit einer kurzen logischen Formel
beschreiben: Ist P (n) eine Eigenschaft, dann gilt:
¡
¢
P (0) ∧ ∀n P (n) =⇒ P (n + 1) =⇒ ∀nP (n)
2.2 Grundkonzepte aus der Mengenlehre
Was sind die typischen Eigenschaften einer Menge? Eine Menge enthält jedes
Objekt nur einmal, und die Objekte sind ohne eine vorgegebene Ordnung
2.2 Grundkonzepte aus der Mengenlehre
7
zusammengefasst – die Menge {2, 1} ist identisch mit {1, 2}. Nach Cantor ist
eine Menge eine Zusammenfassung von bestimmten wohlunterschiedenen
”
Objekten unserer Anschauung oder unseres Denkens zu einem Ganzen“. Ein
Beispiel einer Menge, die in diesem Buch häufig verwendet wird, ist die der
natürlichen Zahlen.
Die Objekte, die in einer Menge zusammengefasst sind, heißen auch die
Elemente der Menge. Die Aussage x ist ein Element der Menge M“ schrei”
ben wir in Zeichen als x ∈ M“. Es gibt mehrere Möglichkeiten, eine Men”
ge anzugeben. Eine ist die explizite Angabe aller Elemente in geschweiften
Klammern; oben haben wir diese Schreibweise für die Menge {1, 2} schon
verwendet. Sie kann natürlich nur für endliche Mengen angewendet werden.
Eine unendliche Menge kann man, ein wenig informell, in der Pünktchen”
Schreibweise“ beschreiben, zum Beispiel die Menge der natürlichen Zahlen als
{0, 1, 2, 3, 4 . . .}. Formal exakt ist dagegen die Beschreibung einer Menge über
eine Eigenschaft: Ist P eine Eigenschaft, dann ist {x | P (x)} die Menge aller
Objekte, die die Eigenschaft P besitzen. So könnte man zum Beispiel die Menge aller geraden natürlichen Zahlen beschreiben als {x ∈ N | x mod 2 = 0}
oder als {x | ∃n ∈ N x = 2n}.
Definition 2.2.1. Einige häufig gebrauchte Mengen tragen die folgenden Bezeichnungen:
• N ist die Menge der natürlichen Zahlen einschließlich der 0, also die Menge
{0, 1, 2, 3, . . .},
• N+ ist die Menge der natürlichen Zahlen ausschließlich der 0, also die
Menge {1, 2, 3, 4, . . .},
• Z ist die Menge der ganzen Zahlen, {0, 1, −1, 2, −2, . . .},
• Q ist die Menge der rationalen Zahlen,
• R ist die Menge der reellen Zahlen,
• R+ ist die Menge der positiven reellen Zahlen, R+ = {x ∈ R | x > 0}.
• [a, b] := {x ∈ R | a ≤ x ≤ b} ist das abgeschlossenen reelle Intervall von a
bis b,
• (a, b) := {x ∈ R | a < x < b} ist das offene reelle Intervall von a bis b ,
und (a, b], [a, b) sind analog definiert.
• ∅ ist die leere Menge.
Es gibt viele Notationen und Operationen im Zusammenhang mit Mengen. Die für unsere Zwecke wichtigsten sind in der folgenden Definition zusammengefasst.
Definition 2.2.2. Seien M und N Mengen.
• |M | ist die Anzahl der Elemente in M . |M | = ∞ bedeutet, dass M unendlich viele Elemente enthält.
• M ∪ N := {x | x ∈ M ∨ x ∈ N } ist die Vereinigung von M und N .
• M ∩ N := {x | x ∈ M ∧ x ∈ N } ist der Durchschnitt von M und N .
8
2. Begriffe und Notationen
•
•
•
•
•
M − N := {x ∈ M¡ | x 6∈ N } ist die Menge
M ohne N“.
¢
”
M ⊆ N :⇐⇒ ∀x x ∈ M =⇒ x ∈ N – M ist eine Teilmenge von N .
M = N :⇐⇒ M ⊆ N ∧ N ⊆ M – die Mengen M und N sind gleich.
M ⊂ N :⇐⇒ M ⊆ N ∧ M 6= N – M ist eine echte Teilmenge von N .
2M := { N | N ⊆ M } ist die Potenzmenge von M , die Menge aller
Teilmengen von M .
• M1 × . . . × Mn := { (a1 , . . . , an ) | a1 ∈ M1 , . . . , an ∈ Mn } ist das Kreuzprodukt von n Mengen. Das Ergebnis ist eine Menge von n-Tupel, die
alle möglichen Kombinationen von n Elementen enthält, so dass das erste
Element aus M1 ist, das zweite aus M2 etc.
Für ¬(x ∈ M ), ¬(M ⊆ N ) u.ä. schreiben wir auch x 6∈ M, M 6⊆ N usw.
Beispiel 2.2.3. Die letzten zwei Konzepte verdeutlichen wir durch ein kurzes
Beispiel.
• Für die Menge M = {1, 2, 3} ist die Potenzmenge
n
o
2M = ∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} .
• Für die zwei Mengen M1 = { a, b } und M2 = { x, y } ist das Kreuzprodukt
M1 × M2 = { (a, x), (a, y), (b, x), (b, y) }.
Wenn man die Vereinigung, den Durchschnitt oder das Kreuzprodukt von
mehr als zwei Mengen bilden will, kann man eine vergrößerte Variante“ der
”
betreffenden Symbole verwenden.
Definition 2.2.4. Sei A irgendeine Menge, und zu jedem a ∈ A sei eine
weitere Menge Ma gegeben. Dann ist
S
a∈A Ma := {x | ∃a ∈ A x ∈ Ma }
T
a∈A Ma := {x | ∀a ∈ A x ∈ Ma }
Konkret könnte das so aussehen:
Beispiel 2.2.5. Wir betrachten die Menge A = {2, 3, 4}
S und dazu die Mengen
Ma = {x | ∃n ∈ N x = na } für a ∈ A. Dann ist a∈A Ma die Menge all
2
3
4
derer natürlichen Zahlen
T x, die sich als n oder n oder n schreiben lassen
für irgendein n ∈ N. a∈A Ma sind gerade die natürlichen Zahlen, deren
zweite, dritte und vierte Wurzel in N liegt.
Falls sich die Menge A wie in diesem Beispiel schreiben lässt als A =
{i ∈ N | k ≤ i ≤ `}, bezeichnen wir die Vereinigungsmenge auch kürzer als
[
k≤i≤`
Mi oder
`
[
i=k
Mi .
T
Analog kann man für
vorgehen. In gleicher Weise wie Vereinigung und
`
Durchschnitt beschreiben wir auch das Kreuzprodukt: Xi=k Mi ist eine
Abkürzung für Mk × . . . × M` . Formal lässt sich das per Induktion so definieren:
2.2 Grundkonzepte aus der Mengenlehre
9
Definition 2.2.6. Das Kreuzprodukt X ist definiert durch
`
• Xi=k Mi := ∅ für ` < k,
k
• Xi=k Mi := Mk , und
³
´
k+`+1
k+`
• Xi=k Mi := Xi=k Mi × Mk+`+1 .
n
Das n-fache Kreuzprodukt einer Menge M , Xi=1 M , kürzt man auch ab
3
als M n . In Xi+1 Mi haben wir genaugenommen eine¡Rechtsklammerung,
das
¢
heißt, Elemente aus dieser Menge haben die Form (a, b), c . Diese Objekte
3
identifizieren wir aber mit (a, b, c), so dass Xi=1 Mi = M1 × M2 × M3 gilt.
2.2.1 Relationen
Eine Relation setzt Elemente mehrerer Mengen zueinander in Beziehung. Zum
Beispiel könnte man die Tatsache, dass nach der gebräuchlichen Anordnung
der Buchstaben im Alphabet a der erste, b der zweite Buchstabe ist und so
weiter, ausdrücken in einer Relation, die jeden Buchstaben in Zusammenhang setzt mit seiner Ordnungsnummer. Formal könnte man diese Relation
beschreiben als eine Menge, nämlich die Menge
©
ª
(a, 1), (b, 2), (c, 3), . . . , (z, 26)
In diesem Beispiel ist jedem Buchstaben genau eine Zahl zugeordnet.
Aber es geht auch anders. Wir könnten die Anordnung der Buchstaben auch
durch eine Relation < beschreiben mit a < b, a < c, . . . , a < z, b < c, b <
d, b < e, . . . , y < z. < ist damit einfach eine Teilmenge von {a, b, c, . . . , y} ×
{b, c, d, . . . , z}. Ein weiteres Beispiel einer Relation, hier einer zwischen {a, b}
und {1, 2, 3}, ist
(a, 1), (a, 2), (b, 2), (b, 3)
Man könnte sie graphisch so verdeutlichen:
Wir haben die drei konkreten Relationen, die wir bisher kennengelernt
haben, als Mengen beschrieben, und zwar als Teilmengen des Kreuzprodukts.
Im ersten Fall ging es z.B. um eine Teilmenge des Kreuzprodukts der Mengen
{a, . . . , z} und {1, . . . , 26}. Halten wir das formal fest (dabei verallgemeinern
wir auch von einem Kreuzprodukt von zwei Mengen auf eines von n Mengen):
Definition 2.2.7 (Relation). Eine n-stellige Relation R über den Mengen
n
M1 , . . . , Mn ist eine Menge R ⊆ Xi=1 Mi .
10
2. Begriffe und Notationen
Betrachten wir ein weiteres Beispiel einer Relation, diesmal einer Relation
nicht zwischen unterschiedlichen Mengen, sondern zwischen Elementen derselben Menge N:
Beispiel 2.2.8. Man kann die ≤-Beziehung zwischen natürlichen Zahlen auffassen als zweistellige Relation ≤ = {(a, b) ∈ N × N | ∃c ∈ N a + c = b}.
Statt (a, b) ∈ ≤ schreibt man natürlich üblicherweise a ≤ b.
Eine Relation wie ≤ ist eine Ordnungsrelation. Sie beschreibt eine Anordnung der Elemente in N. Sie hat spezielle Eigenschaften: Zum Beispiel folgt
aus a ≤ b und b ≤ c schon a ≤ c. Weitere wichtige Eigenschaften solcher und
anderer Relationen beschreibt die nächste Definition.
Definition 2.2.9. Eine zweistellige Relation τ ⊆ A × A heißt
reflexiv gdw. ∀a ∈ A a τ a,
irreflexiv gdw. ∀a ∈ A ¬(a τ a),
symmetrisch gdw. ∀a, b ∈ A (a τ b =⇒ b τ a),
antisymmetrisch gdw. ∀a, b ∈ A
¡ (a τ b ∧ b τ a =⇒
¢ a = b),
asymmetrisch gdw. ∀a, b ∈ A a τ b =⇒ ¬(b τ a)
transitiv gdw. ∀a, b, c ∈ A (a τ b ∧ b τ c =⇒ a τ c).
Äquivalenzrelation gdw. sie reflexiv, symmetrisch und transitiv ist.
Ordnungsrelation (vom Typ ≤) gdw. sie reflexiv, antisymmetrisch und
transitiv ist.
Ordnungsrelation (vom Typ <) gdw. sie irreflexiv, asymmetrisch und transitiv ist.
Eine Äquivalenzrelation τ ⊆ A × A partitioniert die Menge A in Teilmengen, in denen alle Elemente zueinander äquivalent sind. Das ergibt sich aus
ihren Eigenschaften der Reflexivität, Symmetrie und Transitivität, die in der
letzten Definition beschrieben sind. Zum Beispiel partitioniert die Äquivalenzrelation
τ = {(x, y) ∈ N × N | x mod 2 = y mod 2}
die Menge N in zwei Teilmengen: die der geraden und die der ungeraden
Zahlen. Solche Teilmengen heißen Äquivalenzklassen.
Definition 2.2.10 (Äquivalenzklasse). Sei τ ⊆ A × A eine Äquivalenzrelation. Dann heißen für a ∈ A die Mengen
[a]τ := {b ∈ A | a τ b}
Äquivalenzklassen von τ . Für die Teilmenge [a]τ heißt a Repräsentant.
Die Menge aller Äquivalenzklassen heißt Partitionierung von A und wird
mit A/τ bezeichnet:
A/τ := {[a]τ | a ∈ A}.
|A/τ |, die Anzahl der Äquivalenzklassen von A, heißt der Index von τ .
2.2 Grundkonzepte aus der Mengenlehre
11
Die Äquivalenzklassen einer Äquivalenzrelation τ haben folgende Eigenschaften:
• a τ b ⇐⇒ [a]τ = [b]τ – zwei Elemente stehen dann und nur dann in der
Relation τ ¡, wenn sie in derselben Äquivalenzklasse
liegen.
¢
• ∀a, b ∈ A [a]τ = [b]τ ∨ [a]τ ∩ [b]τ = ∅ – verschiedene Äquivalenzklassen
sind disjunkt.
• A ist die disjunkte Vereinigung aller Äquivalenzklassen [a]τ mit a ∈ A.
Die Elemente ein und derselben Äquivalenzklasse werden üblicherweise
als gleich hinsichtlich τ angesehen. Man fasst alle gleichen Elemente in einer Menge [a]τ zusammen, die man als eine Art Makro-Element“ von A
”
ansehen kann. Wenn wir noch einmal auf unser obiges Beispiel einer Äquivalenzrelation τ zurückgreifen, die N in die geraden und die ungeraden Zahlen
partitioniert, so hat die Menge N/τ , bei der alle gleichen“ Zahlen zusam”
mengefasst sind, zwei Elemente.
2.2.2 Funktionen
Den Begriff einer Funktion kann man nun aufbauend auf dem Begriff der
Relation definieren: Eine Funktion f : A → B, ist eine Relation, bei der
jedem Element aus A genau ein Wert aus B zugeordnet wird (und eine partielle Funktion ist eine Relation, bei der jedem Element aus A höchstens ein
Funktionswert zugeordnet ist). Damit ist eine Funktion f natürlich auch eine
spezielle Menge und zugleich eine Relation: f ist eine Teilmenge des Kreuzproduktes A × B, die zusätzlich die gerade genannten Bedingungen erfüllt.
Definition 2.2.11 (Funktion). Eine Funktion (oder Abbildung) f :
A → B für Mengen A und B ist eine Relation f ⊆ A × B, für die zusätzlich
gilt:
¡
¢
1. ∀a ∈ A ∀b1 , b2 ∈ B (a, b1 ) ∈ f ∧ (a, b2 ) ∈ f =⇒ b1 = b2 – jedem Wert
aus A wird höchstens ein Wert aus B zugeordnet, der Funktionswert
von f für Argument a –, und
2. ∀a ∈ A ∃b ∈ B (a, b) ∈ f – jedem Wert aus A muss ein Funktionswert
zugeordnet werden.
Eine partielle Funktion f : A → B ist eine Relation f ⊆ A × B, die Punkt
1 der Funktionsdefinition erfüllt.
Bei einer partiellen Funktion muss nicht jedem Wert aus A ein Funktionswert zugeordnet werden, f darf für Argumente a ∈ A auch undefiniert
sein. Wir verwenden im folgenden für Funktionen immer die gewohnte Funktionsschreibweise, nicht die Relationsschreibweise, die wir gerade verwendet
haben: Wir schreiben
f (a) = b :⇐⇒ a ∈ A ∧ b ∈ B ∧ (a, b) ∈ f.
12
2. Begriffe und Notationen
Ist eine partielle Funktion f für a ∈ A undefiniert, so schreibt man dafür das
Zeichen ⊥“:
”
¡
¢
f (a) =⊥:⇐⇒ a ∈ A ∧ ¬ ∃b ∈ B f (a) = b .
Wenn dem Wert a ∈ A dagegen ein Funktionswert zugeordnet ist, heißt f
auf a definiert.
Zwei Funktionen sind gleich, falls beide für jeden Wert aus A jeweils
denselben Funktionswert liefern. Bei partiellen Funktionen müssen darüber
hinaus die undefinierten Stellen übereinstimmen:
Definition 2.2.12. Zwei (partielle) Funktionen f, g : A → B heißen gleich,
falls gilt: ³
¡
¢
¡
¢´
∀a ∈ A
f (a) =⊥ ⇐⇒ g(a) =⊥ ∧ f (a) 6=⊥ =⇒ f (a) = g(a) .
Eine partielle Funktion f : A → B heißt total, falls sie nirgends undefiniert ist, d.h. falls f (a) 6=⊥ gilt für alle a ∈ A. Eine solche partielle Funktion
erfüllt also auch Punkt 2 der Funktionsdefinition. Statt als eine totale partielle Funktion könnte man f natürlich auch einfach als Funktion bezeichnen,
aber manchmal ist es hilfreich, explizit von totalen Funktionen zu sprechen
in Abgrenzung zu partiellen Funktionen.
In den nächsten Kapiteln sind im Allgemeinen alle Funktionen total; partielle Funktionen kommen erst wieder in Teil 2 dieses Buches vor.
Manchmal möchte man den Definitionsbereich einer Funktion begrenzen.
Dazu verwendet man den Operator |:
Definition 2.2.13 (Einschränkung). Ist f : A → B eine Abbildung und
A0 ⊆ A, dann ist f |A0 : A0 → B, die Einschränkung von f auf A0 , definiert
als f |A0 (x) := f (x) für alle x ∈ A0 .
Wie bei Relationen gibt es auch bei Funktionen eine Liste von möglichen
Eigenschaften, die wir im weiteren immer wieder brauchen.
Definition 2.2.14. Eine Funktion f : A → B heißt
injektiv, falls für alle a1 , a2 ∈ A gilt: f (a1 ) = f (a2 ) =⇒ a1 = a2 – keinen
zwei Werten aus A ist derselbe Funktionswert zugeordnet.
surjektiv, falls gilt: ∀b ∈ B ∃a ∈ A f (a) = b – jeder Wert aus B kommt
(mindestens) einmal als Funktionswert vor.
bijektiv, falls f injektiv und surjektiv ist.
Zu jeder bijektiven Funktion f : A → B ist die Umkehrfunktion f −1 : B →
A definiert durch
(b, a) ∈ f −1 :⇐⇒ (a, b) ∈ f.
2.2 Grundkonzepte aus der Mengenlehre
13
Ist f eine bijektive Funktion, dann ist f −1 eine Funktion – sie erfüllt
beide Bedingungen aus Def. 2.2.11. Für nicht-bijektive Funktionen muss das
nicht unbedingt der Fall sein. Betrachten wir zum Beispiel eine nicht-injektive
Funktion g: Wenn g(a) = g(b) = c ist für a 6= b, dann ordnet g −1 dem Wert c
sowohl a als auch b zu – g −1 ist zwar eine Relation, aber keine Funktion. Für
eine bijektive Funktion f ist f −1 übrigens nicht nur eine Funktion, sondern
sogar selbst eine bijektive Funktion.
Hier ist jedoch eine gewisse Vorsicht geboten: Für eine beliebige Funktion
f : A → B kann mit f −1 auch manchmal die Urbild-Abbildung“ f −1 :
”
B → 2A mit f −1 (b) := {a ∈ A | f (a) = b} gemeint sein, also eine Funktion,
die jedem Element des Wertebereichs von f die Menge aller seiner Urbilder
zuordnet. Aus dem Kontext sollte aber stets klar sein, welche Funktion mit
f −1 gerade gemeint ist.
2.2.3 Isomorphie, Abzählbarkeit
Die gerade definierten Konzepte von surjektiven und bijektiven Funktionen
verwenden wir jetzt, um die Größe von Mengen zu vergleichen, auch von
unendlichen Mengen.
Definition 2.2.15 (Größenvergleich von Mengen). Seien A, B Mengen
(eventuell unendlich), A, B 6= ∅.
A heißt mindestens genauso mächtig wie B, in Zeichen
A ≥ B oder B ≤ A,
falls es eine surjektive Abbildung f : A → B gibt.
A heißt mächtiger als B, falls B ≤ A und A 6≤ B gilt.
Die Bedeutung dieser Definition kann man sich so intuitiv klarmachen:
Eine surjektive Abbildung f : A → B ist eine Relation, die jedem a ∈ A genau
ein b ∈ B zuordnet, es kann ein b ∈ B auch zwei verschiedenen Elementen aus
A zugeordnet sein, aber jedes b ∈ B ist mindestens einem a ∈ A zugeordnet.
Also muss es intuitiv mindestens so viele Elemente in A geben wie in B.
Wenn es zwischen zwei Mengen A und B nicht nur eine surjektive, sondern
sogar eine bijektive Abbildung gibt, dann sind sie gleichförmig“, griechisch
”
isomorph.
Definition 2.2.16 (isomorph). Zwei Mengen A und B heißen isomorph,
falls eine bijektive Abbildung f : A → B existiert.
Ist A eine endliche Menge mit |A| = n Elementen, so ist A genau dann zu
einer Menge B isomorph, wenn B auch endlich ist und ebenfalls n Elemente
besitzt. Das lässt sich leicht einsehen:
• Gilt |A| = n, |B| = m, und n 6= m, sagen wir ohne Einschränkung n < m,
dann kann es keine surjektive Funktion f : A → B geben.
14
2. Begriffe und Notationen
• Ist dagegen |A| = |B|, dann kann man eine bijektive Funktion f : A → B
konstruieren mit folgendem Algorithmus (der induktiv über die Größe n
der Menge A vorgeht):
n = 1: Wähle irgendein a aus A und irgendein b aus B. Setze f (a) := b.
Setze A0 := A − {a}, B 0 := B − {b}.
n → n + 1: Ist n = |A| (= |B|), so höre auf. Ist aber n < |A|, so wähle
irgendein a aus A0 und irgendein b aus B 0 . Setze f (a) := b, A0 := A0 −{a},
und B 0 := B 0 − {b}.
Wie steht es aber mit unendlichen Mengen A und B: Wann enthalten
unendliche Mengen gleichviel Elemente“? Wie wir gleich sehen werden, gibt
”
es isomorphe unendliche Mengen, von denen man intuitiv annehmen würde,
dass sie unterschiedlich viele Elemente enthalten. Zum Beispiel ist die Menge
der geraden natürlichen Zahlen Ng := {n ∈ N | n mod 2 = 0} isomorph zu
N, der Menge aller natürlichen Zahlen. Um das zu sehen, betrachten wir die
Funktion f : N → Ng , die jeder natürlichen Zahl eine gerade Zahl zuordnet
durch
f (n) := 2 · n.
f ist injektiv und surjektiv, also bijektiv.
Ebenso sind N und N × N isomorph. Um das zu zeigen, könnte man eine
bijektive Abbildung von N × N nach N direkt konstruieren. Leichter wird
der Beweis aber, wenn wir vorher den Begriff des Aufzählbaren“ einführen.
”
Dabei nutzen wir dieselbe Idee wie oben beim allgemeinen Größenvergleich
von Mengen (Def. 2.2.15).
Definition 2.2.17 (aufzählbar/abzählbar). Eine Menge A heißt aufzählbar oder abzählbar, falls
• entweder A leer ist
• oder es eine surjektive Funktion f : N → A gibt.
Ist A 6= ∅ und gibt es keine surjektive Funktion f : N → A, so heißt A
überabzählbar.
Wenn eine Menge A aufzählbar ist, so heißt das, man kann die Elemente
von A aufzählen als f (0), f (1), f (2) etc. In dieser Aufzählung kommt jedes
Element von A mindestens einmal vor, es kann allerdings auch ein Element
mehrfach als Funktionswert auftreten.
Jede endliche Menge A = {a1 , . . . , an } ist abzählbar: Entweder ist A leer,
dann ist sie per definitionem abzählbar, andernfalls kann man sehr leicht eine
surjektive Funktion f : N → A aufstellen: Man setzt

 a für 1 ≤ i ≤ n
i
f (i) :=
 a1 für i > n.
Für unendliche Mengen gilt folgender wichtiger Zusammenhang:
2.2 Grundkonzepte aus der Mengenlehre
15
Satz 2.2.18. Wenn eine Menge A unendlich und abzählbar ist, dann ist sie
auch zu N isomorph.
Beweis: Sei A abzählbar und nichtleer. Dann gibt es nach der Definition eine
surjektive Funktion f : N → A. Wir ändern f zu einer Funktion f 0 : N →
A ab, die nicht nur surjektiv, sondern auch injektiv ist, denn Isomorphie
zwischen A und N bedeutet ja die Existenz einer bijektiven Funktion von N
nach A (oder umgekehrt). Bei der Konstruktion von f 0 nutzen wir aus, dass
A unendlich ist. Induktiv lässt sich die Funktion f 0 so beschreiben:
n = 0: f 0 (0) = f (0).
n → n + 1: f 0 (n +S1) = f (m), wobei m die kleinste natürliche Zahl ist, so
dass f (m) 6∈ 1≤i≤n f 0 (i) ist. Da A unendlich ist und f (N) = A gilt,
gibt es immer ein solches m.
Werte aus A, die für eine kleinere Zahl aus N schon als Funktionswert vorgekommen sind, werden also übersprungen, und es wird der nächste noch nicht
dagewesene Funktionswert vorgezogen“. f 0 zählt alle Elemente aus A auf
”
ohne Wiederholung, d.h. f 0 : N → A ist surjektiv und injektiv.
Kommen wir auf unser Problem von oben zurück – es ging darum zu zeigen,
dass N isomorph ist zu N × N.
Satz 2.2.19. N ist isomorph zu N × N.
Beweis: Um diesen Satz zu beweisen, müssen wir nach der obigen Überlegung nur zeigen, dass N × N aufzählbar ist. Das heißt, wir müssen eine
surjektive Abbildung f : N → N × N konstruieren. Zum Beispiel können wir
folgende Funktion verwenden:
f (n) = (a, b) :⇐⇒ In der Primfaktorzerlegung von n kommt die
Primzahl 2 genau a-mal und die Primzahl 3
genau b-mal vor.
f (n) ist für jedes n ∈ N definiert – wenn 2 als Faktor von n nicht vorkommt, so ist a = 0, und kommt 3 nicht vor, so ist b = 0 –, und jedes (a, b)
ist Funktionswert für irgendein n ∈ N, zum Beispiel für n = 2a · 3b oder für
n = 2a · 3b · 5; f ist also surjektiv.
N ist nicht nur isomorph zu N × N = N2 , sondern zu jedem Nn für n ≥ 1.
Satz 2.2.20. N ist isomorph zu Nn für alle n ∈ N+ .
Beweis: Wir beweisen den Satz durch Induktion über n.
n = 1: N ist natürlich isomorph zu N. Eine bijektive Funktion von N nach N
ist zum Beispiel die Identitätsfunktion id : N → N mit id(n) := n ∀n ∈
N.
16
2. Begriffe und Notationen
n → n + 1: Per Induktionsvoraussetzung sei schon gezeigt, dass N isomorph
ist zu Nn . Das heißt, dass es eine bijektive Funktion g : Nn → N gibt.
Wir verwenden wieder die surjektive Funktion f : N → N × N aus dem
letzten Satz und konstruieren aus ihr und aus g eine neue Funktion h :
N → Nn+1 (= Nn × N) als
¡
h(x) = (a1 , . . . , an , an+1 ) :⇐⇒ ∃m g(a1 , . . . , an ) = m
¢
∧ f (x) = (m, an+1 ) .
h ist surjektiv; damit ist Nn+1 aufzählbar, also nach Satz 2.2.18 isomorph
zu N.
Es ist nun aber durchaus nicht so, dass alle unendlichen Mengen schon
isomorph zu N wären. Einer der schönsten Beweise der Mathematik ist der
der Aussage, dass die reellen Zahlen nicht abzählbar sind. Trotz seiner Einfachheit wurde er von Cantor erst zu Ende des 19. Jahrhunderts gefunden und
stellte den Beginn der modernen Mengenlehre dar. Da wir die zugrundeliegende Beweisidee, den Diagonalschluss, in diesem Buch häufiger brauchen
werden, stellen wir den Beweis hier vor. Dazu betrachten wir das abgeschlossene reelle Intervall von 0 bis 1, [0, 1] = {x ∈ R | 0 ≤ x ≤ 1}.
Satz 2.2.21 (von Cantor). [0, 1] ist nicht abzählbar.
Beweis: Nehmen wir an, [0, 1] sei abzählbar. Dann muss es nach der Definition von Abzählbarkeit eine surjektive Funktion f : N → [0, 1] geben. Jede
reelle Zahl in [0, 1] kommt also (mindestens einmal) als ein Funktionswert
f (i) vor.
Jede reelle Zahl im Intervall [0, 1] können wir als Dezimalzahl der Form
0, d0 d1 d2 . . . dn . . . schreiben mit dn ∈ {0, . . . , 9}. (Auch die Zahl 1 kann
man so darstellen, es ist ja 1 = 0, 9̄.) Wenn wir uns auf den Funktionswert an der Stelle i beziehen, auf f (i), verwenden wir die Darstellung
f (i) = 0, di0 di1 di2 . . . din . . . ∈ [0, 1]. din ∈ {0, . . . , 9} ist also die (n + 1)-te Dezimalstelle des Funktionswertes von f an der Stelle i. Insbesondere interessieren
wir uns nun für die Dezimalstellen dnn , also die jeweils (n+1)-te Dezimalstelle
der n-ten Zahl. Aus allen dnn für n ∈ N konstruieren wir eine neue reelle Zahl
d als
d := 0, d¯0 d¯1 d¯2 . . . d¯3 . . . mit

 dn + 1, falls dn + 1 ≤ 9
n
n
d¯n := (dnn + 1) mod 10, d.h. d¯n =
 0,
sonst
d ist eine reelle Zahl aus dem Intervall [0, 1], und zwar eine, die sich in
ihrer (i + 1)-ten Dezimalstelle von f (i) unterscheidet für alle i ∈ N. Damit
können wir nun einen Widerspruch konstruieren: Die Funktion f : N →
[0, 1] ist nach unserer obigen Annahme surjektiv, damit ist auch die Zahl d
Funktionswert von f für (mindestens) ein j ∈ N, d.h. f (j) = d. Nun lässt sich
2.3 Grundbegriffe aus der Algebra
17
die Zahl f (j) = d wie oben festgelegt schreiben als f (j) = 0, dj0 dj1 dj2 . . . djj . . ..
Andererseits ist aber djj 6= d¯j nach der Konstruktion von d, also ist f (j) 6= d.
Das Verfahren der Diagonalisierung, das wir in diesem Satz angewendet
haben, wird häufiger angewendet, um zu zeigen, dass eine Menge nicht abzählbar ist, oder um zu beweisen, dass eine bestimmte Funktion nicht Element
einer abzählbaren Menge sein kann. Woher das Verfahren seinen Namen hat,
macht man sich am besten an einem Bild klar. Im letzten Satz haben wir
angenommen, die reellen Zahlen ließen sich durchzählen als die nullte, erste,
zweite . . . Wenn man sich eine unendlich große Tabelle vorstellt, in der horizontal aufgetragen ist, um die wievielte reelle Zahl es geht, und vertikal die
0., 1., 2., 3., . . . Dezimalstelle, dann geht es bei der Diagonalisierung gerade
um die Zahlen, die in der Diagonalen liegen, wie Abbildung 2.1 verdeutlicht.
..
.
..
.
..
.
..
.
.··
2
d02
d12
d22
···
1
d01
d11
d21
···
0
d00
d10
d20
···
0
1
2
···
Abb. 2.1. Eine Veranschaulichung der Diagonalisierung
Eine genauere, allgemeinere Beschreibung des Verfahrens einschließlich
der Voraussetzungen, die gegeben sein müssen, damit es anwendbar ist, geben
wir auf S. 205, wo wir das Verfahren das nächste Mal gebrauchen.
2.3 Grundbegriffe aus der Algebra
Wenn man auf Elemente einer Menge M , zum Beispiel N, eine Operation anwendet, zum Beispiel +, dann ist es oft entscheidend, dass das Ergebnis auch
auf jeden Fall in M ist. Wenn man auf zwei Elemente n, m ∈ N die Operation + anwendet, ist das Ergebnis n + m auf jeden Fall wieder eine natürliche
Zahl. Man sagt, N ist abgeschlossen gegen Addition. Bei der Subtraktion ist
das anders, zum Beispiel ist 2 − 3 = −1 keine natürliche Zahl; N ist also nicht
abgeschlossen gegen Subtraktion. Allgemein sagt man, eine Menge M ist abgeschlossen gegen eine Operation Op, wenn das Ergebnis einer Anwendung
von Op auf Elemente von M auf jeden Fall wieder in M ist.
18
2. Begriffe und Notationen
Definition 2.3.1 (Abgeschlossenheit). Sei M eine Menge und Opn ein
n-stelliger Operator. M heißt abgeschlossen gegen Opn , falls ∀e1 , . . . , en ∈
M Opn (e1 , . . . , en ) ∈ M gilt.
Wenn M abgeschlossen ist gegen einen n-stelligen Operator Opn , dann
heißt das einfach, dass Opn eine totale Funktion Opn : M n → M ist.
N ist nicht abgeschlossen gegen Subtraktion, die Menge Z der ganzen
Zahlen dagegen schon. Man kann sogar noch mehr sagen: Z ist die Menge, die
entsteht, wenn man zu N alle die Zahlen z dazunimmt, die durch Subtraktion
zweier natürlicher Zahlen entstehen können (d.h. Z = { z | ∃m, n ∈ N z =
m − n }); entfernt man aus Z irgendeine Zahl, so ist die Ergebnismenge nicht
mehr abgeschlossen gegen Subtraktion. Man sagt: Z ist die kleinste Menge,
die N enthält und abgeschlossen ist gegen Subtraktion.
Wenn man nun eine Menge M zusammenfaßt mit einem oder mehreren Operatoren, gegen die M abgeschlossen ist, erhält man eine algebraische Struktur.
Definition 2.3.2 (algebraische Struktur). Eine algebraische Struktur A vom Typ (n1 , . . . , nk ) ist ein (k + 1)-Tupel A = (M, Op1n1 , . . . , Opknk )
von einer Menge M und k Operatoren Opini der Stelligkeit ni auf M , für
1 ≤ i ≤ k, so dass M gegen jeden dieser k Operatoren abgeschlossen ist. M
heißt auch Trägermenge von A.
Beispiel 2.3.3. (N, +, ·, 0, 1) ist eine algebraische Struktur vom Typ (2, 2, 0,
0): N ist abgeschlossen gegen die zweistelligen Operationen der Addition und
Multiplikation, und N ist auch abgeschlossen gegen die nullstelligen Operatoren 0 und 1. Man kann nämlich die Konstanten 0 und 1 als nullstellige
Operatoren
0: N0 → N mit 0() := 0,
1: N0 → N mit 1() := 1
auffassen. Generell kann man mit diesem Trick immer irgendwelche fest ausgewählten Element der Trägermenge, die man als Konstanten der algebraischen Struktur hinzufügen möchte, als nullstellige Operatoren auf der Trägermenge beschreiben.
(N, +, −) ist keine algebraische Struktur, da N gegen die Subtraktion nicht
abgeschlossen ist.
Wenn man nun zwei Mengen M und N hat, die Trägermengen zwei¯ 1n , . . . , Op
¯ `n )
er algebraischer Strukturen (M, Op1m1 , . . . , Opkmk ) und (N, Op
1
`
sind, und Abbildungen von M nach N betrachtet, dann interessiert man sich
häufig für solche Abbildungen, die mit den Operatoren der algebraischen
Strukturen verträglich sind. Was das heißt, macht man sich am besten an
Beispielen klar. Zuerst ein relativ allgemeines: Gegeben seien zwei algebraische Strukturen (M, gM ) und (N, gN ) für Operatoren gM : M × M → M
2.3 Grundbegriffe aus der Algebra
19
und gN : N × N → N . Wenn wir fordern, dass die Abbildung h : M → N
verträglich sein soll mit gM und gN , dann heißt das: Gegeben zwei Elemente
a und b aus M , dann ist es gleichgültig,
• ob man zuerst innerhalb
von¢ M bleibt und gM (a, b) bildet und diesen Wert
¡
dann nach N in h gM (a, b) abbildet
• oder ob man zunächst a und b nach N überträgt
in¢ h(a) und h(b) und
¡
dann innerhalb von N gN anwendet zu gN h(a), h(b) –
es ergibt sich in beiden Fällen dasselbe Ergebnis. Noch eine weitere Voraussetzung gibt es, damit eine Abbildung mit zwei Operatoren verträglich sein
kann: Die zwei Operatoren müssen dieselbe Stelligkeit besitzen.
Sehen wir uns das Ganze noch an einem konkreteren Beispiel an: Wir
betrachten die algebraischen Strukturen (R+ , ·) und (R, +). log : R+ → R ist
verträglich mit · auf R+ und + auf R. Es ist gleichgültig,
• ob man zunächst innerhalb von R+ bleibt und a · b bildet und diesen Wert
danach auf log(a · b) ∈ R abbildet
• oder ob man zunächst a und b nach R überträgt in log(a) und log(b) und
dann innerhalb von R + anwendet zu log(a) + log(b) –
es ist ja log(a·b) = log a+log b. Tatsächlich wurden früher Logarithmustabellen verwendet, um die Multiplikation großer Zahlen auf eine einfachere Addition zurückzuführen.
Dies Kriterium der Verträglichkeit“ beschreibt man formal mit dem Be”
griff des Homomorphismus.
Definition 2.3.4 (Homo-, Isomorphismus). Ein ¡Homomorphismus¢
h : A1 → A2 von einer algebraischen Struktur A1 = M, Op1m1 , . . . , Opkmk
¡
1
vom Typ (n1 , . . . , nk ) in eine algebraische Struktur A2 = N, Opm1 , . . . ,
¢
k
Opmk vom gleichen Typ ist eine Funktion h : M → N , die mit allen Operatoren verträglich ist, für die also für 1 ≤ i ≤ k und alle a1 , . . . , ani ∈ M
gilt:
¢
¡
¢
i ¡
h Opini (a1 , . . . , ani ) = Opni h(a1 ), . . . , h(ani ) .
1
Ein Isomorphismus von A1 = (M, Op1m1 , . . . , Opkmk ) nach A2 = (N, Opm1 ,
k
. . . , Opmk ) ist ein Homomorphismus h : A1 → A2 , für den zusätzlich gilt,
dass die Funktion h : M → N bijektiv ist.
Zum Beispiel ist log ein Homomorphismus von der algebraischen Struktur
(R+ , ·) nach (R, +).
Auch bei algebraischen Strukturen interessieren wir uns besonders für einige
Exemplare mit speziellen Eigenschaften, zum Beispiel für Halbgruppen:
20
2. Begriffe und Notationen
Definition 2.3.5 (Halbgruppe, assoziativ, kommutativ). Eine Halbgruppe H ist ein Paar H = (M, ◦) von einer Menge M und einer zweistelligen Funktion (Verknüpfung) ◦ : M × M → M , die assoziativ ist, d.h. für
alle a, b, c ∈ M gilt:
(a ◦ b) ◦ c = a ◦ (b ◦ c)
H heißt kommutativ, falls für alle a, b ∈ M gilt: a ◦ b = b ◦ a.
◦ ist ein zweistelliger Operator, H ist also eine algebraische Struktur vom
Typ (2). Allerdings spricht man bei Halbgruppen eher von der Verknüpfung“
”
◦ als von einem Operator oder einer Funktion, was alles ebenfalls korrekt
wäre. Zu der Eigenschaft der Assoziativität können noch weitere interessante
Eigenschaften hinzutreten.
Definition 2.3.6 (Nullelement, Einselement). Sei A = (M, ◦) eine algebraische Struktur vom Typ (2). Ein Element b von M heißt
• Nullelement von A, falls für alle a ∈ M gilt: a ◦ b = b ◦ a = b;
• Einselement von A, falls für alle a ∈ M gilt: a ◦ b = b ◦ a = a.
Wenn A Nullelemente oder Einselemente besitzt, dann sind sie eindeutig.
Das heißt, wenn b1 und b2 zwei Nullelemente (bzw. Einselemente) von A sind,
dann ist b1 = b2 , wie sich leicht zeigen lässt:
• Sind b1 und b2
b1 ◦ b2 = b2 ◦ b1
• Sind b1 und b2
b1 ◦ b2 = b2 ◦ b1
Nullelemente, dann gilt nach der letzten Definition b1 =
= b2 .
Einselemente, dann gilt nach der letzten Definition b1 =
= b2 .
Wir bezeichnen im folgenden häufig das einzige Nullelement von A mit
0A und das einzige Einselement mit 1A , falls sie denn existieren. Das muss
nicht immer der Fall sein.
Beispiel 2.3.7. Sehen wir uns dazu ein paar Beispiele an.
• Für die Halbgruppe H = (N, ·) ist 0H = 0 und 1H = 1.
• Die Halbgruppe H = (N, +) hat dagegen kein Nullelement. Ihr Einselement
ist 1H = 0.
(part)
die Menge aller (partiellen) Funktionen von N
• Bezeichnen wir mit FN
part
part
part
nach N, und ◦ : FN
×FN
→ FN
sei die Komposition von Funktionen,
d.h.
 ¡
 g f (n)¢, falls f (n) definiert ist
f ◦ g (n) :=
 ⊥,
sonst
part
Dann ist H = (FN
, ◦) eine Halbgruppe mit Einselement 1H = id
und Nullelement 0H =⊥. Die Identitätsfunktion id haben wir oben schon
kennengelernt, und ⊥: N → N ist die überall undefinierte Funktion mit
⊥ (n) := ⊥ ∀n ∈ N.
2.3 Grundbegriffe aus der Algebra
21
• Betrachtet man in FN nur die totalen Funktionen von N nach N, so hat
man mit H = (FN , ◦) auch eine Halbgruppe. Ihr Einselement ist dasselbe
wie das der letzten Halbgruppe, es ist 1H = id, aber diese Halbgruppe
besitzt kein Nullelement.
• Verbindet man die totalen Funktionen mit einem anderen Operator, dann
kann sich ein ganz anderes Bild ergeben: Wir verwenden als Operator ∗,
die Multiplikation von Funktionen, mit f ∗ g(n) := f (n) ∗ g(n) und bilden
damit die Halbgruppe H = (FN , ∗). Sie hat als Einselement die überall
konstante Funktion 1H = 1 mit 1(n) := 1 ∀n, und als Nullelement die
überall konstante Funktion 0H = 0 mit 0(n) = 0 ∀n.
• Eine Menge ist eine triviale algebraische Struktur ohne jegliche Operatoren,
also vom leeren Typ. Damit sind Def. 2.2.16 und 2.3.4 verträglich: Zur
Isomorphie zweier Mengen A, B reicht die Existenz einer Bijektion von A
nach B.
Eine Halbgruppe mit Einselement heißt auch Monoid.
Definition 2.3.8 (Monoid). Ein Monoid H ist ein Tripel H = (M, ◦, 1H )
von einer Halbgruppe (M, ◦) und einem Einselement 1H .
Als algebraische Struktur hat ein Monoid den Typ (2, 0). Zwei Elemente
der Trägermenge eines Monoids a und b heißen invers zueinander, wenn sie,
verknüpft miteinander, das Einselement ergeben.
Definition 2.3.9 (Inverses, Gruppe). Ist (M, ◦, 1M ) ein Monoid mit
a, b ∈ M , so heißt a Inverses von b, falls
a ◦ b = b ◦ a = 1M
gilt.
Eine Gruppe G ist ein Monoid G = (M, ◦, 1G ), in der jedes Element aus
M auch ein Inverses in M besitzt.
Wenn a ∈ M Inverses von b ist, dann ist auch b Inverses von a. In einer
Gruppe hat jedes Element nicht nur mindestens, sondern auch höchstens ein
Inverses. Das lässt sich relativ leicht zeigen. Angenommen, b1 und b2 sind
beide Inverses von a, so ist a Inverses von b1 und b2 , und wir können wie
folgt auf b1 = b2 schließen:
b1 = b1 ◦ 1M = b1 ◦ (a ◦ b2 ) = (b1 ◦ a) ◦ b2 = 1M ◦ b2 = b2 .
Beispiel 2.3.10. (Z, +), (Q, +), (Q − {0}, ·), (R − {0}, ·) sind Gruppen, aber
nicht (Z, ·) oder (R, ·). Denn ganze Zahlen haben kein Inverses bezüglich der
Multiplikation, außer für die 1, und in R besitzt die 0 kein Inverses bezüglich
der Multiplikation.
Wenden wir nun das Konzept des Homomorphismus, das wir oben eingeführt haben, auf die speziellen algebraischen Strukturen an, mit denen wir
22
2. Begriffe und Notationen
uns seitdem beschäftigt haben: Ein Halbgruppen-Homomorphismus ist
ein Homomorphismus zwischen zwei Halbgruppen, ein Monoid-Homomorphismus betrifft zwei Monoide, ein Gruppen-Homomorphismus zwei
Gruppen. Machen wir uns klar, was Verträglichkeit hier bedeutet. Ist h zum
Beispiel ein Monoid-Homomorphismus von (M, ◦M , 1M ) nach (N, ◦N , 1N ),
dann muss für h gelten:
• h(a ◦M b) = h(a) ◦N h(b) ∀a, b ∈ M
• h(1M ) = 1N .
Beispiel 2.3.11. Der Logarithmus (zu einer beliebigen Basis > 0) ist ein
Monoid-Isomorphismus von (R+ , ·, 1) nach (R, +, 0):
• log(a · b) = log(a) + log(b), wie wir oben schon erwähnt haben, und
• log(1) = 0 – Einselement wird auf Einselement abgebildet.
Oben haben wir Funktionen zwischen Trägermengen von algebraischen
Strukturen betrachtet. Neben Funktionen kann man auch für Relationen definieren, was Verträglichkeit heißt. So werden wir später noch Äquivalenzrelationen verwenden, die mit der Verknüpfung einer Halbgruppe verträglich
sind. Betrachtet man eine Halbgruppe (M, ◦), dann heißt hier Verträglichkeit
folgendes: Wenn zwei Elemente a und b von M zueinander in Relation stehen
und man nun beide Elemente a und b mit demselben Element c verknüpft,
dann stehen auch a ◦ c und b ◦ c zueinander in Relation.
Definition 2.3.12 (Rechtskongruenz). Eine Rechtskongruenz (oder
einfach nur Kongruenz) τ ⊆ M × M auf einer Halbgruppe (M, ◦) ist eine
Äquivalenzrelation auf M , für die zusätzlich gilt:
³
´
∀a, b, c ∈ M
a τ b =⇒ (a ◦ c) τ (b ◦ c) .
2.4 Grundbegriffe aus der Graphentheorie
Ein Graph ist eine abstrakte Form, die sehr vieles darstellen kann – ein Straßennetz, mögliche Spielzüge in einem Schachspiel, eine Relation (wie in dem
Beispiel auf S. 9), und noch beliebig vieles andere.
Definition 2.4.1 (Graph). Ein Graph G = (V, E) besteht aus
• V , einer Menge von Knoten (vertices), und
• E ⊆ V × V , einer Menge von Kanten (edges).
G heißt ungerichtet, falls für alle Knoten a, b ∈ V gilt: (a, b) ∈ E =⇒ (b, a) ∈
E. Ansonsten heißt G gerichtet.
Graphen stellt man zeichnerisch dar, indem die Knoten als Kreise und die
Kanten als Pfeile zwischen den Kreisen wiedergegeben werden. Bei ungerichteten Graphen lässt man die Pfeilspitzen weg und zeichnet die gegenläufigen
Kanten nur einfach.
2.4 Grundbegriffe aus der Graphentheorie
23
Beispiel 2.4.2. Abbildung 2.2 zeigt einen gerichteten und einen ungerichteten
Graphen.
Abb. 2.2. Ein gerichteter und ein ungerichteter Graph
In unserer Definition von Graphen sind Kanten einfach eine Menge von
Knotenpaaren. Das heißt natürlich, dass es von einem Knoten v zu einem
Knoten v 0 entweder keine oder genau eine Kante gibt. Man kann Graphen
aber auch so definieren, dass Mehrfachkanten zugelassen sind, dass es also
mehrere Kanten von einem Knoten v zu einem Knoten v 0 geben kann. Das
ist besonders bei kantengewichteten Graphen interessant.
Definition 2.4.3. Wenn wir über Graphen sprechen, verwenden wir folgende Begriffe:
• Wenn (v, v 0 ) ∈ E ist, schreibt man dafür auch v → v 0 . v heißt Vater von
v 0 und v 0 umgekehrt Sohn von v.
• Ein nicht-leeres Wort W = v1 . . . vn heißt Weg (der Länge n − 1) von v1
nach vn gdw. ∀i < n vi → vi+1 eine Kante ist.
• v heißt Vorfahre von v 0 gdw. es einen Weg von v nach v 0 gibt. v 0 heißt
dann Nachkomme von v.
• v1 und v2 sind Brüder gdw. es einen Knoten v gibt, so dass v Vater von
v1 und Vater von v2 ist.
• Ein Weg v1 , . . . , vn mit n > 1 heißt Kreis, falls v1 = vn gilt.
24
2. Begriffe und Notationen
Man beachte, dass nach dieser Definition ein Kreis auch durchaus z.B.
die Form einer Acht haben kann. Ein Kreis ist hier einfach ein Weg, der am
Ende zu seinem Anfangspunkt zurückkehrt. Ob und wie oft dabei ein Knoten
mehrfach betreten wird, ist gleichgültig.
Definition 2.4.4 (Baum). Ein Baum B = (V, E, v0 ) ist ein gerichteter
Graph (V, E) mit einem ausgezeichneten Knoten v0 , der Wurzel von B.
Dabei muss noch gelten:
• v0 ist Vorfahre aller anderer Knoten, es gibt also einen Weg von v0 zu
jedem Knoten v ∈ V .
• B enthält keine Kreise, d.h. es gibt für keinen Knoten v ∈ V einen Weg
einer Länge > 0 von v nach v.
• Kein Knoten hat mehr als einen Vater.
Beispiel 2.4.5. Abbildung 2.3 zeigt ein Beispiel für einen Baum. Man zeichnet einen Baum für gewöhnlich, der Natur nicht ganz entsprechend, mit der
Wurzel nach oben. Meist werden in Bäumen allerdings die Pfeilspitzen weggelassen (vergleiche z.B. Abb. 2.4), obwohl Bäume gerichtete Graphen sind:
Die Kanten führen stets von der Wurzel weg“.
”
ein Baum
Abb. 2.3. Ein Baum
Definition 2.4.6. Sei B = (V, E, v0 ) ein Baum.
•
•
•
•
Ein innerer Knoten ist ein Knoten mit mindestens einem Sohn.
Ein Blatt ist ein Knoten ohne Söhne.
Ein Ast ist ein Weg von einem Knoten zu einem Blatt.
Die Tiefe von B ist die maximale Länge eines Weges in B (dieser Weg
verläuft von der Wurzel zu einem Blatt).
• Ein Unterbaum B 0 von B ist ein Baum B 0 = ( V 0 , E 0 , v00 ), wobei
2.4 Grundbegriffe aus der Graphentheorie
25
– V 0 ⊆ V und
¡
¢
– E 0 = E ∩ V 0 × V 0 ist, wir wählen also eine Menge von Knoten und
nehmen dann als neue Kantenmenge die Kanten, die sich innerhalb der
neuen Knotenmenge erstrecken.
• Ein vollständiger Unterbaum B 0 = ( V 0 , E 0 , v00 ) von B ist ein Unterbaum, in dem für alle Knoten v ∈ V gilt: Ist v Nachkomme von v00 in B,
so ist v ∈ V 0 .
• Ein angeordneter Baum ist ein Baum, in dem für jeden inneren Knoten
v eine Ordnung s1 < . . . < sn seiner Söhne {s1 , . . . , sn } festgelegt ist. s1
heißt dann der linkeste Sohn von v.
Abb. 2.4. Ein Baum mit Unterbäumen B 0 und B 00
In Abb. 2.4 ist der mit 0 bezeichnete Knoten die Wurzel, 0, 1 und 2
sind innere Knoten, und 3 ist ein Blatt. 1 ist die Wurzel des unvollständigen
Unterbaums B 0 , und 2 ist die Wurzel des vollständigen Unterbaums B 00 .
Bei einem Graphen, der ein Straßennetz darstellt, könnte man die Kanten
mit der jeweiligen Länge der Straße annotieren, um so für einen Weg durch
den Graphen feststellen zu können, wie lang er in realiter ist. Bei einem Graphen, der mögliche Spielzüge in einem Schachspiel darstellt, könnte man die
Knoten mit der Güte“ des jeweiligen Zuges annotieren, um jeweils feststel”
len zu können, wie sinnvoll ein Zug ist. Beides lässt sich realisieren mit einer
Gewichtsfunktion, die jedem Knoten oder jeder Kante einen Wert zuordnet.
26
2. Begriffe und Notationen
Definition 2.4.7 (gewichteter Graph). Eine Gewichtsfunktion für einen Graphen (V, E) ist eine Abbildung f : V → A (für Knotengewichte) oder
f : E → A (für Kantengewichte), die Knoten und Kanten mit Werten aus
einer Menge A markiert. Graphen mit (Knoten-, Kanten-) Gewichten heißen
auch (knoten-, kanten-) gewichtet.
Ein Begriff, den man häufig braucht, ist der des Grades: Er beschreibt, wie
viele Kanten in einem Knoten enden und wie viele von ihm ausgehen.
Definition 2.4.8 (Grad). Der In-Degree oder In-Grad eines Knotens v
eines Graphen G = (V, E) ist die Anzahl von Kanten, die in v enden, also die
Zahl |{(v 0 , v) ∈ E | v 0 ∈ V }|. Der Out-Degree oder Out-Grad von v ist die
Anzahl von Kanten, die in v beginnen, also die Zahl | {(v, v 0 ) ∈ E | v 0 ∈ V } |.
Der Grad von v ist die Summe von In- und Out-Degree.
Der (In-, Out-) Degree von G ist der maximale (In-, Out-) Degree unter
den Knoten in V .
In einem Baum ist mit Grad“ stets der Out-Degree gemeint, da der In”
Degree schon per Definition immer 1 ist.
Eine wichtige Beziehung zwischen Graden, Knotenanzahl und Tiefe von
Bäumen liefert der folgende Satz.
Satz 2.4.9. Sei B = (V, E, v0 ) ein Baum vom Grad d > 1, dessen Tiefe t
ist und der b viele Blätter hat. Dann gilt:
1. b ≤ dt ,
2. |V | ≤ 2 · dt , und
3. t ≥ logd b.
Beweis: Wir führen den Beweis per Induktion über t.
t = 0: In einem Baum der Tiefe 0 ist V = {v0 }. Damit gilt |V | = 1 = b ≤
d0 ≤ 2 · d0 , und 0 = logd b.
t → t + 1: G = (V, E) sei ein Baum der Tiefe t + 1. Wenn man von G gerade
diejenigen Blätter weglässt, die auf Tiefe t + 1 liegen, erhält man einen
Baum G0 der Tiefe t, für den nach der Induktionsvoraussetzung gilt: G0
hat höchstens dt Blätter und 2dt Knoten.
1. Jedes Blatt von G auf Tiefe t + 1 hat ein Blatt von G0 als Vater.
Da der Grad von G d ist, können zu jedem Blatt von G0 höchstens
d neue
Blätter dazukommen. Also ist die
¡
¢ Anzahl von Blättern in G
≤ d mal die Anzahl der Blätter in G0 , lässt sich also nach oben
abschätzen durch d · dt = dt+1 .
2. Die Anzahl der Knoten in G ist gleich der Anzahl von Knoten in
G0 – also ≤ 2 · dt nach der Induktionsvoraussetzung – zuzüglich der
Anzahl von Blättern von G auf Tiefe t + 1. Die Anzahl der Blätter
auf Tiefe t + 1 ist höchstens so groß wie die Anzahl von Blättern
in G insgesamt, also ≤ dt+1 . Somit ist die Anzahl der Knoten in G
|V | ≤ 2dt + dt+1 ≤ dt+1 + dt+1 = 2dt+1 .
2.5 Grundbegriffe aus der Informatik
27
3. Aus b ≤ dt folgt, dass logd b ≤ t ist.
2.5 Grundbegriffe aus der Informatik
Wir werden uns im weiteren intensiv mit einer besonderen Art von Mengen beschäftigen, mit Sprachen. Eine Sprache ist eine Menge von Wörtern,
wobei die Wörter zusammengesetzt sind aus Buchstaben irgendeines Alphabets (man spricht von einer Sprache über einem Alphabet). Zum Beispiel könnte man über dem Alphabet Σ1 = { 5, ⊗ } eine Sprache L1 =
{ 5, ⊗5, 5 5 ⊗, ⊗ 5 ⊗ } definieren. L1 hat offenbar endlich viele Wörter,
nämlich genau 4. Es sind aber auch Sprachen mit unendlich vielen Wörtern
möglich, zum Beispiel die Sprache aller beliebig langen Buchstabenketten
über dem Alphabet Σ = {a, . . . , z}. Diese Sprache enthält zum Beispiel
als Wörter alle deutschsprachigen Texte, die je geschrieben wurden und je
geschrieben werden, wenn man von Wortzwischenräumen, Satzzeichen und
Ähnlichem absieht.
Definition 2.5.1 (Alphabet, Wort). Ein Alphabet Σ ist eine endliche,
nicht-leere Menge. Die Elemente eines Alphabets nennen wir Buchstaben.
Ein Wort w über Σ ist eine endliche, eventuell leere Folge von Buchstaben. Für w = (a1 , . . . , an ) schreibt man auch w = a1 . . . an . Das leere Wort,
das Wort mit 0 Buchstaben, schreibt man als ε. |w| bezeichnet die Länge des
Wortes w, d.h. die Anzahl von Buchstaben von w.
Mit dem Operator ◦ kann man zwei Wörter konkatenieren (verknüpfen,
verketten). Auch ∗ , der Kleene-Stern, ist ein Verkettungsoperator, allerdings wird er auf eine Menge (von Buchstaben oder von Wörtern) angewandt: Wenn Σ ein Alphabet ist, dann ist Σ ∗ eine Sprache, und zwar die
Sprache aller Wörter über Buchstaben aus Σ. Zum Beispiel ist {a, b}∗ =
{ε, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, . . .}. Allgemein ist L∗ (der ∗ -Operator
angewandt auf eine Menge L von Buchstaben oder Wörtern) die Menge all
derer Buchstabenketten, die sich durch Konkatenation von 0 oder mehr Elementen von L bilden lassen. Ist zum Beispiel L = {ab, ccc}, dann ist L∗ = {ε,
ab, ccc, abccc, cccab, ababab, ababccc, abcccab, abcccccc, cccabab, ccccccab,
cccabccc, ccccccccc, . . .}.
Neben dem Kleene-Stern ∗ gibt es noch + . L+ ist die Konkatenation von
einem oder mehr Elementen von L. Der Unterschied zwischen Σ ∗ und Σ +
ist also, dass in Σ ∗ das leere Wort ε enthalten ist.
Definition 2.5.2 (Konkatenation, Σ ∗ ). Die Konkatenation ◦ zweier
Wörter v = a1 . . . an und w = b1 . . . bm ist v ◦ w := a1 . . . an b1 . . . bm , auch
geschrieben als vw.
Σ ∗ bezeichnet die Menge aller Wörter über Σ. Anders ausgedrückt: Σ ∗ ist
die kleinste Menge von Wörtern, die Σ enthält und abgeschlossen ist gegen
Konkatenation.
28
2. Begriffe und Notationen
Mit Hilfe der Konkatenation kann man nun beschreiben, was Präfix, Infix
und Suffix eines Wortes sind (nämlich, der Intuition entsprechend, ein beliebig
langes Anfangs-, Mittel- und Endstück eines Wortes):
Definition 2.5.3 (Präfix, Infix, Suffix). u heißt Präfix eines Wortes w
:⇐⇒ ∃r ∈ Σ ∗ ur = w.
u heißt Infix eines Wortes w :⇐⇒ ∃r, s ∈ Σ ∗ rus = w.
u heißt Suffix eines Wortes w :⇐⇒ ∃r ∈ Σ ∗ ru = w.
Zum Beispiel sind ε, a, aa, aab, ab, b alle Infixe von w = aab. aab, ab, b und
ε sind alle Suffixe von w.
wi , die Iteration eines Wortes w, ist w i-mal hintereinander konkateniert,
und wR , das Reverse von w, ist w rückwärts notiert. Beide Konzepte kann
man auch per Induktion definieren, und zwar mit verschiedenen Varianten
der Induktion: Die Iteration wi wird definiert durch Induktion über N, das
Reverse eines Wortes durch Induktion nicht über Zahlen, sondern (als sogenannte strukturelle Induktion) über den Aufbau eines Wortes w ∈ Σ ∗ .
Definition 2.5.4 (Iteration, Reverses). Die Iteration wi eines Wortes
w ∈ Σ ∗ lässt sich induktiv definieren über die Anzahl i der Iterationen:
Induktionsanfang: w0 := ε.
Induktionsschritt: wn+1 := wwn
Das Reverse wR eines Wortes w ∈ Σ ∗ lässt sich definieren durch Induktion über den Aufbau von w.
Induktionsanfang: Für w = ε ist wR = εR := ε.
Induktionsschritt: Für w = va mit v ∈ Σ ∗ , a ∈ Σ ist (va)R := a(v R ).
Das Reverse eines Wortes haben wir über strukturelle Induktion definiert.
Das heißt, wir haben eine Induktion geführt über alle Arten, wie ein Wort w
aufgebaut sein kann: Es kann das leere Wort ε sein, oder es kann aus einem
Wort v und einem Buchstaben a durch Konkatenation entstanden sein als
w = va. Das sind schon alle Möglichkeiten, wie ein Wort w aufgebaut sein
kann.
Genaugenommen haben wir die Menge Σ ∗ aller Wörter über einem Alphabet Σ auch strukturell definiert: Σ ∗ ist die kleinste Menge aller Wörter,
die
• (Induktionsbeginn) ε enthält und
• (Induktionsschritt) abgeschlossen ist gegen Konkatenation: Ist schon w ∈
Σ ∗ und ist a ∈ Σ, so ist auch wa in Σ ∗ .
Später werden wir Strukturen kennenlernen, die sehr viel mehr und komplexere Bildungsregeln besitzen als Wörter. Für sie umfasst eine strukturelle
2.5 Grundbegriffe aus der Informatik
29
Induktion sehr viel mehr Fälle als nur die zwei, mit denen wir für Wörter
auskommen.
Definition 2.5.5 (Sprache, Operationen auf Sprachen). Eine Sprache L über Σ ist eine Menge von Wörtern über Σ, d.h. L ⊆ Σ ∗ . Dabei ist
übrigens die leere Sprache L∅ = ∅ ungleich der Sprache L = {ε}, die nur
das leere Wort enthält.
Die Konkatenation zweier Sprachen L1 und L2 über Σ ist definiert als
L1 ◦ L2 := { uv | u ∈ L1 , v ∈ L2 }.
Für L1 ◦L2 schreiben wir auch kurz L1 L2 . Li , die Iteration einer Sprache
L, ist induktiv definiert als
L0 := {ε}, Ln+1 := LLn .
Der Kleene-*-Abschluss einer Sprache L ist L∗ :=
S
+-Abschluss von L ist L+ := i≥1 Li .
S
i≥0
Li . Der Kleene-
¡ ∗ ¢
Die Menge aller Sprachen über Σ und die Konkatenation, 2Σ , ◦ , bilden
eine Halbgruppe mit dem Einselement {ε} und dem Nullelement ∅:
• Die Konkatenation ist assoziativ, das heißt, es ist
(L1 ◦ L2 ) ◦ L3 = L1 ◦ (L2 ◦ L3 ).
• L ◦ ∅ = ∅ = ∅ ◦ L für alle Sprachen L, und
• L ◦ {ε} = L = {ε} ◦ L für alle Sprachen L.
Auch im Zusammenhang mit Sprachen gibt es den Begriff des Homomorphismus, den wir oben in Def. 2.3.4 im Zusammenhang mit algebraischen
Strukturen definiert haben. Wenn man hier von einem Homomorphismus
spricht, dann meint man eine Funktion, die jeweils einen Buchstaben aus
einem Alphabet Σ auf ein (evtl. leeres) Wort aus Γ ∗ (für ein weiteres Alphabet Γ ) abbildet. h wird erweitert zu einer Funktion h : Σ ∗ → Γ ∗ , die ein
ganzes Wort aus Σ ∗ auf ein Wort aus Γ ∗ abbildet, indem sie jeden einzelnen
Buchstaben abbildet und die Ergebnisse zusammensetzt.
Formal ausgedrückt: h : Σ ∗ → Γ ∗ ist ein Monoid-Homomorphismus vom
Monoid (Σ ∗ , ◦, ε) in (Γ ∗ , ◦, ε) – ◦ ist hier die Konkatenation. Das heißt, es
müssen, wie oben allgemein beschrieben, zwei Bedingungen gelten für h:
• h(u ◦ v) = h(u) ◦ h(v)
• h(ε) = ε.
∀u, v ∈ Σ ∗ , und
Man kann nun zeigen (per Induktion), dass aus diesen Eigenschaften schon
für ein beliebiges Wort w = a1 . . . an ∈ Σ ∗ mit ai ∈ Σ folgt, dass h(w) =
h(a1 ) . . . h(an ) sein muss. Das heißt, wenn man den Wert von h nur für die
einzelnen Buchstaben aus Σ angibt, so ist h damit schon eindeutig für alle
w ∈ Σ ∗ definiert.
Beispiel 2.5.6. Ist Σ = {a, b} und Γ = {0, 1}, dann kann man zum Beispiel
einen Homomorphismus h definieren durch
30
2. Begriffe und Notationen
• h(a) = 01
• h(b) = 011
Dieser Homomorphismus bildet beispielsweise das Wort aab ab auf h(aab) =
0101011.
Zu Homomorphismen und Sprachen gibt es noch einige weitere wichtige
Begriffe, die wir in der folgenden Definition zusammenfassen.
Definition 2.5.7 (inverser, ε-freier Homomorphismus). Ist h : Σ ∗ →
∗
Γ ∗ ein Homomorphismus, so heißt h−1 : Γ ∗ → 2Σ ein inverser Homomorphismus (inverse hom). Hier ist h−1 die Urbild-Abbildung mit
h−1 (u) = {w ∈ Σ ∗ | h(w) = u} für alle u ∈ Γ ∗ .
Ein Homomorphismus h : Σ ∗ → Γ ∗ heißt ε-frei, falls h(a) 6= ε ∀a ∈ Σ.
Ein inverser Homomorphismus bildet jeweils ein Wort w aus Γ ∗ auf eine
Menge von Wörtern über Σ ∗ ab, nämlich auf die Menge all derer Wörter, die
Urbilder von w sind. Sehen wir uns dazu ein Beispiel an.
Beispiel 2.5.8. Sei Σ = {a, b} und sei der Homomorphismus h definiert durch
h(a) = ab und h(b) = b. Dann ist z.B. h(aba) = abbab.
Berechnen wir einmal h−1 (L) für dies h und die Beispielsprache L =
{aba}∗ {b}. h−1 (L) ist die Menge all der Wörter über {a, b}, deren h-Abbild
ein Wort aus L ist.
Betrachten wir die Wörter aus L der Reihe nach. Das kürzeste Wort in L
ist (aba)0 b = b. Sein Urbild ist h−1 (b) = {b}. Für das zweite Wort (aba)1 b =
abab gibt es auch ein Urbild, nämlich h−1 (abab) = {aa}. Aber schon beim
dritten Wort aus L gibt es Probleme: Wie müsste ein Wort aussehen, dessen
h-Abbild (aba)2 b = abaabab wäre? Es müsste auf jeden Fall mit a anfangen,
denn h(a) = ab. Aber die nächsten Buchstaben von abaabab sind aa, und
es gibt kein Wort, dessen h-Abbild die Buchstabenfolge aa enthält. Also hat
abaabab kein Urbild. Dasselbe gilt für (aba)3 b und alle weiteren Wörter in
L. Also haben nur die ersten beiden Wörter ein Urbild, und es ist h−1 (L) =
{b, aa}.
¡ −1
¢
Es
fällt
auf,
dass
nicht
unbedingt
h
h
(L)
= L ist. In diesem Fall ist
¡ −1
¢
¡
¢
h h (L) = h {b, aa} = {b, abab} 6= L.
Sei ` eine Sprachklasse. (Das ist einfach eine Menge von Sprachen.) Dann
gilt mit unseren Abmachungen also, dass ` abgeschlossen gegen hom ist, falls
für alle Homomorphismen h gilt, dass L ∈ ` =⇒ h(L) ∈ `. Eine Sprachklasse
` ist abgeschlossen gegen inverse hom, falls L ∈ ` =⇒ h−1 (L) ∈ ` für alle
Homomorphismen h.
Im folgenden nutzen wir häufig eine wichtige Eigenschaft von Σ ∗ :
Satz 2.5.9. Für jedes beliebige Alphabet Σ ist Σ ∗ isomorph zu N.
2.5 Grundbegriffe aus der Informatik
31
Beweis: Die Menge Σ ∗ enthält auf jeden Fall unendlich viele Elemente. Also
müssen wir, um den Satz zu beweisen, nur noch zeigen, dass Σ ∗ abzählbar
ist. Das heißt, wir müssen die Wörter aus Σ ∗ in einer festen Reihenfolge
aufzählen. Dazu bietet sich etwa die lexikographische Ordnung an: In Lexika sortiert man Wörter über dem Alphabet {a, . . . , z} üblicherweise so, dass
die Wörter, die mit einem weiter vorn im Alphabet stehenden Buchstaben
beginnen, vor denen angeführt sind, die mit einem weiter hinten stehenden
Buchstaben anfangen. Wörter mit einem gleichen Präfix werden nach dem
ersten Buchstaben sortiert, in dem sie sich unterscheiden. Diesen Ansatz verallgemeinern wir, mit dem Unterschied zur Wortsortierung in Lexika, dass wir
kürzere Wörter grundsätzlich vor längeren anordnen, unabhängig von ihrem
Anfangsbuchstaben.
Wir legen zunächst eine beliebige Ordnung für die Buchstaben aus Σ
fest: Σ ist per Definition eine nicht-leere, endliche Menge, sagen wir von n
Elementen. Dann seien die Buchstaben von Σ irgendwie als {a1 , a2 , . . . , an }
angeordnet. Auf dieser Ordnung aufbauend, definieren wir für w1 , w2 ∈ Σ ∗ ,
unter welchen Bedingungen w1 vor w2 aufgezählt werden soll:
w1 <` w2 :⇐⇒ |w1 | < |w2 | oder
³
|w1 | = |w2 | ∧ ∃aj , ak ∈ Σ, u, w10 , w20 ∈ Σ ∗
¢´
¡
w1 = uaj w10 ∧ w2 = uak w20 ∧ j < k
Für zwei Wörter w1 6= w2 gilt damit auf jeden Fall entweder w1 <` w2
oder w2 <` w1 . Nun zählen wir die Wörter aus Σ ∗ in der Reihenfolge auf,
die <` vorgibt: Wir fangen an mit dem kleinsten Wort bezüglich <` , das ist
das leere Wort ε, und fahren fort mit dem nächstgrößeren. Formal kann man
diese Aufzählungsreihenfolge durch eine surjektive Funktion f : N → Σ ∗
beschreiben:



 ε, falls n = 0
f (n) := w, falls es genau n − 1 Wörter in Σ ∗ gibt, die



bzgl. <` kleiner sind als w.
Dieser Satz hat eine ganz interessante Konsequenz: Wenn A eine beliebige abzählbare Menge ist, dann kann man die Elemente von A statt über
Nummern aus N auch über Wörter aus Σ ∗ identifizieren für jedes beliebige
Alphabet Σ. Anders ausgedrückt: Zu jeder nichtleeren abzählbaren Menge
A und jedem Alphabet Σ gibt es eine surjektive Funktion f : Σ ∗ → A. Das
heißt, zu jedem Element a von A gibt es mindestens einen Bezeichner w ∈ Σ ∗ ,
so dass f (w) = a ist.
Wie findet man nun diese surjektive Funktion f : Σ ∗ → A? Da A nichtleer und abzählbar ist, gibt es schon eine surjektive Funktion g : N → A
32
2. Begriffe und Notationen
entsprechend der Definition von Abzählbarkeit. Nun haben wir im letzten
Satz gezeigt, dass N isomorph ist zu Σ ∗ , und das wiederum heißt, dass es
eine bijektive Funktion h : Σ ∗ → N gibt. Damit haben wir schon die gesuchte
surjektive Funktion f : Es ist f = h ◦ g.
Wenn A unendlich ist, gibt es sogar eine bijektive Funktion f : Σ ∗ → A.
Jede unendliche abzählbare Menge, und damit auch A, ist ja isomorph zu N,
also gibt es auch eine bijektive Funktion g : N → A.
2.6 Probleme und Algorithmen
Als nächstes wollen wir den Begriff eines Problems einführen. Ein Problem
ist eine Fragestellung wie Gegeben ein Prolog-Programm, ist es syntaktisch
”
korrekt?“ oder Gegeben ein C-Programm, terminiert es bei Eingabe Hal”
’
lo‘?“ Für ein konkretes (C- oder Prolog-) Programm ist die Antwort auf eine
solche Frage immer Ja“ oder Nein“ (auch wenn es sein kann, dass man
”
”
nicht in der Lage ist, diese Antwort zu berechnen).
Informelle Definition eines Problems: Ein Problem P ist die Frage, ob
eine bestimmte Eigenschaft auf ein Objekt o zutrifft. Betrachtet werden dabei
Objekte aus einer bekannten Grundmenge O, so dass für jedes Objekt o ∈ O
die Frage, ob P auf o zutrifft, mit Ja oder Nein zu beantworten ist. Für ein
gegebenes konkretes Objekt o heißt die Frage, ob P auf dies o zutrifft, eine
Instanz des Problems. Ein Problem heißt abzählbar, falls die Grundmenge
O abzählbar ist.
Ein Problem ist z.B. Gegeben eine natürliche Zahl n, ist sie eine Prim”
zahl?“ In diesem Fall ist die Grundmenge O = N, und eine Instanz des
Problems ist z.B. Ist die Zahl 734587631 eine Primzahl?“
”
Man kann P auch als ein Prädikat ansehen mit o als Variablen. Dann
ist P (o) wahr gdw. die Antwort auf die Frage, ob P für o gilt, Ja ist. Auch
zwischen dem Begriff eines Problems und Sprachen gibt es eine Verbindung:
Man kann ein abzählbares Problem P ansehen als eine Sprache. Σ ∗ bezeichnet
dann die Grundmenge O, die Objekte werden durch Wörter w ∈ Σ ∗ repräsentiert, und das Problem entspricht der Sprache LP = { w ∈ Σ ∗ | P (w) }.
Wir haben oben gesagt, dass für jedes Objekt o ∈ O die Frage, ob P (o)
gilt, mit Ja oder Nein zu beantworten ist. Das heißt aber nicht, dass man
auch in der Lage sein muss, für jedes o die richtige Antwort Ja oder Nein
zu geben. Es kann also auch sein, dass es für die Beantwortung der Frage
Gegeben o ∈ O, gilt P (o)?“ überhaupt keinen Algorithmus gibt. Da wir
”
im folgenden für viele Probleme zeigen wollen, dass sie berechnet werden
können, müssen wir als nächstes (informell) festlegen, was wir unter einem
Algorithmus verstehen.
Informelle Definition eines Algorithmus: Ein Algorithmus für ein
Problem P über einer abzählbaren Grundmenge O ist ein Programm einer höheren Programmiersprache, das bei Eingabe eines beliebigen Objekts
2.7 Zusammenfassung
33
o ∈ O auf einem Rechner mit beliebig großen Speicherplatz nach beliebig
langer, aber endlicher Rechenzeit terminiert, und zwar mit der Antwort Ja,
falls P (o) gilt, ansonsten mit der Antwort Nein.
Entscheidend ist hierbei, dass ein und derselbe Algorithmus die Frage, ob
P (o) gilt, für alle o ∈ O lösen muss. Wenn man für jede Instanz einen anderen
Algorithmus angeben könnte, so käme man mit zwei Algorithmen aus: einem,
der grundsätzlich immer Ja antwortet, und einem, der immer Nein antwortet;
für jede Instanz o gibt schließlich einer von beiden die richtige Antwort.
Entscheidbare Probleme: Ein Problem heißt entscheidbar, wenn es
dafür einen Algorithmus gibt.
Definition 2.6.1 (Charakteristische Funktion). Die charakteristische
Funktion gL einer Sprache L über Σ ist die Abbildung gL : Σ ∗ → {0, 1}
mit

 1, falls w ∈ L ist
gL (w) :=
 0, sonst.
Manchmal wählt man als Wertemenge von gL auch {Y, N } oder {true, f alse},
mit gL (w) = Y (bzw. true) gdw. w ∈ L ist.
Eine Sprache L (bzw. ein Problem L) ist genau dann algorithmisch entscheidbar, wenn es einen Algorithmus gibt, der die charakteristische Funktion gL
von L berechnet.
2.7 Zusammenfassung
In diesem Kapitel haben wir verschiedene Begriffe und Notationen teils neu
eingeführt, teils wiederholt:
• Wir haben zwei Arten von logischen Formeln vorgestellt, Formeln, die
immer nur einzelne Objekte betreffen können, und Prädikate, die Variablen enthalten und deshalb Eigenschaften von Objektmengen beschreiben
können. Die logischen Operatoren (Konnektoren) ¬ (nicht), ∧ (und), ∨
(oder), =⇒ (folgt) und ⇐⇒ (genau dann, wenn) können in Formeln mit
oder ohne Variablen verwendet werden. Die Operatoren ∀ (Allquantor) und
∃ (Existenzquantor) werden nur in Prädikaten verwendet.
• Wir haben verschiedene Notationen für Mengen, Funktionen und Relationen wiederholt.
• Bei dem Konzept der Abgeschlossenheit geht es um die Frage, ob ein Operator, angewandt auf Elemente einer Menge M , auf jeden Fall wieder ein
Element aus M als Ergebnis liefert.
• Eine Sprache ist eine Menge von Wörtern, und ein Wort ist eine Kette von
Buchstaben aus einem Alphabet Σ. Σ ∗ ist die Menge aller Wörter über
dem Alphabet Σ.
34
2. Begriffe und Notationen
• Ein Problem ist eine Frage, die sich auf eine Menge O von Objekten bezieht und für jedes o mit Ja oder Nein beantwortet werden kann. Ein
entscheidbares Problem ist eines, für das ein Algorithmus existiert, also
ein Programm, das die Frage für jedes Objekt aus O in endlicher Zeit
beantwortet.
Herunterladen