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



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

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