Skript zur Vorlesung Graphenalgorithmen

Werbung
Skript zur Vorlesung
Graphenalgorithmen
Version 1.0.12
Juniorprofessor Dr. rer. nat. Robert Elsässer,
überarbeitet von Dr. rer. nat. Henning Meyerhenke
Universität Paderborn
Fakultät für Elektrotechnik, Informatik und Mathematik
Institut für Informatik
D-33102 Paderborn
Skript (Version 1.0) verfasst von Florentin Neumann
Inhaltsverzeichnis
Vorwort
3
1 Einleitung und Motivation
4
2 Kürzeste Pfade, All Pairs Shortest Paths (APSP)
6
2.1
Der Floyd-Warshall-Algorithmus . . . . . . . . . . . . . . . . . .
8
2.2
Matrix-Multiplikation . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.1
Voraussetzungen
9
2.2.2
Distanz- und Wegeberechnungen mit dem Algorithmus
. . . . . . . . . . . . . . . . . . . . . .
von Seidel . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Matchings in bipartiten Graphen
11
24
3.1
Grundlagen und Strukturaussagen . . . . . . . . . . . . . . . . .
24
3.2
Berechnung von gröÿtmöglichen Matchings . . . . . . . . . . . .
29
3.3
Matchings mit maximalem Gewicht . . . . . . . . . . . . . . . .
31
3.3.1
31
Korrektheit
. . . . . . . . . . . . . . . . . . . . . . . . .
4 Matchings in allgemeinen Graphen
35
4.1
Der Algorithmus von Edmonds
. . . . . . . . . . . . . . . . . .
4.2
Approximationsalgorithmen für MWM
. . . . . . . . . . . . . .
35
4.3
Die Theoreme von Tutte und Petersen
. . . . . . . . . . . . . .
37
5 Netzwerkalgorithmen
5.1
Der Hypercube
5.2
5.3
41
. . . . . . . . . . . . . . . . . . . . . . . . . . .
42
Gitter und Torus
. . . . . . . . . . . . . . . . . . . . . . . . . .
46
Lastbalancierung
. . . . . . . . . . . . . . . . . . . . . . . . . .
47
6 Bisektionsweite und Partitionierung
6.1
6.2
35
52
Untere Schranken für die Bisektionsweite . . . . . . . . . . . . .
53
6.1.1
Verfahren von Leighton . . . . . . . . . . . . . . . . . . .
53
6.1.2
Spektrale untere Schranke
56
. . . . . . . . . . . . . . . . .
Obere Schranken für die Bisektionsweite
1
. . . . . . . . . . . . .
57
6.3
Maximale Schnitte in Graphen . . . . . . . . . . . . . . . . . . .
Literaturverzeichnis
69
70
2
Vorwort
Dieses Skript basiert auf der Vorlesung Graphenalgorithmen, die ich im WS
2009/10 an der Universität Paderborn für Master-Studierende gelesen habe.
Die ursprüngliche Version wurde ein Jahr zuvor von Florentin Neumann anhand der Vorlesung von Robert Elsässer erstellt. Das Kapitel über Bisektionsweite und Partitionierung stammt überwiegend aus dem Skript zur Vorlesung
Algorithmen für synchrone Rechnernetze von Burkhard Monien.
Inhaltlich habe ich die Vorlesung gegenüber dem Vorjahr leicht verändert,
was auch zu Löschungen und Hinzufügungen im Skript geführt hat. Leider
konnte ich noch nicht alle Lücken füllen, habe aber an solchen Stellen weitestgehend Literaturverweise eingefügt. Des weiteren sind sicherlich noch nicht
alle enthaltenen Fehler korrigiert, ich bin daher im Namen aller am Skript
Beteiligten um entsprechende Hinweise dankbar.
Bitte bedenken Sie bei der Prüfungsvorbereitung, dass die gesamte Veranstaltung geprüft wird, dazu gehören zum Beispiel auch die Übungszettel. Ein
Studium des Skripts kann den Besuch der Vorlesung und der Übung nicht ersetzen!
Paderborn, 8. März 2010
Henning Meyerhenke
3
Kapitel 1
Einleitung und Motivation
In dieser Vorlesung werden Sie eine Reihe von Algorithmen kennenlernen, die
auf Graphen operieren. Ein Graph modelliert allgemein gesprochen eine Menge von Entitäten (dargestellt als Knoten) und die Beziehungen der Entitäten
(dargestellt durch Kanten).
Denition 1.
Ein Algorithmus ist eine eindeutige Beschreibung eines Verfah-
rens zur Lösung einer bestimmten Klasse von Problemen.
Genauer gesagt ist ein Algorithmus eine Menge von Regeln für ein Verfahren, um aus gewissen Eingabegröÿen bestimmte Ausgabegröÿen herzuleiten.
Dabei muss dass Verfahren in einem endlichen Text beschreibbar sein. Jeder
Schritt dieses Verfahrens muss auch tatsächlich ausführbar sein und darüber
hinaus muss der Ablauf des Verfahrens zu jedem Zeitpunkt eindeutig deniert
sein.
Hier einige typische Beispielprobleme, in denen Graphenalgorithmen eine
wichtige Rolle spielen:
•
Wie ndet ein Navigationssystem gute Verbindungen zwischen zwei Orten?
•
Wie werden im Internet Informationen geroutet?
•
Wie berechnet ein Unternehmen eine möglichst gute Aufteilung seiner
Ressourcen, um seinen Gewinn zu maximieren?
•
Wie werden etwa in Google Informationen schnell gefunden?
Um über die Qualität eines Algorithmus urteilen zu können, bedarf es bestimmter Kriterien, um entsprechende Urteile treen zu können. (i) Algorithmen müssen korrekt sein. D.h. zu jedem Algorithmus gehört ein Korrektheitsbeweis, der in allgemeiner Form die Korrektheit der Berechnung der Ausgabegröÿe zu einer gegebenen Eingabegröÿe zeigt. (ii) Algorithmen sollen zeit-
4
und speicherezient sein. Hierzu bedarf es Analysemethoden für den Zeit- und
Speicherbedarf eines Algorithmus. Diese Analyse basiert in der klassischen Algorithmik nicht auf empirischen Untersuchungen, sondern auf mathematischen
Analysen. Wir nutzen hierfür Pseudocode und Basisoperationen.
Zum Entwurf eines Algorithmus gehören grundsätzlich drei Dinge: 1. Die
Beschreibung des Algorithmus selbst in Pseudocode. 2. Ein vollständiger Korrektheitsbeweis. 3. Die Analyse des Zeit- und Speicherbedarfs des Algorithmus.
5
Kapitel 2
Kürzeste Pfade, All Pairs Shortest
Paths (APSP)
Zu Beginn dieses Kapitels betrachten wir das Problem kürzester Wege in gerichteten Graphen mit Kantengewichten. In einem unidirektionalen, zusammenhängenden Graphen
G = (V, E)
mit
V = {1, . . . , n}
und
|E| = m
als
u, v ∈ V
die
Eingabegröÿen soll als Ausgabegröÿe für jedes Paar von Knoten
Distanz von
Graphen
G
u nach v
sowie ein kürzester Weg zwischen den beiden Knoten im
berechnet werden.
Denition 2.
Sei ein gerichteter und gewichteter Graph
der Gewichtsfunktion
hv0 , v1 , . . . , vk i
w : E → R
G = (V, E)
gegeben. Das Gewicht eines Weges
mit
P =
ist die Summe der Gewichte seiner Kanten:
w(P ) =
k
X
w(vi−1 , vi ).
i=1
Denition 3.
Das Gewicht eines kürzesten Weges
gewichteten Graphen
als:
δ(u, v) =
G = (V, E)
in einem gerichteten und
zwischen den Knoten

min{w(P ) : v
ist von
∞, falls v
u
Ein kürzester Weg zwischen
P
von
u, v ∈ V
u
über
P
u, v ∈ V
ist deniert
erreichbar},
nicht erreichbar ist.
ist dann ein Weg
6
P
mit
w(P ) = δ(u, v).
Abbildung 2.1: Unidirektionaler, gewichteter Graph
Die Eingabe wird als Gewichtsmatrix
phen repräsentiert. Die Matrix-Einträge
wij =



0


Gewicht der ger. Kante
W = (wij )
wij
(i, j)



∞
wij ,
dargestellt, die den Gra-
sind wie folgt deniert:
, wenn
i=j
, wenn
i 6= j
und
(i, j) ∈ E
, wenn
i 6= j
und
(i, j) ∈
/E
Aus dieser Denition folgt für den Graphen
wichtsmatrix
G = (V, E)
G
aus Abbildung 2.1 die Ge-
abgebildet in Tabelle 2.1:
a
W zum Graphen G
b
c
d
e f
a
0
2
∞
5
∞ ∞
b
∞
0
4
∞
∞ ∞
c
∞
∞
0
1
∞
7
d
∞
-4
6
0
5
∞
e
∞
∞
8
∞
0
-1
f
∞
∞ ∞ ∞
∞
0
Tabelle 2.1: Gewichtsmatrix
7
aus Abbildung 2.1
2.1
Der Floyd-Warshall-Algorithmus
Algorithm 1 Floyd-Warshall - APSP
1: procedure Floyd-Warshall(G = (V, E))
2:
D(0) ← W
3:
5:
for k ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
6:
dij ← min(dij
4:
7:
8:
9:
10:
11:
(k)
(k−1)
(k−1)
, dik
(k−1)
+ dkj
)
end for
end for
end for
return Dn
end procedure
Der Floyd-Warshall-Algorithmus basiert auf der Idee, das Problem schritt-
weise zu vergröÿern. In Iteration
Knoten aus der Menge
{1, . . . , k}
k
werden alle Wege berücksichtigt, die über
verlaufen (direkte Kanten des Graphen ein-
geschlossen). Nach Ende der äuÿersten Schleife hat
k den Wert n überschritten,
so dass alle möglichen Wege berücksichtigt worden sind.
Lemma 4.
Sei
G
ein Graph ohne negative Zyklen und sei
reichbar. Dann gibt es einen kürzesten
i − j -Weg,
j
von
i
aus er-
der keinen Knoten doppelt
benutzt.
Satz 5.
Sei
G = (V, E)
ein Graph mit nicht-negativen Zyklen. Dann berechnet
der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in
O(|V |3 )
Schritten.
Die Beweise von Lemma 4 und Satz 5 werdem dem Leser anhand der obigen
Erläuterungen als Übung empfohlen.
Bemerkung 6.
Das als Algorithmus 1 angegebene Verfahren löst eigentlich
nur das Problem All-Pairs-Distances (APD), d. h. es werden nur die paarweisen Distanzen und nicht auch die zugehörigen kürzesten Wege berechnet.
Eine entsprechende Erweiterung des Algorithmus für APSP wird dem Leser
als Übungsaufgabe empfohlen.
8
Abbildung 2.2: Ungerichteter Graph
matrix
2.2
G = (V, E) und die zugehörige Adjazenz-
A
Matrix-Multiplikation
2.2.1
Voraussetzungen
Wir betrachten ungerichtete Graphen
V = {1, ..., n}.
trix
A.
Ein Graph
G = (V, E)
G = (V, E)
mit der Knotenmenge
ist gegeben durch seine Adjazenzma-
Betrachte hierzu den Graphen aus Abbildung 2.2 und die zugehörige
Adjazenzmatrix.
Denition 7.
d.h.
wij
Es sei
G = (V, E)
ein Graph,
ist das Gewicht der Kante von
i
bzgl. des Gewichts kürzesten Weges von
Bemerkung 8.
G.
Es sei
G = (V, E)
W = (wij )
eine Gewichtsmatrix,
(k)
nach j . Deniere δij als Gewicht des
i
nach
j
mit höchstens
ein Graph und
W
k
Kanten.
eine Gewichtsmatrix für
Dann gilt:
(0)
δij =

0
,i = j
und
∞ , i 6= j
Auÿerdem ist
(n−1)
δ(i, j) = δij
(m)
δij
(m−1)
= min {δik
1≤k≤n
+ wkj }
für
m ≥ 1.
.
Im Folgenden betrachten wir das Problem der Matrixmultiplikation. Es
seien
D, W ∈ Rn×n
(i, j)
des Produkts von
der
j -ten
Spalte von
quadratische Matrizen. Dann berechnet sich der Eintrag
D
und
W
als Skalarprodukt der i-ten Zeile von
D
und
W:
(D · W )ij =
n
X
Dik · Wkj
(2.1)
k=1
Wir wollen uns nun zu Nutzen machen, dass die Berechnungsvorschrift zur
Matrixmultiplikation sehr ähnlich zu der rekursiven Formel in Bemerkung 8
9
ist. Denn ersetzt man im rechten Teil der Formel (2.1)
Σ
gegebene
+
durch
min,
gilt für
· durch + und das durch
D, W ∈ (R ∪ {∞})n×n :
(D ∗ W )ij = min {Dik + Wkj }
1≤k≤n
Diese Beobachtung setzen wir nun ein, um mit Hilfe eines modizierten Algorithmus zur Matrixmultiplikation die Distanzen aller paarweise kürzesten Wege
zu berechnen. Die wichtige Idee dabei ist,
(n−1)
D(n−1) = (δij
)
durch fortgesetzte
Matrixmultiplikation zu berechnen:
D(1) = W, D(2) = W 2 = W ∗ W, D(4) = W 4 = W 2 ∗ W 2 , ...
D(2dlog n−1e) = D2dlog n−1e = D2dlog n−1e−1 ∗ D2dlog n−1e−1
Algorithmus 3 namens mmAPD zeigt nun, wie man durch fortgesetzte Aufrufe
an eine Subroutine zur modizierten Matrixmultiplikation die Distanzen der
paarweise kürzesten Wege berechnen kann. Momentan liegt die beste bekannte
Algorithm 2 MatrixMultiply
1: procedure MatrixMultiply(weight matrix A, B )
2:
for i = 1; i ≤ n; i + + do
3:
for j = 1; j ≤ n; j + + do
4:
Cij = ∞
5:
for k = 1; k ≤ n; k + + do
6:
7:
8:
9:
10:
11:
Cij = min{Cij , Aik + Bkj }
end for
end for
end for
return C
end procedure
Laufzeit eines Algorithmus für Matrixmultiplikation bei
re untere Schranke als
Ω(n2 )
O(n2.376 ).
Eine besse-
ist nicht bekannt, so dass hier eine noch nicht
geschlossene Lücke zwischen unterer und oberer Laufzeitschranke klat.
Die obere Laufzeitschranke kann auf die Multiplikation von Boolschen Matrizen angewandt werden, wie wir in Kürze sehen werden. Bedauerlicherweise
folgt aus dieser Beobachtung aber auch eine Laufzeit für das APD Problem,
die gröÿer als
O(n2 )
ist (jedenfalls solange man über keinen Algorithmus mit
quadratischer Zeitkomplexität zur Matrixmultiplikation verfügt).
Die Laufzeit des Algorithmus mmAPD ist
die Zeit ist, um zwei
n × n
O(mm(n) · log n),
wobei mm(n)
Matrizen miteinander zu multiplizieren. Es
gibt allerdings einen Nachteil, denn es gibt keine implizite Darstellung der
10
Algorithm 3 mmAPD
1: procedure mmAPD(weight matrix W )
2:
D(1) = W
3:
m=1
4:
while m < n − 1 do
5:
D(2m) = MatrixMultiply(D(m) , D(m) )
6:
m = 2m
end while
8:
return D(m)
9: end procedure
7:
kürzesten Wege, denn dazu wären alle Matrizen
O(mm(n) · n)
die Laufzeit würde auf
2.2.2
D1 , . . . , D m
notwendig und
ansteigen.
Distanz- und Wegeberechnungen mit dem Algorithmus von Seidel
Wir betrachten nun die Probleme Distanz- und Wegeberechnungen in ungerichteten und ungewichteten Graphen.
•
Problem APD :
Gegeben: Ungerichteter, ungewichteter Graph
Gesucht: Matrix
•
D = (δij ),
wobei
δij
G = (V, E).
die Distanz von
i
nach
j
in
G
ist.
Problem APSP :
Gegeben: Ungerichteter, ungewichteter Graph
Gesucht: Matrix
D = (δij )
G = (V, E).
wie bei APD und eine implizite Darstellung
der kürzesten Wege.
Wir werden für beide Probleme Lösungen erarbeiten und sehen, dass das
APD -Problem in Zeit
O(mm(n)·log n) für ungewichtete, ungerichtete Graphen
lösbar ist und das APSP -Problem in erwarteter Zeit
O(mm(n) · log2 n)
für
dieselbe Graphklasse durch einen randomisierten Algorithmus lösbar ist.
Lemma 9.
zenzmatrix
A.
Ist
der Länge 2 von
Länge
2
G(V, E)
Es sei
von
i
i
Z = A
nach
nach
j
j
2
ein ungerichteter, ungewichteter Graph mit Adja-
, so ist
gibt.
Zij
Zij > 0
genau dann, wenn es einen Weg
gibt die Anzahl der verschiedenen Wege der
an.
11
Proof. ⇒
P = hi, k0 , ji
Sei
{i, k0 }, {k0 , j} ∈ E ,
ein
Weg
Ai,k0 = Ak0 ,j = 1.
also
i
von
j
nach
G.
Pn
in
Zij =
Es folgt
k=1
Dann
ist
Ai,k Ak,j ≥
Ai,k0 Ak0 ,j = 1.
⇐ Sei
Zij > 0.
{i, k0 }, {k0 , j} ∈ E
und
Um zu zeigen, dass
i
nach
j
k0 ∈ {1, ..., n}
Dann existiert
P = hi, k0 , ji
Zij
Weg von
i
mit
n
X
j
nach
in
Dann ist
G.
die Anzahl der verschiedenen Wege der Länge
angibt, betrachten wir die Berechnung von
Zij =
Ai,k0 Ak0 ,j = 1.
X
Aik · Akj =
k=1
2 von
Zij :
1 = |Γ(i) ∩ Γ(j)|.
k∈Γ(i)∩Γ(j)
Damit können wir durch eine einfache Matrixmultiplikation eine Matrix
berechnen, die es erlaubt, schnell einen Graphen
Knoten
G
i
j
und
0
G
Z
zu berechnen, in dem zwei
δ(i, j) ≤ 2
genau dann miteinander verbunden sind, wenn
in
ist:
2
Z = A
1,
0
Aij =
0,
0
G =
Lemma 10.
jazenzmatrix
(Aij = 1
Graphen
Es sei
A.
G,
G(V, E)
A
0
i 6= j
und
(Aij = 1
oder
Zij > 0)
sonst
der durch
0
A
induzierte Graph
ein ungerichteter, ungewichteter Graph mit Ad-
derart, dass
Zij > 0),
oder
0
Ist
falls
und ist
D
0
0
Aij = 1
genau dann gilt, wenn
A
die Distanzmatrix des durch
0
i 6= j
und
gegebenen
so gilt:
0
•
a)
Dij = 2Dij ,
•
b)
Dij = 2Dij − 1,
wenn
0
Dij
wenn
gerade ist und
Dij
ungerade ist.
Proof.
•
Fall a)
⇒∃
Dij = 2k
ist gerade.
kürzester Weg
P = hi = i0 , i1 , ..., i2k−1 , i2k = ji
0
⇒ P = hi = i0 , i2 , ..., i2k−2 , i2k = ji
ist Weg von
i
von
nach
j
i
nach
in
j
in
G.
0
G.
0
⇒ Dij ≤ k
Wäre
≤ 2l
Also
0
Dij = l < k ,
so existierte ein Weg
(Widerspruch, da
Dij = 2k ).
0
Dij = 2k = 2Dij .
12
Q
von
Daraus folgt
i
nach
0
j
Dij = k .
in
G
der Länge
•
Fall b)
⇒∃
Dij = 2k + 1
ungerade.
P = hi = i0 , i1 , ..., i2k , i2k+1 = ji
kürzester Weg
0
⇒ P = hi = i0 , i2 , ..., i2k , i2k+1 = ji
ist Weg von
i
i
von
j
nach
nach
j
in
G.
0
G.
in
0
⇒ Dij ≤ k + 1
0
Dij = l ≤ k ,
Wäre
≤ 2k
so existierte ein Weg
(Widerspruch, da
Dij = 2k + 1).
Q
von
i
j
nach
Daraus folgt
in
G
der Länge
0
Dij = k + 1.
0
Dij = 2k + 1 = 2Dij − 1.
Also
Die Idee für einen Algorithmus beläuft sich auf drei hauptsächliche Schritte:
1. Berechne die Distanzen
D
0
für
0
G
(rekursiv).
2. Berechne die Parität der Distanzen in
G.
3. Dann liefert Lemma 10 eine Berechnungsvorschrift für die Distanzen
D
G.
in
Lemma 11.
Graphen
Betrachte ein beliebiges Paar disjunkter Knoten
i, j ∈ V
des
G.
•
a) Für alle Nachbarn
•
b) Es existiert ein Nachbar
Proof. Sei
k ∈ Γ(i)
gilt
Dij − 1 ≤ Dkj ≤ Dij + 1.
k ∈ Γ(i)
P = hi = i1 , i2 , ..., ip+1 = ji
mit
Dkj = Dij − 1.
kürzester Weg von
i
nach
j
in
G,
also
Dij = p.
•
a) Sei
1.
k ∈ Γ(i),
d. h.
{i, k} ∈ E .
k = i2 ⇒ P1 = hk = i2 , ..., ip+1 = ji
ist Weg von
k
j
nach
⇒ Dkj ≤ p + 1
2.
k 6= i2 ⇒ P2 = hk = i0 , i1 , ..., ip+1 = ji
ist Weg von
k
nach
j
⇒ Dkj ≤ p + 1
In jedem Fall:
3. Annahme:
Dkj ≤ p + 1 = Dij + 1
Dkj = q < Dij − 1.
Dann existiert
P3 = hk = k1 , k2 , ..., kq+1 = ji
P4 = hi = k0 , k1 , k2 , ..., kq+1 = ji
von
•
i
nach
j
13
k
ist ein Weg der Länge
(Widerspruch zur Denition von
b) Folgt aus a), 1.) und 3.).
von
Dij ).
nach
j ⇒
q + 1 < Dij
Lemma 12.
i, j ∈ V
Betrachte ein beliebiges Paar disjunkter Knoten
des
G.
Graphen
a) Ist
Dij
gerade, so ist
•
b) Ist
Dij
ungerade, so ist
k ∈ Γ(i)
dem existiert ein
0
0
Dkj ≥ Dij
•
k ∈ Γ(i).
für alle Nachbarn
0
0
Dkj ≤ Dij
für alle Nachbarn
0
k ∈ Γ(i).
Auÿer-
0
Dkj < Dij .
derart, dass
Proof.
•
Fall a)
Dij = 2l
⇒ ∀
|{z}
k ∈ Γ(i): Dkj ≥ 2l − 1
Nachbarn
Lemma 11
Dann ist
ist gerade.
0
Dij = l
nach Lemma 10 a).
Weiter folgt aus Lemma 10 a,b), dass
0
Dkj
•
ist ganzzahlig
0
⇒ ∀
|{z}
0
Dij = l
0
ist ungerade.
k ∈ Γ(i): Dkj ≤ 2l
Nachbarn
Lemma 11
Dann ist
nach Lemma 10 b).
Weiter folgt aus Lemma 10 a,b), dass
0
Dkj
ist ganzzahlig
0
1
2
0
k ∈ Γ(i)
0
0
Dkj = l − 1 < l = Dij
Lemma 13.
0
Dkj ≤ (Dkj + 1)/2 ≤ l +
⇒ Dkj ≤ l = Dij
Weiter gilt, dass ein
gilt
1
2
⇒ Dkj ≥ l = Dij
Dij = 2l − 1
Fall b)
0
Dkj ≥ Dkj /2 ≥ l −
mit
Dkj = Dij − 1 = 2l − 2
existiert, also
nach Lemma 10 a).
Betrachte ein beliebiges Paar disjunkter Knoten
Graphen
G.
•
a)
Dij
ist gerade genau dann, wenn
•
b)
Dij
ist ungerade genau dann, wenn
P
0
k∈Γ(i)
P
i, j ∈ V
des
0
Dkj ≥ Dij · deg (i).
0
k∈Γ(i)
0
Dkj < Dij · deg (i).
Proof.
•
Fall a)
⇒
|{z}
Dij ist
P
gerade
0
k∈Γ(i)
Dkj ≥
P
0
k∈Γ(i)
0
Dij = deg(i)Dij .
Lemma 12 a)
•
Fall b)
⇒
|{z}
Dij ist
P
ungerade
k∈Γ(i)
0
Dkj ≤
P
0
k∈Γ(i)
0
Dij − 1 = deg(i)Dij − 1.
Lemma 12 b)
Die jeweilige Rückrichtung ergibt sich durch die Betrachtung der beiden komplementären Fälle.
14
Eine alternative Herleitung, wie man die Parität der
Dij
bestimmen kann,
ist in den zusätzlichen Materialien zur Vorlesung enthalten.
Dij
Wir betrachten nun den Algorithmus APD, der die Distanzen
Knotenpaare
(i, j)
G
für einen gegebenen ungerichteten Graphen
A
Der Graph wird durch seine Adjazenzmatrix
für alle
berechnet.
repräsentiert.
Algorithm 4 APD
1: procedure APD(Adjazenzmatrix A)
2:
Z = A2
3:
berechne
0
A
0
4:
Aij = 1
mit
gdw.
0
. Aij = 1 ⇔
i 6= j
und
7:
if Aij = 1 ∀i 6= j then
0
return D = 2A − A
end if
8:
D = APD(A )
(Aij = 1
oder
6:
0
9:
return D
.
j
mit
Rekursionsabbruch
. Rekursion
P
0
. Sij = k∈Γ(i) Dkj
0

2D0 ,
ij
Dij =
2D0 − 1,
ij
end procedure
Satz 14.
0
falls
Sij ≥ Dij Zii
falls
Sij < Dij Zii
. Zii = deg(i)
0
Der Algorithmus APD berechnet die Distanzmatrix
Knoten Graphen
G
O(mm(n) · log n)
in Zeit
Proof. Sei
T (n, δ)
δ
O(n ).
S
δ = 1,
Dann hat
durch
n
vollständig. Ist
2
(n) = Ω(n )
mm
O(mm(n) log n).
2
G
so ist
δ < n,
Wegen
Laufzeit
G.
die Zeit, die APD auf Graphen mit
benötigt. Ist
2
der Durchmesser von
Wegen
Dij < n
D
eines
n-
mit Hilfe der ganzzahligen Ma-
trixmultiplikation, wobei die Einträge der Matrix nicht gröÿer als
von
nach
Zij > 0)
0
S =A·D
10:
Sei
i
0
5:
11:
es ex. Weg der Länge 1 od. 2 v.
0
G
n
Durchmesser
O(n2 )
sind.
0
δ = dδ/2e.
Knoten und Durchmesser
δ = 2,
so ist
T (n, δ) =
und Rekursionstiefe
und somit
0
Dij < n
log n
δ
(n) +
mm
folgt die
sind die Einträge
nach oben beschränkt.
Das Zeugenproblem für Boolsche Matrizen
Wir erweitern den Algorithmus APD nun so, dass nicht nur die Distanzen
sondern auch für jedes Knotenpaar
(i, j)
Dij ,
ein kürzester Weg berechnet wird.
Dabei soll die Laufzeit des neuen Algorithmus subkubisch sein. Das Problem
ist dabei, dass es Graphen
tenpaare Distanz
Ω(n)
G = (V, E)
von der Gestalt gibt, dass
Ω(n2 )
Kno-
haben.
Beispiel 15. G = (V, E)
ist eine Linie:
15
V = {1, ..., n}, E = {(i, i + 1)|1 ≤
i < n}.
Setze
n
2
δ=
= Ω(n),
n−δ
X
k=
k=1
dann haben
n2
(n − δ + 1)(n − δ)
>
= Ω(n2 )
2
8
Knotenpaare mindestens den Abstand
δ
kürzesten Wege würde daher Platzbedarf
zueinander. Explizites Speichern der
Ω(n3 ),
Ω(n3 ),
also auch Zeitaufwand
bedeuten. Daher werden die kürzesten Wege nur implizit gespeichert, indem
zu jedem Knotenpaar
nach
j
(i, j)
Sij
der Nachfolger
von
i
auf einem kürzesten Weg
gespeichert wird.
S = (Sij )
O(n2 )
hat
Einträge und ein kürzester Weg von
i
nach
j
kann in
Zeit proportional zu seiner Länge bestimmt werden:
SPN(
S , i, j )
x0 = i; k = 0;
repeat
xk+1 = Sxk ,j ; k + +;
until (xk = j);
return hx0 , ...xk i
Notation 16.
•
Wir bezeichnen im Folgenden:
1
die boolsche
Matrixmultiplikation mit
∧
als Multiplikation und
∨
als
Addition durch ∗ und
•
die ganzzahlige Matrixmultiplikation mit ·.
Denition 17.
{0, 1}
n×n
Es seien
A, B ∈ {0, 1}n×n
das boolsche Produkt von
k ∈ {1, ..., n}
derart, dass
A
boolsche Matrizen,
B.
und
Ein Zeuge für
P = A∗B ∈
Pij
ist ein Index
Aik = 1 = Bkj .
Bemerkung 18.
a)
Pij = 1 ⇔
es gibt einen Zeugen
b) Ist
C = A · B,
c) Ist
A
so ist
Cij
für
Pij = 1
Cij
Pij .
die Anzahl der Zeugen für
Adjazenzmatrix eines Graphen
existiert.
d) Für
so ist
k
Pij .
G(V, E), P = A ∗ A
und
C = AA,
genau dann, wenn ein Weg der Länge 2 zwischen
i
und
j
ist die Anzahl dieser Wege (vgl. Lemma 9).
P = A∗A
ist ein Zeuge
Weg der Länge 2 von
i
nach
k
für
Pij = 1
Zwischenknoten auf einem
j.
1 Da
diese Bezeichnung auf George Boole (1815-1864) zurückgeht, ndet man auch häug
die Schreibweise boolesche Matrixmultiplikation.
16
Pij
e) Für jedes
bzgl.
P =A∗B
kann es bis zu
n
Zeugen geben.
Zeugen sind interessant, wenn man den APD -Algorithmus so erweitern will,
dass er kürzeste Wege berechnet. Da Zeugen Zwischenknoten auf Wegen der
2
Länge
darstellen, helfen sie bei der Konstruktion einer Nachfolgermatrix.
Wie genau dies funktioniert, wird nachfolgend erläutert.
Denition 19.
A, B ∈ {0, 1}n×n
Es seien
boolsche Matrizen,
P = A∗B ∈
{0, 1}n×n . Eine Zeugenmatrix ( Bpwm = Boolean Product Witness Matrix) für
P
ist eine Matrix
W ∈ {0, ..., n}n×n mit

0, wenn P = 0
ij
Wij =
k, k ist Zeuge für P = 1
ij
Problem Bpwm:
• gegeben:
• gesucht:
boolsche Matrizen
A
und
eine Zeugenmatrix
W
für
B.
P = A ∗ B.
Ein trivialer Algorithmus für Bpwm, der für alle
{1, ..., n}
testet, hat Zeitaufwand
O(n3 ).
(i, j) ∈ {1, ..., n}2
alle
k ∈
Da wir einen niedrigeren Aufwand
anstreben, vereinfachen wir zunächst das Problem Bpwm:
Problem UniqueBpwm:
• gegeben: boolsche Matrizen A und B , so dass jeder Eintrag in P = A∗B
einen eindeutigen Zeugen hat.
• gesucht:
Lemma 20.
und
W
a)
die Zeugenmatrix
Es seien
gegeben durch
Wij
W
für
A, B ∈ {0, 1}n×n
Âik = kAik
ist Zeuge für
Pij ,
b) Hat jeder Eintrag von
und
wenn
Pij
Pij
P = A ∗ B.
boolsche Matrizen und die Matrizen
W = ÂB .
Â
Dann gilt:
einen eindeutigen Zeugen hat.
einen eindeutigen Zeugen, so ist
W
die Lösung
von UniqueBpwm.
Proof.
Es ist
Wij =
n
X
k=1
Âik Bkj =
n
X
k · Aik Bkj
k=1



k,


=
0,



> k,
falls genau ein
Aik Bkj = 1
falls
Aik Bkj = 0 ∀k
falls
Aik Bkj = 1
17
und
Ail Blj = 1
für ein
l 6= k.
Beispiel 21.






1 1 0
1 0 0
1 1 0






A = 1 0 0 , B = 1 1 0 , P = 1 0 0 .
0 0 0
0 0 0
0 0 0


1 2 0


 = 1 0 0
0 0 0
und
Die grünen und blauen Einträge von
W


3 2 0


W = 1 0 0 .
0 0 0
sind schon korrekte Einträge für eine
Zeugenmatrix, der rote jedoch nicht.
Folgerung 22.
Das Problem UniqueBpwm kann durch eine ganzzahlige Ma-
trixmultiplikation, also in Zeit
O(mm(n)),
gelöst werden.
Problematisch ist nun, dass wir eine Zeugenmatrix
einer Adjazenzmatrix
W
für
P = A∗A
mit
A berechnen wollen. Dabei ist natürlich nicht garantiert,
dass die Zeugen immer eindeutig sind. Die Idee zur Lösung des Problems lässt
sich so beschreiben:
•
Randomisierung liefert den gleichen Eekt wie eindeutige Zeugen für genügend viele Einträge
Pij ,
denn bei einer zufälligen Auswahl von Kandi-
datenmengen trit man wahrscheinlich auf eine Menge mit genau einem
Zeugen.
•
Die wenigen verbleibenden Einträge werden dann mit dem trivialen Algorithmus berechnet.
Nicht eindeutige Zeugen
Wir betrachten boolsche Matrizen
einen festen Eintrag
(OE
w ≥ 2,
Pij
von
P.
Es sei
Ziel ist es, eine Menge
k
für
Lemma 23.
enthalte
r
w = Cij
und
die Anzahl der Zeugen für
Pij
denn nach den Vorbetrachtungen ist es einfach, einen eindeutigen
Zeugen zu nden). Auÿerdem sei
Zeugen
A, B ∈ {0, 1}n×n , P = A ∗ B , C = AB
Pij
r∈N
mit
n
2
≤ wr ≤ n.
R ⊂ {1, ..., n} mit |R| zu nden, die den eindeutigen
enthält.
Es sei
n ∈ N, w ∈ {1, ..., n}, r ∈ N
n Bälle, von denen w
weiÿ und
n−w
n
mit 2
≤ wr ≤ n.
Eine Urne
schwarz sind. Zieht man zufällig
Bälle aus der Urne, ohne diese zwischendurch zurückzulegen, so ist:
Pr[genau
ein weiÿer Ball wurde gezogen]
18
≥
1
2e
Proof. Durch elementare Rechenoperationen kann die gesuchte Wahrscheinlichkeit wie folgt beschränkt werden:
w
1
n−w
r−1
n
r
r! (n − w)!
(n − r)!
(r − 1)!
n!
(n − w − r + 1)!
! w−2
!
w−1
Y 1
Y
wr
(n − r − j)
n
−
i
i=0
j=0
!
w−2
wr Y n − r − j
n j=0 n − 1 − j
!
w−2
wr Y n − r − j − (w − j − 1)
n j=0 n − 1 − j − (w − j − 1)
!
w−2
wr Y n − w − (r − 1)
n j=0
n−w
w−1
r−1
wr
1−
n
n−w
w−1
1
1
1−
siehe **
2
w
= w
=
=
≥
=
=
≥
* Gilt faktorweise:
siehe *
a = n − r − j , b = n − 1 − j , c = w − j − 1.
Dann ist
a(b − c) ≥ b(a − c) ⇔ ac ≤ bc ⇔ a ≤ b.
**
r−1
n−w
≤
1
w
⇔ (r − 1)w ≤ n − w ⇔ rw ≤ n.
Die letzte Ungleichung folgt von den Beobachtungen, dass
(r − 1)/(n − w) ≤ 1/w,
was aus der Annahme, dass
Beispiel 24. n = 8, w = 3, n − w = 5.
n
2
≤ wr ≤ n
ist
wr/n ≥ 1/2
n/2 ≤ wr ≤ n,
und
folgt.
Einzig mögliche Wahl für
r
mit
r = 2:
•
3 Möglichkeiten, genau 2 weiÿe Bälle zu ziehen
•
10 Möglichkeiten, genau 2 schwarze Bälle zu ziehen
•
15 Möglichkeiten, genau 1 weiÿen und 1 schwarzen Ball zu ziehen
•
28 Möglichkeiten insgesamt
Damit ist
Pr[genau
ein weiÿer Ball wurde gezogen]
Sei jetzt
enthält.
R
dann, wenn
R ⊂ {1, ..., n}
derart, dass
=
28−13
28
R
einen eindeutigen Zeugen für
sei gegeben durch einen Vektor
k ∈ R.
Deniere:
19
=
15
28
>
n
R ∈ {0, 1}
1
2
>
1
2e
mit
≈ 0.184.
Rk = 1
Pij
genau
•
eine Matrix
AR ∈ Nn×n
0
durch
AR
ik = kRk Aik
•
eine Matrix
B R ∈ Nn×n
0
durch
R
= Rk Bkj
Bkj
Weiterhin sind die Matrizen
Â
wie bereits weiter oben verwendet.
jede Spalte von
Â,
mit
die zu einem Element
k∈
/R
k
W =A ·B
Proof.
k∈R
k∈
/R
und
W = Â · B
so
mit
k
gehört, durch eine Nullspalte
multipliziert wird.
B,
entsteht, indem jede Zeile von
Es seien
R
Zeuge für
P
B
BR
ist die
die zu einem Element
gehört, durch eine Nullzeile ersetzt wird.
Lemma 25.
oben,
B
sowie
AR ist die Matrix, die aus  entsteht, indem
ersetzt wird und jede andere Spalte
Matrix, die aus
Âik = kAik
und
R
A, B ∈ {0, 1}n×n
Pij
. Wenn
boolsche Matrizen,
einen eindeutigen Zeugen in
AR
R
BR
wie
hat, so ist
Wij
und
Pij .
Wij = (AR · B R )ij =
k · Aik · Bkj .
Zeugeneigenschaft:
Wenn
R
Pn
k=1
R
AR
ik Bkj =
Pn
k=1
k · Rk · Aik · Rk Bkj =
nur einen einzigen Zeugen enthält, folgt aus der
Wij = k·Aik ·Bkj = k , wobei k der eindeutige Zeuge ist.
Die weiteren Ideen, die zum fertigen Algorithmus führen, lassen sich so
umschreiben:
• W = AR B R
liefert Zeugen für alle Einträge in
eindeutigen Zeugen in
•
Eintrag von
1
n
, wenn
2e
2
haben.
Wir wählen
P
R
der Gröÿe
mit
w
|R| = r
einen eindeutigen Zeugen für einen
Zeugen enthält, gröÿer oder gleich der Konstanten
≤ wr ≤ n
ist.
O(log n) Mengen R zufällig aus. Damit wird es sehr unwahr-
scheinlich, dass für einen Eintrag von
•
die einen
Nach Lemma 23 ist die Wahrscheinlichkeit dafür, dass eine zufällig gewählte Menge
•
R
P = A ∗ B,
P
kein Zeuge identiziert wird.
Zeugen für die Einträge, für die kein Zeuge identiziert wird, werden mit
dem trivialen Algorithmus berechnet.
•
Da nicht alle Einträge von
Mengen
die gleiche Anzahl Zeugen haben, müssen
R mit verschiedenen Kardinalitäten r
jedoch, für
r
die Zweierpotenzen zwischen
die Bedingung
Satz 26.
P
n
2
≤ wr ≤ n
1
benutzt werden. Es reicht
und
n
zu benutzen, da nur
erfüllt sein muss.
Algorithmus Bpwm ist ein Las-Vegas-Algorithmus für Problem Bp-
wm mit erwarteter Laufzeit
O(mm(n) log2 n).
20
Algorithm 5 Bpwm
1: procedure Bpwm(Boolsche Matrizen A, B ∈ {0, 1}n×n )
2:
W = −AB
3:
for t = 0, ..., blog nc do . teste alle Zweierpot. r = 2t zwischen 1 und n
. Wij < 0 ⇔
Zeuge für
4:
r = 2t
5:
Repeat d3.77 log ne times
6:
Wähle
R ⊆ {1, ..., n}
mit
Pij
muss noch gefunden werden
.
für
O(log n)
|R| = r
7:
berechne
8:
Z = AR B R
9:
for all (i, j) do . teste, ob neuer Zeuge für Pij
if Wij < 0 und Zij ist Zeuge für Pij then
10:
11:
12:
13:
A
R
und
B
Runden
R
.
vgl. Lemma 23
gefunden wurde
Wij = Zij
end if
end for
14:
15:
16:
17:
18:
end for
for all (i, j) do
if Wij < 0 then
berechne
Wij
.
kein Zeuge für
mit dem trivialen Algorithmus
end if
20:
end for
21: end procedure
19:
21
Pij
gefunden
O(mm(n))
Proof. Die Initialisierung benötigt
läuft die innere Schleife
und führt jedes Mal eine ganzzahlige
n×n
Matrizen durch. Die anderen Operationen in
O(log n)-mal
Matrixmultiplikation von
Zeit. Der Algorithmus durch-
2
O(mm(n) log2 n)
der Schleife sind weniger zeitaufwändig. Die Laufzeit
folgt,
wenn nicht zu oft der triviale Algorithmus aufgerufen werden muss.
• Beh.:
Ist
Pij = 1,
so wird im randomisierten Teil des Algorithmus ein
≥1−
Zeuge mit Wahrscheinlichkeit
• Bew.:
w
Sei
1
gefunden.
n
die Anzahl der Zeugen für
mindestens einmal mit einem Wert
r
Pij .
n
mit
2
Die äuÿere Schleife wird
≤ wr ≤ n
diesem Durchlauf ist die Wahrscheinlichkeit, dass
Pij
Zeugen für
enthält, höchstens
(1 −
≤
keinen eindeutigen
1
nach Lemma 23. Damit ist die
2e
1−
Wahrscheinlichkeit, dass kein Zeuge für
1 3.77 log n
)
2e
R
durchlaufen. In
Pij
identiziert wird höchstens
1
.
n
Damit ist die erwartete Anzahl der nicht gefundenen Zeugen begrenzt durch
n
anstelle der ursprünglichen
Algorithmus zusammen Zeit
n2 .
Somit benötigen alle Aufrufe des trivialen
O(n2 ).
Randomisierter Algorithmus
Wir schlieÿen das Thema in diesem Abschnitt mit der Beschreibung des randomisierten Algorithmus ab, der anhand einer Zeugenmatrix eine Nachfolgermatrix berechnet. Zuvor muss noch festgelegt werden, wie genau diese Nachfolgermatrix berechnet wird.
Denition 27.
trix
S
von
i
für
G
ist eine
G(V, E)
ein Graph mit
n × n-Matrix,
möglich, wenn
dann, wenn
i
nach
j
i 6= j Sij
ein Nachfolger
liegt. Weiter ist
beliebig mit
Sii = 0.
Dij = d. Sij = k ist genau dann
Dik = 1 und Dkj = d − 1. Sei B d ∈ {0, 1}n×n
Dkj = d − 1 (B d
Lemma 28.
Dij = d
Knoten. Eine Nachfolgerma-
A die Adjazenzmatrix eines Graphen G(V, E), D die Distanzmatrix
G. Seien i, j ∈ {1, ..., n}, i 6= j
{0, 1}n×n
n
so dass für alle
ist, der auf einem kürzesten Weg von
Sei nun
von
Es sei
Es sei
A
kann aus
D
in Zeit
O(n2 )
Einträge
Sij
einer Nachfolgermatrix
S
für
d
)
d
Bkj
= 1 genau
berechnet werden).
Adjazenzmatrix eines Graphen
wie oben deniert. Der Aufruf Bpwm(A, B
mit
G(V, E)
und
liefert für alle
Bd ∈
i, j
mit
G.
Der Beweis von Lemma 28 ist dem Leser zur Übung empfohlen.
Das Problem ist, dass es
n
mögliche Werte für
Laufzeit eines Algorithmus mindestens
Ω(nmm(n))
d
gibt. Damit wäre die
und somit superkubisch.
Aber es reichen drei Berechnungen von Zeugenmatrizen aus, denn:
22
•
Für alle
•
Jeder Nachfolger
i, j
und alle Nachfolger
k
von
i
mit
k
von
i
Dij − 1 ≤ Dkj ≤ Dij + 1.
gilt
Dkj = Dij − 1
ist ein möglicher Eintrag für
Sij .
•
•
Also: Jedes
k
Eintrag für
Sij .
Für
mit
Aik = 1
Dkj ≡ Dij − 1 (mod 3)
und
ist ein möglicher
(s)
s = 0, 1, 2 deniere D(s) durch Dkj = 1 genau dann, wenn Dkj +1 ≡ s
(mod 3).
•
Eine Nachfolgermatrix
A∗D
(s)
,
s = 0, 1, 2
S
von
A
kann dann aus den Zeugenmatrizen für
berechnet werden.
Algorithm 6 Apsp
1: procedure Apsp(Adjazenzmatrix A für G(V, E))
2:
berechne
3:
for s = 0, 1, 2 do
4:
D = Apd(A)
berechne
.D
D(s) ∈ {0, 1}n×n
derart, dass
(s)
Dkj = 1
ist Distanzmatrix
gdw.
Dkj + 1 ≡ s
(mod 3)
5:
berechne eine Zeugenmatrix
6:
end for
7:
berechne Nachfolgematrix
8:
S
W (s) = Bpwm(A, D(s) )
mit
(Dij (mod 3))
Sij = Wij
end procedure
Satz 29.
phen
G
Der Algorithmus Apsp berechnet eine Nachfolgermatrix eines Gra-
mit
n
Knoten in erwarteter Zeit
23
O(mm(n) log2 n).
Kapitel 3
Matchings in bipartiten Graphen
3.1
Grundlagen und Strukturaussagen
Ein häuges Problem in der Informatik ist es, eine Menge
an eine höchstens gleich groÿe Menge
V1
V2
von Bewerbern
von Jobs zuzuweisen. Die Struktur
und Lösungsverfahren dieses Problems, das leicht abgewandelt in vielen Anwendungen auftritt, werden in diesem Kapitel behandelt.
Denition 30.
•
Ein Graph
G
heiÿt bipartit genau dann, wenn seine Knotenmenge in
zwei disjunkte Teilmengen zerlegt werden kann, in denen keine internen
G = (V1 ∪ V2 , E)
Kanten existieren:
bipartit
⇔ V1 ∩ V2 = ∅
und
E ⊆
V1 × V2 .
•
Ein Matching
M
ist eine Kantenmenge in
G,
bei der keine zwei Kanten
einen Knoten gemeinsam haben.
•
Ein Matching
M
heiÿt nicht erweiterbar (engl.: maximal matching) ge-
nau dann, wenn jede Kante zu mindestens einer Kante aus
ist:
•
∀(u, v) ∈ E ∃w ∈ V
Ein Matching
M
derart, dass
Ein Knoten
v
u heiÿt
gibt, so dass
• M
oder
inzident
(v, w) ∈ M .
heiÿt gröÿtmöglich oder maximal (engl.: maximum
matching) genau dann, wenn
•
(u, w) ∈ M
M
|M |
saturiert (von
maximal unter allen Matchings in
M ) genau dann, wenn es einen Knoten
(u, v) ∈ M .
ist perfektes Matching:
M
G.
saturiert alle Knoten in
24
G.
Abbildung 3.1: Von links nach rechts: Leeres Matching, nicht erweiterbares
Matching sowie ein Matching, das gröÿtmöglich und perfekt ist.
Abbildung 3.2:
Zwei Beispiele von nicht erweiterbaren, aber nicht gröÿtmög-
lichen Matchings.
Abbildung 3.1 illustriert die verschiedenen Arten von Matchings. Nicht erweiterbare Matchings müssen nicht zwangsläug gröÿtmöglich sein, wie Abbildung 3.2 zeigt. Umgekehrt ist ein gröÿtmögliches Matching natürlich nicht
erweiterbar.
Bemerkung 31.
Das Ersetzen der Matching-Kanten in Abbildung 3.2 (rechts)
durch Kanten, die nicht zum Matching gehören, (und umgekehrt natürlich)
erzeugt ein gröÿeres Matching. Diese Beobachtung kann als mögliche Strategie
zur Vergröÿerung von Matchings dienen.
In der Folge versuchen wir, die oben formulierte Strategie zu formalisieren.
Denition 32.
Sei
M
ein Matching in
alternierender Pfad ist ein Pfad
(u1 , v1 , u2 , v2 , ..., uk , vk , uk+1 )
für alle
i.
Ein
mit
M -alternierender
G = (V1 ∪ V2 , E).
P = (u1 , v1 , u2 , v2 , ..., uk , vk )
(ui , vi ) ∈ M
für alle
i
oder
Ein
oder
M-
P =
(vi , ui+1 ) ∈ M
Pfad mit unsaturierten Endknoten heiÿt
M-
erweiternder Pfad.
Der
Name
alternierend
rührt
natürlich
daher,
dass
in
einem
M-
alternierenden Pfad beim Ablaufen der Kanten sich solche abwechseln, die
zu
M
gehören und solche, die nicht zu
M
gehören. Dies ergibt sich direkt aus
den obigen Denitionen.
Bemerkung 33.
Kanten aus
Hat man einen
P ∩M
M -erweiternden
durch die Kanten aus
25
P \M
Pfad
P,
ersetzt man die
und erhält ein Matching mit
einer Kante mehr. Daraus folgt sofort, dass kein
M
tieren kann, wenn
M -erweiternder
Pfad exisi-
nicht erweiterbar ist.
Um die Folgerung in Bemerkung 33 auch für die zweite logische Richtung
beweisen zu können, denieren wir zunächst die symmetrische Dierenz zweier
Graphen bzw. Mengen.
Denition 34.
Seien
V.
selben Knotenmenge
V
der Knotenmenge
Satz 35.
Seien
M
G = (V, EG )
und
H = (V, EH )
Die symmetrische Dierenz
und der Kantenmenge
0
M
und
menhangskomponente von
M ∆M
G∆H
E = {e|e ∈ EG
zwei Matchings in
0
zwei Graphen mit derist ein Graph mit
e ∈ E H }.
XOR
G = (V1 ∪ V2 , E).
Jede Zusam-
ist entweder ein Pfad oder ein Kreis gerader
Länge.
Proof. Seien
M
0
M
und
Matchings und sei
F = M ∆M
0
. Da
M
und
chings sind, hat jeder Knoten höchstens eine inzidente Kante aus
M
0
F
. Daraus folgt, dass
∆(F ) ≤ 2
F
Zusammenhangskomponente von
F
zwischen den Kanten von
M
und von
M
M
0
G
keinen
dann und nur dann, wenn
besitzt. Wir haben bereits gesehen, dass ein
M
werden kann, ein gröÿeres Matching als
einen
M −M
0
ist ein gröÿtmögliches Matching in einem Graphen
genau dann, wenn
Umgekehrt sei
ist jede
.
M -erweiternden
Proof. Wir zeigen die Kontraposition aller Richtungen.
M
F ),
0
Ein Matching
Matching als
bzw.
M − M . Somit hat jeder Kreis gerade Länge, mit gleicher
und den Kanten von
G = (V1 ∪ V2 , E)
M
Mat-
entweder ein Pfad oder ein Kreis. Auÿer-
dem alterniert jeder Pfad bzw. Kreis in
Satz 36.
0
höchstens zwei Kanten an jedem Knoten hat. Da
gilt (∆(F ) bezeichnet den maximalen Knotengrad von
Anzahl Kanten von
M
M
0
M -erweiternden
G
hat ein gröÿeres
M -erweiternden
Pfad
M -erweiternder Pfad dazu benutzt
zu produzieren.
ein gröÿeres Matching als
Pfad. Sei
einen
G
Pfad enthält.
F = M ∆M
0
M
in
G.
Wir konstruieren
, nach Lemma 35 besteht
F
aus
Pfaden und geraden Kreisen. Diese Kreise haben die gleiche Anzahl Kanten
von
M
und
M
0
. Da
mehr Kanten aus
0
|M | > |M |, muss F
M
0
als aus
M
haben. Solch eine Komponente kann nur ein
Pfad sein, der mit einer Kante aus
aber ein
M -erweiternden
Satz 37.
N (S)
(Halls Theorem) Sei
M
0
beginnt und endet, somit ist dieser Pfad
G.
G = (V1 ∪V2 , E) ein bipartiter Graph. Bezeichne
die Menge von Knoten, die einen Nachbarn in
Matching
|S|
Pfad in
eine Zusammenhangskomponente mit
M,
für alle
das jeden Knoten von
V1
S
haben. In
G
gibt es ein
saturiert, genau dann, wenn
S ⊆ V1 .
26
|N (S)| ≥
Proof. Notwendigkeit (⇒): Die
in
N (S)
|S| Knoten, die zu S
liegen.
(⇐):
Hinlänglichkeit
V1 , |N (S)| ≥ |S|
Um
zu
∀S
⊆
M
ein
saturiert nicht die Knotenmenge
V1 ,
zeigen,
dass
G
ist und
M
dann erhalten wir eine Menge
S ⊆ V1 ,
so dass
u ∈ V1
M
ein Knoten, der in
Bedingung
|N (S)| < S :
nicht saturiert ist. Unter allen Knoten,
die von
u
aus durch
bestehe
S
aus derartigen Knoten der Menge
V2
Halls
hinreichend ist, zeigen wir die Kontrapsoition. Wenn
gröÿtmögliches Matching in
Sei
gematcht wurden, müssen
M -alternierende
Pfade des Graphen
V1
(siehe hierzu Abbildung 3.3). Beachte, dass
und
T
u ∈ S.
G
erreichbar sind,
aus solchen der Menge
Wir behaupten, dass
M
Abbildung 3.3: Beispiel zu Halls Theorem, Satz 37.
die Knoten aus
erreicht
V2
M
M
von einem Knoten in
y∈T
erreicht, über
ergeben diese Kanten aus
dass
|T | = |S − {u}|
M
Die Kante
T = N (S).
S
ist zu
T
Hinzufügen der Kante
einen
y∈
/T
T
M
Pfad
V1
über
sind und kehrt zurück zu
T
S − {u} über eine
erreicht. Da es keinen
saturiert. Somit wird ein
zu einem Knoten aus
eine Bijektion von
T
und
S − {u}
Angenommen
(v, y) kann nicht in M
der Menge
M -alternierende
T
nach
S
M -erweiternden
M -alternierender
erweitert. Insofern
S −{u} und wir wissen,
gilt.
Das Matching zwischen
sächlich gilt
M
matcht. Der
liegen. Also wird jeder Knoten der Menge
Pfad gibt, ist jeder Knoten aus
Pfad, der
S − {u}
mit denen aus
über Kanten, die nicht in
Kanten, die in
Kante aus
T
ergibt auÿerdem
y ∈ V2 − T
liegen, da
hat einen Nachbarn
zu einem
Tat-
v ∈ S.
u unsaturiert ist und und der Rest
zugehörig über das Matching
(v, y)
T ⊆ N (S).
M.
M -alternierenden
Deshalb ergibt das
Pfad, der
v
erreicht,
M -alternierenden Pfad nach y . Dies widerspricht aber der Annahme, dass
und somit kann eine Kante
haben wir gezeigt, dass
(v, y)
auch nicht existieren. Mit
|N (S)| = |T | = |S| − 1 < |S|
T = N (s)
für diese Wahl von
S.
Dies schlieÿt den Beweis der Kontraposition ab.
Bemerkung 38.
hat, das
V1
Falls ein bipartiter Graph
G = (V 1 ∪ V 2, E)
kein Matching
saturiert, lässt sich dies mit Halls Theorem leicht nachweisen.
27
Dazu zeigt man einfach die Existenz einer Teilmenge von
Nachbarn in
V1
mit zu wenigen
V2 .
|X|
Ein klassisches Anwendungsbeispiel ist die Besetzung von
Bewerber aus einer Menge
Y.
Falls
|Y | > |X|,
Jobs durch
erhält natürlich nicht jeder
Bewerber einen Job. Es kann aber eben auch passieren, dass nicht jeder Job
besetzt werden kann, weil
Satz 39.
Für
k > 0
X
nicht saturierbar ist.
k -reguläre
hat jeder
bipartite Graph ein perfektes Mat-
ching.
Proof. Sei
G = (V1 ∪ V2 , E)
k -regulärer,
ein
Kanten nach Endpunkten in
V1
bipartiter Graph. Zählt man die
V2 ,
und nach Endpunkten in
sieht man, dass
k|V1 | = k|V2 |, also |V1 | = |V2 |. Somit reicht es aus, Halls Bedingung zu überprüfen. Ein Matching, das
V1
V2
saturiert, wird auch
saturieren und wird zudem
auch ein perfektes Matching sein.
S ⊆ V1 .
Sei
G
k -regulärer
ein
N (S)
Sei weiterhin
die Anzahl der Kanten von
Graph ist, gilt
und somit ist
sich, dass
m
m = k|S|.
m ≤ k|N (S)|.
|N (S)| ≥ |S|,
wenn
Diese
Daher gilt
k > 0.
m
S
nach
N (S).
Da
Kanten sind inzident zu
k|S| ≤ k|N (S)|.
Daraus ergibt
Mit der beliebigen Wahl von
S ⊆ X
haben wir die Gültigkeit von Halls Bedingung erfolgreich nachgewiesen.
Denition 40.
Menge
Q ⊆ V
Knoten aus
Q
Eine Knotenüberdeckung eines Graphen
derart, dass jede Kante aus
E
G = (V, E)
ist eine
inzident zu mindestens einem
ist. Eine minimale Knotenüberdeckung von
G
ist eine Knoten-
überdeckung mit minimaler Anzahl von Knoten unter allen Knotenüberdeckungen von
G.
Satz 41.
(Satz von König und Egerváry) Sei
G = (V1 ∪ V2 , E)
ter Graph. Ferner sei
M
ein gröÿtmögliches Matching und
Knotenüberdeckung in
G.
Dann gilt:
Q
ein biparti-
eine minimale
|Q| = |M |.
Proof. Sei
immer
Q
M
G = (V1 ∪ V2 , E) ein bipartiter Graph. Es ist leicht einzusehen, dass
|Q| ≥ |M |
gelten muss. Andernfalls gäbe es eine Kante in
nicht überdeckt wäre, weil ein Knoten in
Q
M,
die von
nur höchstens eine Kante aus
überdecken kann.
Gegeben sei daher nun eine minimale Knotenüberdeckung
können wir ein Matching der Gröÿe
|Q|
und
T = Q∩V2 . Seien H
und
H
die Teilgraphen von
28
von
G.
Dann
konstruieren, um zu zeigen, dass die
Gleichheit immer erreicht werden kann. Wir partitionieren
0
Q
Q durch R = Q∩V1
G, die durch R ∪(V2 −T )
und
T ∪(V1 −R) induziert werden. Wir wenden Halls Theorem an, um zu zeigen,
H
dass
ein Matching hat, das
hat, das
T
saturiert. Weil
H
R
V2 − T
in
H
und
0
und
R∪T
|Q|
in
ein Matching
G.
eine Knotenüberdeckung ist, hat
G
keine Kante zwischen
V2 − T
V1 − R (andernfalls wären diese Kanten nicht überdeckt). Für jedes S ⊆ R
betrachten wir
NH (S),
dann könnten wir
S
welches in
durch
deckung zu erhalten, da
und die nicht von
T
ein Matching, das
V2 − T
|NH (S)| < |S|,
enthalten ist. Gälte
NH (S) in Q ersetzen, um eine kleinere Knotenüber-
NH (S)
S
alle Kanten überdeckt, die zu
inzident sind
überdeckt werden.
Die Minimalität von
H
0
disjunkt sind, bilden die beiden Matchings
zusammen ein Matching der Gröÿe
Da
H
saturiert und dass
R
Q
ergibt somit Halls Bedingung für
H
und daher hat
saturiert. Wendet man dasselbe Argument auf
ergibt sich das Matching, das
T
H
0
an,
saturiert. Betrachte hierzu auch Abbildung
3.4.
Abbildung 3.4: Beispiel zu Satz 41
3.2
Berechnung von gröÿtmöglichen Matchings
Satz 42.
G.
Sei
G = (V1 ∪ V2 , E)
Falls es einen
|M |
ein bipartiter Graph und sei
M -erweiternden
M
Pfad gibt, der ein Matching
erzeugt, und es einen Knoten
Pfades gibt, dann gibt es auch einen
v
als Endknoten eines
M1
erweiternden Pfad bezüglich
Sei
P = hv = u1 , u2 , ..., un i
nehmen zusätzlich an, dass wir
erweiternden Pfades
mit
|M1 | >
M -erweiternden Pfad mit v als Endknoten.
enthält, der
M
M1
M1 -erweiternden
Proof. Zum Zwecke des Widerspruchs nehmen wir an, dass
ternden Pfad bezüglich
ein Matching in
hat, der
G
v
als Endknoten hat, aber
v
als Endknoten enthält.
ein erweiternder Pfad bezüglich
M1
durch das Erweitern von
Q = hv1 , v2 , ..., vk i
bezüglich
M
M
G
M1
keinen
und wir
entlang des
P
auf-
M . Somit enthält P
eine
erhalten. Dann ist
grund der Annahme kein erweiternder Pfad bezüglich
29
einen erwei-
M1
Kante, die zu
Wert derart, dass
(u2i , u2i+1 ) ∈ M1 − M .
auf
P
als auch auf
von
Q
entstanden ist. Der Knoten
Q
denn andernfalls wäre
M,
der
und
u2i
v
u2i
i
(u2i , u2i+1 )
M1
durch die Erweiterung
ist ein saturierter Knoten bezüglich
Q,
e
aus
0
Q = hv1 , v2 , ..., vj−1 , vj i
Q,
die zu
muss
M
(u2i , u2i+1 ) ∈ E(Q) − M
M1 ),
Matching hinzugefügt (bezüglich
folgt aus der Konstruktion, dass
bezüglich
M
0
Q
und
u2i = vj
gehört. Sei
e = (vj−1 , vj )
mit
gelten.
ist ein alternierender Pfad bezüglich
die noch nicht im Matching bezüglich
haben. Allerdings ist
M,
P = hv = u1 , u2 , ..., u2i i ein erweiternder Pfad bezüglich
der genau einen unsaturierten Knoten enthält, nämlich
0
liegt sowohl
0
(u2i , u2i+1 ) ∈ E(Q) − M ,
Da
der kleinste ganzzahlige
Die Kante
(siehe Abbildung 3.5), weil
inzident mit der Kante
Der Pfad
aus
Sei nun
als Endknoten hat. Aus diesen Gründen ist
1 < j < k.
M,
M.
gehört, aber nicht zu
M
wenn wir
P
0
v1 .
Die Kanten
enthalten sind, werden dem
M
entlang
nur den Knoten
Q
erweitern. Es
vj = u2i gemeinsam
hv = u1 , u2 , ..., u2i , vj−1 , vj−2 , ..., v1 i ein erweiternder Pfad
(betrachte hierzu auch Abbildung 3.5). Aber dies widerspricht
der Annahme.
Abbildung 3.5: Ein erweiternder Pfad, der im Satz 42 konstruiert wurde
Folgerung 43.
sei
Sei
M
M = M1 , M2 , ..., Mk
ein Matching in einem bipartiten Graphen
eine Sequenz von Matchings, wobei
30
Mi+1
G.
aus
Ferner
Mi
durch
einen
Mi -erweiternden
einen Knoten
v
kein
Mi -erweiternden
Pfad erzeugt wird, für alle
i = 1, ..., k − 1.
Sollte für
M -erweiternder Pfad existieren, dann gibt es auch keinen
Pfad mit
v
als Endknoten (i
= 1, ..., k − 1).
Wir betrachten nun den Algorithmus MaximumMatching, der ein gröÿt-
M
mögliches Matching
p = |V1 | ≤ |V2 | = q ,
für einen bipartiten Graphen
G = (V1 ∪ V2 , E),
mit
berechnet. Die Algorithmus-Idee kann wie folgt zusam-
mengefasst werden:
•
Sei
M
initiales Matching. Falls
gibt es eine Sequenz
Mk
wird aus
M = M1 , ..., Mk ,
Mi
so dass
mit Hilfe eines
Wir wählen einen Knoten
ob es einen
•
kein gröÿtmögliches Matching ist, dann
gröÿtmögliches Matching
Mi+1
•
M
Mi -erweiternden
v , der bzgl. M
M -erweiternden
Pfades erzeugt
unsaturiert ist, und bestimmen,
Pfad gibt, in dem
Falls ein solcher Pfad gefunden wird, wird
M
V
zu
der Endknoten ist
M0
erweitert; wir erhal-
ten dadurch ein gröÿeres Matching
•
Falls
hat
v
v
kein Endpunkt von irgendeinem
M -erweiternden
in einem gröÿtmöglichen Matching
Matchings
M
Mk ,
Pfad ist, dann
das durch Erweitern des
entsteht, gemäÿ Folgerung 43 keinen Matchingpartner
Weitere Erklärungen und Hinweise nden Sie in den Vorlesungsfolien bzw.
im Buch [2].
3.3
Matchings mit maximalem Gewicht
In diesem Abschnitt werden wir den sogenannten ungarischen Algorithmus
kennenlernen, der in vollständigen gewichteten bipartiten Graphen ein Matching maximalen Gewichts ndet.
Details bisher nur auf den Folien oder in den Büchern [1] und [2].
3.3.1
Satz 44.
Korrektheit
Sei
G = (V1 ∪ V2 , E)
ein vollständiger gewichteter bipartiter Graph.
Dann ndet der Algorithmus MaximumWeightMatching (auch Algorithmus von Kuhn und Munkres oder ungarischer Algorithmus genannt) ein Mat-
ching mit maximalem Gewicht in
G.
31
Algorithm 7 MaximumMatching
1: procedure MaximumMatching(Bipartiter Graph G = (V1 ∪ V2 , E), Initiales Matching
M1 )
2:
i = 1, M = M1
3:
if i ≥ p then return M
. M gröÿtmögliches Matching
end if
if vi ∈ M then goto line 3
else{v = vi , Q = {v}}
forall v ∈ V1 ∪ V2 , v 6= vi {T REE(vj ) = F ALSE}; T REE(vi ) =
4:
5:
6:
7:
T RU E;
if Q = ∅ then {i = i + 1, goto line 3}
else extract a vertex x from Q
8:
9:
10:
Let
N (x) = {y1 , ..., yj }.
Set
j=1
if j ≤ k then y = yj
else goto line 8
end if
end if
if T REE(y) = T RU E then {j = j + 1, goto line 11}
end if
if (y, z) ∈ M then {T REE(y) = T RU E, T REE(z) =
11:
12:
13:
14:
15:
16:
17:
T RU E, P AREN T (y) = P AREN T (z) = y, Q = Q ∪ {z}, j = j + 1,
goto line 11}
18:
end if
19:
Use
P AREN T
to determine
20:
end if
21:
Augment
22:
M = M , i = i + 1, goto
23:
M
0
along
P
M -augmenting
to obtain new matching
line 3
end procedure
32
path
M
0
P
from
v
to
y
Algorithm 8 MaximumWeightMatching
1: procedure MaximumWeightMatching(Vollst.
(V1 ∪ V2 , E),
Gewichtsfkt.
3:
4:
Sei
5:
M = MaximumMatching(Hl , ∅);
6:
if M
else
7:
Hl
der von
l
denierte Graph mit Kantenmenge
saturiert jeden Knoten von
Sei
9:
Konstruiere einen alternierenden Baum
10:
11:
12:
13:
El ;
V1 then return M ;
8:
x
G=
w)
forall v ∈ V1 sei l(v) = maxu∈V2 w(v, u);
forall u ∈ V2 sei l(u) = 0;
2:
bipartiter Graph
der erste unsaturierte Knoten in
V1 ;
T
mit Wurzel
x
bzgl.
M;
if ∃ M -erweiternder Pfad P then
Erweitere
M;
goto line 6;
else
14:
ml = min{l(v) + l(u) − w(u, v) | v ∈ V1 ∩ T, u ∈ V2 \ T };
15:
l(v) = l(v) − ml
16:
Konstruiere
für
v ∈ V1 ∩ T , l(u) = l(u) + ml
Hl ;
goto line 9;
18:
end if
19:
end if
20: end procedure
17:
33
für
u ∈ V2 ∩ T ;
Proof. Der Algorithmus beginnt mit einer zulässigen Knotenmarkierung. Er
kann nur terminieren, wenn der Spanngraph
Hl
ein perfektes Matching hat.
Diese Eigenschaft garantiert uns, dass die Knotenmarkierung und das Matching das gleiche Gewicht haben. Nehmen wir an,
l
Knotenmarkierung und der zugehörige Spanngraph
l0
tes Matching. Sei
sei die aktuelle zulässige
Hl
enthalte kein perfek-
die daraufhin erstellte neue Knotenmarkierung. Da
ml
das Minimum einer nicht-leeren endlichen Menge von positiven Zahlen ist, gilt
ml > 0.
Wir weisen zunächst nach, dass
l0
eine zulässige Knotenmarkierung ist.
V1 ∩ V (T )
und
V1 ∩ V (T )
und
v ∈ V1 ∩ V (T )
und
Die Veränderung der Markierungen auf Knoten der Mengen
V2 ∩ V (T )
ergibt
V2 ∩ V (T ).
0
0
l (v) + l (u) = l(v) + l(u)
Daher bleiben die Kanten in
u ∈ V2 \V (T ),
gilt
0
0
für Kanten zwischen
Hl0
erhalten. Falls
l (v) + l (u) = l(v) + l(u) − ml ,
mindestens so groÿ ist wie
was wegen der Wahl von
ml
wu,v .
Der Algorithmus terminiert nur, wenn der Spanngraph
Hl
ein perfektes
Matching enthält, so dass es genügt zu zeigen, dass die Terminierung tatsächlich eintritt. Nehmen wir an, die Kantengewichte
wu,v
seien rational. Wenn
wir die Gewichte mit ihrem Hauptnenner multiplizieren, erhalten wir ein äquivalentes Problem mit ganzzahligen Gewichten. Wir können daher nun auch
annehmen, dass die Markierungen in
schusswert
ml
l
ganzzahlig sind. Daher ist jeder Über-
auch ganzzahlig und in jeder Iteration reduzieren wir die Kosten
der Knotenmarkierung um einen positiven ganzzahligen Betrag. Da wir bei einem endlichen Wert starten und die Kosten nach unten beschränkt sind (nämlich durch die Kosten eines perfekten Matchings), terminiert der Algorithmus
nach endlichen vielen Iterationen.
Bemerkung 45.
Der Beweis von Satz 44 kann so modiziert werden, dass
auch reellwertige Kantengewichte zugelassen werden können.
34
Kapitel 4
Matchings in allgemeinen Graphen
Wir haben bis jetzt Matchings in bipartiten Graphen betrachtet. Es folgt nun
ein Abschnitt, in dem wir uns mit allgemeinen Graphen befassen werden.
4.1
Der Algorithmus von Edmonds
Der Algorithmus von Edmonds berechnet ein gröÿtmögliches Matching in allgemeinen Graphen. Bisher ist seine Darstellung nur im Foliensatz verfügbar.
4.2
Approximationsalgorithmen für MWM
In diesem Abschnitt werden zwei Approximationsalgorithmen für das Problem
MaximumWeightedMatching in allgemeinen Graphen behandelt. Beide
Algorithmen haben die Approximationsgüte
2,
wie wir in den folgenden Re-
sultaten beweisen werden. Die Darstellung der Algorithmen ndet sich im Foliensatz.
Satz 46.
sei
M
∗
Sei
G = (V, E)
ein Graph mit nicht-negativen Kantengewichten und
ein Matching mit maximalem Gewicht in
berechnet ein Matching
Proof. Sei
M
mit
∗
w(M ) ≤ 2w(M )
G.
GreedyApproxMWM
in Zeit
O(m log m).
x das Gewicht der ersten Kante e = {u, v}, die durch den Algorith-
mus GreedyApproxMWM ausgewählt wird. Oensichtlich ist
mit maximalem Gewicht in
G.
Wenn
e
e
eine Kante
und alle inzidenten Kanten gelöscht
werden, werden dabei höchstens zwei Kanten des optimalen Matchings
M∗
entfernt. Die Summe der Gewichte dieser beiden Kanten beträgt höchstens
2x.
Bei der Wahl der nächsten Kante
keine Kante mehr in
e
0
gilt entweder
M ∗ , die schwerer als e0
e ∈ M
∗
oder es gibt
ist. Daher gilt jedes Mal, wenn ein
oder zwei Kanten des optimalen Matchings aus
35
0
E
gelöscht werden, die nicht
in
M
M
aufgenommen worden sind, dass die gewählte Kante in
halb so schwer ist wie die beiden gelöschten Kanten aus
M∗
mindestens
zusammen. Dieses
Argument lässt sich für alle weiteren Iterationen von GreedyApproxMWM
wiederholen. Da alle Kantengewichte nicht negativ sind, folgt die Behauptung
zur Approximationsgüte.
Die Laufzeit ergibt sich durch die initiale Sortierung der Kanten nach ihrem
Gewicht, weil die Schleife jede Kante genau einmal betrachtet und daher nur
lineare Laufzeit in
|E|
hat.
Die folgenden Ergebnisse beruhen auf einer Arbeit von D. E. Drake und S.
Hougardy [6].
Satz 47.
Der Algorithmus
PathGrowingMWM
hat eine Laufzeit von
O(|E|).
Proof. Jeder Knoten des Graphen wird höchstens einmal in der while-Schleife
in den Zeilen 4-10 bearbeitet, denn nach seiner Bearbeitung wird er in Zeile
8 aus
G
entfernt. Die schwerste Kante, die zu einem Knoten
zu nden und
x
aus
G
x
inzident ist,
zu entfernen, lässt sich problemlos mit einem Aufwand
durchführen, der proportional zum Grad von
x
ist. Indem man Pfade immer
nur von Endknoten einer Kante startet, stellt man sicher, dass keine Knoten
mit Grad 0 bearbeitet werden. Die Zahl der Knoten mit Grad mindestens
1
in
G
ist
O(|E|).
Daher ist die Gesamtlaufzeit des Algorithmus PathGro-
wingMWM beschränkt durch die Summe der Knotengrade der Knoten in
was
O(|E|)
Satz 48.
güte von
V,
ergibt.
Der Algorithmus PathGrowingMWM hat eine Approximations-
2, d. h. das von ihm gefundene Matching ist mindestens halb so schwer
wie ein Matching mit maximalem Gewicht.
Proof. Für die Analyse der Güte weisen wir jede Kante des Graphen
einen Knoten von
G
folgendermaÿen zu. Immer wenn ein Knoten
x
des Algorithmus entfernt wird, werden alle Kanten, die noch zu
sind, zu
x
zugewiesen. Auf diese Weise wird jede Kante von
Knoten von
G
G
G
an
in Zeile 8
x
inzident
genau einem
zugewiesen. Andererseits muss nicht jeder Knoten von
G
ihm
zugewiesene Kanten haben.
Wir betrachten nun ein MWM
M
von
G.
Da
M
keine zwei zueinander
inzidente Kanten haben kann, werden alle Kanten von
Knoten von
G
M
an verschiedene
zugewiesen. In jedem Schritt des Algorithmus wird die aktuell
schwerste Kante, die zu
x
inzident ist, in Zeile
hinzugefügt. Daher ist das Gewicht von
36
5
gewählt und zu
M1 ∪ M2
M1
oder
M2
mindestens so groÿ wie das
Gewicht von
M.
Da
1
1
max{w(M1 ), w(M2 )} ≥ w(M1 ∪ M2 ) ≥ w(M ),
2
2
liefert der Algorithmus PathGrowingMWM ein Matching, das mindestens
halb so schwer ist wie das Optimum.
4.3
Die Theoreme von Tutte und Petersen
Denition 49.
F
und
Ein Faktor
F
eines Graphen
G ist ein Spanngraph von G, d. h.
G haben dieselbe Knotenmenge und E(F ) ⊆ E(G). Ein k -Faktor ist ein
k -regulärer
Spanngraph. Eine ungerade Komponente ( odd component) eines
Graphen ist eine (Zusammenhangs)Komponente mit einer ungeraden Anzahl
von Knoten. Die Anzahl ungerader Komponenten von
Bemerkung 50.
Ein
1-Faktor
wird mit
o(H) notiert.
und ein perfektes Matching sind fast dasselbe.
Die genaue Unterscheidung ist, dass ein
von
H
1-Faktor
ein
1-regulärer
Spanngraph
G ist, während ein perfektes Matching die Menge von Kanten in einem sol-
chen Spanngraph ist. Ein
3-regulärer
Graph, für den es ein perfektes Matching
gibt, kann in zwei Teilgraphen zerlegt werden, von denen einer ein
und einer ein
2-Faktor
1-Faktor
ist.
Tutte hat eine notwendige und hinreichende Bedingung dafür gefunden,
1-Faktor
wann Graphen einen
trachten die Teilmenge
G−S
S ⊆ V (G),
G
einen
1-Faktor
hat und wir be-
dann hat jede ungerade Komponente von
einen Knoten, der einen Matching-Partner auÿerhalb dieser Komponente
hat und daher nur zu
sen,
haben. Wenn
o(G − S) ≤ |S|.
S
gehören kann, da die Knoten von
disjunkt sein müs-
Betrachte hierzu auch Abbildung 4.1. Tuttes Bedingung:
Abbildung 4.1:
Für alle
S
S ⊆ V (G), o(G − S) ≤ |S|.
Tuttes Bedingung
Tutte hat bewiesen, dass diese Bedingung
nicht nur notwendig ist, sondern auch hinreichend. Es gibt viele Beweise, die
37
dies zeigen. Wir betrachten hier den Beweis von Lovász und benutzen Ideen
der symmetrischen Dierenz.
Satz 51.
S) ≤ |S|
Ein Graph
G
1-Faktor
hat einen
für jede Teilmenge
o(G −
dann und nur dann, wenn
S ⊆ V (G).
Proof. Notwendigkeit (⇒): Die ungeraden Komponenten von
Knoten haben, die zu disjunkten Knoten von
S
G−S
müssen
gematcht sind.
Hinlänglichkeit (⇐): Wenn wir eine Kante hinzufügen, die zwei Komponenten aus
G−S
verbindet, steigt die Anzahl der ungeraden Komponenten
nicht (eine gerade und eine ungerade Komponete werden zu einer ungeraden
Komponente, zwei Komponenten derselben Parität bilden eine gerade Komponente). Somit bleibt Tuttes Bedingung erhalten, wenn Kanten hinzugefügt
werden: wenn
0
0
G = G + {e} und S ⊆ V (G), dann o(G − S) ≤ o(G − S) ≤ |S|.
Auÿerdem hat
G
keinen
1-Faktor,
wenn
0
G = G + {e}
keinen
1-Faktor
Somit gilt der Satz von Tutte, falls es keinen simplen Graphen
dass
G
Tuttes Bedingung erfüllt,
einer fehlenden Kante zu
G
G
G
keinen
1-Faktor
ergeben würde. Sei
ein solcher Graph. Wir führen den Beweis nun per Widerspruch, indem wir
zeigen, dass
Sei
U
G
einen
1-Faktor
besitzt.
die Menge von Knoten in
1. Fall: G − U
G,
die Grad
n(G) − 1
haben.
besteht aus vollständigen disjunkten Graphen.
In diesem Fall können die Knoten in jeder Komponente von
o(G − U ) ≤ |U |
Paaren zusammengefasst werden. Da
U
G derart gibt,
hat und das Hinzufügen
1-Faktor
einen Graphen mit
hat.
zu jedem Knoten aus
Knoten mit Knoten aus
G−U
U
G−U
zu beliebigen
und jeder Knoten aus
adjazent ist, können wir die übrig gebliebenen
matchen.
Wenn wir Tuttes Bedingung auf
S = ∅ anwenden, ergibt sich, dass n(G) ge-
rade sein muss, denn ein Graph ungerader Gröÿe enthielte eine ungerade Komponente und würde Tuttes Bedingung verletzen. Weiterhin liegen die Knoten,
die übrig bleiben, in
U
und bilden eine Clique. Um den
1-Faktor
zu erhalten,
müssen wir nur noch zeigen, dass eine gerade Menge von Knoten in
U
übrig
geblieben ist. Tatsächlich haben wir eine gerade Anzahl Knoten gemtached
und da
n(G)
gerade ist, bleibt eine gerade Anzahl von Knoten in
U
übrig.
Siehe auch Abbildung 4.2.
2. Fall: G − U
In diesem Fall hat
jazente Knoten
G−U
G−U
x, z
zwei Knoten mit der Distanz
mit einem gemeinsamen Nachbarn
einen anderen Knoten
Konstruktion von
Seien
ist keine disjunkte Vereinigung von Cliquen.
M1
und
G
w,
der nicht adjazent zu
führt das Addieren einer Kante zu
M2 1-Faktoren
in
G + {xz}
38
bzw.
2,
diese sind nichtad-
y∈
/ U.
y
Zusätzlich hat
ist, da
G
y∈
/ U.
zu einem
G + {yw}.
Nach
1-Faktor.
Es reicht aus zu
Abbildung 4.2:
zeigen, dass
Skizze zum 1. Fall des Beweises
M1 ∆M2 einen 1-Faktor enthält, der xz
dies ist der für den Widerspruch gewünschte
F = M1 ∆M2 .
Sei
als auch
yw
in
F
Da
F
die Komponenten aus
Wenn
C
F,
Wenn
C
der
M2
sowohl
in
C,
der mit
y
wir
C
xz
zy ,
falls wir
C
als auch
einen
yw
xz
yw
yw
oder
in
in
M1 ,
und
M2
xz
jeweils nur
sind
M2 .
yw
und
xz
C
C
aus
liegen.
zu vermeiden. In dem Teil
führt, benutzen wir Kanten aus
{x, z}
Wir haben einen
M1
und
M2
xy .
1-Faktor
Für den Rest von
erzeugt, der nicht
auÿerhalb von
Skizze zum 2. Fall des Beweises
39
M1 ,
erreichen, benutzen
erzeugt.
Abbildung 4.3:
1-Faktor
die nicht in
erreichen, andernfalls benutzen wir
G
M1
G Grad 0 oder 2 in F . Somit
zu vermeiden. Wenn wir
benutzt. Kombiniert mit
1-Faktor
G
sind sowohl
enthält, wie in Abbildung 4.3 dargestellt,
beginnt und über
z
yx
benutzen wir Kanten aus
oder
yw ∈ M2 − M1 ,
und allen Kanten aus
um
um die Nutzung von
G.
enthält, dann besteht der gewünschte
yz ,
benutzen wir entweder
in
enthält.
yw
aus
yw
jeder Knoten aus
yw nicht enthält, denn
Zyklen gerader Länge bzw. isolierte Knoten. Sei
xz
nicht auch
den Kanten von
und
1-Faktor
enthalten. Da jeder Knoten aus
1 hat, hat
einen Grad von
der Zyklus aus
xz ∈ M1 − M2
und
C,
haben wir
Folgerung 52.
(Petersen, 1891) Sei
G = (V, E)
keine Brückenkanten enthält. Dann hat
G
einen
ein
3-regulärer
Graph, der
1-Faktor.
Proof. Siehe West [1, S. 139]
Satz 53.
2d.
(Satz von Petersen) Sei
Dann kann man
G
ein regulärer Graph vom Grad
d
Graphen vom Grad 2 zerlegen, d. h. es existiert
.
.
.
eine d-teilige Kantenpartition E1 ∪ E2 ∪ . . . ∪ Ed = E mit der Eigenschaft,
dass
(V, Ei )
Proof. (für
aus
in
G = (V, E)
regulär vom Grad 2 für alle
d = 2) Sei K
1≤i≤d
ist.
ein Eulerkreis des 4-regulären Graphen
G. K
besteht
|E| = 2 · |V |
vielen Kanten. Da die Kantenanzahl gerade ist, können
K
abwechselnd rot und blau gefärbt werden. Eine gesuchte
die Kanten von
Kantenpartition für
{e ∈ E; e
G
ist dann
E1 = {e ∈ E; e
ist blaue Kante}, da jedem Knoten in
und eine blaue Kante zugeordnet wird.
40
K
ist rote Kante} und
E2 =
immer paarweise eine rote
Kapitel 5
Netzwerkalgorithmen
Viele praxisrelevante Probleme sind so rechenaufwändig oder speicherintensiv,
dass sie von sequentiellen Rechnern nicht in akzeptabler Zeit gelöst werden
können. Viele dieser Probleme gelten in der Komplexitätstheorie sogar als efzient (da in Polynomialzeit lösbar). Beispielsweise können jedoch Instanzen
der Gröÿe
108
für einen sequentiellen Algorithmus mit quadratischer Zeit- oder
Speicherkomplexität zu einem groÿen Problem werden.
Parallelrechner bieten oft eine Möglichkeit, solche groÿen Instanzen in akzeptabler Zeit zu lösen. In einem Parallelrechner arbeiten mehrere Prozessoren
gleichzeitig an der Lösung. Daher muss ein Mechanismus bereitgestellt werden, mit dessen Hilfe die Prozessoren untereinander kommunizieren können.
Je nachdem, wie dieser Mechanismus realisiert ist, unterscheidet man zwischen
Parallelrechnern, die über einen gemeinsamen Speicher und solchen, die über
ein Verbindungsnetzwerk kommunizieren.
Parallelrechner sind mittlerweile allgegenwärtig. Denn fast jeder heutzutage für den Desktop-Massenmarkt produzierte Chip beinhaltet mehrere Prozessorkerne, die über gemeinsamen Speicher kommunizieren. Aber für sehr groÿe
Instanzen muss man weiterhin eine sehr groÿe Zahl von Parallelrechnern verwenden, die dann über ein Verbindungsnetzwerk kommunizieren.
In diesem Kapitel wollen wir einige der bekanntesten und leistungsstärksten Prozessornetzwerke vorstellen. Prozessornetzwerke werden als ungerichtete
Graphen dargestellt. Jedem Knoten des Graphen entspricht ein Prozessor mit
seinem lokalen Speicher und jeder Kante ein Kommunikationskanal (Link). Im
folgenden werden wir daher die Begrie Prozessornetzwerk und Graph synonym verwenden.
Möchte ein Prozessor
Pi
auf eine Variable zugreifen, die in dem loka-
len Speicher eines nicht benachbarten Prozessors
Pj
abgelegt ist, so muss die
Variable auf einem möglichst kurzen Weg zu Prozessor
41
Pi
geroutet werden.
Hieraus leiten sich eine Reihe von Eigenschaften ab, die ein gutes Prozessornetz charakterisieren:
1. kleiner Durchmesser
Um Routing-Wege möglichst kurz zu halten, sollte das Prozessornetz einen
kleinen Durchmesser besitzen. Es kann jedoch nicht einfach jeder Prozessor
mit jedem anderen Prozessor verbunden werden, da sich ein derartig dichtes
Netzwerk in der Praxis nicht realisieren läÿt.
2. gute Simulationseigenschaften
Ein Algorithmus, der ezient auf einem Rechnernetz
kann, sollte auch auf einem Netzwerk
G2
G1
ausgeführt werden
schnell laufen. Dies gewährleistet
die Portierbarkeit von Algorithmen. Dazu muss das Netzwerk
munikationsstruktur des Netzwerks
G1
G2
die Kom-
ezient simulieren können.
3. einfache Routing-Algorithmen
Falls eine Nachricht von einem Prozessor
Pi
zu einem Prozessor
werden muss, so sollte jeder Prozessor auf dem Weg von
Pi
nach
Pj
Pj
geroutet
möglichst
in konstanter Zeit entscheiden, über welche Kante die Nachricht weitergeschickt wird. Dies verringert die Kosten eines nicht lokalen Speicherzugris.
4. keine Flaschenhälse
In einem guten Netzwerk sollten nicht nur alle Routing-Wege kurz sein, sie
sollten sich auch gleichmäÿig über die Knoten und Kanten des Graphen verteilen. Dies ist beispielsweise in einem sternförmigen Netzwerk nicht der Fall.
5. hohe Fehlertoleranz
Kommt ein Netzwerk in der Praxis zum Einsatz, so muss gewährleistet sein,
dass auch nach Ausfall eines Prozessors oder eines Links auf dem restlichen
Netzwerk weitergearbeitet werden kann. Der Graph sollte eine hohe Konektivität besitzen, so dass selbst bei einem Ausfall mehrerer Links das Netzwerk
zusammenhängend bleibt.
5.1
Der Hypercube
In den nachfolgenden Abschnitten werden wir die bekannten Netzwerktopologien Hypercube, Gitter und Torus kennenlernen. Zunächst benötigen wir jedoch
noch einige graphentheoretische Denitionen:
Denition 54.
Sei
G = (V, E)
ein ungerichteter Graph und
zeichne dist(u, v) die Länge des kürzesten Weges von
42
u
nach
u, v ∈ V .
v.
Be-
Dann ist der
Durchmesser
D(G)
des Graphen
G
deniert als:
D(G) = max{dist(u, v); u, v ∈ V }
Denition 55.
G1
und
G2
G1 = (V1 , E1 )
Seien
und
G1
zwischen
und
Denition 56.
G2 .
Sei
Gilt
G1 = G2 ,
G = (V, E)
In diesem Fall heiÿt
so heiÿt
ϕ
existiert mit
ϕ : V1 → V2
ϕ
gibt
Isomorphismus
Automorphismus.
G
ein ungerichteter Graph.
metrisch (engl.: vertex-transitive), wenn für alle
ϕu,v
ungerichtete Graphen.
heiÿen isomorph, wenn es eine bijektive Abbildung
{u, v} ∈ E1 ⇔ {ϕ(u), ϕ(v)} ∈ E2 .
mit
G2 = (V2 , E2 )
u, v ∈ V
heiÿt knotensym-
ein Automorphismus
ϕu,v (u) = v .
Aus der Denition des Automorphismus folgt sofort, dass jeder knotensymmetrische Graph regulär sein muss (d.h. alle Knoten besitzen gleichen Knotengrad).
Denition 57.
Sei
G = (V, E)
ein ungerichteter Graph.
metrisch, falls für je zwei Kanten
existiert mit
ϕ(u) = u
0
und
0
0
{u, v}, {u , v } ∈ E
G
heiÿt kantensym-
ein Automorphismus
ϕ
0
ϕ(v) = v .
Der Hypercube gehört zu den leistungsstärksten Verbindungsnetzwerken,
die bis heute bekannt sind. Viele andere Netzwerke können vom Hypercube efzient, d.h. mit konstantem Zeitverlust, simuliert werden. Der Hypercube stellt
daher eine vielseitig einsetzbare parallele Maschine dar. In diesem Abschnitt
wollen wir den Hypercube und seine wichtigsten Eigenschaften vorstellen.
Denition 58.
k
Der Hypercube der Dimension
wird mit Q(k) bezeichnet und
ist wie folgt deniert:
Q(k)
= (Vk , Ek )
mit
Vk = {0, 1}k
Ek = {{u, v}; u, v ∈ {0, 1}k
unterscheiden sich in genau einem Bit}
Der Hypercube besitzt eine rekursive Struktur, d.h. der Hypercube der
Dimension
Satz 59.
k
k , k ≥ 2,
enthält 2 Kopien des Hypercube der Dimension
k − 1.
(Eigenschaften des Hypercube) Der Hypercube Q(k) der Dimension
besitzt die folgenden Eigenschaften:
2k
k · 2k−1
1.)
Q(k) besitzt
2.)
Q(k) ist regulär vom Grad
3.)
Der Durchmesser des Q(k) ist
4.)
Die Bisektionsweite des Q(k) ist
Knoten und
43
Kanten.
k.
k.
2k−1 .
Die ersten 3 Aussagen des Satzes sind klar. auf den Beweis der vierten
Aussage wird an dieser Stelle verzichtet. Für den Hypercube kann ein einfacher Routing-Algorithmus angegeben werden. Seien dazu
beliebige Knoten des Q(k) mit
teren bezeichne
u = (uk−1 . . . u0 )
u(i), 0 ≤ i < k ,
und
u, v ∈ {0, 1}k
v = (vk−1 . . . v0 ).
das Binärwort, das sich von
Bit unterscheidet. Dann kann wie folgt eine Nachricht von
u
u
Deswei-
genau im
nach
v
zwei
i-ten
geroutet
werden:
for
if
i := 0
k−1
to
ui 6= vi
do begin
then begin
schicke Nachricht von Knoten
u
nach Knoten
u(i);
u := u(i);
end;
end;
Die Anzahl der Kanten, die der Routing-Algorithmus durchläuft, entspricht
der Anzahl der Bits, in denen sich die Binärdarstellungen der Knoten
v
u
und
unterscheiden. Damit ndet der Routing-Algorithmus immer den kürzesten
Weg zwischen
u
und
v.
Der Algorithmus ist also optimal. Im folgenden wollen
wir weitere Eigenschaften des Hypercube untersuchen.
Satz 60.
Der Hypercube Q(k) ist knotensymmetrisch.
Proof. Für
x ∈ {0, 1}k
das sich von
durch
x
bezeichne wieder
genau im
i-ten
δi (x) = x(i). Dann ist δi
v = u(j), 0 ≤ j < k ,
Bit unterscheidet. Sei
das Binärwort,
δi : Vk 7→ Vk
ein Automorphismus, denn für
deniert
{u, v} ∈ Ek
mit
gilt:
(
{u(i), u(i)(j)},
{δi (u), δi (u(j))} =
In beiden Fällen ist
x(i), 0 ≤ i < k ,
{u(i), u},
{δi (u), δi (u(j))}
falls
i 6= j
falls
i=j
eine Kante des Q(k). Da die Konkaten-
ation von Automorphismen selbst wieder einen Automorphismus ergibt, kann
der gesuchte Automorphismus
ϕu,v
ϕu,v (u) = v
Y
=
δi
mit
ϕu,v
deniert werden durch:
i
ui 6=vi
Satz 61.
Der Hypercube Q(k) ist kantensymmetrisch.
Proof. Seien
{u, v}
{u, v}, {u0 , v 0 }
zwei Kanten des Q(k). Sei
verläuft, d.h.
u = uk−1 . . . ui . . . u0
v = uk−1 . . . ui . . . u0
44
i
die Dimension, in der
j
und sei
die Dimension, in der
{u0 , v 0 }
verläuft, d.h.
u0 = u0k−1 . . . u0j . . . u00
v 0 = u0k−1 . . . u0j . . . u00
Sei
π : {0, . . . , k − 1} → {0, . . . , k − 1}
bezeichne
⊕
morphismus
eine Permutation mit
π(j) = i
und
die logische XOR-Verknüpfung. Dann kann der gesuchte Auto-
ϕ : Vk → Vk
deniert werden durch:
ϕ(xk−1 . . . x0 ) = ((xπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (xπ(0) ⊕ uπ(0) ⊕ u00 ))
Wir müssen zeigen:
ϕ(u) = u0
(i)
ϕ
(ii)
und
ϕ(v) = v 0
ist Automorphismus, d.h.
{z1 , z2 } ∈ Ek ⇔ {ϕ(z1 ), ϕ(z2 )} ∈ Ek
(i):
Für
ϕ(u)
ergibt sich:
ϕ(uk−1 . . . u0 ) = ((uπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (uπ(0) ⊕ uπ(0) ⊕ u00 ))
= u0k−1 . . . u00 = u0
und
ϕ(v)
berechnet sich zu:
ϕ(vk−1 . . . v0 ) = ((vπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (vπ(0) ⊕ uπ(0) ⊕ u00 ))
dabei gilt für
0 ≤ h < k:
(
vπ(h) =
daraus folgt:
uπ(h) ,
ui ,
falls
falls
π(h) 6= i,
d.h.
h 6= j
h=j
ϕ(vk−1 . . . v0 )
= ((uπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (ui ⊕ ui ⊕ u0j ) . . . (uπ(0) ⊕ uπ(0) ⊕ u00 ))
= u0k−1 . . . u0j . . . u00 = v 0
(ii):
Sei
z1
{z1 , z2 } eine Kante des Q(k). Sei r das Bit, in dem sich die Binärworte
und
und
z2
ϕ(z2 )
unterscheiden. Sei
im Bit
s.
π(s) = r.
Daraus folgt:
Nach (i) unterscheiden sich
ϕ(z1 )
{ϕ(z1 ), ϕ(z2 )} ∈ Ek .
Zur Erinnerung: Ein Hamilton-Kreis ist ein Kreis, der jeden Knoten genau
einmal besucht und an den Ausgangsknoten zurückkehrt.
Lemma 62.
Der Hypercube Q(k),
k ≥ 2,
45
enthält einen Hamilton-Kreis.
Abbildung 5.1: Das 2-dimensionale Gitter M[3, 5]
k=2
Proof. Ind. Anf.:
Der gesuchte Hamilton-Kreis lautet:
Ind. Schritt:
00 → 01 → 11 → 10 → 00.
k 7→ k + 1
Der Hypercube Q(k + 1) ist aus zwei disjunkten Kopien des Q(k) zusammengesetzt. Nach Ind.Vor. enthalten beide Kopien einen Hamilton-Kreis
Ck . Durch Verschmelzen der beiden Kreise kann ein Hamilton-Kreis Ck+1
in Q(k +1) konstruiert werden. Sei dazu
auf
5.2
Ck .
Der Kreis
Ck+1
{u, v} ∈ Ek
eine beliebige Kante
wird wie folgt gebildet:
{0u, 0v}, {1u, 1v}
1.)
Streichen der Kanten
2.)
Hinzufügen der Kanten
{0u, 1u}, {0v, 1v}
Gitter und Torus
Denition 63. (d-dimensionales
Gitter) Das
d-dimensionale
Gitter wird mit
M[n1 , . . . , nd ] bezeichnet und ist wie folgt deniert:
M[n1 , . . . , nd ]
= (V, E)
mit
V = {(i1 , . . . , id ); 1 ≤ iν ≤ nν
für
1 ≤ ν ≤ d}
E = {{(i1 , . . . , id ), (j1 , . . . , jd )}; ∃ 1 ≤ κ ≤ d
mit
jκ = iκ + 1
und iν
= jν
für
ν 6= κ}
Abbildung 5.1 zeigt das 2-dimensionales Gitter M[3, 5]. Man kann es sich
auch als Matrix vorstellen, in der aneinandergrenzende Zellen (ohne Berücksichtigung von Diagonalen) miteinander durch eine Kante verbunden sind. Ein
Torus ist einem Gitter sehr ähnlich. Allerdings haben beim Torus alle Knoten
Grad
4.
Dies wird erreicht, indem jeder Knoten am Rand eines Gitters durch
eine Kante mit einem Knoten am gegenüberliegenden Rand verbunden wird,
siehe dazu Abbildung 5.2.
Der Algorithmus zur Bestimmung der transitiven Hülle eines Graphen und
seine Implementierung auf einem Gitter kann im Buch von Leighton [7] nachgeschlagen werden.
46
Abbildung 5.2: Der 2-dimensionale Torus
5.3
T[3, 5]
Lastbalancierung
Gegeben sei ein Rechnernetz mit vielen Prozessoren. Jeder Prozessor hat eine
gewisse Last, die er zu verarbeiten hat. Bis zur gemeinsamen Lösung eines
Problems muss man immer auf den am längsten rechnenden Prozessor warten.
Daher ist es für eine eziente Nutzung eines Parallelrechners entscheidend,
dass alle Prozessoren gleich stark ausgelastet sind.
Algorithmisch stellen wir uns daher die Frage, wie ohne zentrale Steuerung
eine möglichst schnelle Balancierung erreicht werden kann. Unsere Modellannahme ist, dass die Prozessoren in jedem Schritt nur ihre eigene Last und die
ihrer Nachbarn kennen und mit ihnen in einer Runde Last austauschen können? Weiterhin sind die Lasten beliebig aufteilbar (also durch reelle Zahlen
repräsentierbar).
Bevor wir einen geeigneten Lastbalancierungsalgorithmus vorstellen, benötigen wir zunächst einige Grundlagen aus der linearen Algebra.
Denition 64.
Seien im folgenden
n ∈ N, x, y ∈ Rn
P
i
|xi |
x
hx, yi =
verwenden wir die Summennorm
||x||1 =
x
und
y
bzw. meistens die euklidische Norm
c) Die Matrix
AT = (aji ) ∈ Rn×n
d) Eine Matrix
A
p
||x||2 = hx, xi.
heiÿt transponierte Matrix von
heiÿt symmetrisch, wenn
e) Das Matrix-Vektorprodukt
A = (aij ) ∈ Rn×n .
ist deniert durch
a) Das Skalarprodukt zweier Vektoren
Pn
i=1 xi · yi .
b) Als Norm eines Vektors
und
y = Ax
A = AT
A.
gilt.
ist deniert durch
yi =
Pn
j=1
aij · xj =
hAi• , xi.
f ) Die Norm einer Matrix
A
ist durch
47
||A|| = supx6=0
||Ax||
deniert.
||x||
g)
λ
heiÿt Eigenwert der Matrix
u
gilt. Alle Vektoren
Eigenwert
λ
mit
A,
wenn
Au = λ · u
Au = λ · u
für ein
u ∈ Rn , u 6= 0,
heiÿen dann Eigenvektoren zum
A.
von
h) Das charakteristische Polynom der Matrix
A
ist deniert durch
fA (λ) =
det(A − λEn ).
Ohne Beweis geben wir die folgenden drei Sätze an:
Satz 65.
Seien
A, B ∈ Rn×n
1.)
||A · B|| ≤ ||A|| · ||B||
2.)
||Ax|| ≤ ||A|| · ||x||
Satz 66.
Sei
A ∈ Rn×n . λ
und
x ∈ Rn .
ist genau dann ein Eigenwert von
Nullstelle des charakteristischen Polynoms
Satz 67.
A ∈ Rn×n
Sei
Dann gilt:
fA
A,
wenn
λ
eine
ist.
symmetrisch. Dann besitzt
A nur reelle Eigenwerte und
die Eigenvektoren zu verschiedenen Eigenwerten bilden eine Orthogonal-Basis
Rn .
des
Satz 68.
A.
von
Sei
A ∈ Rn×n
symmetrisch und
λ1 ≤ λ2 ≤ . . . ≤ λn
die Eigenwerte
Dann gilt:
λ1 = min
x6=0
Proof. Sei
u1 , . . . , un
Eigenwerten
hAx, xi
hx, xi
und
λn = max
x6=0
hAx, xi
hx, xi
eine Orthogonal-Basis aus Eigenvektoren von
λ1 , . . . , λn .
Jedes
x ∈ Rn
A
zu den
läÿt sich als Linearkombination der
ui
schreiben:
x=
n
X
αi ∈ R
αi ui ,
i=1
n
X
=⇒ Ax =
αi Aui =
i=1
n
X
αi λi ui
i=1
n
n
n X
n
X
X
X
=⇒ hAx, xi = h
αi λi ui ,
αj uj i =
αi λi αj hui , uj i
i=1
j=1
i=1 j=1
Da die Eigenvektoren paarweise senkrecht aufeinander stehen, gilt
für
hui , uj i = 0
i 6= j :
hAx, xi =
n
X
λi αi2 hui , ui i
i=1
=⇒
Für
x = un
indem man
hAx, xi
≤ λn
hx, xi
gilt ferner
hAx, xi
hAx,xi
hx,xi
mit
λ1
n
X
≤ λn
hαi ui , αi ui i = λn hx, xi
i=1
∀x 6= 0
= λn . Die Aussage für λ1
nach unten abschätzt.
48
zeigt man entsprechend,
Folgerung 69.
Sei
A ∈ Rn×n
und
λn
der gröÿte Eigenwert der Matrix
AT A.
Dann gilt:
||A|| =
Proof.
p
λn
AT A ist symmetrisch und aus dem Beweis zu Satz 68 folgt für beliebige
x ∈ Rn :
||Ax||2 = hAx, Axi = hAT Ax, xi ≤ λn hx, xi = λn ||x||2
p
=⇒ ||A|| = λn ,
da für
x = un
die Gleichung
Denition 70.
G = (V, E)
Sie
V = {v1 , . . . , vn }.
||Ax||2 = λn ||x||2
ein beliebiger Graph mit
Die Laplace-Matrix
lij =
erfüllt ist.
n×n
LG = (lij ) ∈ Z



grad(vi )
, falls
i=j
−1
, falls
(vi , vj ) ∈ E


0
n = |V |
Knoten,
ist deniert durch:
, sonst
Die Zeilensumme einer Laplace-Matrix
LG
ist nach Konstruktion immer
0.
Es gilt also:


LG 

Somit ist
0
1
.
.
.
1


 
=
 
0
.
.
.
0




=0·


1
.
.
.
1
ein Eigenwert jeder Laplace-Matrix und




(1 . . . 1)
ein zugehöriger
Eigenvektor. Oensichtlich ist die Laplace-Matrix von ungerichteten Graphen
symmetrisch. Nach Satz 67 sind daher alle Eigenwerte der Matrix reell und
die zugehörigen Eigenvektoren bilden eine Orthogonal-Basis. Man kann ferner
zeigen, dass alle Eigenwerte gröÿer gleich Null sind, 0 ist also der kleinste Eigenwert einer Laplace-Matrix. Ferner gilt, dass ein ungerichteter Graph genau
dann zusammenhängend ist, wenn alle anderen Eigenwerte echt gröÿer als Null
sind.
Das Diusionsverfahren erster Ordnung
(V, E), n = |V |
und
wi
Gegeben ein Graph
bezeichnet die Last des Knotens
vi ∈ V . w
G =
ist der
Lastvektor
(w1 , . . . , wn ), A die Adjazenzmatrix von G. Setze α ∈ (0, maxi 1deg(i) ).
Weiter sei
wk
der Lastvektor nach
entlang der Kante
(vi , vj )
k
im Schritt
Iterationsschritten und sei
k.
49
k
lij
der Fluss
Dann führt das Diusionsverfahren
erster Ordnung (FOS) in Iteration
k+1
folgende Operationen aus:
k+1
lij
= α(wik − wjk )
X
k+1
wik+1 = wik −
lij
j∈N (i)
X
wik+1 = wik −
α(wik − wjk ) = (1 − di α)wik +
j∈N (i)
X
αwjk
j∈N (i)
In Matrixform:

w1k+1
 k+1
 w2
 .
 .
 .
wnk+1


1 − d1 α
0
...
α
... α ...
0
1 − d2 α
0
0
α
0
0
{z
α
0
wk+1 = M ·wk , wobei M ∈ Rn×n
mit
.
.
.
..
α
α
0
...
|
Es folgt
...
0 ... ...
 
 
=
 
 
Es gilt also
0
.
0
...
n×n Matrix M
wk+1 = M k+1 w0 . Weiterhin besitzt M
α
 
M = I −αL und wk ∈ Rn .
nur reelle Eigenwerte und es gibt
bilden.
Lemma 71.
Sei
wn0
die initiale Lastverteilung in einem Graphen
und sei
w=
n
X
wj
j=1
G = (V, E)
(1, . . . , 1)
n
die zugehörige balancierte Lastsituation. Sei
w0 =
Pn
j=1
βj zj ,
dann gilt:
w = β1 · z1
Proof. Es gilt
wobei
a ∈ R.
λ1 = 1 > λ2
(falls
G zusammenhängend), und z1 = a · (1, . . . , 1),
Dann gilt:
0 w ,w =
* n
X
+
βj zj , w
j=1
=
* n
X
βj zj ,
j=1
da
(1, . . . , 1)
n
X
wj
j=1
n
+
(1, . . . , 1)
zu allen Eigenvektoren auÿer
*
=
β1 z1 ,
n
X
wj
j=1
n
senkrecht steht:
+
(1, . . . , 1)
*
=
z1
β1 a(1, . . . , 1),
n
X
wj
j=1
50
n
+
(1, . . . , 1)

  k 
  w2 
· . 
.
  . 
.
.
  . 
wnk
1 − dn α
}
α
n aufeinander stehende Eigenvektoren z1 , . . . , zn , die eine Orthonormalbasis im
Rn
w1k
und nehmen wir nun die folgende Gleichheit an:
=
wobei
w = b · β1 · z1 .
1
hw, wi ,
b
Wir rechnen nach:
P
j=1 wj
(w1 , . . . , wn ),
(1, . . . , 1)
n
P
Pn
n
X
( nj=1 wj )2
j=1 wj
=
=
wj ·
n
n
j=1
P
P
j=1 wj
j=1 wj
hw, wi =
(1, . . . , 1),
(1, . . . , 1)
n
n
P
P
X j=1 wj 2
( nj=1 wj )2
=
=n·
n
n2
i=1
0 w ,w =
⇒b=1
Seien
µ1 ≥ µ2 ≥ . . . ≥ µn
die Eigenwerte von
die Eigenwerte der Laplace-Matrix
Eigenwert
λi .
L. Sei zi
M
und
λ1 ≤ λ2 ≤ . . . ≤ λn
der Eigenvektor der Matrix
L zum
Dann folgt:
M · zi = (I − αL)zi = Izi − αLzi = zi − αλi zi = (1 − αλi )zi .
Da die Eigenwerte von
L
alle nicht negativ sind, ist
λ1 = 0
Wie bereits festgestellt, gilt
L
positiv semi-denit.
und der zugehörige Eigenwert ist
z1 =
(1, . . . , 1). Man kann zeigen, dass 0 ein einfacher (d. h. einfach vorkommender)
Eigenwert von
0
Denition 72.
Lemma 73.
in
G.
Seien
Sei
Sei
k = wk − w
zusammenhängend ist.
der Fehler nach
k
Iterationsschritten.
0
ein Graph und sei w die initiale Lastsituation
P
R: w0 = ni=1 βi zi . Dann gilt:
n
X
0 =
βi zi
i=2
G = (V, E)
β1 , . . . , βn ∈
Proof.
0 = w0 − w =
k
G
genau dann ist, wenn
Sei
k
i=1
0
βi · zi − w =
G = (V, E)
k
ein Graph, sei
Diusion mittels der Diusionsmatrix
k
n
X
βi zi − β1 z1
i=1
0
= w − w = M w − M w = M (w − w) = M k · 0
Satz 74.
k
n
X
w0
M
die initiale Lastsituation und führe
durch. Dann gilt:
kk k2 ≤ max{|µ2 |, |µn |}k · k0 k2
51
Kapitel 6
Bisektionsweite und
Partitionierung
In diesem Kapitel betrachten wir Probleme aus der Graphpartitionierung. Dabei versucht man, Knotenteilmengen zu identizieren, in denen je nach Problemstellung möglichst wenige oder möglichst viele externe Kanten (also solche, die zu Knoten aus anderen Teilmengen führen) existieren.
Weiterhin betrachten wir die Bisektionsweite von Graphen. Die Bisektionsweite ist eine wichtige Eigenschaft eines parallelen Rechnernetzes, da eine
kleine Bisektionsweite auf mögliche Engpässe bei der Informationsverteilung
im Netz hinweist. Dazu denieren wir:
Denition 75.
V
mit
G = (V, E)
Sei
.
V1 ∪ V2 = V
eine Partition des Graphen. Die Menge Ext(V1 , V2 )
{{u, v} ∈ E; u ∈ V1 , v ∈ V2 },
V2
die Menge der Kanten, die zwischen
verlaufen, heiÿt Schnitt der Partition. ext(V1 , V2 )
die Kantenanzahl des Schnitts. Eine Partition
| |V1 | − |V2 | | ≤ 1
gilt.
Denition 76.
Sei
σ(G)
V1 , V2 ⊂
ein ungerichteter Graph. Dann ist
G = (V, E)
= |Ext(V1 , V2 )|
V1 , V2
V1
=
und
stehe für
heiÿt balanciert, wenn
ein ungerichteter Graph. Die Bisektionsweite
ist deniert als:
σ(G) = min{ext(V1 , V2 ); V1 , V2
ist eine balancierte Partition von
G}
In Abschnitt 6.1 werden Verfahren zur Berechnung von unteren Schranken
für die Bisektionsweite vorgestellt. In Abschnitt 6.2 werden obere Schranken für
die Bisektionsweite von regulären Graphen bewiesen und auf eine Anwendung
der Ergebnisse beim Bau von Transputer-Systemen hingewiesen.
52
6.1
Untere Schranken für die Bisektionsweite
In diesem Abschnitt werden zwei Verfahren vorgestellt, mit denen sich untere
Schranken für die Bisektionsweite von Graphen berechnen lassen. Solche unteren Schranken sind insbesondere in den Fällen nützlich, in denen sich auch
eine Partition mit entsprechender Gröÿe nden läÿt, da so die Bisektionsweite
eines Graphen bestimmt werden kann. In Satz 81 wird beispielsweise bewiesen,
Q(k)
dass die Bisektionsweite des Hypercube
eine Gröÿe von
2k−1
besitzt. Al-
lerdings liefert keines der beiden hier vorgestellten Verfahren für alle Graphen
scharfe untere Schranken.
6.1.1
Verfahren von Leighton
Das Verfahren von Leighton verwendet ein vollständiges Wegesystem und die
sich daraus ergebende maximale Kantenbelastung, um die Bisektionsweite eines Graphen nach unten abzuschätzen.
Denition 77.
Wegesystem
v.
nach
Kante
e
Für
W
(Wegesystem) Sei
G = (V, E)
deniert zu jedem Knotenpaar
e ∈ E
stehe
cW (e)
∗
enthalten ist, und cW
ein ungerichteter Graph. Ein
(u, v) ∈ V 2
einen Weg von
für die Anzahl der Wege von
= max{cW (e); e ∈ E}
W,
u
in denen
für die maximale Kan-
tenauslastung durch das Wegesystem.
Man kann ein Wegesystem auch als eine Einbettung der Clique mit
Knoten in
G
|V |
∗
ansehen. cW entspricht dabei der Kantenauslastung der Einbet-
tung:
Denition 78.
(Einbettung) Seien
G1 = (V1 , E1 ) und G2 = (V2 , E2 ) ungerich-
tete Graphen. Eine injektive Abbildung
in
f : V1 → V2
heiÿt Einbettung von
G1
G2 .
Im allgemeinen werden benachbarte Knoten aus
Knoten in
G2
abgebildet. Um eine Einbettung von
beschreiben, muss daher noch für jede Kante
angegeben werden, der in
G2
die Knoten
G1
G1
{u, v}
nicht auf benachbarte
nach
aus
G1
G2
vollständig zu
ein Weg
Pf (u, v)
f (u) und f (v) miteinander verbindet.
Dieser Weg muss nicht unbedingt der kürzeste Weg zwischen
f (u)
und
f (v)
sein.
Denition 79.
(Kantenstreckung, Kantenauslastung) Seien
und
G2 = (V2 , E2 )
G2 .
Dann ist die Kantenstreckung KS(f ) von
ungerichtete Graphen. Sei
53
f
f
G1 = (V1 , E1 )
eine Einbettung von
G1
in
deniert als die maximale
Abbildung 6.1:
n2
Wege laufen über den Schnitt der Partition
2
Länge eines Weges aus
zeichne
ρ(e)
{Pf (u, v); {u, v} ∈ E1 }.
die Anzahl der Wege aus
Für eine Kante
{Pf (u, v); {u, v} ∈ E1 },
Dann ist die Kantenauslastung KA(f ) von
f
deniert als
die
V1 , V2
e ∈ E2
e
be-
enthalten.
max{ρ(e); e ∈ E2 }.
Kantenstreckung (Dilation) und Kantenauslastung (Congestion) sind wichtige Maÿe zur Beurteilung der Güte einer Einbettung. Kann
G1
in
G2
mit kon-
stanter Kantenstreckung und konstanter Kantenauslastung eingebettet werden, so ist jeder Algorithmus für
G1
auf
G2
mit konstantem Zeitverlust simu-
lierbar.
Satz 80.
(Satz von Leighton) Sei
gerader Knotenanzahl
Kantenauslastung
c∗W .
n = |V |
und
G = (V, E)
W
ein Wegesystem für
V1 , V2 ⊂ V
Partition von
G
(|V1 |
· |V2 |
.
mit
V1 ∪ V2 = V
und
G:
|V1 | = |V2 | = n/2
= σ(G).
viele Wege, die zwischen Knoten aus
viele von Knoten aus
V1
mit maximaler
n2
2c∗W
mit minimalem Schnitt ext(V1 , V2 )
2 · |V1 | · |V2 | = n2 /2
G
Dann gilt für die Bisektionsweite von
σ(G) ≥
Proof. Sei
ein ungerichteter Graph mit
zu Knoten aus
V2
eine balancierte
Insgesamt gibt es
V1
und
V2
verlaufen
und genausoviele in die
andere Richtung), und jeder dieser Wege muss dabei (mindestens) eine der
σ(G)
vielen Kanten des Schnitts benutzen (Abbildung 6.1). Wir wissen aber
ferner, dass jede Kante vom Wegesystem höchstens
∗
es laufen also höchstens cW
· σ(G)
c∗W -mal
verwendet wird,
Wege über den Schnitt. Daraus folgt:
n2
n2
≤ c∗W · σ(G) ⇐⇒
≤ σ(G)
2
2c∗W
54
Wir wollen den Satz von Leighton verwenden, um die Bisektionsweite des
Hypercube zu bestimmen.
Satz 81.
Q(k)
(Bisektionsweite des Hypercube) Die Bisektionsweite des Hypercube
beträgt
2k−1 .
Proof. Wir bestimmen zuerst mittels des Satzes von Leighton und des in Abschnitt 5.1 angegebenen Routing-Algorithmus eine untere Schranke für die Bisektionsweite des
W
Q(k).
Jeder Routing-Algorithmus deniert ein Wegesystem
und zur Bestimmung der maximalen Belastung
Wegesystem betrachten wir eine beliebige Kante
{0, 1}k
und
0 ≤ i < k,
des
Q(k).
c∗W
der Kanten durch das
{u, u(i)}, u = uk−1 . . . u0 ∈
Die Kante kann vom Routing-Algorithmus
in beiden Richtungen durchlaufen werden. Bestimmen wir zuerst die Anzahl
der Wege, die die Kante von
uk−1 . . . ui {0, 1}
chen, von
i
u
nach
u(i)
durchlaufen. Alle Knoten der Form
können mittels des Routing-Algorithmus den Knoten
u
errei-
u(i) aus können alle Knoten der Form {0, 1}k−i−1 ui ui−1 . . . u0 erreicht
werden (Man beachte, dass die Kante vom Routing-Algorithmus nur im
u
Schleifendurchlauf verwendet wird). Das bedeutet, dass von
gesamt
i
k−i−1
2 ·2
k−1
= 2
Wege laufen. Für die Richtung von
verläuft die Analyse entsprechend, also wird die Kante von
∗
gen verwendet. Damit ist auch die maximale Belastung cW
Bisektionsweite des
Q(k)
Q(k)
u(i)
nach
2 · 2k−1 = 2k
k
=2
ins-
u
We-
und für die
(2k )2
= 2k−1
2 · 2k
lässt sich ferner einfach ein Schnitt mit
Abbildung 6.2:
Wähle beispielsweise
u(i)
folgt:
σ(Q(k)) ≥
Für den
nach
i-ten
Bisektion des
Q(k)
V1 = {0u; u ∈ {0, 1}k−1 }
(Abbildung 6.2). Insgesamt folgt also
mit
und
2k−1
Kanten nden.
Kanten
V2 = {1u; u ∈ {0, 1}k−1 }
σ(Q(k)) = 2k−1 .
55
2k−1
6.1.2
Spektrale untere Schranke
Das in diesem Abschnitt beschriebene Verfahren verwendet einen gänzlich anderen Ansatz als das Verfahren von Leighton. Die algebraischen Eigenschaften
der Laplace-Matrix eines Graphen werden hier für die Bestimmung einer unteren Schranke der Bisektionsweite ausgenutzt.
Satz 82.
n = |V |
Sei
und
G = (V, E)
λ2
ein ungerichteter Graph mit gerader Knotenanzahl
der zweitkleinste Eigenwert der Laplace-Matrix
σ(G) ≥ λ2 ·
Proof. Da
(1 . . . 1)
LG .
Dann gilt:
n
4
Eigenvektor zum kleinsten Eigenwert
0
von
LG
ist, müssen
x von λ2 nach Satz 67 senkrecht auf (1 . . . 1) stehen, d.h. es
P
hx, (1 . . . 1)i = ni=1 xi = 0 gelten. Wie im Beweis zu Satz 68 zeigt man
alle Eigenvektoren
muÿ
dann, dass
hLG x, xi
hx, xi
λ2 = min
Px6=0
xi =0
gilt. Wir betrachten nun eine minimale balancierte Partition
es ist
|V1 | = |V2 | = n/2
und ext(V1 , V2 )
y ∈ Zn :
(
−1
yi =
+1
= σ(G).
V1 , V2
von
G, d.h.
Zu dieser Partition denieren
wir wie folgt einen Vektor
Oensichtlich ist
Pn
i=1
yi = 0
(y, y)
ist
Nachbarn von Knoten
Pn
i=1
vi .
vi ∈ V1
, falls
vi ∈ V2
und deshalb gilt:
λ2 ≤
Der Wert von
, falls
(LG y, y)
(y, y)
yi2 = n.
Sei im folgenden
Für einen beliebigen Vektor
(LG x, x) =
=
n
X
n
X
i=1
j=1
n
X
=
lij xj
=


lii xi −
X
vj ∈N (i)

|N (i)| · xi −
X
xj  xi
vj ∈N (i)


X

(xi − xj ) xi
vj ∈N (i)
X
((xi − xj )xi + (xj − xi )xj )
{vi ,vj }∈E
=
xj  xi

i=1
=
gilt dann:
xi
i=1
n
X
x ∈ Zn
die Menge der
!
i=1
n
X
N (i)
X
(xi − xj )2
{vi ,vj }∈E
56
Für alle Kanten, die nicht zum Schnitt der optimalen Partition
ist
yi = yj ;
für eine Kante des Schnitts gilt
X
(LG y, y) =
(yi − yj )2 =
{vi ,vj }∈E
Zusammen mit
(y, y) = n
λ2 ≤
6.2
X
|yi − yj | = 2
(yi − yj )2 =
{vi ,vj }∈
V1 , V2
gehören,
und deshalb
X
22 = 4 · σ(G)
{vi ,vj }∈
Ext(V1 ,V2 )
Ext(V1 ,V2 )
erhalten wir schlieÿlich:
4 · σ(G)
(LG y, y)
=
(y, y)
n
=⇒
σ(G) ≥ λ2 ·
n
4
Obere Schranken für die Bisektionsweite
Nachdem wir im letzten Abschnitt Verfahren zur Berechnung von unteren
Schranken der Bisektionsweite vorgestellt haben, dreht sich dieser Abschnitt
um obere Schranken der Bisektionsweite.
Für einen einzelnen Graphen lässt sich eine obere Schranke einfach durch
Angabe einer balancierten Partition berechnen. Daher geht es in diesem Abschnitt um die Bestimmung von oberen Schranken für ganze Klassen von Graphen, nämlich für reguläre Graphen. Reguläre Topologien spielen aufgrund ihrer Regelmäÿigkeit weiterhin eine groÿe Rolle bei parallelen Architekturen. Wir
verwenden im folgenden ausschlieÿlich konstruktive Verfahren. Dies bedeutet,
dass diese Verfahren es ermöglichen, zu jedem Graphen aus der betrachteten
Klasse einen Schnitt zu erzeugen, der höchstens so viele Kanten enthält, wie
die obere Schranke vorgibt. Dazu denieren wir:
Denition 83.
σd (n)
n
(maximale Bisektionsweite regulärer Graphen) Für
d∈N
die maximale Bisektionsweite aller regulären Graphen vom Grad
d
sei
mit
Knoten, d.h.
σd (n) = max{σ(G); G
hat
n
Knoten und ist regulär vom Grad
d}
Transputer-Systeme
Einleitend wollen wir uns kurz mit einer Anwendung von oberen Schranken
für die Bisektionsweite beschäftigen, dem Bau von Transputer-Systemen.
Denition 84.
(Transputer) Ein Transputer-System ist ein Parallelrechner
mit verteiltem Speicher, in dem spezielle Prozessoren, Transputer genannt,
zum Einsatz kommen. Jeder Prozessor ist mit vier Kommunikationskanälen
(Links) ausgerüstet, über die er direkt mit anderen Transputern verbunden werden kann. Der Datenaustausch zwischen den Prozessoren ndet ausschlieÿlich
über diese Links statt.
57
Abbildung 6.3:
Ein Transputer-System mit
n
Prozessoren und einem Switch
Abbildung 6.4:
Ein Transputer-System mit
n
Prozessoren und zwei Switches
Die Art und Weise, in der ein Transputer-System verschaltet ist, wird dabei normalerweise nicht im voraus festgelegt, damit man (nach Möglichkeit)
jeden beliebigen 4-regulären Graphen als Netzwerk-Topologie verwenden kann.
Dabei kommen sogenannte Switches zum Einsatz; ein Switch mit
n
Kanälen
kann seine Kanäle beliebig paarweise miteinander verschalten. Abbildung 6.3
zeigt, wie man mit einem Switch mit
n
4n
Kanälen ein Transputer-System mit
Prozessoren realisieren kann.
Switches mit vielen Kanälen sind technisch sehr aufwendig und teuer.
Der Satz von Petersen (s. Satz 53 im Skript) zeigt eine Möglichkeit auf, wie
man Transputer mit kleineren Switches bauen kann, ohne dabei die Flexibilität einzuschränken. Auf 4-reguläre Graphen angewandt bedeutet er, dass die
Kanten in zwei Mengen aufgeteilt werden können und die so entstehenden
Teilgraphen 2-regulär sind. Also kann man ein Transputer-System auch wie
in Abbildung 6.4 aufbauen; jeder 4-reguläre Graph kann weiterhin direkt als
Netzwerk-Topologie verwendet werden, indem die Kanten in zwei Partition
aufgeteilt werden und die erste Kantenpartition dem oberen Switch und die
zweite dem unteren Switch zugewiesen wird.
Will man mit noch kleineren Switches ein Transputer-System aufbau-
?
en, kann man dies wie in Abbildung 6.5 tun (siehe [ ]). Die Frage, die sich
dabei stellt, ist, wie viele Kanten man zwischen den beiden Blöcken vorsehen
muÿ, um gewährleisten zu können, dass man immer noch jeden 4-regulären
Graphen direkt auf dem Transputer-System abbilden kann. Man kann zeigen,
58
Abbildung 6.5:
dass man mit
durch
σ4 (n) + 1
bσ4 (n)/2c
bσ4 (n)/2c − 1
Ein Transputer-System mit
n
Prozessoren und vier Switches
Kanten auskommt. Die oberen Switches sind dabei
Kanten miteinander verbunden, die unteren Switches durch
Kanten; ferner benötigt man noch zwei Kanten, die die obe-
ren mit den unteren Switches verbinden. Es reichen also vier Switches mit je
mindestens
n + bσ4 (n)/2c + 1
Kanälen, um das Transputer-System zu bauen.
Die Methode der hilfreichen Mengen
Es verbleibt, den Wert von
σ4 (n) möglichst genau zu ermitteln. Mit dieser Auf-
gabe beschäftigen wir uns im restlichen Kapitel. Wir beweisen zunächst eine
obere Schranke für die Bisektionsweite von regulären Graphen mit geradem
Grad. Das dabei verwendete Verfahren wird anschlieÿend verfeinert, um eine
schärfere Schranke für reguläre Graphen vom Grad 4 zu beweisen.
Denition 85.
(externer/interner Knotengrad) Sei G = (V, E) ein ungerich.
teter Graph und V1 ∪ V2 = V eine Partition von G. Für einen Knoten v ∈ V1
ist sein externer bzw. interner Knotengrad extV1 ,V2 (v) bzw. intV1 ,V2 (v) deniert
durch:
Für einen Knoten
extV1 ,V2 (v)
= |{ {v, w} ∈ E; w ∈ V2 }|
intV1 ,V2 (v)
= |{ {v, w} ∈ E; w ∈ V1 }|
v ∈ V2
ist sein externer bzw. interner Knotengrad entspre-
chend deniert.
Wenn klar ist, auf welche Partition wir uns beziehen, schreiben wir für den
externen bzw. internen Knotengrad eines Knotens
Oensichtlich gilt für alle Knoten
Satz 86.
N, n
v
v einfach ext(v) bzw. int(v).
eines Graphen ext(v)
+ int(v) = grad(v).
(obere Schranke für reguläre Graphen mit geradem Grad) Seien
gerade. Dann gilt:
σ2d (n) ≤ d ·
59
n
2
d, n ∈
Proof. Sei
G = (V, E)
ein beliebiger regulärer Graph vom Grad
2d
mit
n
.
Knoten und
V1 ∪ V2 = V
eine beliebige balancierte Partition von G. Wir
geben einen einfachen Hill-Climbing-Algorithmus an, der die Partition
in eine balancierte Partition mit einem Schnitt kleiner gleich
V1 , V2
d·n/2 umwandelt.
Wir teilen dazu die Knoten des Graphen bezüglich der aktuellen Partition in drei Klassen A, B und C ein. Ein Knoten
v∈V
A-Knoten, falls ext(v)
>d
B-Knoten, falls ext(v)
=d
C-Knoten, falls ext(v)
<d
ist ein
gilt. Beim Verschieben eines Knotens auf die andere Seite der Partition ändert
sich der Schnitt in Abhängigkeit von der Klasse, zu der der Knoten gehört.
Das Verschieben von einem
A-Knoten verkleinert den Schnitt
B-Knoten läÿt den Schnitt unverändert
C-Knoten vergröÿert den Schnitt
Der Hill-Climbing-Algorithmus sieht nun wie folgt aus:
V2 do
Verschiebe gefundenen A-Knoten von
V1
while Es gibt A-Knoten in
V1
und
nach
V2
Verschiebe gefundenen A- oder B-Knoten von
V2
nach
V1
od
Die Verschiebe-Operationen im Schleifenrumpf sind wohldeniert. Das erste
Verschieben eines A-Knotens von
V1 nach V2 ist oensichtlich möglich. Dadurch
kann sich der externe Knotengrad von Knoten in
V2 höchstens um 1 verringern,
d.h. danach existiert mindestens noch ein A- oder B-Knoten in
In jedem Schleifendurchlauf wird ein Knoten von
Knoten von
V2
nach
V1
V1
V2 .
nach
V2
und ein
verschoben, die Partition bleibt also balanciert.
Ferner wird der Schnitt der Partition in jedem Schleifendurchlauf echt
kleiner, da mindestens ein A- und ein B-Knoten verschoben werden. Daraus
folgt auch, dass der Algorithmus terminiert, da ein Schnitt nur endlich oft
verkleinert werden kann.
Nach der Terminierung enthält
O.B.d.A. enthalte
V1
V1
oder
V2
keine A-Knoten mehr.
keine A-Knoten mehr. Für den Schnitt gilt dann:
ext(V1 , V2 )
=
X
ext(v)
v∈V1
≤
X
v∈V1
60
d=d·
n
2
Abbildung 6.6:
Beispiele für hilfreiche Mengen von 4-regulären Graphen
Die gerade beschriebene Idee wollen wir verwenden, um für reguläre Graphen vom Grad 4 eine bessere obere Schranke der Bisektionsweite anzugeben.
Dabei werden (ausgehend von einer beliebigen balancierten Partition) pro Runde nicht mehr nur einzelne Knoten, sondern Knotenmengen verschoben.
Denition 87.
.
V1 ∪ V2 = V
(S
⊆ V2 )
(hilfreiche Menge) Sei
eine Partition von
heiÿt
k -hilfreiche
den Schnitt ext(V1 , V2 ) um
G
G = (V, E)
und
k ∈ Z.
ein ungerichteter Graph,
Eine Knotenmenge
Menge, wenn das Verschieben von
k
S
nach
S ⊆ V1
V2 (V1 )
vermindert.
Abbildung 6.6 zeigt Beispiele für hilfreiche Mengen. Der sich für reguläre
Graphen vom Grad 4 ergebende Algorithmus zur Bestimmung einer Partition
mit kleinem Schnitt sieht grob wie folgt aus:
Solange wie möglich do
1.) Verschiebe
4-hilfreiche
Menge von
V1
2.) Balanciere die Partition mittels einer
nach
V2
(−2)-hilfreichen
Menge
od
Insgesamt wird der Schnitt dadurch in jedem Schleifendurchlauf um 2 Kanten
kleiner. Das Finden einer 4-hilfreichen Menge wird später in Satz 89 behandelt.
Kommen wir zunächst dazu, wie man Partitionen balancieren kann, ohne den
Schnitt um mehr als 2 Kanten zu vergröÿern.
Satz 88.
Sei
G = (V, E)
ein ungerichteter Graph vom Grad 4 mit gerader
.
Knotenanzahl n = |V |. Zu einer Partition V1 ∪ V2 = V mit |V1 | ≤ |V2 | und
.
4 · |V2 | < 5 · ext(V1 , V2 ) + 2 lässt sich eine balancierte Partition U1 ∪ U2 = V
mit ext(U1 , U2 )
Proof. Sei
e =
≤ ext(V1 , V2 ) + 2
konstruieren.
ext(V1 , V2 ) die Gröÿe des ursprünglichen Schnitts. Für den
Beweis teilen wir die Knoten bezüglich der aktuellen Partition in vier Klassen
61
v∈V
ein. Ein Knoten
ist ein
A-Knoten, falls ext(v)
≥3
B-Knoten, falls ext(v)
=2
C-Knoten, falls ext(v)
=1
D-Knoten, falls ext(v)
=0
Zuerst modizieren wir die Partition derart, dass in
Knoten vorkommen und die Bedingung
V2
nur noch C- und D-
4 · |V2 | < 5 · ext(V1 , V2 ) + 2
weiterhin
erfüllt ist.
while
|V1 | < |V2 |
do
if Es existiert A- oder B-Knoten in
V2
Verschiebe A- bzw. B-Knoten von
elseif ext(V1 , V2 )
<e
V2 then
nach
V1
then
Verschiebe C-Knoten von
V2
V1
nach
else
Breche Schleife ab
od
Es werden alle A- und B-Knoten von
V2
die Knotenanzahl von
V2 nach V1 verschoben. Dadurch kann sich
und die Gröÿe des Schnitts verkleinern. Hat sich der
Schnitt verkleinert, ist unter Umständen die Bedingung
2
4·|V2 | < 5·ext(V1 , V2 )+
nicht mehr erfüllt. Deshalb werden dann so lange C-Knoten von
V2
verschoben, bis die ursprüngliche Schnittgröÿe wieder erreicht ist; in
nach
V2
V1
kann
es nicht nur D-Knoten geben, da der Graph sonst nicht zusammenhängend
wäre. Im Verlauf dieser Modikationen kann es passieren, dass bereits eine
≤ e)
balancierte Partition (mit einem Schnitt
gefunden wird. In diesem Fall
ist der Satz bewiesen.
|V1 | < |V2 |
Wir können nun also annehmen, dass
5 · ext(V1 , V2 ) + 2
gilt. Ferner enthält
V2
und
4 · |V2 | <
nur C- und D-Knoten. Im folgenden
betrachten wir die Zusammenhangskomponenten, die nur aus C-Knoten bestehen, genauer. Sei dazu
nur aus C-Knoten in
komponente hat
ferner besitzt
höchstens
aus
V2
von
C
C
C
C ⊆ V2
V2
eine beliebige Zusammenhangskomponente, die
besteht, mit
mindestens
genau
c
c−1
verbinden. Somit ist
V1
Knoten. Als Zusammenhangs-
Kanten, die innerhalb von
externe Kanten zu Knoten aus
4c − 2(c − 1) − c = c + 2
nach
c = |C|
C
Kanten, die
mindestens
C
V1 .
62
verlaufen;
Es verbleiben also
mit den restlichen Knoten
(−2)-hilfreich,
d.h. das Verschieben
vergröÿert den Schnitt höchstens um 2; enthält
Kreis, so ändert sich der Schnitt nicht.
C
C
gar einen
Wir zeigen im folgenden, dass es in
V2
immer eine Zusammenhangskom-
ponente aus C-Knoten mit einen Kreis gibt. Unter dieser Voraussetzung läÿt
sich die Partition oensichtlich wie folgt balancieren, ohne den Schnitt um
mehr als 2 Kanten zu vergröÿern:
while
Sei
if
|V1 | < |V2 |
C
do
eine Zusammenhangskomponente mit Kreis aus C-Knoten in
|C| < (|V2 | − |V1 |)/2
V2
then
Verschiebe alle Knoten aus
C
von
V2
nach
V1
/* Der Schnitt bleibt unverändert. */
else
Sei
/*
C0 ⊆ C
C0
eine Zusammenhangskomponente mit
(|V2 | − |V1 |)/2
Knoten
enthält nicht unbedingt einen Kreis. */
Verschiebe alle Knoten aus
C0
von
V2
nach
V1
/* Die Partition ist balanciert; maximal 2 zusätzliche Kanten im Schnitt. */
od
Es verbleibt zu zeigen, dass es in
V2
immer eine Zusammenhangskomponente
aus C-Knoten mit einem Kreis gibt. Es gibt keine Zusammenhangskomponente
aus C-Knoten mit Kreis. Es gibt in
C-Knoten mit Kreis. Sei
C (D)
V2
eine Zusammenhangskomponente aus
die Menge aller C-Knoten (D-Knoten) in
V2 ,
c = |C| (d = |D|) deren Anzahl und ext(C, D) die Anzahl der Kanten zwischen
Knoten aus
C und D. Oensichtlich gilt ext(C, D) = 4d−2·int(D) ≤ 4d. Ferner
bilden nach unserer Annahme die C-Knoten einen Wald, d.h. es verlaufen
maximal
c−1
Kanten innerhalb von
ext(C, D)
C.
Also:
= 4c − 2 · int(C) − ext(C, V1 ) ≥ 4c − 2(c − 1) − c = c + 2
=⇒ 4d ≥ ext(C, D) ≥ c + 2
c + d = |V2 |
Zusammen mit
und
c = ext(V1 , V2 )
folgt:
4 · |V2 | = 4(c + d) = 4c + 4d ≥ 4c + c + 2 = 5c + 2 = 5 · ext(V1 , V2 ) + 2
Dies ist oensichtlich ein Widerspruch zu der Voraussetzung
ext(V1 , V2 )
4 · |V2 | < 5 ·
+ 2.
Nachdem wir gesehen haben, wie sich Partitionen balancieren lassen, folgt
nun ein Verfahren, mit dem sich (kleine) 4-hilfreiche Mengen in balancierten
Partitionen nden lassen.
Satz 89.
Sei
G = (V, E)
der Knotenanzahl
n = |V |
ein ungerichteter Graph vom Grad 4 mit gera.
und V1 ∪ V2 = V eine balancierte Partition mit
63
ext(V1 , V2 )
> n/2 + 1.
Dann lässt sich entweder eine balancierte Partition mit
kleinerem Schnitt oder eine 4-hilfreiche Menge
H
mit
|H| ≤ 6dlog ne+2 nden.
Proof. Der Beweis wurde in der Vorlesung nicht geführt. Der Vollständigkeit
halber wird er aber ins Skript aufgenommen.
Wir unterscheiden zwei Fälle.
1. Fall:
V1
V2
und
enthalten je mindestens einen A-Knoten
Durch das Vertauschen von einem A-Knoten aus
aus
V2
V1
mit einem A-Knoten
wird der Schnitt um mindestens 2 kleiner und die resultierende
Partition ist balanciert.
2. Fall:
V1
oder
V2
enthält keine A-Knoten
O.B.d.A. enthalte
V1
keine A-Knoten. Wir zeigen, dass
chend kleine 4-hilfreiche Menge enthält.
der B-, C- bzw. D-Knoten in
ext(V1 , V2 )
= 2b + c > n/2 + 1.
V1 .
b, c
Es gilt
bzw.
d
einem Knoten
stehe
V1
und
T (v)
s(v)
und
=⇒
b≥d+2
V1 .
Wir führen von
eine Baumsuche durch. Dabei führen wir die Suche an
w nicht weiter fort, wenn es sich bei w um einen D-Knoten
handelt oder der Abstand von
v
stehe für die Anzahl
Also:
Das heiÿt, es gibt (mindestens zwei) B-Knoten in
v
eine hinrei-
b + c + d = |V1 | = n/2
2b + c ≥ n/2 + 2 = b + c + d + 2
jedem B-Knoten
V1
w zu v dlog ne beträgt. Für jeden B-Knoten
für den sich aus der Baumsuche ergebenden Teilgraph von
für die Anzahl der D-Knoten in
T (v).
Nach Konstruktion haben alle Knoten in
T (v)
einen Abstand
≤
dlog ne zur Wurzel und innerhalb des kürzesten Weges von einem Knoten
zur Wurzel liegt kein D-Knoten. Bei den inneren Knoten eines kürzesten
Weges handelt es sich also nur um B- oder C-Knoten. Wie Abbildung
6.7 zeigt, hat ein solcher innerer Pfad, unabhängig von seiner Länge,
keinen Einuÿ auf die Hilfreichheit; wie hilfreich ein kürzester Weg
ist, entscheiden die beiden Endknoten. Kommt im inneren Pfad ein BKnoten vor, erhöht sich die Hilfreichheit des gesamten Weges dadurch
sogar noch; für die folgenden Argumentationen genügt es zu wissen, dass
ein innerer Pfad die Hilfreichheit nicht verschlechtert. In den weiteren Abbildungen wird deshalb ein solcher innerer Pfad nur gepunktet
dargestellt.
64
Abbildung 6.7:
Innere Knoten haben keinen Einuÿ darauf, ob ein Pfad hilf-
reich ist
a) Es ist
s(v) ≥ 2
In allen
für alle B-Knoten
T (v)-Teilgraphen
v.
zusammen tauchen mindestens
ten zu D-Knoten auf. Wegen
b≥d+2
Kanten. Da andererseits insgesamt nur
2b
sind das mindestens
Kan-
2d + 4
4d D-Kanten existieren, gibt
es entweder einen D-Knoten, der zu 4 Teilgraphen gehört oder 2 DKnoten, die in jeweils 3 Teilgraphen vorkommen. Im ersten Fall
haben wir eine
ne
(4dlog ne + 1)-elementige
(6dlog ne + 2)-elementige
und im zweiten Fall ei-
4-hilfreiche Menge gefunden, wie die
Abbildungen 6.8 und 6.9 zeigen.
Abbildung 6.8:
4-hilfreiche Menge: D-Knoten kommt in 4 Suchbäumen vor
65
Abbildung 6.9:
4-hilfreiche Menge: zwei D-Knoten kommen in je 3 Suchbäu-
men vor
b) Es gibt einen B-Knoten
Im Suchbaum von
v
v
mit
s(v) ≤ 1.
kommt eine der drei 4-hilfreichen Mengen aus
Abbildung 6.10 vor, d.h.
T (v)
enthält entweder zwei weitere B-
Knoten, zwei Kreise oder einen weiteren B-Knoten und einen Kreis.
Die Gröÿe der 4-hilfreichen Menge ist dabei maximal
4dlog ne + 1.
dass eine dieser drei Konstellationen auftreten muÿ, zeigen wir mittels eines Widerspruchsbeweises.
Abbildung 6.10:
Ann.:
Mögliche 4-hilfreiche Mengen in einem Suchbaum
T (v) enthält höchstens einen weiteren B-Knoten oder einen
Kreis, aber nicht beides.
Wir zeigen, dass
T (v)
dann aus mehr als
bestehen muÿ. Wir modizieren
|V1 | = n/2
Knoten
T (v), indem wir etwaige Kreis-
kanten und D-Knoten löschen und anschlieÿend alle (inneren)
Knoten mit Grad 2 (auÿer der B-Wurzel
v ) durch eine entspre-
chende Kante ersetzen. Der resultierende Graph
T 0 (v)
ist ein
binärer Baum, in dem alle inneren Knoten zwei Söhne besitzen.
Welche Knoten werden bei der Modikation durch eine Kante ersetzt? Zum einen der eventuell vorhandene B-Knoten bzw.
66
ein C-Knoten, dessen Kreiskante gelöscht worden ist (nur einer der beiden Fälle ist nach unserer Annahme möglich). Zum
anderen ein Knoten, der Nachbar eines D-Knotens war. Davon
kann es nach Voraussetzung ebenfalls maximal einen geben.
In
T 0 (v) ist also der Abstand eines jeden Knotens zur Wurzel
T (v) bis zu einer Tiefe
höchstens um 2 kleiner geworden. Da wir
von
dlog ne
vollständigen binären Baum der Tiefe
enthält also mindestens
ist aus
T (v)
also enthält
T 0 (v)
einen
geben.
T 0 (v)
Knoten.
T 0 (v)
aufgebaut haben, muÿ es deshalb in
dlog ne − 2
2dlog ne−1 − 1 ≥ n/2 − 1
durch Entfernen zweier Knoten hervorgegangen,
T (v)
mindestens
n/2 + 1 > |V1 |
Knoten, was den
gewünschten Widerspruch liefert.
In
Fazit:
T (v)
ist eine der drei 4-hilfreichen Mengen aus Abbildung 6.10 enthalten
Mit den Ergebnissen der Sätze 88 und 89 läÿt sich nun eine obere Schranke
für die Bisektionsweite von 4-regulären Graphen angeben.
Satz 90.
(obere Schranke für reguläre Graphen mit Grad 4) Sei
gerade. Dann gilt:
σ4 (n) ≤
Proof. Sei
|V |
G = (V, E)
n ≥ 466, n
n
+1
2
ein beliebiger regulärer Graph vom Grad 4 mit
n =
.
Knoten und
V1 ∪ V2 = V
eine beliebige balancierte Partition. Folgender
Algorithmus berechnet eine balancierte Partition mit
while ext(V1 , V2 )
> n/2 + 1
≤ n/2 + 1
do
Verkleinere Schnitt oder bestimme 4-hilfreiche Menge
if 4-hilfreiche Menge
H
Kanten:
H
(Satz 89)
gefunden then
Verschiebe alle Knoten aus
H
auf die andere Seite der Partition
Balanciere Partition mit (-2)-hilfreicher Menge (Satz 88)
od
Korrektheit und Terminierung des Algorithmus sind klar, wenn wir zeigen
können, dass Satz 88 angewendet werden darf. Sei dazu
die Partition, die sich nach dem Verschieben von
H
U1 , U2
mit
|U1 | ≤ |U2 |
ergibt. Es gilt
|U2 | ≤
n/2+6dlog ne+2 und ext(U1 , U2 ) ≥ n/2−2. Um Satz 88 anwenden zu können,
67
Abbildung 6.11:
Graph mit 12 Knoten und Bisektionsweite 10
muÿ gelten:
4 · |U2 | < 5 · ext(U1 , U2 ) + 2
n
5n
n
−8
=⇒ 4( + 6dlog ne + 2) = 2n + 24dlog ne + 8 < 5( − 2) + 2 =
2
2
2
n
=⇒
− 24dlog ne > 16
2
=⇒ n ≥ 466
Durch eine etwas genauere Analyse läÿt sich Satz 89 noch verschärfen und
Satz 90 gilt dann für
n ≥ 340.
Ohne Beweis geben wir im folgenden Satz
weitere Ergebnisse zu der maximalen Bisektionsweite von regulären Graphen
mit Grad 4 an.
Satz 91.
Sei
n∈N
gerade. Dann gilt:
1.)
σ4 (n) ≤ n/2 + 4
für
n mod 4 = 0
2.)
σ4 (n) ≤ n/2 + 3
für
n mod 4 = 2
3.)
σ4 (n) ≤ n/2 + 1
für
n ≥ 340
4.)
σ4 (n) ≤ (0.4 + )n
Für
n ≤ 20
für
n ≥ n()
sind die Schranken 1.) und 2.) scharf. Abbildung 6.11 zeigt
beispielsweise einen Graphen mit 12 Knoten und Bisektionsweite 10.
68
6.3
Maximale Schnitte in Graphen
In diesem Kapitel behandeln wir den Approximationsalgorithmus von Goemans und Williamson für das MaxCut-Problem. Die Beschreibung des Algorithmus in der Vorlesung baut auf dem Buch von Rolf Wanka [8] auf, auf
welches an Stelle einer Übertragung ins Skript verwiesen wird.
69
Literaturverzeichnis
[1] West: Introduction to Graph Theory, Pretince Hall, 2nd ed., ISBN: 013-014400-2.
[2] Chartrand, Oellermann: Applied and Algorithmic Graph Theory,
McGraw-Hill, ISBN: 0-07-557101-3.
[3] Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, MIT
Press / McGraw-Hill, 2nd ed., ISBN: 0-262-53196-8.
[4] Cormen, Leiserson, Rivest: Algorithmen - Eine Einführung, Oldenburg, ISBN: 3-486-27515-1.
[5] Motwani, Raghavan: Randomized Algorithms, Cambridge University
Press, ISBN: 0-52-147465-5.
[6] Drake, Hougardy: A simple approximation algorithm for the weighted
matching problem. Information Processing Letters, Volume 85, Issue 4,
28 February 2003, Pages 211-213. doi:10.1016/S0020-0190(02)00393-9.
[7] Leighton: Einführung in parallele Algorithmen und Architekturen. Gitter, Bäume und Hypercubes. Internat. Thomson Publ., ISBN: 3-82660248-X.
[8] Wanka: Approximationsalgorithmen - Eine Einführung, Teubner, ISBN:
3-519-00444-5.
[9] Monien, Grothklags, Meyerhenke: Skript zur Vorlesung Algorithmen für synchrone Rechnernetze.
70
Herunterladen