Ü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