Diskrete Mathematik für Informatiker (Mathematik für Informatiker III

Werbung
Skriptum zur Vorlesung im WS 2015/16
Diskrete Mathematik für Informatiker
(Mathematik für Informatiker III)
Prof. Dr. M. v. Golitschek
Kapitel 1 : Algebra
§1. Gruppen
§2. Ringe und Körper
§3. Das Rechnen modulo n
Kapitel 2 : Kryptographie
Kapitel 3 : Graphentheorie
§1. Graphentheorie
§2. Kombinatorische Optimierung
2.1. Algorithmus von Dijkstra
2.2. Maximale Flüsse
Allgemeine Literatur
M. Aigner : Diskrete Mathematik, Vieweg, 5.Auflage, 2004
D. Hachenberger : Mathematik für Informatiker, Pearson Studium, 2005,
Th. Ihringer : Diskrete Mathematik, Heldermann Verlag, 2002.
T. Schickinger, A. Steger, Diskrete Strukturen 1
(Kombinatorik, Graphentheorie, Algebra),
Springer Verlag.
1
Kapitel 1 : Algebra
Vertiefende Literatur :
P. Cameron, Introduction to algebra, Oxford Univ. Press.
I. Herstein, Topics in algebra, Wiley.
N. Jacobson, Basic algebra I, Freeman.
A. Leutbecher, Zahlentheorie - eine Einführung in die Algebra, Springer-Verlag, 1996.
Eine algebraische Struktur besteht aus einer nichtleeren Menge, auf der eine oder
mehrere Verknüpfungen (Operationen) definiert sind. Wir wollen
Halbgruppen, Monoide, Gruppen, Ringe und Körper
als die wichtigsten algebraischen Strukturen kennenlernen.
§1. Gruppen
Statt A nennen wir die Mengen in diesem Paragraphen meist G (für Gruppe).
Definition.
Eine Operation (Verknüpfung) auf einer Menge G ist eine Abbildung f : G × G → G.
Statt f (a, b) schreiben wir meist
a + b oder
a ∗ b oder
a ◦ b oder
ab.
Definition.
Eine Operation ∗ auf G heißt
kommutativ, falls a ∗ b = b ∗ a für alle a, b ∈ G,
assoziativ, falls (a ∗ b) ∗ c = a ∗ (b ∗ c) für alle a, b, c ∈ G.
Definition.
Ist ∗ assoziativ, so heißt (G, ∗) eine Halbgruppe (oder : ”so ist G bezüglich ∗ eine Halbgruppe”). Ist ∗ assoziativ und kommutativ, so heißt (G, ∗) eine kommutative Halbgruppe.
In einer Halbgruppe (G, ∗) kann ein Ausdruck der Form a ∗ b ∗ c ∗ d (oder länger) beliebig
geklammert werden und liefert stets dasselbe Element in G. Zum Beispiel gilt für alle
a, b ∈ G, dass
((b ∗ a) ∗ b) ∗ a = (b ∗ a) ∗ (b ∗ a),
(1.1)
denn für c := b ∗ a ist
((b ∗ a) ∗ b) ∗ a = (c ∗ b) ∗ a = c ∗ (b ∗ a) = c ∗ c = (b ∗ a) ∗ (b ∗ a).
Definition.
Eine Halbgruppe (G, ∗) heißt Monoid, falls ein Element e ∈ G existiert mit der Eigenschaft
a ∗ e = e ∗ a = a für alle a ∈ G.
2
Man nennt e das neutrale Element des Monoids (G, ∗). Statt e schreibt man oft 1 (Einselement), statt (G, ∗) und e häufig (G, +) und 0 (Nullelement).
In einem Monoid (G, ∗) gibt es nur ein einziges neutrales Element. Denn wären e und e′
neutrale Elemente, so wäre bezüglich des neutralen Elements e und a := e′
e′ ∗ e = e ∗ e′ = e,
aber bezüglich des neutralen Elements e′ und a := e
e ∗ e′ = e′ ∗ e = e′ ,
also e = e′ .
Definition.
Ein Monoid (G, ∗) mit neutralem Element e heißt Gruppe, wenn es zu jedem Element
a ∈ G ein Element b in G existiert, so dass a ∗ b = e erfüllt ist. Wir schreiben statt b auch
a−1 , also a ∗ a−1 = e, und nennen a−1 das inverse Element zu a. Insbesondere ist e−1 = e.
Man nennt eine kommutative Gruppe auch abelsche Gruppe.
Lemma 1.1.
Sei (G, ∗) eine Gruppe mit neutralem Element e. Gilt für ein b ∈ G die Gleichung b ∗ b = b,
dann ist b = e.
Beweis. Aus b ∗ b = b folgt
e = b ∗ b−1 = (b ∗ b) ∗ b−1 = b ∗ (b ∗ b−1 ) = b ∗ e = b,
also b = e.
Satz 1.2.
Sei (G, ∗) eine Gruppe mit neutralem Element e. Für jedes a ∈ G gibt es genau ein inverses
Element a−1 , und es gilt
a−1 ∗ a = e.
Beweis. Seien a ∈ G und b = a−1 , also a ∗ b = e. Dann ist
b = b ∗ e = b ∗ (a ∗ b) = (b ∗ a) ∗ b
und somit unter Verwendung von (1.1) und (1.2)
b ∗ a = ((b ∗ a) ∗ b) ∗ a = (b ∗ a) ∗ (b ∗ a).
Nach Lemma 1.1 folgt hieraus, dass b ∗ a = e ist, also a−1 ∗ a = e.
Wäre c ∈ G ein weiteres inverses Element von a, also a ∗ c = e, so wäre
b = b ∗ e = b ∗ (a ∗ c) = (b ∗ a) ∗ c = e ∗ c = c,
wodurch die Eindeutigkeit des inversen Elements von a ∈ G bewiesen ist.
Nun können Sie sehr schnell die folgenden Aussagen beweisen :
3
(1.2)
Satz 1.3.
Sei (G, ∗) eine Gruppe mit neutralem Element e. Dann gilt für alle a, b, c, x, y ∈ G
(a ∗ b)−1 = b−1 ∗ a−1 ,
(a ∗ b ∗ c)−1 = c−1 ∗ b−1 ∗ a−1 ,
(a−1 )−1 = a,
aus a ∗ x = b folgt x = a−1 ∗ b,
aus x ∗ a = b folgt x = b ∗ a−1 ,
aus a ∗ x = a ∗ y folgt x = y, ( ”Kürzen”)
aus x ∗ a = y ∗ a folgt x = y ( ”Kürzen”).
Beispiel 1.1
Die natürlichen Zahlen mit der Multiplikation ∗ und dem neutralen Element 1 bilden ein
kommutatives Monoid.
Bezüglich der Addition + und dem neutralen Element 0 bilden die ganzen Zahlen Z, die
| eine kommutative
rationalen Zahlen Q, die reellen Zahlen IR und die komplexen Zahlen C
Gruppe.
Beispiel 1.2
Die Menge IRn×n aller n × n-Matrizen bilden bezüglich der Matrizenmultiplikation ein
Monoid mit neutralem Element I =diag(1, 1, . . . , 1),
die Menge aller nichtsingulären n × n-Matrizen sogar eine Gruppe.
Beispiel 1.3
Sind (G, ∗) und (H, ·) Monoide (Gruppen), so ist deren direktes Produkt G×H bezüglich
der Operation
(a, b) ◦ (a′ , b′ ) := (a ∗ a′ , b · b′ ),
a, a′ ∈ G, b, b′ ∈ H,
ebenfalls ein Monoid (Gruppe), mit neutralem Element (eG , eH ). Man nennt (G × H, ◦)
das Produktmonoid.
Beispiel : Vektoraddition im IR2 .
Beispiel 1.4
Es sei G eine nichtleere Menge. Jede endliche Folge (a1 a2 . . . an ) mit aj ∈ G heißt Wort
über dem Alphabet G. Die Menge aller Wörter inklusive dem leeren Wort ∅ bilden ein
Monoid mit neutralem Element ∅ bezüglich der Operation
(a1 a2 . . . an ) ∗ (b1 b2 . . . bm ) := (a1 a2 . . . an b1 b2 . . . bm ),
also bezüglich der Zusammensetzung. Dieses Monoid heißt freies Monoid über dem
Alphabet G.
4
Beispiel 1.5 (Restklassen)
Es sei n ∈ IN, n ≥ 2. Sei Zn := {[0], [1], . . . , [n − 1]} die Menge der n Restklassen modulo
n. Dann bildet (Zn , +) bezüglich der Addition
[j] + [k] :=
[j + k],
falls j + k ≤ n − 1,
[j + k − n], falls j + k ≥ n,
eine kommutative Gruppe mit neutralem Element [0].
Verknüpfungstabelle für (Zn , +):
Definition.
Es seien (G, ∗) und (H, ·) Gruppen. Eine Abbildung f : G → H heißt (Gruppen-) Homomorphismus, falls
f (a ∗ b) = f (a) · f (b) für alle a, b ∈ G.
Es ist f (eG ) = f (eG ∗ eG ) = f (eG ) · f (eG ) und somit f (eG ) = eH nach Lemma 1.1.
Ist f zusätzlich eine Bijektion, so heißt f ein (Gruppen-) Isomorphismus, und (G, ∗) und
(H, ·) heißen isomorph.
Der Kern eines Homomorphismus f : G → H ist definiert durch
kern(f ) := {a ∈ G : f (a) = eH },
wobei eH das neutrale Element von H sei.
Beispiel 1.6
Sei n ∈ IN. Die Abbildung f : Z → Zn , definiert durch f (j) := [j], j ∈ Z, ist ein
Homomorphismus von (Z, +) nach (Zn , +) mit kern(f ) = {kn : k ∈ Z}.
Beispiel 1.7 (Symmetrische Gruppe)
Es sei G eine nichtleere Menge. Es bezeichne
Sym G := {f : f : G → G bijektiv}
die Menge aller Bijektionen auf G. Sym G mit der Hintereinanderausführung ◦ heißt
symmetrische Gruppe von G.
Im Falle G = {1, 2, . . . , n} besteht Sym G aus den n! Permutationen von G, mit neutralem
Element idG
Definition.
Es sei (G, ∗) eine Gruppe mit neutralem Element e. Sei U ⊆ G eine nichtleere Teilmenge
von G. Wir sagen kurz : ” U ist Untergruppe von G ”, falls (U, ∗) eine Gruppe mit
neutralem Element e ist. Mit anderen Worten, falls
e ∈ U,
Aus a ∈ U und b ∈ U folgt a ∗ b ∈ U ,
Für alle a ∈ U ist a−1 ∈ U .
5
Definition.
Es sei (G, ∗) eine Gruppe mit neutralem Element e. Eine Untergruppe U von G heißt
Normalteiler von G, falls g ∗ U = U ∗ g für alle g ∈ G gilt. Mit anderen Worten, falls
{g ∗ u : u ∈ U } = {v ∗ g : v ∈ U } für alle g ∈ G.
Beispiel 1.8
Es sei G die Menge aller reellen nichtsingulären n × n-Matrizen, verknüpft durch die
Matrizenmultiplikation ∗. Es sei U := {A ∈ G : det(A) = 1}. Dann gilt :
(G, ∗) ist eine Gruppe mit neutralem Element I := diag(1, . . . , 1).
U ist eine Untergruppe von G.
U ist sogar Normalteiler von G.
Für endliche Gruppen gilt
Satz 1.4. ( Satz von Lagrange [1736-1813] )
Es sei U eine Untergruppe von (G, ∗), wobei G endlich sei. Dann ist |U | ein Teiler von |G|.
Beweis. Zu g ∈ G bilden wir die sogenannte Nebenklasse
U g := {u ∗ g : u ∈ U }.
Es ist |U g| = |U |, denn gilt für zwei Elemente u, v ∈ U , dass u ∗ g = v ∗ g erfüllt ist, so
folgt aus Satz 1.3 durch Kürzen, dass u = v. Es ist stets g ∈ U g, da e ∈ U und somit
e ∗ g = g ∈ U g. Also ist
[
G=
U g.
g∈G
Verschiedene Nebenklassen sind disjunkt. Um dies zu beweisen, nehmen wir an, zwei
Nebenklassen U g und U h besitzen ein gemeinsames Element x, das heißt, es sei x ∈
U g ∩ U h. Dann existieren v, w ∈ U mit x = v ∗ g = w ∗ h, und es ist g = v −1 ∗ (w ∗ h).
Sei nun u ∈ U , also u ∗ g ∈ U g. Dann ist
u ∗ g = u ∗ (v −1 ∗ (w ∗ h)) = (u ∗ v −1 ∗ w) ∗ h.
Da U eine Untergruppe ist, ist u ∗ v −1 ∗ w ∈ U und somit u ∗ g ∈ U h. Da diese für alle
u ∈ U gilt, haben wir bewiesen, dass U g ⊆ U h. Ähnlich beweisen wir, dass U h ⊆ U g, und
somit U g = U h erfüllt ist. Seien nun U g1 , U g2 , . . . , U gm die verschiedenen Nebenklasse,
so gilt |G| = m|U |.
Definition.
Zu einer Gruppe (G, ∗) mit neutralem Element e definieren wir zu a ∈ G die Potenzen
a0 := e
a1 := a
a2 := a ∗ a
an := a ∗ an−1 ,
a−n := (an )−1 ,
6
n ∈ IN
n ∈ IN.
Definition.
Eine Gruppe (G, ∗) mit neutralem Element e heißt zyklische Gruppe, falls ein Element
g ∈ G existiert, so dass
G = {g k : k ∈ Z}.
g heißt Erzeuger von G und |G| heißt Ordnung von g (kurz : ord(g)).
Beispiel 1.9
Es ist (Z, +) eine zyklische Gruppe mit den Erzeugern 1 und −1.
Satz 1.5.
Sei (G, ∗) eine endliche Gruppe, deren Mächtigkeit |G| eine Primzahl ist. Dann ist (G, ∗)
zyklisch. Jedes Element a ∈ G, ungleich dem neutralen Element e von G, ist ein Erzeuger
von G, also ord(a) = |G|. Außerdem ist G = {e, a, a2 , . . . , a|G|−1 }.
Beweis. Sei a ∈ G, a 6= e. Wir bilden die Folge e = a0 , a = a1 , a2 , . . . der Potenzen so
lange, bis erstmals für zwei Indizes 0 ≤ q < p die Identität aq = ap gilt. Nach Satz 1.3 ist
Kürzen in einer Gruppe erlaubt. Daher ist m = 0, und U = {e, a1 , . . . , ap−1 } bildet eine
zyklische Untergruppe von G. Nach Satz 1.4 (Lagrange) ist |U | = p ein Teiler von |G|,
also p = |G|, da |G| Primzahl ist.
Wegen Satz 1.5 spricht man auch von der Primzahlordnung |G|, falls |G| Primzahl ist.
Korollar 1.6.
Jede endliche Gruppe (G, ∗) der Primzahlordnung |G| = p ist isomorph zu (Zp , +).
Beweis. Sei a ∈ G, a 6= e. Dann wird durch f ([0]) = e, f ([j]) = aj , j = 1, . . . , p − 1, ein
Isomorphismus f : Zp → G definiert.
Satz 1.7.
Sei (G, ∗) eine endliche Gruppe mit neutralem Element e. Für jedes a ∈ G ist ord(a) ein
Teiler von |G| und somit
a|G| = e.
(1.3)
Beweis. Ist a = e, so gilt (1.3). Sei a ∈ G, a 6= e. Wir bilden die Folge (e = a0 , a, a2 , . . .)
bis erstmals Indizes 0 ≤ q < p auftauchen mit aq = ap . Da wir in der Gruppe kürzen
dürfen, folgt q = 0, also ap = e; und Ua = {e, a, a2 , . . . , ap−1 } ist eine zyklische Gruppe
mit Erzeuger a der Ordnung |Ua | = p = ord(a). Nach Satz 1.4 ist p ein Teiler von |G|, also
|G| = pN für ein N ∈ IN. Folglich gilt
a|G| = apN = (ap )N = eN = e,
was zu beweisen war.
In §3 werden wir den Satz von Euler beweisen. Ein Spezialfall dieses Satzes ist
Satz 1.8. ( Kleiner Satz von Fermat [1601-1665], 1640)
Ist n eine Primzahl, so gilt für alle k ∈ {1, 2, . . . , n − 1}, dass
k n−1 = 1
7
mod n.
§2. Ringe und Körper
Statt A oder G nennen wir die Mengen in diesem Paragraphen meist R (für Ring). Auf R
werden nun zwei Operationen + : R × R → R und · : R × R → R definiert.
Definition:
Es heißt (R, +, ·) ein Ring, falls
(R, +) eine kommutative Gruppe mit neutralem Element (Nullelement) 0 ist,
(R, ·) ein Monoid mit neutralem Element (Einselement) 1 ist, und
die folgenden Distributivgesetze gelten :
a · (b + c) = a · b + a · c
(a + b) · c = a · c + b · c
für alle a, b, c ∈ R. Hierbei vereinbaren wir, dass a · b + a · c eigentlich (a · b) + (a · c) und
a · c + b · c eigentlich als (a · c) + (b · c) bedeutet, also die Operation · vor + auszuführen
ist.
Definition:
Ein Ring (R, +, ·) heißt kommutativer Ring, falls a · b = b · a für alle a, b ∈ R.
Ein kommutativer Ring (R, +, ·) heißt Körper, falls (R \ {0}, ·) eine kommutative Gruppe
(mit neutralem Element 1) ist.
Beispiel 2.1
(Z, +, ·) ist ein kommutativer Ring, aber kein Körper.
| , +, ·) sind Körper.
(Q, +, ·), (IR, +, ·), (C
Beispiel 2.2
Sei n ≥ 2. Dann bilden die n × n-Matrizen IRn×n bezüglich der Matrizenaddition und der
Matrizenmultiplikationen einen (nichtkommutativen) Ring.
Beispiel 2.3 (aus der Zahlentheorie)
Es sei n ∈ IN, n ≥ 2. Es sei Zn die Menge der Restklassen modulo n, also
Zn = {[0], [1], . . . , [n − 1]}.
In Zn führt man die Addition + wie in Beispiel 1.5 ein, sowie die Multiplikation · durch
[j] · [k] := [jk],
0 ≤ j, k ≤ n − 1.
Satz 2.1.
Es ist (Zn , +, ·) ein kommutativer Ring mit dem Nullelement [0] und dem Einselement [1].
Es ist (Zn , +, ·) ein Körper genau dann, wenn n eine Primzahl ist.
Beweis. Es ist (Zn , +, ·) ein Ring. Ich überlasse es Ihnen, die Ring-Axiome nachzuprüfen.
Dieser Ring ist kommutativ, da die Multiplikation in Z kommutativ ist.
Ist n keine Primzahl, dann existieren natürliche Zahlen j ≥ 2 und k ≥ 2, so dass jk = n
ist und somit [j] · [k] = [n] = [0] gilt. Ist n eine Primzahl, so ist dies nicht möglich. Folglich
8
ist die Einschränkung von · auf Zn \ {[0]} eine Verknüpfung auf Zn \ {[0]} genau dann,
wenn n eine Primzahl ist.
Sei n eine Primzahl. Wir wissen bereits aus dem ersten Teil des Satzes, dass (Zn , +, ·) ein
kommutativer Ring ist. Dies beinhaltet u.a., dass (Zn , ·) ein Monoid mit Einselement [1]
ist. Um zu zeigen, dass dann (Zn , +, ·) sogar ein Körper ist, müssen wir nur noch zeigen,
dass zu jedem [a] ∈ Zn \ {[0]} ein b ∈ Zn \ {[0]} existiert mit [a] · [b] = [1]. Ist a = [1], so
a−1 = [1]. Ist a 6= [1], so folgt aus Satz 1.8, dass [a]−1 = [an−2 ], denn dann ist
[a] · [an−2 ] = [a · an−2 ] = [an−1 ] = [1],
was zu beweisen war.
Definition.
Ein Ring R heißt nullteilerfrei, falls aus a 6= 0, b 6= 0, stets a · b 6= 0 folgt. Zum Beispiel
ist (Zn , +, ·) genau dann nullteilerfrei, wenn n eine Primzahl ist.
Definition.
Seien (R, +, ·) und (S, +, ·) Ringe. Eine Abbildung f : R → S, f 6≡ 0, heißt (Ring-)
Homomorphismus vom R nach S, falls f (0) = 0, f (1) = 1, sowie f (a + b) = f (a) + f (b)
und f (a · b) = f (a) · f (b) für alle a, b ∈ R erfüllt sind. Ist f zusätzlich eine Bijektion,
so heißt f (Ring-) Isomorphismus, oder auch ein (Ring-) Automorphismus auf R im Falle
R = S.
Zum Beispiel ist die Abbildung f : Z → Zn , f (k) := [k], k ∈ Z, ein Ringhomomorphismus.
Ergänzung:
Satz 2.2. (Fundamentalsatz der Algebra)
| [x] vom Grade n ∈ IN mit Hauptkoeffizient a
Es sei P ∈ C
n 6= 0. Dann existieren n
komplexe Zahlen z1 , . . . , zn , so dass
P (z) = an
n
Y
(z − zj )
| .
für alle z ∈ C
j=1
Bis auf die Reihenfolge sind die Zahlen z1 , . . . , zn eindeutig.
§3. Das Rechnen modulo n
Die Definitionen, Sätze und Algorithmen dieses Paragraphen werden in der Kryptographie
(siehe Kap. 2) eine große Rolle spielen.
Wir beginnen mit dem euklidischen Algorithmus (Division mit Rest) für zwei gegebene
Zahlen a, b ∈ IN, b > a :
9
Berechne die Zahlenpaare ck , rk ∈ IN, k = 1, 2, . . . , N , sowie cN+1 ∈ IN als Lösung der
folgenden Bedingungen :
b = c1 a + r1 , r1 < a,
a = c2 r1 + r2 , r2 < r1 ,
r1 = c3 r2 + r3 , r3 < r2 ,
···············
···············
rN−2 = cN rN−1 + rN , rN < rN−1 ,
rN−1 = cN+1 rN .
Da r1 > r2 > · · · > 0 erfüllt ist, stoppt das Verfahren nach endlich vielen Schritten, sobald
rN+1 = 0 ist.
Beispiel :
Berechne nach dem euklidischen Algorithmus den ggT(3276, 141).
Lösung:
3276 = 23 ∗ 141 + 33
141 = 4 ∗ 33 + 9
33 = 3 ∗ 9 + 6
9 =1∗6+3
6=2∗3
Der euklidische Algorithmus berechnet den größten gemeinsamen Teiler von a und b,
in Zeichen ggT(a, b), denn es gilt
Satz 3.1.
Seien (a, b) ∈ IN, b > a, dann ist rN = ggT(a, b).
Beweis. Sei t ein gemeinsamer Teiler von a und b. Wir gehen im euklidischen Algorithmus
von oben nach unten. Dann folgt sukzessive, dass t auch ein Teiler von r1 , r2 , . . .,rN ist.
Gehen wir im euklidischen Algorithmus von unten nach oben, so folgt sukzessive, dass rN
ein Teiler von rN−1 ,rN−2 , . . ., r1 , a, b ist. Somit ist rN der ggT(a, b).
Definition
Sei n ∈ IN, n ≥ 2. Dann heißt
Z∗n := { [a] ∈ Zn : 1 ≤ a ≤ n − 1, ggT(a, n) = 1}
die Menge der Einheiten von Zn .
10
Satz 3.2.
(Z∗n , ·) ist eine Gruppe mit dem Einselement [1].
Beweis. Es ist [1] ∈ Z∗n . Sind [a], [b] ∈ Z∗n , so auch [ab] ∈ Z∗n . Also ist (Z∗n , ·) ein
kommutatives Monoid. Für a = 1 ist [1]−1 = [1] das inverse Element. Für 2 ≤ a ≤ n − 1,
[a] ∈ Z∗n , bilden wir die Folge [1] = [a0 ], [a] = [a1 ], [a2 ], . . . aus Z∗n bis erstmals für zwei
Indizes 0 ≤ p < q < n die Identität [ap ] = [aq ] gilt. Dann existiert ein N ∈ IN, so dass
aq = ap + N n ist. Da n und a teilerfremd sind, sind auch n und ap teilerfremd. Folglich
existiert ein M ∈ IN, so dass N = ap M und somit aq = ap + ap M n. Wäre p ≥ 1, so wäre
aq−p = 1 + M n, also [aq−p ] = [1], im Widerspruch zur Annahme, dass [ap ] = [aq ] erstmals
gilt. Es folgt, dass p = 0 und [aq ] = [1] und somit [aq−1 ] = [a]−1 gilt. Dies beweist, dass
(Z∗n , ·) eine Gruppe ist.
Offenbar ist (Z∗n , ·) eine Gruppe der Mächtigkeit
φ(n) := {a ∈ IN : 1 ≤ a ≤ n − 1, ggT(a, n) = 1}.
Die so definierte Funktion φ : IN → IN heißt Eulersche φ-Funktion.
Wenden wir die Formel (1.3) des Satzes 1.7 auf die Gruppe (Z∗n , ·) an, so erhalten wir den
wichtigen
Satz 3.3. (von Euler [1707-1783])
Sei a ∈ IN und n ∈ IN, n ≥ 2. Gilt ggT(a, n) = 1, dann ist
aφ(n) = 1 mod n.
Ist n eine Primzahl, so ist φ(n) = n − 1, sowie
an−1 = 1 mod n.
Dies ist der kleine Satz von Fermat (Satz 1.8).
Wir beschließen unsere Diskussion über Themen der Algebra mit zwei wichtigen Sätzen
(ohne Beweise) und einigen Beispielen:
Satz 3.4.
Sei n ∈ IN, n ≥ 2. Dann gibt es ein N ∈ IN, sowie Primzahlen p1 < p2 < · · · < pN und
natürliche Zahlen n1 , n2 , . . . , nN , so dass
n =
N
Y
pnk k ,
(4.1)
k=1
die Primzahlzerlegung von n. Diese Zerlegung ist eindeutig.
Zur Berechnung der Primzahlzerlegung einer Zahl n ∈ IN kann man das Sieb des Eratosthenes [275-195] verwenden.
Zur Berechnung von φ(n) verwenden wir
11
Satz 3.5.
Es habe n ∈ IN die Primzahlzerlegung (4.1). Dann ist
φ(n) = n
N Y
k=1
1
1−
pk
=
N
Y
k=1
pnk k − pnk k −1 .
Beispiel 3.1
Sei n = pq das Produkt zweier Primzahlen p und q, so ist nach Satz 3.5 φ(n) = (p−1)(q−1).
Beispiel 3.2
Sei n = 4312. Wegen 4312 = 23 ∗ 72 ∗ 11 ist nach Satz 3.5
φ(4312) = (23 − 22 )(72 − 7) ∗ (11 − 1) = 4 ∗ 42 ∗ 10 = 1680.
Beispiel 3.3
Berechne 21.000.000 mod 77.
Wir schreiben a ≡ b, falls a = b mod 77. Es ist n = 77 = 7 ∗ 11, daher φ(n) = 6 ∗ 10 = 60.
Da ggT(2, 77) = 1 ist, gilt nach dem Satz von Euler, dass 260 ≡ 1. Wegen 1.000.000 =
60 ∗ 16.666 + 40 ist daher
21.000.000 = 260∗16.666 ∗ 240 ≡ 240 .
Wir rechnen nun nach dem sog. square-and-multiply-Verfahren weiter: Es ist
22 ≡ 4
24 ≡ 16
28 ≡ 256 ≡ 25
216 ≡ 625 ≡ 9
232 ≡ 81 ≡ 4
und somit
240 = 28 ∗ 232 ≡ 25 ∗ 4 = 100 ≡ 23.
Im nächsten Kapitel benötigen wir
Satz 3.6.
Es seien a, b ∈ IN, 1 < a < b, mit ggT(a, b) = 1. Dann gibt es genau eine Zahl d ∈ IN,
1 < d < b, so dass
ad = 1 mod b.
Beweis. Wir führen den euklidischen Algorithmus durch. Wegen ggT(a, b) = 1 ist die
vorletzte Zeile von der Form
rN−2 = cN rN−1 + 1.
Gehen wir im euklidischen Algorithmus nun von unten nach oben, so können wir leicht die
Zahl d ∈ IN ausrechnen.
12
Kapitel 2 : Kryptographie
Vertiefende Literatur :
Thomas Ihringer, Diskrete Mathematik, Kapitel IV (2002)
A. Beutelspacher, Kryptologie, Vieweg Verlag
J. Buchmann, Introduction to cryptography, Springer Verlag
R. Matthes, Algebra, Kryptologie und Kodierungstheorie, Hanser Verlag
In der Codierungstheorie geht es um die Sicherung der Daten gegen ”zufällige Störungen”,
in der Kryptographie hingegen um die Sicherung der Daten gegen ”unbefugten Zugriff”
und gegen ”unbefugte Änderungen” der Daten.
Code = System zur Verschlüsselung von Nachrichten,
Codierung = Verschlüsselung von Nachrichten,
Kryptogramm = Geheimschrift,
Kryptographie = Geheimschrift (veraltet nach Goldmann Lexikon),
Beispiel 1.1 (Cäsar-Chiffre)
Wähle ein k ∈ IN, 1 ≤ k ≤ 25, und sende die Nachricht, in dem jeder Buchstabe des
Alphabets {a, b, . . . , z} durch den Buchstaben (modulo 26) ersetzt wird, der um k Stellen
später folgt.
Schema eines Kryptosystems:
Nachricht → Verschlüsselungsalgorithmus → Kryptogramm →
Entschlüsselungsalgorithmus → Nachricht.
In Beispiel 1.1 wird die Nachricht ”Informatik” für k = 21 zu
IN F ORM AT IK → DIAJM HV ODF → IN F ORM AT IK
Definition
Es seien M, C, K endliche Mengen. Für jedes k ∈ K sei eine injektive Abbildung fk : M →
C gegeben. Man nennt die Familie F = {fk : k ∈ K} von Abbildungen ein Kryptosystem (Chiffre). Die Elemente von M heißen Nachrichten (messages), die Elemente von
C heißen Schlüsseltexteinheiten (cryptograms), die Elemente von K heißen Schlüssel
(keys).
In Beispiel 1.1 ist
K = {1, 2, . . . , 25},
der Schlüssel ist k = 21,
das Kryptogramm ist f21 (IN F ORM AT IK) = DIAJM HV ODF
Das wohl bekannteste public-key-Kryptosystem ist das
RSA-Kryptosystem (Rivest, Shamir, Adleman, 1978)
Dieses System beruht auf der Tatsache, dass es ungeheuer aufwendig ist, eine große Zahl
n ∈ IN in ihre Primfaktoren zu zerlegen, n = p1 p2 · · · pm . Umgekehrt ist es sehr einfach,
n und φ(n) auszurechnen, wenn die Primfaktoren p1 , p2 , . . . , pm bekannt sind. Es ist kein
Algorithmus bekannt, der in polynomialer Rechenzeit die Faktorisierung von n findet.
13
Teilnehmer A, der Empfänger der Nachricht, wählt zwei sehr große Primzahlen p und q, p 6=
q, die er niemandem mitteilt; in der Praxis zum Beispiel je mit ungefähr 100 Dezimalstellen.
(Wir wollen hier nicht besprechen, wie man auf ”billige Art” große Primzahlen gewinnt.)
Teilnehmer A berechnet das Produkt n := pq, sowie φ(n) = (p − 1)(q − 1). Dann wählt
er eine Zahl a ∈ IN, 1 < a < φ(n), mit ggT(a, φ(n)) = 1, und führt den euklidischen
Algorithmus für b := φ(n) und a durch. Hieraus gewinnt er, von unten nach oben gehend
(siehe Satz 3.6, Kap. 1) die eindeutig bestimmte Zahl d ∈ IN, 1 < d < φ(n), so dass ad = 1
mod φ(n). Nur Teilnehmer A kennt die Zahlen d und φ(n).
Teilnehmer B möchte eine Nachricht an Teilnehmer A senden. Er kennt nur die Zahlen
n und a. Dies sind die öffentlichen Schlüssel (public keys). Die Nachricht ist eine Zahl
x ∈ M := {1, 2, . . . , n − 1}. Teilnehmer B sendet an A die verschlüsselte Nachricht y ∈ M
(das Kryptogramm),
y := f (x) := xa mod n, y ∈ M.
Zum Entschlüsseln verwendet der Teilnehmer A die Funktion g : M → M mit
g(y) := y d mod n,
g(y) ∈ M.
Wird korrekt verschlüsselt und entschlüsselt, dann erhält der Empfänger die
exakte Nachricht x ∈ M, denn es gilt
g(f (x)) = (xa )d = xad = x mod n.
(1.1)
Beweis von (1.1) (nicht vortragen)
Wegen a, d ≥ 2 mit ad = 1 (mod φ(n)) existiert ℓ ∈ IN, so dass ad = 1 + ℓφ(n). Also ist
xad = x1+ℓφ(n) = x ∗ xℓφ(n) = x ∗ (xφ(n) )ℓ .
(1.2)
1. Im Falle ggT(x, n) = 1 folgt aus dem Satz von Euler, dass xφ(n) = 1 (mod n) und somit
xad = x (mod n).
2. Im Falle x = pm , m ∈ IN, ist
xφ(n) = (pm )(p−1)(q−1) = (pm(p−1) )q−1 .
Sei η := pm(p−1) . Nach dem kleinen Satz von Fermat ist η q−1 = 1 (mod q), und somit
xφ(n) = 1 (mod q) und auch (xφ(n) )ℓ = 1 (mod q). Daher existiert ein r ∈ IN so dass
(xφ(n) )ℓ = 1 + rq
und somit wegen (1.2), für x = pm und n = pq,
xad = pm (xφ(n) )ℓ = pm + rqpm = x + rpm−1 n.
Also gilt (1.1).
14
3. Im Falle x = x0 pm , m ∈ IN, ggT(x0 , n) = 1 ist nach 1. und 2.
φ(n)
xφ(n) = (x0 pm )φ(n) = x0
(pm )φ(n) ) = x0 (1 + ℓ1 n)pm (1 + ℓ2 n) = x mod n.
Vertauschen wir in 2. und 3. p mit q so haben wir alle Fälle für x diskutiert.
Die Berechnung von y := f (x) und x := g(y) übernimmt der Computer. Der Empfänger
A benötigt zum Lesen der Nachricht die Zahlen n und d. Nur er kennt die Zahl d.
Beispiel 1.2
Die unverschlüsselte Nachricht bestehe aus einem Wort der Länge 2 im Alphabet
{A, B, C, . . . , Z} (mit N = 26 Buchstaben). Dem Empfänger A sollen die Anfangsbuchstaben des Vor- und des Nachnamens einer Person geschickt werden.
Die öffentlichen Schlüssel sind (n, a) = (779, 103).
Wir prüfen nach, dass n = 779 = 19 ∗ 41, also φ(n) = 18 ∗ 40 = 720. Es ist ggT(103, 720) =
1, denn der euklidischen Algorithmus für φ(n) und a ergibt
φ(n) = 720 = 6 ∗ 103 + 102
103 = 1 ∗ 102 + 1,
also
1 = 103 − 1 ∗ 102 = 103 − 1 ∗ (φ(n) − 6 ∗ 103) = 7 ∗ 103 − 1 ∗ φ(n).
Folglich ist d = 7, denn a ∗ 7 = 103 ∗ 7 = 1 + φ(n). Nur der Empfänger A kennt die Zahl
d = 7.
Der Name der Person sei Hans Richter. Wegen A = 1, B = 2,. . .,H = 8,. . ., R = 18,. . .,
Z = 26 ist ”HR” ≡ 8 ∗ 27 + 18 ∗ 270 = 234.
Nach dem ”square-and-multiply-Verfahren” (bezüglich n = 779) berechnen wir, dass
234103 = 498 mod 779
wie folgt : Es ist modulo 779 (≡)
2342 = 226 mod 779
2344 = 441 mod 779
2348 = 510 mod 779
23416 = 693 mod 779
23432 = 385 mod 779
23464 = 215 mod 779
und somit wegen 103 = 64 + 32 + 4 + 2 + 1
f (234) = 234103
= 234 ∗ 226 ∗ 441 ∗ 385 ∗ 215 mod 779
= 691 ∗ 441 ∗ 385 ∗ 215 mod 779
= 142 ∗ 385 ∗ 215 mod 779
= 140 ∗ 215 mod 779
= 498 mod 779
15
also f (234) = 498 (mod 779).
Es gilt
f (234) = 498 = 18 ∗ 271 + 12 ∗ 270 ≡ RL.
Der Empfänger A kennt die zum Entschlüsseln notwendige Zahlen (n, d) = (779, 7) und
berechnet nach dem ”square-and-multiply-Verfahren” mod 779
g(498) = 4987 ≡ 498 ∗ 2823 ≡ 498 ∗ 282 ∗ 66
≡ 216 ∗ 66 ≡ 234,
und somit ”HR”.
Wegen der kleinen Zahlen kann das Kryptosystem dieses Beispiels natürlich leicht gebrochen werden.
16
Kapitel 3 : Graphentheorie
Vertiefende Literatur:
M. Aigner : Diskrete Mathematik, Vieweg, 5.Auflage, 2004
R. Diestel, Graphentheorie, Springer Verlag
Th. Ihringer : Diskrete Mathematik, Kapitel I und II, Heldermann Verlag, 2002
§1. Graphentheorie
Wir setzen in Kapitel 3 stets voraus, dass
• V eine endliche Menge ist, |V | ≥ 2. Ihre Elemente heißen Knoten (vertices).
• Die Gesamtheit aller ungerichteten Kanten (edges) bezeichnen wir mit
E0 := {u, v} : u, v ∈ V, u 6= v .
Definition
Sei E ⊆ E0 . Das Paar G = (V, E) heißt ungerichteter Graph (kurz : Graph) mit Knoten
V und Kanten E. Zwei Knoten u und v heißen benachbart (adjazent), falls {u, v} ∈ E.
Ist E = E0 , so heißt G vollständig.
Im ungerichteten Graphen unterscheidet man nicht zwischen {u, v} und {v, u}.
Definition
Oft stellt man einen Graphen G = (V, E) mit Hilfe seiner Adjazenzmatrix AG dar :
Man nummeriert die Knoten von V in geeigneter Weise durch, V = {v1 , . . . , vn }, n := |V |,
und definiert die Adjazenzmatrix AG = (ajk )nj,k=1 durch
ajk :=
1,
∗,
falls {vj , vk } ∈ E,
falls {vj , vk } 6∈ E.
Offensichtlich ist A eine symmetrische Matrix.
Beispiele mit V = {v1 , v2 , . . . , vn } ⊂ IR2 :
1. Vollständiger (V, E0 ) mit n = 4 : K4 .
2. Ein Baum
3. Ein Graph G = (V, E) mit Kreisen
4. Ein bipartiter Graph G = (V, E).
Definition
Zwei Graphen G = (V, E) und G̃ = (Ṽ , Ẽ) heißen isomorph, falls eine bijektive Abbildung
f : V → Ṽ existiert, so dass {u, v} ∈ E genau dann, wenn {f (u), f (v)} ∈ Ẽ.
Definition
Ein Graph G̃ = (Ṽ , Ẽ) heißt Teilgraph von G = (V, E), falls Ṽ ⊆ V und Ẽ ⊆ E erfüllt
sind.
17
Definition
In einem Graph G = (V, E) heißt
ν(v) := u ∈ V : {u, v} ∈ E die Valenz des Knoten v ∈ V . D.h., ν(v) ist die Anzahl der Nachbarn von v.
Definition
Es sei G = (V, E) ein Graph. Jede Folge W = (v0 , v1 , . . . , vm ) von Knoten in V heißt
Kantenzug in G, falls ej := {vj , vj+1 } ∈ E, j = 0, 1, . . . , m − 1.
W heißt offen, falls v0 6= vm , und geschlossen, falls v0 = vm .
Wenn die Kanten ej alle verschieden sind, so heißt W ein Weg, im Falle v0 6= vm ein
offener Weg, im Falle v0 = vm ein Kreis.
Ein Weg W heißt einfach, wenn alle m + 1 Knoten v0 , v1 , . . . , vm verschieden sind (offener
einfacher Weg) oder wenn v0 , v1 , . . . , vm−1 verschieden sind und v0 = vm gilt (einfacher
Kreis).
Der Graph G = (V, E) heißt zusammenhängend, wenn zu jedem Knotenpaar u, v ∈ V
ein Weg von u nach v in G existiert.
Zwei Knoten u, v ∈ V heißen verbindbar, falls ein Weg von u nach v in G existiert.
Beweisen Sie: Die Verbindbarkeit im Graphen G = (V, E) ist eine Äquivalenzrelation.
Sie bewirkt eine Partition von G in disjunkte Teilgraphen, die sogenannten
Zusammenhangskomponenten.
Beispiel eines Graphen G = (V, E) mit drei Zusammenhangskomponenten.
Definition
Ein Graph G = (V, E) heißt Baum, wenn er zusammenhängend ist und keinen Kreis
enthält.
Beispiel eines Baums G = (V, E).
Lemma 1.1.
Sei G = (V, E) ein Baum. Dann gibt es mindestens zwei Knoten der Valenz 1.
Beweis. Da G zusammenhängend ist, besitzt jeder Knoten die Valenz ≥ 1.
Sei v0 ein Knoten der Valenz ν(v0 ) ≥ 2. Seien v1 und u1 Nachbarn von v0 , v1 6= u1 . Da
G = (V, E) keinen Kreis enthält und |V | endlich ist, existieren Wege W = (v0 , v1 , . . . , vm )
und W ′ = (v0 , u1 , . . . , uq ) in G mit ν(vm ) = 1 und ν(uq ) = 1, sowie vm 6= uq .
Lemma 1.2.
Für einen Baum G = (V, E) ist |V | = |E| + 1.
Beweis. Induktiver Beweis bezüglich n := |V |.
Ist |V | = 2, so ist |E| = 1, da G zusammenhängend ist.
18
Die Aussage des Lemmas gelte für ein n ≥ 2.
Beweis für n + 1 : Sei G = (V, E) ein Baum mit |V | = n + 1. Nach Lemma 1.1 besitzt G
mindestens zwei Knoten mit Valenz 1. Sei w ein solcher Knoten und {w, w′ } die einzige
Kante mitKnoten w. Wir betrachten den Graphen G̃ = (Ṽ , Ẽ), wobei Ṽ := V \ {w} und
′
Ẽ := E \ {w, w } . Offensichtlich ist auch G̃ ein Baum. Nach Induktionsannahme ist
|Ṽ | = |Ẽ| + 1. Wegen |V | = |Ṽ | + 1 und |E| = |Ẽ| + 1 ist |V | = |E| + 1.
Unter den zusammenhängenden Graphen können die Bäume einfach charakterisiert werden:
Satz 1.3.
Es sei G = (V, E) ein zusammenhängender Graph. Dann gilt |V | ≤ |E| + 1. Es gilt
|V | = |E| + 1 genau dann, wenn G ein Baum ist.
Beweis. Es sei G = (V, E) zusammenhängend. Ist G ein Baum, so ist nach Lemma 1.2
|V | = |E| + 1. Ist G kein Baum, so enthält G einen Kreis. Dann entfernen wir eine Kante
dieses Kreises. Der verbleibende Graph G̃ = (V, Ẽ) ist ebenfalls zusammenhängend, wobei
|Ẽ| = |E| − 1. Ist G̃ kein Baum, so enthält er einen Kreis, dem wir eine Kante entnehmen,
u.s.w. bis der verbleibende Graph G′ = (V, E ′ ) zwar zusammenhängend ist, aber keinen
Kreis enthält, also ein Baum ist. Also ist dann nach Lemma 1.2 |V | = |E ′ | + 1 und somit
|V | > |E| + 1.
Zu jedem zusammenhängenden Graphen G = (V, E) gibt es mindestens einen den Graphen
G aufspannenden Baum G′ = (V, E ′ ). Einen solchen Baum G′ kann man mit Hilfe des
im letzten Beweis beschriebenen Verfahrens gewinnen.
Länge eines Kantenzugs :
Einem Kantenzug W = (v0 , v1 , . . . , vm ) in G = (V, E) ordnen wir die Länge |W | = m
zu. Der Abstand d(v, w) zweier Knoten v, w ∈ V ist das Minimum der Längen aller
Kantenzüge von v nach w in G. Insbesondere ist d(v, v) = 0. Wir setzen d(v, w) = ∞,
falls kein Kantenzug von v nach w existiert.
Problem 1.1
Sei G = (V, E) ein zusammenhängender Graph. Sei r ∈ V irgendein Knoten. Berechne
einen den Graphen G aufspannenden Baum G(r), so dass zu jedem Knoten v ∈ V der Weg
von r nach v die Länge d(r, v) besitzt. Man nennt G(r) einen kürzesten Baum in G mit
Wurzel r.
Lösung von Problem 1.1
In §2 werden wir den Algorithmus von Dijkstra (1959) für gewichtete Graphen kennenlernen, der auch zur Lösung von Problem 1.1 verwendet wird.
Beispiel eines binären Baums mit Wurzel r :
Definition (Ebener Graph)
Es sei G = (V, E) ein Graph, wobei alle Knoten im IR2 liegen. Der Graph G heißt eben,
falls es möglich ist,
19
(1.1) alle Kanten {v, w} ∈ E durch offene Jordankurven in IR2 \ V mit Endpunkten v und
w so darzustellen, dass je zwei dieser Kurven sich nicht in IR2 \ V schneiden.
Beispiel eines ebenen Graphen. Wir überprüfen die Formel von Euler des nächsten
Satzes.
Satz 1.4. (Formel von Euler, 1752)
Es sei G = (V, E) ein zusammenhängender ebener Graph. Es seien alle Kanten von G
durch ein Kurvensystem (1.1) gezeichnet. Dieses Kurvensystem bildet die Ränder von
insgesamt |F | Flächen (eine äußere und |F | − 1 innere Flächen). Dann gilt
|V | − |E| + |F | = 2.
Beweis. Den Induktionsbeweis nach n := |E| sollen Sie sich selbst überlegen .
Definition (Planarer Graph)
Ein Graph G = (V, E) heißt planar , falls er isomorph zu einem ebenen Graphen ist.
Im Satz von Kuratowski (1930) werden die planaren Graphen charakterisiert (Literatur
befragen).
Definition
Eine Knotenfärbung eines Graphen G = (V, E) mit k Farben ist eine Abbildung
c : V → {1, 2, . . . , k}, so dass für alle Kanten {v, w} ∈ E die Ungleichung c(v) 6= c(w) gilt.
Beispiel einer Knotenfärbung eines ebenen Graphen.
Satz 1.5. (Vierfarbensatz von Appel-Haken, 1976)
Für jeden ebenen Graphen G = (V, E) gibt es eine Knotenfärbung mit höchstens 4 Farben.
Anwendung bei Landkarten : Länder sind die Knoten, gemeinsame Grenzen sind die
Kanten.
Definition
Ein offener Weg (Kreis) im Graphen G = (V, E) heißt offener eulerscher Weg (eulerscher
Kreis), wenn er alle Kanten von G einmal enthält (und somit genau einmal).
Definition
Ein Graph G = (V, E) heißt eulerscher Graph, wenn er einen eulerschen Kreis enthält.
20
Satz 1.6. (Euler)
Ein zusammenhängender Graph G = (V, E) ist genau dann ein eulerscher Graph, wenn
durch jeden Knoten v ∈ V eine gerade Anzahl von Kanten in E läuft. Das heißt, die
Valenz ν(v) aller Knoten v ∈ V ist gerade.
Beweis. Diesen Beweis sollen Sie sich selbst überlegen .
Das Königsberger Brückenproblem von Euler [1707-1782], der oft als Vater der
Graphentheorie bezeichnet wird : Ist es möglich, bei A zu starten, jede Brücke einmal
zu überqueren und nach A zurückzukehren ?
Eine Skizze findet man in jedem Lehrbuch.
Definition
Ein offener Weg (Kreis) im Graphen G = (V, E) heißt offener hamiltonscher Weg
(hamiltonscher Kreis), wenn er alle Knoten in V genau einmal enthält (nur den Endknoten zweimal).
Zeige, dass ein offener hamiltonscher Weg in einem Graphen G = (V, E) ein aufspannender
Baum von G ist.
Gibt es Graphen G = (V, E) mit aufspannenden Bäumen, die keine offenen hamiltonschen
Wege sind ?
Definition
In einem Graphen G = (V, E) sei eine Abbildung ω : E → IR gegeben. Dann heißt (V, E, ω)
ein gewichteter Graph.
Die sogenannte Gewichtsfunktion ω kann als Matrix dargestellt werden : Man nummeriert die Knoten von V in geeigneter Weise durch, V = {v1 , . . . , vn }, n := |V |, und
definiert die Gewichtsmatrix Aω = (ajk )nj,k=1 durch
ω(vj , vk ), falls {vj , vk } ∈ E,
ajk :=
∗,
falls {vj , vk } 6∈ E.
Offensichtlich ist A eine symmetrische Matrix. Im Falle ω(vj , vk ) = 1 für alle {vj , vk } ∈ E
ist Aω die Adjazenzmatrix von G.
Traveling Salesman Problem (Handlungsreisender)
Ein Handlungsreisender soll in einer Rundreise n Städte besuchen, die durch ein Straßennetz verbunden sind. Finde eine kürzeste Rundreise.
Graphentheoretische Formulierung I :
Es sei (V, E, ω) ein zusammenhängender gewichteter Graph mit positiver Gewichtsfunktion ω : E → IR. Sei K die Menge aller geschlossenen Kantenzüge in (V, E), die alle Knoten
mindestens einmal enthalten. Finde ein K ∈ K minimaler Länge
X
ω(K) =
ω(e).
e∈K
21
Graphentheoretische Formulierung II :
In dem vollständigen Graphen Kn = (V, E0 ), V = {v1 , . . . , vn }, führen wir die Gewichtsfunktion ω0 wie folgt ein : Es ist
ω0 (vj , vk ) := min{ω(W ) : W ist Weg von vj nach vk in G},
j 6= k.
Finde in (V, E0 , ω0 ) einen hamiltonschen Kreis minimaler Länge.
Warum genügt es, hier nur hamiltonsche Kreise zu betrachten ?
§2. Kombinatorische Optimierung
§2.1. Algorithmus von Dijkstra
Es sei G = (V, E) ein zusammenhängender Graph mit nichtnegativer (!!!) Gewichtsfunktion ω : E → IR. Der folgende Algorithmus von Dijkstra (1959) berechnet für (V, E, ω)
einen kürzesten Baum mit Wurzel r ∈ V .
Algorithmus von Dijkstra
1. Setze δ(r) := 0, sowie δ(v) := ∞ (oder sehr große Zahl) für alle v ∈ V , v 6= r;
setze U := V .
Mit U bezeichnen wir die Menge aller noch nicht permanent markierten Knoten.
2. Falls U = ∅ dann STOP. Sonst weiter mit 3.
3. Finde ein u ∈ U , so dass
δ(u) = min δ(v).
v∈U
4. Für alle v ∈ U mit {u, v} ∈ E berechne
δ(v) := min δ(v); δ(u) + ω({u, v}) .
Ist hierbei δ(v) = δ(u) + ω({u, v}), so markiere die Kante {u, v} durch P (v) := u,
das heißt, u ist Vorgänger von v. Ist δ(v) = δ(u) + ω({u, v}) identisch mit dem
vorhergehenden δ(v), so kann auch der vorhergehende Vorgänger P (v) von v gewählt
werden.
Beachte, dass jede Kante (u, v) ∈ E im Laufe des Verfahrens nur einmal betrachtet
wird.
5. Setze U := U \ {u}. Weiter mit 2.
Für jedes v ∈ V ist δ(v) der kürzeste Abstand von der Wurzel r. Einen kürzesten Baum
finden wir, indem wir längs der markierten Kanten {P (v), v} zurückgehen.
Beispiel zum Verfahren von Dijkstra :
Definition
Sei E ⊆ V × V . Dann heißt das Paar G = [V, E] ein gerichteter Graph, der auch Digraph
(directed graph) genannt wird.
22
Aufgabe: Formuliere den Algorithmus von Dijkstra für einen Digraphen G = [V, E],
E ⊆ V × V , mit nichtnegativer Gewichtsfunktion ω : E → IR.
Man nennt das Tripel [V, E, ω] ein (gerichtetes) Netzwerk.
§2.2. Maximale Flüsse
Es sei [V, E] ein Digraph (=gerichteter Graph). Es sei c : E → IR eine nichtnegative
Funktion, die nun als Kapazitätenfunktion interpretiert wird. Des weiteren seien zwei
Knoten s ∈ V (= Quelle, source) und t ∈ V (= Senke), s 6= t, vorgegeben. Man nennt
[V, E, c, s, t] Kapazitätennetzwerk (Flußnetzwerk, flow network) mit Quelle s und Senke t.
Definition
Ein Fluß f : E → IR ist eine Abbildung mit folgenden Eigenschaften :
1. 0 ≤ f (e) ≤ c(e) für alle e ∈ E.
2. Für alle Knoten v ∈ V \ {s, t} gilt
X
X
f (e) =
f (e),
e∈E: e=(v,w)
e∈E: e=(w,v)
das heißt, was in v hineinfließt, kommt auch wieder heraus.
Es folgt: Was in einem Fluß f aus der Quelle s fließt, verschwindet in der Senke t,
Φ(f ) :=
X
e∈E: e=(s,w)
f (e) −
X
f (e)
=
X
e∈E: e=(w,t)
e∈E: e=(w,s)
f (e) −
X
f (e).
e∈E: e=(t,w)
Es heißt Φ(f ) der Wert des Flusses f .
Aufgabe:
Finde im Kapazitätennetzwerk N := [V, E, c, s, t] einen Fluß f von s nach t mit maximalem
Wert Φ(f ).
Um diese Aufgabe zu lösen, benötigen wir die folgende
Definition
Auf dem Netzwerk N := [V, E, c, s, t] sei ein Fluß f gegeben. Eine Folge (v0 , v1 , . . . , vm )
verschiedener Knoten in V heißt zunehmender Weg bezüglich f (augmenting path),
falls für jedes j = 0, . . . , m − 1 eine der folgenden zwei Bedingungen gilt :
(vj , vj+1 ) ∈ E und f (vj , vj+1 ) < c(vj , vj+1 ) (Vorwärtskante)
oder
(vj+1 , vj ) ∈ E und f (vj+1 , vj ) > 0 (Rückwärtskante).
23
Satz 2.1.
Ein Fluß f im Netzwerk N := [V, E, c, s, t] ist genau dann maximal, wenn es keinen
zunehmenden Weg (v0 , v1 , . . . , vm ) mit v0 = s und vm = t bezüglich f gibt.
Beweis. z.B. Th. Ihringer, p.63
Eine andere Charakterisierung maximaler Flüsse f im Netzwerk N := [V, E, c, s, t] gibt ein
sehr anschaulicher Satz, das ”max-flow min-cut Theorem”, Satz 2.3.
Definition
Sei [V, E] ein gerichteter Graph. Für jede Teilmenge S ⊂ V heißt
ES := {(v, w) : v ∈ S, w ∈ V \ S}
ein Schnitt von [V, E]. Im Falle s ∈ S, t ∈ V \ S heißt ES ein s und t trennender Schnitt.
Es heißt
X
c(ES ) :=
c(e)
e∈ES
die Kapazität von ES .
Lemma 2.2.
Für jeden Fluß f und jeden s und t trennenden Schnitt ES im Netzwerk N := [V, E, c, s, t]
gilt ( wobei T := V \ S) ist
X
X
X
Φ(f ) =
f (e) −
f (e) ≤
f (e) ≤ c(ES ).
e∈ES
e∈ET
e∈ES
Beweis. z.B. Th. Ihringer, p.64
Satz 2.3 (”max-flow min-cut Theorem”).
In jedem Netzwerk N := [V, E, c, s, t] ist der Wert eines maximalen Flusses von der Quelle
s zur Senke t gleich der Kapazität c(S) eines minimalen s und t trennenden Schnitts ES .
Wie findet man einen maximalen Fluß in einem Netzwerk N := [V, E, c, s, t] ?
Der berühmte Markierungsalgorithmus von Ford und Fulkerson (1956) startet mit
irgend einem zulässigen Fluß in N und konstruiert sukzessive zunehmende Wege
(v0 , v1 , . . . , vm ) mit v0 = s und vm = t und hiermit weitere zulässige Flüsse f mit
steigendem Wert Φ(f ). Ist zum Beispiel (s = v0 , v1 , . . . , vm = t) ein zunehmender Weg,
dann berechnen wir
c(vj .vj+1 ) − f (vj .vj+1 ), falls (vj .vj+1 ) ∈ E,
εj :=
j = 0, . . . , m − 1,
f (vj+1 , vj ),
falls (vj+1 , vj ) ∈ E,
sowie ε := min{εj : j = 0, 1, . . . , m − 1}.

 f (e) + ε,
f1 (e) = f (e) − ε,

f (e),
Der neue Fluß f1 hat die Werte
falls e = (vj .vj+1 ) ∈ E,
falls e = (vj+1 , vj ) ∈ E,
sonst .
24
Die Stärke des neuen Flusses ist Φ(f1 ) = Φ(f ) + ε.
Für eine ausführliche Beschreibung des Markierungsalgorithmus und Varianten siehe
zum Beispiel Th. Ihringer, pp.64 ff.
finis WS 2015/16
25
Herunterladen