Übung 5 – Algorithmen II - KIT – ITI Algorithmik...

124
0 Kobitzsch, Schieferdecker: Übung 5 – Algorithmen II Institut für Theoretische Informatik Algorithmik II Institut für Theoretische Informatik - Algorithmik II Übung 5 – Algorithmen II Moritz Kobitzsch, Dennis Schieferdecker – {kobitzsch,schieferdecker}@kit.edu http://algo2.iti.kit.edu/AlgorithmenII.php KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Transcript of Übung 5 – Algorithmen II - KIT – ITI Algorithmik...

Page 1: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

0 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Institut für Theoretische Informatik - Algorithmik II

Übung 5 – Algorithmen IIMoritz Kobitzsch, Dennis Schieferdecker – kobitzsch,[email protected]://algo2.iti.kit.edu/AlgorithmenII.php

KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Page 2: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Themenübersicht

1 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Potentialmethode zur AlgorithmenanalyseStapel mit multipop

preflow-push AlgorithmusÜberblickFIFO preflow-pushHeuristiken

Randomisierte AlgorithmenGrundlagenVerifikation von Matrix-Matrix Multiplikation

Page 3: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 4: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel

push(1)

1

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 5: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel

push(5)

1

5

3

2

push(3)

push(2)

push(1)

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 6: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel1

5

3

2pop

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 7: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel1

5

3

pop

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 8: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel1

5

3

multipop(3)

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 9: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel1

5

multipop(3)

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 10: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel1

multipop(3)

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 11: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

2 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Datenstruktur Stapel mit multipoppush(v): Element v oben auf Stapel legen O(1)pop: oberstes Element aus Stapel entfernen O(1)multipop(k): oberste k Elemente aus Stapel entfernen O(n)

→ Laufzeit von n Operationen ist im worst-case O(n2)

Stapel

multipop(3)

Behauptung: Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 12: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

PotentialmethodeAmortisierte Analyse

3 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = #Elemente auf Stack ≥ 0

push(v): ∆Φ = 1 (Erhöhung)pop: ∆Φ ∈ −1,0 (Erniedrigung)multipop(k): ∆Φ ∈ −k , . . . ,0 (Erniedrigung)

da #push ≤ n (bei n Operationen)→ maximal n Erhöhungen→ Erniedrigungen um maximal n möglich

→ insgesamte Änderungen um ≤ 2n

→ maximale Kosten O(n)(Erhöhung oder Erniedrigung um 1 kostet O(1))

→ Was ist mit pop / multipop auf leerem Stack?

Worst-case Laufzeit für n Operationen ist amortisiert O(n)!

Page 13: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusWiederholung

4 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

allgemeiner Ablauf1. wähle aktiven Knoten v2. falls gültige Kante (v ,w) existiert: push

schiebe Fluss entlang (v ,w)

(f(v ,w) = f(v ,w) + mincf(v ,w),excess(v))

3. ansonsten: relabelerhöhe Level von v

(d(v) = d(v) + 1)

Bezeichnungenaktiver Knoten(Knoten v aktiv gdw. excess(v) = inflow(v)− outflow(v) > 0)

gültige Kante(Kante (v ,w) ∈ Gf ist gültig, wenn Level d(v) = d(w) + 1)

Page 14: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusWiederholung

4 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

allgemeiner Ablauf1. wähle aktiven Knoten v WELCHEN?2. falls gültige Kante (v ,w) existiert: push WELCHE?

schiebe Fluss entlang (v ,w) WIEVIEL?

(f(v ,w) = f(v ,w) + mincf(v ,w),excess(v))

3. ansonsten: relabelerhöhe Level von v WIEVIEL?

(d(v) = d(v) + 1)

Bezeichnungenaktiver Knoten(Knoten v aktiv gdw. excess(v) = inflow(v)− outflow(v) > 0)

gültige Kante(Kante (v ,w) ∈ Gf ist gültig, wenn Level d(v) = d(w) + 1)

Page 15: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusWiederholung

4 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

allgemeiner Ablauf1. wähle aktiven Knoten v WELCHEN?2. falls gültige Kante (v ,w) existiert: push WELCHE?

schiebe Fluss entlang (v ,w) WIEVIEL?(f(v ,w) = f(v ,w) + mincf

(v ,w),excess(v))3. ansonsten: relabel

erhöhe Level von v WIEVIEL?(d(v) = d(v) + 1)

Bezeichnungenaktiver Knoten(Knoten v aktiv gdw. excess(v) = inflow(v)− outflow(v) > 0)

gültige Kante(Kante (v ,w) ∈ Gf ist gültig, wenn Level d(v) = d(w) + 1)

Page 16: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusÜbersicht

5 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterschiedliche Auswahl des aktiven Knoten:generic preflow-push O(n2m)

FIFO preflow-push O(n3)

highest-level preflow-push O(n2√m)

Unterschiedliches relabel:aggressive local relabelingglobal relabelinggap heuristic

→ nur Heuristiken, aber in Praxis deutliche Beschleunigung!

Page 17: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusÜberblick

6 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterschiede zu generic preflow-pushVerwalte aktive Knoten in FIFO Liste(füge Knoten nach relabel bzw. aktiv gewordene Knoten hinten ein)

push auf aktivem Knoten bis relabel oder excess abgebaut(typisches Vorgehen bei Ausführung per Hand)

Theorem: FIFO preflow-push findet in O(n3) einen maximum Fluss

Page 18: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

82

03

14

01

01

01

0|9

0|2

0|1

0|3

57

06

06

0|2

0|4

. . .

G

Page 19: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

82

03

14

01

01

01

0|9

0|2

0|1

0|3

57

06

06

0|2

0|4

. . .

start phase

Page 20: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

82

13

04

01

01

01

1|9

0|2

0|1

0|3

57

06

06

0|2

0|4

. . .

non− saturating

Page 21: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

52

13

04

01

31

01

1|9

0|2

0|1

3|3

57

06

06

0|2

0|4

. . .

Page 22: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

32

13

04

21

31

01

1|9

2|2

0|1

3|3

57

06

06

0|2

0|4

. . .

Page 23: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

22

13

04

21

31

11

1|9

2|2

1|1

3|3

57

06

06

0|2

0|4

. . .

Page 24: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

23

13

04

21

31

11

1|9

2|2

1|1

3|3

57

06

06

0|2

0|4

. . .

relabel

Page 25: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

23

13

04

21

31

11

1|9

2|2

1|1

3|3

17

06

46

0|2

4|4

. . .

Page 26: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

23

13

04

21

31

11

1|9

2|2

1|1

3|3

07

16

46

1|2

4|4

. . .non− saturating

Page 27: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

7 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Unterteile Ablauf in Phasen:alle zu Phasenbeginn aktiven Knoten werden genau einmal betrachtet→ pro Phase baut jeder Knoten max. 1x allen excess ab→ pro Phase macht jeder Knoten max. 1x einen non-saturating push

→ #non-saturating ≤ n ·#phases

23

13

04

21

31

11

1|9

2|2

1|1

3|3

07

16

46

1|2

4|4

. . .

next phase

Page 28: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

Page 29: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

52

02

0|9Φ = 2

Page 30: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

53

02

0|9

Φ = 3

Page 31: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

27

02

52

. . .

Φ = 70|9

Page 32: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

27

02

0|9

53

. . .

Φ = 7

Page 33: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

27

06

0|9

Φ = 7

Page 34: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

07

26

2|9

Φ = 6

Page 35: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

4< n

0n

0|9

s

2n+ 1

. . .

Φ = n + 1

Page 36: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

4< n

0n

2|9

s

0n+ 1

. . .

Φ < n

Page 37: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeweis Laufzeit

8 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Sei Φ = maxd(v) | v ∈ Gf aktiv ≥ 0(Potential, dass gleich dem höchsten aktiven Level ist)

Phase mit relabel: ∆Φ ≤ 1 (Erhöhung)Phase ohne relabel: ∆Φ ≤ −1 (Erniedrigung)

da #relabel ≤ 2n2 (siehe Vorlesung)→ maximal 2n2 Erhöhungen→ maximal 2n2 Erniedrigungen

→ #phases ≤ 4n2

→ #non-saturating ≤ n ·#phases ≤ n · 4n2 = 4n3

restlicher Beweis wie bei generic preflow-push

Page 38: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusLaufzeit

9 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Tgeneric preflow-push = Tinit + Tpushes + Trelabels ∈ O(n2m)

Tinit = n + mTpushes = #pushes · (Tnode selection + Tedge selection + Tpush op)Trelabels = #relabels · (Tnode selection + Tedge selection + Trelabel op)

mit

Tpush op = Trelabel op = Tnode selection = O(1)#relabels ≤ 2n2 (Lemma 7)#pushes = #saturating +#non-saturating

(#pushes +#relabels) · Tedge selection ≤ 4nm (Lemma 10)

#saturating ≤ nm (Lemma 8)#non-saturating ∈ O(n2m) (Lemma 9)

Page 39: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusLaufzeit

9 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

TFIFO preflow-push = Tinit + Tpushes + Trelabels ∈ O(n3)

Tinit = n + mTpushes = #pushes · (Tnode selection + Tedge selection + Tpush op)Trelabels = #relabels · (Tnode selection + Tedge selection + Trelabel op)

mit

Tpush op = Trelabel op = Tnode selection = O(1)#relabels ≤ 2n2 (Lemma 7)#pushes = #saturating +#non-saturating

(#pushes +#relabels) · Tedge selection ≤ 4nm (Lemma 10)

#saturating ≤ nm (Lemma 8)#non-saturating ∈ O(n3) (FIFO)

Page 40: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

10 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Relabelingaggressive local relabelingglobal relabelinggap heuristic

Knotenauswahltwo-phase approach

Page 41: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

52

Beispiel 1

Page 42: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

53

Beispiel 1

Page 43: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

54

Beispiel 1

Page 44: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

55

Beispiel 1

Page 45: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

56

Beispiel 1

Page 46: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

52

Beispiel 1

Page 47: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

02

05

02

56

Beispiel 1

Page 48: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

0n

00

00

s

0|9

0|1

Beispiel 2

Page 49: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

0n

90

00

s

9|9

0|1

9

Beispiel 2

Page 50: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

0n

91

00

s

9|9

0|1

99

Beispiel 2

Page 51: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

0n

81

10

s

1|1

9|9

9

1

Beispiel 2

Page 52: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

11 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

aggressive local relabelingerhöhe Level in einem Schritt, so dass gültige Kante existiert

d(v) = 1 + min(v ,w)∈E f

d(w)

(d(w) ≥ d(v), wenn keine gültige Kante in Gf existiert!)

0n

81

10

s

1|1

9|9

9

1

n× relabelor just 1 ?

Beispiel 2

Page 53: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

00

00

t

00

0|5

0|3 0|2 0|1

Beispiel 1

Page 54: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

00

50

t

00

5|5

0|3 0|2 0|1

5

Beispiel 1

Page 55: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

01

53

t

02

0|5

0|10|2

0|3

5

Beispiel 1

Page 56: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

00

00

t

00

0|5

0|3 0|2 0|1

Beispiel 2

Page 57: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

00

21

t

31

5|5

3|30|2

0|1

5

3

Beispiel 2

Page 58: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

05

s

00

01

26

t

32

5|53|3

0|20|1

5

3

Beispiel 2

Page 59: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

12 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

global relabelingsetze Levels auf

d(v) =

µ(v , t) falls t von v erreichbarn + µ(v , s) sonst, falls s von v erreichbar

2n− 1 sonst

Berechnung der Distanzen µ(v , ·) über Breitensuche in O(m)(nur alle Ω(m) Schritte, damit Kosten O(1) pro Schritt)

0n

xn+ 1

02n− 1

s00

a1

z2

t

. . .

yn+ 2

Allgemein

Page 60: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

04

04

02

53

Page 61: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

04

04

02

54

Page 62: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

0n

0n

02

5n

Page 63: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

2k

3k − 2

0k − 3

0k − 3

Allgemein

Page 64: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

2k

3k + 1

0k − 3

0k − 3

Allgemein

Page 65: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

2k

3k + 1

0k − 3

0k − 3

Allgemein

Page 66: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

13 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gap heuristicwird ein Level durch relabel(v) leer,setze Level von v und aller von v erreichbaren Knoten auf

d(w) = maxd(w),n

(Lücke kann nie mehr überwunden werden, Fluss nur noch zurück zu s)

Allgemein2

3k + 1

0k − 3

0k − 3

k + 2

Page 67: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

−5

00

−0

00

00

0|10|20|3

0|4

s

t

Page 68: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

00 0

40

00

0|10|20|3

4|4

s

t

4

Page 69: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

30 0

11 0

00|10|2

3|3

s

t

4

4|4 3

Page 70: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

30 0

16

00

0|10|2

3|3

s

t

4

4|43

Page 71: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

11

0

16

20

0|1

s

t2|2

23|3

3

4

4|4−

Page 72: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

17

0

16

20

0|1

s

t

2|22

4

4|4

3

3|3−

Page 73: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

17

0

16

11

s

t

4

4|4

3

3|3

1|1

1

2|2

2−

Page 74: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

17

0

16

18

s

t

4

4|43|3

1|1

2|23

2

Page 75: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

27

0

16

08

s

t

4

4|43|3

1|1

1|23

1

Page 76: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

07

0

36

08

s

t

4

4|41|3

1|1

1|21

1

Page 77: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusHeuristiken

14 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

two-phase approachPhase 1: wähle nur Knoten Level d(v) < n aus→ erzeugt maximum preflow→ korrekter Fluss in t

Phase 2: nur noch Knoten mit Level d(v) ≥ n übrig→ Fluss nur nach s möglich

5

07

0

06

08

s

t

1

1|41|3

1|1

1|21

1

Page 78: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenÜbersicht

15 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Las Vegas Algorithmusimmer korrekte/optimale LösungLaufzeit ist Zufallsvariable→ erwartete Laufzeit E[T ]Bsp.: Quicksort

Monte Carlo Algorithmusfalsche/suboptimale Lösung möglich→ mit Wahrscheinlichkeit pdeterministische LaufzeitBsp.: Miller-Rabin Primzahltest,

nicht vorbereiteter Student beim multiple-choice Test

Page 79: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMonte Carlo Simulation

16 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Monte Carlo Simulationnicht zu verwechseln mit Monte Carlo Algorithmus!Zufallsexperimente sehr oft ausführen (Gesetz der großen Zahlen)je länger / öfter ausgeführt, desto bessere Ergebnisse

Alternative zur analytischen LösungVerteilungsfunktion unbekannter ZufallsvariablenNachbildung komplexer Prozesse

Page 80: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenLas Vegas→ Monte Carlo

17 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

geg: Las Vegas Algorithmus mit erwarteter Laufzeit E[T ] = f (n)ges: Monte Carlo Algorithmus mit Laufzeit O(f (n)), Fehlerrate p

Idee: Abbruch nach Zeit αf (n)Ausgabe FALSCH, wenn Algorithmus abgebrochen wurdeP[T > αf (n)] ≤ 1/α (Markov Ungleichung)

→ Monte Carlo Algorithmus mit Laufzeit αf (n) und Fehlerrate p = 1/α

Page 81: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMonte Carlo→ Las Vegas

18 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

geg: Monte Carlo Algorithmus mit Laufzeit O(f (n)), Fehlerrate p,Korrektheit in O(g(n)) prüfbar

ges: Las Vegas Algorithmus mit erwarteter Laufzeit E[T ]

Idee: Wiederhole MC bis korrekte Ergebnis gefundenLaufzeit T ≤ i · O(f (n) + g(n)) (i Schritte benötigt)

E[T ] ≤ E[i ] · O(f (n) + g(n))E[i ] = ∑∞

k=1 k · pk−1 · (1− p) = 11−p

(nach ∑∞k=1 kxk = x/(1− x)2, x < 1)

→ Las Vegas Algorithmus mit erwarteter Laufzeit E[T ] ≤ O(f (n)+g(n))1−p

Page 82: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

19 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Aufgabe: Überprüfe, ob A · B = C für Matrizen A,B,C

deterministisch:berechne A · B und vergleiche mit C

→ Laufzeit O(n3) (naiv), O(n2.37) (best)

randomisiert:Wähle 0-1 Vektor r = (r1, . . . , rn) zufälligWenn A(Br ) = Cr dann KORREKT, sonst FALSCH

→ Laufzeit O(n2)

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

Page 83: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

19 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Aufgabe: Überprüfe, ob A · B = C für Matrizen A,B,C

deterministisch:berechne A · B und vergleiche mit C

→ Laufzeit O(n3) (naiv), O(n2.37) (best)

randomisiert:Wähle 0-1 Vektor r = (r1, . . . , rn) zufälligWenn A(Br ) = Cr dann KORREKT, sonst FALSCH

→ Laufzeit O(n2)

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

r

Page 84: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

19 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Aufgabe: Überprüfe, ob A · B = C für Matrizen A,B,C

deterministisch:berechne A · B und vergleiche mit C

→ Laufzeit O(n3) (naiv), O(n2.37) (best)

randomisiert:Wähle 0-1 Vektor r = (r1, . . . , rn) zufälligWenn A(Br ) = Cr dann KORREKT, sonst FALSCH

→ Laufzeit O(n2)

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

r

Page 85: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

19 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Aufgabe: Überprüfe, ob A · B = C für Matrizen A,B,C

deterministisch:berechne A · B und vergleiche mit C

→ Laufzeit O(n3) (naiv), O(n2.37) (best)

randomisiert:Wähle 0-1 Vektor r = (r1, . . . , rn) zufälligWenn A(Br ) = Cr dann KORREKT, sonst FALSCH

→ Laufzeit O(n2)

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

C r

Page 86: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

19 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Aufgabe: Überprüfe, ob A · B = C für Matrizen A,B,C

deterministisch:berechne A · B und vergleiche mit C

→ Laufzeit O(n3) (naiv), O(n2.37) (best)

randomisiert:Wähle 0-1 Vektor r = (r1, . . . , rn) zufälligWenn A(Br ) = Cr dann KORREKT, sonst FALSCH

→ Laufzeit O(n2)

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

rC

Page 87: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

20 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

Umformung:ABr = Cr ⇔ (AB −C)r = 0⇔ Dr = 0

Wann ist Dr = 0, bei D 6= 0?Dr = 0⇒ ∑n

j=1 D1,j rj = 0 (betrachte oBdA Element (Dr )1)

⇒ r1 = ∑nj=2 D1,j rj /D1,1 (oBdA D1,1 6= 0)

Annahme: Werte für r2...n bereits festgelegt→ noch 2 Möglichkeiten für r1, Gleichheit bei maximal einer→ P[Dr = 0] ≤ 0.5

→ Fehlerrate p ≤ 0.5

Page 88: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

20 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

Umformung:ABr = Cr ⇔ (AB −C)r = 0⇔ Dr = 0

Wann ist Dr = 0, bei D 6= 0?Dr = 0⇒ ∑n

j=1 D1,j rj = 0 (betrachte oBdA Element (Dr )1)

⇒ r1 = ∑nj=2 D1,j rj /D1,1 (oBdA D1,1 6= 0)

Annahme: Werte für r2...n bereits festgelegt→ noch 2 Möglichkeiten für r1, Gleichheit bei maximal einer→ P[Dr = 0] ≤ 0.5

→ Fehlerrate p ≤ 0.5

D r

Page 89: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

20 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

Umformung:ABr = Cr ⇔ (AB −C)r = 0⇔ Dr = 0

Wann ist Dr = 0, bei D 6= 0?Dr = 0⇒ ∑n

j=1 D1,j rj = 0 (betrachte oBdA Element (Dr )1)

⇒ r1 = ∑nj=2 D1,j rj /D1,1 (oBdA D1,1 6= 0)

Annahme: Werte für r2...n bereits festgelegt→ noch 2 Möglichkeiten für r1, Gleichheit bei maximal einer→ P[Dr = 0] ≤ 0.5

→ Fehlerrate p ≤ 0.5

Page 90: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

20 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Behauptung: Wenn AB 6= C dann P[ABr = Cr ] ≤ 0.5

Umformung:ABr = Cr ⇔ (AB −C)r = 0⇔ Dr = 0

Wann ist Dr = 0, bei D 6= 0?Dr = 0⇒ ∑n

j=1 D1,j rj = 0 (betrachte oBdA Element (Dr )1)

⇒ r1 = ∑nj=2 D1,j rj /D1,1 (oBdA D1,1 6= 0)

Annahme: Werte für r2...n bereits festgelegt→ noch 2 Möglichkeiten für r1, Gleichheit bei maximal einer→ P[Dr = 0] ≤ 0.5

→ Fehlerrate p ≤ 0.5

fixed

Page 91: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Randomisierte AlgorithmenMatrix-Matrix Multiplikation

21 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Beschleunigung durch probability boosting(nur bei p ≤ 0.5 schnelle Konvergenz)

Wiederhole Test k mal mit unterschiedlicher Wahl von rEin Test liefert FALSCH→ AB 6= C, fertig

Alle Tests liefern KORREKT→ false positive mit Wahrscheinlichkeit

P[ABr = Cr ] ≤ 0.5k

→ Laufzeit O(kn2)(linear längere Laufzeit bei exponentiell weniger Fehler)

k0 2 4 6 8 10

p

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,0

Page 92: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Ende!

22 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Feierabend!

Page 93: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

Zusatzmaterialnicht auf Fehler geprüft!

23 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

preflow-push Algorithmusausgewählte Beweise

Lemma 5: Aktive Knoten haben Weg zu s in Gf

Lemma 9: #non-saturating ∈ O(n2m)

ausführliches Beispiel FIFO preflow-push

Page 94: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

Page 95: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

Page 96: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

Page 97: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

wu

Page 98: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

uw

Page 99: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

uw

Page 100: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

wu

Page 101: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

wu

Page 102: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe ≤ 0 (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

wu

Page 103: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push Algorithmus

24 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 5: Für jeden aktiven Knoten v existiert ein Weg in Gf zu s(intuitiv: man kann Fluss auf dem gleich Weg zurück- wie hinschicken)

Beweis:Unterteile Gf in von v erreichbare Knoten (S) und den Rest (T )∑u∈S excess(u) = ∑e∈E∩T×S fe −∑e∈E∩S×T fe ≤ 0 (in G!)

in Gf nur (u,w) ∈ T × S, kein (u,w) ∈ S × T(sonst w von v erreichbar→ w ∈ S)in G (u,w) ∈ T × S mit f(u,w) = 0oder (u,w) ∈ S × T mit f(u,w) = c(u,w)

→ s ∈ S (da excess(v) > 0→ und nur excess(s) < 0 möglich)

v

Gf

S

T

wu

Page 104: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

preflow-push AlgorithmusLaufzeit generic preflow-push

25 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Lemma 9: #non-saturating ∈ O(n2m)

Sei Φ := ∑ d(v) ≥ 0, v aktivrelabel: ∆Φ = 1saturating push: ∆Φ ≤ 2n (Erhöhung)non-saturating push: ∆Φ ≤ −1 (Erniedrigung)

da #relabels ≤ 2n2, #saturating ≤ nm (siehe Vorlesung)→ maximal 2n2 · 1 + nm · 2n Erhöhungen→ maximal gleich viele Erniedrigungen

→ #non-saturating ≤ 2n2 + 2n2m ∈ O(n2m)(da nur bei non-saturating push Erniedrigungen)

Page 105: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

23

13

04

21

31

11

1|9

2|2

1|1

3|3

07

16

46

1|2

4|4

. . .

next phase

Page 106: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

00

G

00

00

0s t

a

b

c

0|9

0|2

0|3

0|3

0|1

0|25−−

Page 107: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

90

G

00

00

0s t

a

b

c

9|9

0|2

0|3

0|3

0|1

0|2

a

start phase 1

5−−

Page 108: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

91

G

00

00

0s t

a

b

c

9|9

0|2

0|3

0|3

0|1

0|2

relabel

√5

remove()=a

−−

Page 109: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

91

G

00

00

0s t

a

b

c

9|9

0|2

0|3

0|3

0|1

0|2

a

√5

insert(a)

−−

Page 110: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

91

G

00

00

0s t

a

b

c

9|9

0|2

0|3

0|3

0|1

0|2

start phase 2

a

5−−

Page 111: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

71

G

20

00

0s t

a

b

c

9|9

2|2

0|3

0|3

0|1

0|25−−

remove()=a

Page 112: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

71

G

20

00

0s t

a

b

c

9|9

2|2

0|3

0|3

0|1

0|2

b

5

insert(b)

−−

Page 113: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

41

G

20

30

0s t

a

b

c

9|9

2|2

3|3

0|3

0|1

0|2

b

5−−

Page 114: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

41

G

20

30

0s t

a

b

c

9|9

2|2

3|3

0|3

0|1

0|2

b

5

insert(c)

−−

Page 115: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

46

G

20

30

0s t

a

b

c

9|9

2|2

3|3

0|3

0|1

0|2

b

relabel

√5−−

Page 116: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

546

G

20

30

0s t

a

b

c

9|9

2|2

3|3

0|3

0|1

0|2

b

√a

insert(a)

−−

Page 117: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

546

G

20

30

0s t

a

b

c

9|9

2|2

3|3

0|3

0|1

0|2

b

a

start phase 3

−−

Page 118: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

546

G

1

30

0s t

a

b

c

9|9

2|2

3|3 0|1

0|2

a

√relabel2

0|3

remove()=b

Page 119: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

c

546

G

1

30

0s t

a

b

c

9|9

2|2

3|3 0|1

0|2

a

√2

0|3

insert(b)

b

Page 120: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

546

G

2

0s t

a

b

c

9|9

2|2

3|3a

1

31

0|1

0|2

0|3

relabel

b

remove()=c

Page 121: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

546

G

2

0s t

a

b

c

9|9

2|2

3|3a

1

31

0|1

0|2

0|3

insert(c)

bc

Page 122: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

506

G

0s t

a

b

c

5|9

2|2

3|3

remove()=a

√21

31

0|1

0|2

0|3

√√

bc

non− saturating push

Page 123: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

506

G

0s t

a

b

c

5|9

2|2

3|3

21

31

0|1

0|2

0|3

bc

start phase 4

Page 124: Übung 5 – Algorithmen II - KIT – ITI Algorithmik IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS11/uebung_05.pdf · FIFO preflow-push Algorithmus Überblick 6 Kobitzsch, Schieferdecker:

FIFO preflow-push AlgorithmusBeispiel

26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

und so weiter...