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
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
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)!
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)!
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)!
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)!
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)!
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)!
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)!
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)!
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)!
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)!
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)
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)
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)
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!
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
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
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
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
√
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
. . .
√
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
. . .
√
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
. . .
√
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
√
√
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
. . .
√
√
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
√
√
√
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
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
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
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
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
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
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
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
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
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
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
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)
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)
preflow-push AlgorithmusHeuristiken
10 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II
Institut für Theoretische InformatikAlgorithmik II
Relabelingaggressive local relabelingglobal relabelinggap heuristic
Knotenauswahltwo-phase approach
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
−
−
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
−
−
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
−
−
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−
−
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−
−
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−
−
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
−
−
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
−
−
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
−
−
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
−
−
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
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
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/α
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
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
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
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
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
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
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
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
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
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
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
Ende!
22 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II
Institut für Theoretische InformatikAlgorithmik II
Feierabend!
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
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
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
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
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
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
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
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
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
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
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
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)
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
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−−
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−−
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
−−
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)
−−
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−−
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
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)
−−
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−−
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)
−−
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−−
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)
−−
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
−−
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
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
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
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
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
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
FIFO preflow-push AlgorithmusBeispiel
26 Kobitzsch, Schieferdecker:Übung 5 – Algorithmen II
Institut für Theoretische InformatikAlgorithmik II
und so weiter...