Bipartite Graphen Ein Graph
G = (V , E ) heiÿt bipartit (oder paar), wenn die
Knotenmenge in zwei disjunkte Teilmengen zerfällt
V = S ∪ T mit S ∩ T = ∅), sodass jede Kante einen Knoten aus S mit einem Knoten aus T verbindet. (
Beispiele
graphen3.pdf, Seite 1
Eigenschaften I Ein Graph ist genau dann bipartit, wenn es keinen aus einer ungeraden Anzahl von Kanten bestehenden geschlossenen Weg gibt.
I Bei einem zusammenhängenden bipartiten Graphen ist die
V = S ∪ T eindeutig bestimmt. Ist G = (V , E ) bipartit mit V = S ∪ T , so gilt:
Zerlegung
I
Bei einem aus einer geraden Anzahl von Kanten bestehenden Weg gehören Start- und Endpunkt zur selben Menge
S
oder
T , bei einem aus einer ungeraden
Anzahl von Kanten bestehenden Weg gehören Start- und Endpunkt zu verschiedenen Mengen.
graphen3.pdf, Seite 2
Konstuktion einer Zerlegung V = S ∪ T durch Markierung der Knoten eines zusammenhängenden (ungerichteten) Graphen: 1. Markiere einen (beliebigen) Startknoten mit
s.
2. Markiere alle Nachbarknoten des Startknotens mit
t.
3. Markiere alle noch unmarkierten Knoten, die einen mit markierten Nachbarknoten haben, mit unmarkierten Knoten, die einen mit Nachbarknoten haben, mit
t.
s
t
s , sowie alle noch
markierten
4. Wiederhole Schritt 3 so lange, bis entweder I alle Knoten markiert sind oder I zwei benachbarte Knoten die gleiche Markierung haben.
In diesem Fall ist der Graph nicht bipartit und der Algorithmus kann abgebrochen werden.
graphen3.pdf, Seite 3
Matchings Sei
G = (V , E ) bipartit mit V = S ∪ T .
I Ein
Matching (oder Paarung) ist eine Teilmange E0 ⊂ E
der Kantenmenge, so dass jeder Knoten mit maximal einer Kante aus
E0
inzident ist.
I Ein Matching heiÿt maximal, wenn es kein anderes Matching gibt, das mehr Kanten enthält.
vollständige Paarung ist ein Matching E0 , so dass jeder Knoten mit einer Kante aus E0 inzident ist.
I Eine
Matchings E
0
graphen3.pdf, Seite 4
Eigenschaften und Bemerkungen I Jeder bipartite Graph hat ein maximales Matching. Dieses ist i. a. nicht eindeutig.
I Nicht jeder bipartite Graph hat eine vollständige Paarung. I Jede vollständige Paarung ist ein maximales Matching.
E0 deniert eine bijektive S → T , wenn man jedem Element s ∈ S das (eindeutige) Element von T zuordnet, das mit s durch eine Kante aus E0 verbunden ist.
I Eine vollständige Paarung
Abbildung (1:1Zuordnung)
Insbesondere ist eine vollständige Paarung nur möglich, wenn
S
und
T
gleich viele Elemente haben.
Aber auch in diesem Fall ist die Existenz einer vollständigen Paarung nicht garantiert.
graphen3.pdf, Seite 5
Konstruktion maximaler Matchings über
augmentierende Wege (ungarischer Algorithmus,
Algorithmus von Hopcroft und Karp)
Augmentierender Weg G = (V , E ) mit V = S ∪ T E0 . Ein augmentierender Weg (erweiternder Weg; Verbesserungsweg) ist ein Weg in G mit folgenden
Gegeben sei ein bipartiter Graph und ein (beliebiges) Matching
Eigenschaften:
ungepaarte Knoten, d. h. sie sind mit keiner Kante aus E0 inzident,
I Start- und Endknoten sind
I Die Kanten des des Weges gehören abwechselnd zu
E \ E0
und zu
E0
(der Weg ist
alternierend).
graphen3.pdf, Seite 6
Beispiel Ein augmentierender Weg führt zur Verbesserung eines gegebenen Matchings
E0 , indem die zu E0
gehörenden Kanten
des Weges aus dem Matching entfernt und die nicht zu
E0
stattdessen hinzugefügt werden (Umschalten des Weges). Das neue Matching enthält eine Kante mehr als das alte, da die erste und letzte Kante des augmentierenden Weges nicht zu
E0
gehören.
graphen3.pdf, Seite 7
Bemerkung Jeder augmentierende Weg besteht aus einer ungeraden Anzahl von Kanten, da er alterniernend ist und die erste und die letzte Kante nicht zum Matching gehören. Damit liegt entweder der Startpunkt in
T
S
und der Endpunkt in
oder umgekehrt.
Es genügt dabei, augmentierende Wege zu betrachten, die in einem ungepaarten Knoten aus ungepaarten Knoten aus
T
S
beginnen und in einem
enden.
graphen3.pdf, Seite 8
Der Ungarische Algorithmus beruht auf dem
E0
Satz: Ein Matching
ist genau dann maximal, wenn es
keinen augmentierenden Weg gibt. Damit 1. Starte mit einem bekannten Matching
E0
(z. B.
E0 = ∅).
2. Suche einen augmentierenden Weg. I Gibt es einen augmentierenden Weg, so ersetzte das
aktuelle Matching
E
n
+1
E
n
durch ein neues besseres Matching
durch Umschalten entlang des Weges.
Formal: Ist
A die Menge der zum augmentierenden Weg
gehörenden Kanten, so setze
E
n
+1
= E ∆ A = (E \ A) ∪ (A \ E ). n
n
n
I Gibt es keinen augmentierenden Weg, so ist das aktuelle
Matching
E
n
maximal.
3. Wiederhole Schritt 2, so lange es augmentierende Wege gibt. graphen3.pdf, Seite 9
Finden eines augmentierenden Weges durch Markierung der Knoten oder (äquivalent) Betrachten eines gerichteten Graphen: Die zum aktuellen Matching die Richtung von von
S
nach
T
T
nach
S
E
n
gehörenden Kanten bekommen
(von rechts nach links), die übrigen
(von links nach rechts). Ein augmentierender
Weg ist dann ein gerichteter Weg, dessen Startpunkt (in und Endpunkt (in
T ) in E
n
S)
ungepaarte Knoten sind. Dieser
kann z. B. durch eine Breitensuche gefunden werden.
graphen3.pdf, Seite 10
Bemerkungen I Ist
n
die Zahl der Knoten und
m
die Zahl der Kanten, so
hat der ungarische Algorithmus die Komplexität
O (n · m) = O (n3 ).
I Beim Algorithmus von Hopcroft und Karp werden simultan mehrere augmentierende Wege betrachtet. Dies führt zu einer Verbesserung der Komplexität auf
√
O ( n · m) = O (n ). 5 2
I Der ungarische Algorithmuis berechnet simultan zum maximalen Matching eine
minimale Knotenüberdeckung
(duales Problem).
I Man kann Paarungen auch in nicht bipartiten Graphen betrachen. Auch hier kann eine maximale Paarung über augmentierende alternierende Wege gefunden werden.
graphen3.pdf, Seite 11
Beispiel Gesucht ist ein maximales Matching im bipartiten Graphen
G = (S ∪ T , E ) mit S = {1, 2, 3, 4}, T = {a, b, c , d } und E = {1a, 1c , 2a, 2b, 2d , 3a, 3c , 3d , 4c }. Als Startpunkt für den ungarischen Algorithmus kann das
E0 = ∅ genommen werden. Dann bildet jede Kante aus V einen augmentierenden Weg der triviale Matching
Länge 1, d. h. es gibt die augmentierenden Wege
a c
a b d
a c
1 , 1 , 2 , 2 , 2 , 3 , 3 , 3
d
c
und 4 .
graphen3.pdf, Seite 12
Beispiel: Übergang E → E 0
von links: Graph mit Matching
1
E0 = ∅, zugehöriger gerichteter
Graph mit möglichen Anfangs- und Endpunkten augmentierender Wege, ausgewählter augmentierender Weg
a
2 , Matching
E1 = {2a} nach Umschalten.
graphen3.pdf, Seite 13
Beispiel: Übergang E → E 1
Zu
E1
2
gibt es noch augmentierende Wege der Länge 1, d. h. es
können Kanten hinzugefügt werden, ohne andere aus dem
c
c und 4c . Mit Auswahl von 3c erhält man E2 = {2a, 3c }. Matching herauszunehmen: 1 , 3
graphen3.pdf, Seite 14
Beispiel: Übergang E → E 2
3
Jetzt lässt sich keine Kante mehr direkt hinzufügen, augmentierende Wege haben mindestens die Länge 3. Es gibt folgende Möglichkeiten:
a b a d c a b c a d c a b (ausgewählt) und c a d E3 = E2 ∪ {4c , 3a, 2b} \ {2a, 3c } = {4c , 3a, 2b}. 1 2 , 1 2 , 1 3 2 , 1 3 2 , 4 3 2
4 3 2 . Umschalten liefert ein neues Matching
graphen3.pdf, Seite 15
Ende des Algorithmus
Jetzt gibt es keine augmentierenden Wege mehr. Jeder Versuch, einen solchen (der im Knoten 1 beginnen muss) zu
a c
c
bilden, endet in der Sackgasse 4: 1 3 4, 1 4. Somit ist das Matching
E3
maximal. Insbesondere gibt es keine
vollständige Paarung.
Bemerkung: Das maximale Matching ist nicht eindeutig, sondern das Ergebnis hängt von der Auswahl der augmentierenden Wege in den einzelnen Teilschritten ab.
graphen3.pdf, Seite 16
Netzwerke Ein Netzwerk ist ein zusammenhängender, gerichteter und
G = (V , E ) mit Gewichten g (i , j ) > 0 mit Knoten: Quelle q ∈ V und Senke s ∈ V .
gewichteter Graph zwei speziellen
graphen3.pdf, Seite 17
Anwendungen I Datennetze I Leitungsnetze (Wasser, Gas, ...) I Verkehrsplanung Die Gewichte werden dabei als (Transport-)Kapazitäten interpretiert. Ziel ist, möglichst viel von der Quelle zur Senke zu transportieren. Der Transport wird durch
zulässige Flüsse beschrieben.
graphen3.pdf, Seite 18
Flüsse in einem Netzwerk Ein zulässiger Fluss ist eine Abbildung
I 0
≤ f (i , j ) ≤ g (i , j )
f : E → R mit
für jede Kante
(i , j ) ∈ E
(die durch die Kante transportierte Menge übersteigt nicht deren Kapazität),
I Für jeden Knoten
P i
f (i , j ) =
P k
j
mit
j 6= q
und
j 6= s
ist
f (j , k ), d. h. die Summe der Flüsse
über alle in den Knoten j hineinzeigenden Kanten ist gleich der Summe über die aus j herauszeigenden Kanten (
Kirchhosches Gesetz, die Gesamtmenge des in den Knoten
hinein transportierten Flusses ist gleich der Gesamtmenge des aus dem Knoten heraus transportierten Flusses).
graphen3.pdf, Seite 19
Gesamtuss Der
Gesamtuss oder Wert des Flusses ist gegeben durch X
f (q , j ) =
X
j
(Gesamtmenge, die von Ein Fluss ist
f (i , s )
i
q
nach
s
transportiert wird).
maximal, wenn sein Gesamtuss so groÿ wie
möglich ist.
graphen3.pdf, Seite 20
Beispiel: Fluss mit Wert 4
Die blauen Zahlen geben den Fluss der jeweiligen Kanten an. Der Gesamtuss
F
ist die Summe aller Flüsse, die aus der
Quelle herauskommen bzw. in die Senke hineinlaufen:
F = f (q , a) + f (q , b) = 1 + 3 = 4 = 3 + 1 = f (c , s ) + f (d , s ). graphen3.pdf, Seite 21
Konstruktion von maximalen Flüssen Naiver Ansatz, Teil 1: Finde einen (gerichteten) Weg von
q
nach
s
und ordne allen Kanten entlang des Weges den
gleichen Fluss zu, der sich nach der Kante mit der geringsten Kapazität richtet. Die übrigen Kanten des Netzwerks bekommen Fluss 0.
graphen3.pdf, Seite 22
Konstruktion von maximalen Flüssen Naiver Ansatz, Teil 2: Suche einen weiteren Weg von
s über noch nicht benutzte Kanten (i , j ) mit Fluss f (i , j ) = 0 und transportiere gröÿtmögliche Menge über
q
nach
diesen Weg.
graphen3.pdf, Seite 23
Konstruktion von maximalen Flüssen Naiver Ansatz, Teil 3: Gibt es keine unbenutzten Wege mehr, so suche einen Weg von ausgelastete Kanten
(i , j )
mit
q nach s über noch nicht voll f (i , j ) < g (i , j ). Vergröÿere
den Fluss entlang des Weges so weit wie möglich.
graphen3.pdf, Seite 24
Ende des naiven Ansatzes
Jetzt führt jeder Weg von
q
nach
s
über mindestens eine voll
ausgelastete Kante. Bedeutet dies, dass keine Verbesserung mehr möglich und der Fluss maximal ist?
graphen3.pdf, Seite 25
Nein!
Weitere Verbesserung über augmentierende Wege möglich!
graphen3.pdf, Seite 26
Ein augmentierender Weg ist ein Pfad von
q
nach
s , bei dem Kanten auch in der
falschen Richtung benutzt werden dürfen, wobei:
I Ist
(i , j )
eine Kante des augmentierenden Weges, die in
der richtigen Richtung benutzt wird, so gilt
I Ist
(j , i )
f (i , j ) < g (i , j ).
eine in der falschen Richtung durchlaufene
Kante mit
(i , j ) ∈ E ,
so gilt
f (i , j ) > 0.
graphen3.pdf, Seite 27
Auswerten des augmentierenden Weges Wähle
I I
k > 0 so groÿ wie möglich, so dass
f (i , j ) + k ≤ g (i , j ) für alle Vorwärtskanten des Weges. f (i , j ) ≥ k für alle Rückwärtskanten (j , i ) des Weges.
Dann entsteht ein neuer besserer zulässiger Fluss, indem der Fluss der Vorwärtskanten um Rückwärtskanten um
k
k
erhöht und der der
erniedrigt wird (im Beispiel ist
k = 1).
graphen3.pdf, Seite 28
Bemerkung Die im naiven Ansatz betrachteten Wege sind Spezialfälle von augmentierenden Wegen, nämlich solche ohne Rückwärtskanten.
Algorithmus von Ford-Fulkerson zur Bestimmung eines maximalen Flusses: 1. Starte mit bekanntem zulässigen Fluss (z. B.
f (i , j ) = 0 für alle Kanten)
2. Suche augemtierenden Weg. Existiert ein solcher, ändere den Fluss entsprechend. Existiert kein augmentierender Weg, so ist der aktuelle Fluss maximal. 3. Wiederhole Schritt 2, solange augmentierende Wege existieren.
graphen3.pdf, Seite 29
Aunden eines augmentierenden Weges durch Markierung der Knoten oder durch Betrachten eines gerichteten Graphen
G˜ = (V , E˜ )
mit
I I
(i , j ) ∈ E˜ , (j , i ) ∈ E˜ ,
falls falls
(i , j ) ∈ E (i , j ) ∈ E
f (i , j ) < g (i , j ), und f (i , j ) > 0,
und
G˜ ihre Richtung, voll ausgelastete Kanten mit f (i , j ) = g (i , j ) kehren die Richtung ˜ in beiden um und teilweise ausgelastete Kanten sind in G
d. h. Kanten mit Fluss 0 behalten in
Richtungen vorhanden. Ein augmentiender Weg in
G
entspricht dann einem
gerichteten Pfad (d. h. einem Weg, der keine Knoten mehrfach durchläuft) von
q
nach
s
in
G˜ . Ein solcher kann z. B. durch
Tiefen- oder Breitensuche gefunden werden. graphen3.pdf, Seite 30
Gerichteter Graph im Beispiel
s , jeder in q beginnende führt zwagsläug über a, d und b nach q zurück.
Hier gibt es keinen Weg von Pfad in
G˜
q
nach
Somit gibt keine weiteren augmentierenden Wege im Netzwerk und der gefundene Fluss ist maximal.
graphen3.pdf, Seite 31
Bemerkungen I Man kann Beispiele konstruieren, bei denen der Algorithmus von FordFulkerson nicht nach endlich vielen Schritten einen maximalen Fluss erreicht.
g (i , j ) ganzzahlig, so hat der Algorithmus die Komplexität O (m · w ), wobei m die Zahl der Kanten und w der Wert des maximalen Flusses ist. Eine Variante ist der Algorithmus von Edmonds und Karp,
I Sind die Kapazitäten
I
bei dem immer der kürzeste augmentierende Weg gesucht wird. Dieser Algorithmus hat in jedem Fall eine polynomiale Komplexität.
I Der maximale Wert eines Flusses ist gleich der minimalen
Kapazität eines Schnittes
(Dualitätssatz von FordFulkerson).
graphen3.pdf, Seite 32
Im Beispiel: Kapazität eines Schnitts
Über die rote Linie können maximal 8 Einheiten transportiert werden, d. h. der Schnitt hat Kapazität 8.
graphen3.pdf, Seite 33
Schnitt mit minimaler Kapazität 6
Ein Schnitt durch die Kanten
ac , bc
und
ds
hat die
Kapazität 6, die dem Wert des aktuellen Flusses entspricht. Folglich ist der gefundene Fluss mit Wert 6 maximal. Alle Kanten, die diesen Schnitt kreuzen, sind voll ausgelastet.
graphen3.pdf, Seite 34
Allgemeinere Netzwerke s
s
I Hat ein Netzwerk mehrere Senken 1 , .., n , so fügt man ∗ ∗ einen Noten Knoten sowie Kanten von i nach für alle
i
s
s
s
mit jeweiliger Kapazität unendlich hinzu.
Ein maximaler Fluss im erweiterten Netzwerk mit Quelle ∗ und der einzigen Senke entspricht dann einem
q
s
maximalen Fluss im ursprünglichen Netzwerk mit mehreren Senken.
I Analog geht man bei einem Netzwerk mit mehreren Quellen
q1 , ..., q
n
und Kanten von
vor: Man denietrt eine neue Quelle ∗ nach i für alle .
q
q
i
q∗
graphen3.pdf, Seite 35
Netzwerk mit mehreren Quellen und Senken
graphen3.pdf, Seite 36
Bemerkung Je nach Anwendung können die neuen Kanten endliche Kapazitäten zugewiesen bekommen. Die Kapazität der Kante
q∗q
j
kann die maximale Menge
beschreiben, die von der Quelle
q
j
in das Netz eingespeist
werden kann. Die Kapazität der Kante
s s∗ i
kann die maximale bzw.
gewünschte Menge angeben, die an der Senke
s
i
zu entnehmen
ist.
graphen3.pdf, Seite 37
Modellierung von Knoten mit beschränkter Kapazität Hat ein (innerer) Knoten
i
nur eine beschränkte Kapazität
i
i
k,
so ersetzt man ihn durch zwei Knoten − und + , die durch
k verbunden sind. Die bisher in i ankommenden Kanten (j , i ) kommen nun in i− an, die von i ausgehenden Kanten gehen nun von i+ aus, d. h. Kanten (j , i ) werden zu (j , i− ) und Kanten (i , j ) zu (i+ , j ). Dies hat zur Folge, dass der gesamte durch i laufende Fluss nun durch die neue Kante (i− , i+ ) laufen muss. eine (neue) Kante
(i − , i + )
mit Kapazität
graphen3.pdf, Seite 38
Knoten i mit beschränkter Kapazität k
graphen3.pdf, Seite 39
Beispiel
Gegeben sei obiges Wasserleitungssystem mit zusätzlichen Beschränkungen:
I
An der Quelle Q1 können maximal 5 Einheiten in das Netz eingespeist werden, an Q2 6 Einheiten.
I
Am zentralen Knotenpunkt Z können maximal 9 Einheiten durchgeleitet werden.
I
Die Verbraucher S1 und S3 möchten jeweils 3 Einheiten entnehmen, S2 5 Einheiten. graphen3.pdf, Seite 40
Erweiterter Graph mit einer Quelle
Q∗
und einer Senke
S ∗.
graphen3.pdf, Seite 41
Maximaler Fluss (nicht eindeutug bestimmt) mit Wert 11 und zwei Schnitte minimaler Kapazität.
Da die Kanten
Q ∗ Q1
und
Q ∗ Q2
voll ausgelastet sind, wird die
maximal mögliche Menge in das Netzwerk eingespeist. Da die Kanten
S1 S ∗ , S2 S ∗
und
S3 S ∗
voll ausgelastet sind,
können alle Verbraucher die gewünschte Menge entnehmen. graphen3.pdf, Seite 42
Flüsse und Paarungen G = (V , E ) mit V = L ∪ R ˆ G = (Vˆ , Eˆ ) deniert werden:
Zu jedem bipartiten Graphen ein zugehöriges Netzwerk
I
I
I
kann
Vˆ = V ∪ {q , s } (zu den ursprünglichen Knoten wird eine Quelle q und eine Senke s hinzugefügt.) ˆ die Richtung von L Die Kanten aus G bekommen in G nach R und die Kapazität 1. ˆ zu jedem Knoten l ∈ L eine Kante Zusätzlich enthält E (q , l ) mit Kapazität 1 und zu jedem Knoten r ∈ R eine Kante (r , s ) mit Kapazität 1.
Dann entspricht jedem Matching in zulässiger Fluss in
Gˆ
G
und umgekehrt.
Die zum Matching gehörenden Kanten
(q , l )
bzw.
dabei in
Gˆ
(r , s )
ein ganzzahliger
(l , r )
für alle gepaarten Knoten
l
sowie die Kanten und
r
haben
Fluss 1, die übrigen Kanten Fluss 0. graphen3.pdf, Seite 43
Matching und zugehöriger Fluss
Im Netzwerk haben alle Kanten die Richtung von links nach rechts. Die grünen Kanten haben Fluss 1, die schwarzen Kanten Fluss 0. Der Gesamtuss ist 2 und entspricht der Zahl der Kanten im Matching.
graphen3.pdf, Seite 44
Augmentierende Wege Jedem augmentierenden Weg bezüglich eines Matchings entspricht ein augmentierender Weg bezüglich des zugehörigen Flusses im Netzwerk. Damit ist das Problem, ein maximales Matching zu nden, ein Speziallfall des Problems, einen maximalen Fluss zu nden.
graphen3.pdf, Seite 45