Bipartite Graphen Beispiele

Werbung
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 , Ẽ )
mit
I
I
(i , j ) ∈ Ẽ ,
(j , i ) ∈ Ẽ ,
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
um und teilweise ausgelastete Kanten sind in G̃ in beiden
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
Pfad in G̃ führt zwagsläug über a, d und b nach q zurück.
Hier gibt es keinen Weg von
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
ein zugehöriges Netzwerk Ĝ = (V̂ , Ê ) deniert werden:
Zu jedem bipartiten Graphen
I
I
I
kann
V̂ = V ∪ {q , s } (zu den ursprünglichen Knoten wird eine
Quelle q und eine Senke s hinzugefügt.)
Die Kanten aus G bekommen in Ĝ die Richtung von L
nach R und die Kapazität 1.
Zusätzlich enthält Ê zu jedem Knoten l ∈ L eine Kante
(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
und umgekehrt.
Die zum Matching gehörenden Kanten
(q , l )
bzw.
dabei in
Ĝ
(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
Herunterladen