Übung 4 – Algorithmen II - am Institut für Theoretische Informatik

Werbung
Übung 4 – Algorithmen II
Moritz Kobitzsch, Dennis Schieferdecker – {kobitzsch,schieferdecker}@kit.edu
http://algo2.iti.kit.edu/AlgorithmenII.php
Institut für Theoretische Informatik - Algorithmik II
0
Schieferdecker:
KIT –Kobitzsch,
Universität des Landes
Baden-Württemberg und
nationales
Forschungszentrum
in der Helmholtz-Gemeinschaft
Übung
4 – Algorithmen
II
Institut für Theoretische Informatik
www.kit.edu
Algorithmik II
Themenübersicht
Dinitz Algorithmus
Distanz Label
Layergraph
Blocking Flow
Preflow Push Algorithmus
Matchings
1
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
4
2
1
1
1
4
3
2
1
2
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
4
2
1
1
1
4
3
2
1
0
2
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
4
2
1
1
1
4
3
2
1
0
2
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
2
1
4
1
1
1
2
1
3
1
0
2
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
2
1
4
1
1
1
2
1
3
1
0
2
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Distanz Label
geben Distanz im Residualgraphen
(hop-based) zur Senke an
berechnet über rückwärtsgerichtete
Breitensuche
starte bei t
an Knoten v betrachte Kanten
(u , v ) mit f (u , v ) < c (u , v ) bzw.
(v , u )rev mit f (v , u ) > 0
Grundlage für Definition des layered
graph
2
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
2
2
1
4
2
1
1
1
2
1
3
1
0
2
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Schichtgraph für Graph G = (V , E )
Knotenmenge V
Kantenmenge
ES = E 0 ∪ E 0rev
E 0 = {e = (u , v ) ∈ E |f (e ) < c (e ),
d (u ) = d (v ) + 1}
E 0rev = {erev = (v , u )rev |f (v , u ) > 0,
d (u ) = d (v ) + 1}
betrachte Analogie zu Edmonds-Karp
(kürzeste erhöhende Wege)
3
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
2
2
1
4
2
1
1
1
2
1
3
1
0
2
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Blockierender Fluss
Fluss ist blockierend, wenn auf jedem
Weg durch den Graphen mindestens
eine Kante bis zur maximalen Kapazität
ausgelastet ist
→ kein weiterer Fluss möglich ohne
Update des Residualgraph
während Berechnung wird Graph nicht
aktualisiert
blocking flow als atomare Operation
blocking flow i.A. nicht maximal,
selbst im Schichtgraphen nicht
4
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0|1
2
1|1
1
0|1
1|1
3
1
1|1
1|1
0
0|1
1|1
0|1
2
1|1
1
0|1
2
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
x|x
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
x|x
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
x|x
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
x|x
d
d-1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
0|1
0|3
2|5
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
0|1
0|3
2|5
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
0|1
0|3
2|5
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
1|1
1|3
3|5
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Operationen
blocking flow: Berechnung basiert auf
Tiefensuche
drei Operationen
extend - gehe einen Knoten näher ans
Ziel (Schichtgraph)
retreat - Sackgasse gefunden, gehe
zurück, lösche Kante
breakthrough - Tiefensuche hat Senke
erreicht, lösche saturierte Kanten
5
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
t
1|1
1|3
3|5
1
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Kosten pro Iteration
#breakthrough ≤ m
breakthroughs werden durch Kanten ausgelöst
jedes breakthrough saturiert mindestens eine Kante
→ kein breakthrough über saturierte Kante mehr möglich
Laufzeit O (n)
#retreat ≤ m
jedes retreat löscht eine Kante
Laufzeit O (1)
#extends ≤ #retreats + n · #breakthrough
jedes breakthrough kann höchstens n extends benötigen
(sonst Kreis im Weg, Pidgeon-Hole-Principle)
ohne breakthroughs nur retreats → Kanten werden gelöscht
ein extend für ein retreat
Laufzeit O (1)
Gesamtlaufzeit pro Phase O (nm )
maximal n Phasen
6
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Kosten pro Iteration
#breakthrough ≤ m
breakthroughs werden durch Kanten ausgelöst
jedes breakthrough saturiert mindestens eine Kante
→ kein breakthrough über saturierte Kante mehr möglich
Laufzeit O (n)
#retreat ≤ m
jedes retreat löscht eine Kante
Laufzeit O (1)
#extends ≤ #retreats + n · #breakthrough
jedes breakthrough kann höchstens n extends benötigen
(sonst Kreis im Weg, Pidgeon-Hole-Principle)
ohne breakthroughs nur retreats → Kanten werden gelöscht
ein extend für ein retreat
Laufzeit O (1)
Gesamtlaufzeit pro Phase O (nm )
maximal n Phasen (Beweis, wie in Vorlesung, nicht hier)
6
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Kosten pro Iteration - Unit Capacity Network
Amortisierte Kosten
Jedes retreat/breakthrough löscht alle beteiligten Kanten
pro Kante ein extend → zahlt die Kosten
#breakthrough ≤ m, ohne Kosten
#retreat ≤ m, ohne Kosten
#extends ≤ #retreats + #breakthrough = O (m ), Kosten O (1)
Gesamtlaufzeit pro Phase O (m ) = O (n2 )
7
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Anzahl Phasen - Unit Capacity Network
√
Graph nach √ m Phasen hat
mindestens m Layer
(Lemma 1: Jede Phase erhöht Distanz
um mindestens 1)
√
durchschnittlich m/ m Kanten pro
Layer
→ es gibt Layer i mit höchstens
√
m Kanten zu Layer mit Distanz i − 1
induziert Schnitt (im Residualgraphen)
zwischen S = {v |d (v ) ≥√i } und
T = V \ S, Kapazität ≤ m
jede Phase erhöht
√Fluss um mindestens
1 → maximal 2 · m Phasen
8
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Anzahl Phasen - Unit Capacity Network
√
Graph nach √ m Phasen hat
mindestens m Layer
(Lemma 1: Jede Phase erhöht Distanz
um mindestens 1)
√
durchschnittlich m/ m Kanten pro
Layer
→ es gibt Layer i mit höchstens
√
m Kanten zu Layer mit Distanz i − 1
induziert Schnitt (im Residualgraphen)
zwischen S = {v |d (v ) ≥√i } und
T = V \ S, Kapazität ≤ m
jede Phase erhöht
√Fluss um mindestens
1 → maximal 2 · m Phasen
8
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Anzahl Phasen - Unit Capacity Network
√
Graph nach √ m Phasen hat
mindestens m Layer
(Lemma 1: Jede Phase erhöht Distanz
um mindestens 1)
√
durchschnittlich m/ m Kanten pro
Layer
→ es gibt Layer i mit höchstens
√
m Kanten zu Layer mit Distanz i − 1
induziert Schnitt (im Residualgraphen)
zwischen S = {v |d (v ) ≥√i } und
T = V \ S, Kapazität ≤ m
jede Phase erhöht
√Fluss um mindestens
1 → maximal 2 · m Phasen
8
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Anzahl Phasen - Unit Capacity Network
√
Graph nach √ m Phasen hat
mindestens m Layer
(Lemma 1: Jede Phase erhöht Distanz
um mindestens 1)
√
durchschnittlich m/ m Kanten pro
Layer
→ es gibt Layer i mit höchstens
√
m Kanten zu Layer mit Distanz i − 1
induziert Schnitt (im Residualgraphen)
zwischen S = {v |d (v ) ≥√i } und
T = V \ S, Kapazität ≤ m
jede Phase erhöht
√Fluss um mindestens
1 → maximal 2 · m Phasen
8
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Dinitz
Anzahl Phasen - Unit Capacity Network
√
Graph nach √ m Phasen hat
mindestens m Layer
(Lemma 1: Jede Phase erhöht Distanz
um mindestens 1)
√
durchschnittlich m/ m Kanten pro
Layer
→ es gibt Layer i mit höchstens
√
m Kanten zu Layer mit Distanz i − 1
induziert Schnitt (im Residualgraphen)
zwischen S = {v |d (v ) ≥√i } und
T = V \ S, Kapazität ≤ m
jede Phase erhöht
√Fluss um mindestens
1 → maximal 2 · m Phasen
8
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
√
√
m
m−1
1
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0
0
0
3
9
0
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0
0
0
3
9
1
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
0
0
0
3
9
1
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
5
1
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
5
1
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
5
1
0
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
2
1
3
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
2
1
3
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
2
1
3
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Preflow Push
Operationen
Operationen nur auf aktiven Knoten
aktive Knoten haben excess
(inflow > outflow)
relabel
erhöht Level eines Knoten (minimum
aller erreichbaren Nachbarn +1)
erhält d (u ) ≤ d (v ) + 1 für alle (u , v )
im Residualgraph
nur zulässig wenn push vom Knoten
nicht möglich
push
schiebe Fluss entlang Kante (u , v )
Vorraussetzung: d (u ) = d (v ) + 1
9
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
4
0
0
3
2
4
3
0
Residualkante
unsaturierte Kante
saturierte Kante
0
0
0
0
Level
Aktiv > 0 Excess
0
Institut für Theoretische Informatik
Algorithmik II
Matching
Teilmenge von Kanten eines Graphen
Kein Knoten inzident zu mehr als einer
(gematchten) Kante
maximal: keine Kante hinzunehmbar
maximum: kein Matching hat größere
Kardinalität
perfekt: jeder Knoten ist Endpunkt
einer gematchten Kante
Kardinalität: Zahl der Kanten im
Matching
maximum Matching im allgemeinen
über alternierende Pfade berechnet
10
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Matching
Teilmenge von Kanten eines Graphen
Kein Knoten inzident zu mehr als einer
(gematchten) Kante
maximal: keine Kante hinzunehmbar
maximum: kein Matching hat größere
Kardinalität
perfekt: jeder Knoten ist Endpunkt
einer gematchten Kante
Kardinalität: Zahl der Kanten im
Matching
maximum Matching im allgemeinen
über alternierende Pfade berechnet
10
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Matching
Teilmenge von Kanten eines Graphen
Kein Knoten inzident zu mehr als einer
(gematchten) Kante
maximal: keine Kante hinzunehmbar
maximum: kein Matching hat größere
Kardinalität
perfekt: jeder Knoten ist Endpunkt
einer gematchten Kante
Kardinalität: Zahl der Kanten im
Matching
maximum Matching im allgemeinen
über alternierende Pfade berechnet
10
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
maximal aber nicht
maximum
Institut für Theoretische Informatik
Algorithmik II
Matching
Teilmenge von Kanten eines Graphen
Kein Knoten inzident zu mehr als einer
(gematchten) Kante
maximal: keine Kante hinzunehmbar
maximum: kein Matching hat größere
Kardinalität
perfekt: jeder Knoten ist Endpunkt
einer gematchten Kante
Kardinalität: Zahl der Kanten im
Matching
maximum Matching im allgemeinen
über alternierende Pfade berechnet
10
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Matching
Teilmenge von Kanten eines Graphen
Kein Knoten inzident zu mehr als einer
(gematchten) Kante
maximal: keine Kante hinzunehmbar
maximum: kein Matching hat größere
Kardinalität
perfekt: jeder Knoten ist Endpunkt
einer gematchten Kante
Kardinalität: Zahl der Kanten im
Matching
maximum Matching im allgemeinen
über alternierende Pfade berechnet
10
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
modelliere als Flussproblem mit
Knotenkapazitäten
Fluss zwischen den Teilmengen
entspricht gematchten Kanten
1|1
1|1
0|1
1|1
0|1
1|1
1|1
0|1
1|1
0|1
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
modelliere als Flussproblem mit
Knotenkapazitäten
Fluss zwischen den Teilmengen
entspricht gematchten Kanten
1|1
1|1
0|1
1|1
0|1
1|1
1|1
0|1
1|1
0|1
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
modelliere als Flussproblem mit
Knotenkapazitäten
Fluss zwischen den Teilmengen
entspricht gematchten Kanten
1|1
1|1
0|1
1|1
0|1
1|1
1|1
0|1
1|1
0|1
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Bipartite - Matching
Bipartiter Graph: zwei Gruppen
von Knoten, Kanten nicht
innerhalb einer Gruppe
Alternierende Pfade: Wo
starten?
modelliere als Flussproblem mit
Knotenkapazitäten
Fluss zwischen den Teilmengen
entspricht gematchten Kanten
mit gewichten auch bekannt als
Stable Marriage Problem →
Lösung über ungarische
Methode
11
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
1|1
1|1
0|1
1|1
0|1
1|1
1|1
0|1
1|1
0|1
Institut für Theoretische Informatik
Algorithmik II
Matching
Anwendungen
Anwendungen in sämtlichen
Zuweisungsproblemen
. . . Jobs auf Maschinen
. . . Crewscheduling
12
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Crew
Planes
Institut für Theoretische Informatik
Algorithmik II
Ende!
Feierabend!
13
Kobitzsch, Schieferdecker:
Übung 4 – Algorithmen II
Institut für Theoretische Informatik
Algorithmik II
Herunterladen