5. Übung – Algorithmen II - Johannes Singler

Werbung
5. Übung – Algorithmen II
Johannes Singler
Institut für Theoretische Informatik, Prof. Sanders
Singler:
1 KITJohannes
– Universität des
Landes Baden-Württemberg und
nationales
Forschungszentrum
in der Helmholtz-Gemeinschaft
5. Übung
– Algorithmen
II
Fakultät für Informatik
Institut für Theoretische
Informatik
www.kit.edu
Organisatorisches
Übungsblätter
Das dritte Übungsblatt steht seit Dienstag online.
Die Musterlösung des dritten Übungsblatts erscheint am 2.12.
Veranstaltungen
Heute zuerst Vorlesung durch Übungsleiter.
Am 2.12. keine Übung, sondern nur Vorlesung.
2 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Inhalt heute
1
2
3
4
5
Wiederholung Kostenminimale Flüsse
Beispiellauf des Algorithmus
Demo
Beispiel zu Matchings
Wiederholung Randomisierte Algorithmen
Beispiel zu Cuckoo Hashing
Perfektes Hashing konkret
3 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Kostenminimale Flüsse
Problemdefinition: Folie 235 der Vorlesung
„Bewege Gut unter Einschränkungen möglichst billig
von Angebot (Quellen) zu Nachfrage (Senken).“
„Transportproblem“: keine Beschränkung der Kapazität
Modellierung mit s und t wie bei Maximalen Flüssen wäre auch
möglich, ist in der Literatur aber nicht üblich.
Von s führen Kanten zu allen Quellen.
Von allen Senken führen Kanten zu t
Algorithmus mittels Zyklenaugmentierung: Folie 236 der
Vorlesung
basierend auf Optimalitätskriterium
inkrementelle Kostenreduzierung, Fluss bleibt immer zulässig
konzeptuell ähnlich zu Ford-Fulkerson
„genauso“ langsame Laufzeit:
pseudo-polynomiell (Folie 411 der Vorlesung)
4 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimale Flüsse:
Residualgraph
costf : Residualgraph der Kosten
Kante in Gegenrichtung: negative Kosten der eigentlichen Kante.
Fluss über diese Gegenkante zu schicken reduziert Fluss,
spart also Kosten
Fluss f über Zyklus mit negativen Kosten c im Kreis schieben:
Mengen an Knoten ändern sich nicht,
aber wir sparen f · c Kosten
Fluss geht quantitativ nicht ein, wir sparen so oder so
3 · −6
2·6
(3/5) · 6
a
b
(1/2) · 4
5 Johannes Singler:
5. Übung – Algorithmen II
a
b
1·4
1 · −4
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimale Flüsse:
Negative Zyklen
Wie findet man einen negativen Zyklus?
Bellman-Ford-Algorithmus zum Finden kürzester Wege
in jeder starken Zusammenhangskomponente (SCC) extra,
von beliebigem Knoten in SCC
Algorithmus terminiert mit inkonsistenten Kosten.
Finde negativen Zyklus mit wiederholter Tiefensuche
(ist ein Baum, wenn kein negativer Zyklus vorhanden ist).
-1
a
b −100
-1
6 Johannes Singler:
5. Übung – Algorithmen II
c −101
-1
d −102
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Eingabegraph G, noch kein (konsistenter) Fluss
0·4 10
d
-5
0·
6
20
c
0
2
0·
20
0·2 25
0·1 20
0·
a
25
0·5 25
7
30
b
0
e
-20
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Hinzufügen von s und t
b
0 25 a
0
20
5
20
20
t
0
0
0
0 20
s
d
30
0 25
0
0 10
c
0 25
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Finden eines Maximalen Flusses zwischen s und t
b
20
t
20
10
5
20
20
0
5
15 20
s 25 25 a
d
30
15 25
25
10 10
c
5 25
e
alle Kanten ausgehend s voll ausgelastet ⇒ zulässiger Fluss
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Initialer zulässiger Fluss, Kosten 335
a
0·
6
d
20
30
15·5 25
·7
25
10·4 10
15·1 20
b
2
0·
1
20
c
5·2 25
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Residualgraph, Zyklus mit Gesamtkosten -6
d
-1
-2
2
1
5
a
-4
7
-5
-7
b
6
c
-2
2
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Augmentieren mit 15 ⇒ Kosten 245
a
15
·
6
d
20
30
0·5 25
·7
10
10·4 10
15·1 20
b
2
0·
1
20
c
5·2 25
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Residualgraph, Zyklus mit Gesamtkosten -4
-4
d
2
1
5
a
-1
7
-2
-7
b
-6
6
c
-2
2
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Augmentieren mit 5 ⇒ Kosten 225
b
6
2
0·
20
1
10·1 20
a
20
·
d
30
0·5 25
7
5·
5·4 10
20
c
10·2 25
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Residualgraph, Zyklus mit Gesamtkosten -1
-4
4
d
2
1
5
a
-1
7
-2
-7
b
-6
c
-2
2
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Augmentieren mit 10 ⇒ Kosten 215
b
6
2
0·
20
0·1 20
a
20
·
d
30
0·5 25
7
5·
5·4 10
20
c
20·2 25
e
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimaler Fluss Beispiel
Residualgraph, keine Zyklen mit negativen Gesamtkosten mehr
-7
b
-4
4
d
7
2
1
5
a
-6
c
-2
2
e
Kostenminimaler Fluss gefunden!
Fluss Kosten Kapazität
7 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Kostenminimale Flüsse: Demo
CATBox
http://biomaps.rutgers.edu/~schliep/CATBox/
8 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Integralitätsgarantie
Für Maximalen Fluss und Kostenminimalen Fluss gilt:
Sind die Kapazitäten (und ggf. die Angebote/Nachfragen) ganzzahlig,
so gibt es einen ganzzahligen Maximalen/Kostenminimalen Fluss,
und die Flüsse auf den einzelnen Kanten sind ebenfalls ganzzahlig.
Es kann natürlich zusätzlich auch nichtganzzahlige Flüsse geben.
Die Algorithmen ergeben ganzzahlige Flüsse,
auf Grund von Augmentierung/Push,
die von ganzzahliger Residualkapazität beschränkt wird.
Wird für viele Anwendungen benötigt (siehe auch Übungsblatt).
9 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Matchings
Folien 184, 240 der Vorlesung: Cardinality bzw. Weighted
Anwendung Graphkontraktion in ungerichteten Graphen
Reduziere Anzahl Knoten um konstanten Faktor
mittels Kontraktion von Maximal (nicht Maximum) Matching
⇒ logarithmische Anzahl Phasen
hierarchische Graphpartitionierung
Boruvka-Algorithmus für Minimale Spannbäume
Ausgangsgraph
e
h
c
a
b
i
f
10 Johannes Singler:
5. Übung – Algorithmen II
g
d
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Matchings
Folien 184, 240 der Vorlesung: Cardinality bzw. Weighted
Anwendung Graphkontraktion in ungerichteten Graphen
Reduziere Anzahl Knoten um konstanten Faktor
mittels Kontraktion von Maximal (nicht Maximum) Matching
⇒ logarithmische Anzahl Phasen
hierarchische Graphpartitionierung
Boruvka-Algorithmus für Minimale Spannbäume
Matching (eventuell gewichtet)
e
h
c
a
b
i
f
10 Johannes Singler:
5. Übung – Algorithmen II
g
d
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Matchings
Folien 184, 240 der Vorlesung: Cardinality bzw. Weighted
Anwendung Graphkontraktion in ungerichteten Graphen
Reduziere Anzahl Knoten um konstanten Faktor
mittels Kontraktion von Maximal (nicht Maximum) Matching
⇒ logarithmische Anzahl Phasen
hierarchische Graphpartitionierung
Boruvka-Algorithmus für Minimale Spannbäume
Kantenkontraktion
h
eg
ab
cf
10 Johannes Singler:
5. Übung – Algorithmen II
di
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung
Randomisierte Algorithmen
1
2
3
Las Vegas: richtig, aber manchmal langsam
Monte Carlo: (immer gleich) schnell, aber manchmal falsch
Monte-Carlo-Simulation:
zufallsverteilte numerischer Abweichung von korrekter Lösung
unserer Meinung nach etwas anderes als ein Monte-Carlo-Algorithmus
11 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Wiederholung Cuckoo Hashing
Folie 251 der Vorlesung
O(1) Zugriff auch im schlechtesten Fall
erwartete Laufzeit wird voll auf insert abgeschoben
12 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
a
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
b
a
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
13 Johannes Singler:
5. Übung – Algorithmen II
b
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
c
a
13 Johannes Singler:
5. Übung – Algorithmen II
b
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
c
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
d
c
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
c
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
d
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
e
c
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
d
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
c
a
b
e
d
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
d
a
b
e
c
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
d
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
d
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
f
d
13 Johannes Singler:
5. Übung – Algorithmen II
a
b
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
d
a
f
e
c
b
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
d
b
f
e
c
a
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
13 Johannes Singler:
5. Übung – Algorithmen II
d
b
f
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
13 Johannes Singler:
5. Übung – Algorithmen II
d
b
f
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
neu einfügen
g
a
13 Johannes Singler:
5. Übung – Algorithmen II
d
b
f
e
c
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
d
b
f
g
c
e
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
d
e
f
g
c
b
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
d
e
b
g
c
f
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
d
e
b
g
f
c
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
c
e
b
g
f
d
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
a
c
e
b
d
f
g
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Cuckoo Hashing Beispiel
5 Knoten, 6 Kanten ⇒ Konflikt
a
c
e
b
d
f
g
13 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Perfektes Hashing
Wie groß ist eine Hashfunktion?
bisher intuitiv: konstante bzw. logarithmische Größe,
z. B. Linearkombination mit zwei Koeffizienten: h(x ) := (ax + b ) mod p
für perfekte Hashfunktion: Ω(n) Platz
Tabellen, Offsets, usw., keine einfache geschlossene mathematischer
Formel mehr
Anwendung: Schlüsselwörter von Sprachen für Compiler, usw.
Software-Pakete zur (Offline-)Berechnung existieren: gperf, . . .
14 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Perfektes Hashing konkret:
Zweistufige Hashtabelle
1
2
3
4
Wähle h zufällig.
Berechne h(x ) für alle x ∈ S.
Falls ∑i |Bi |2 ≥ 4n, wiederhole 1.
Konstruiere die Mengen Bi .
Für alle Bi
(a) Wähle hi zufällig.
(b) Falls hi auf Bi nicht injektiv,
wiederhole (a).
Copyright Christoph Scheideler
Man kann zeigen:
erwartet lineare Laufzeit
linearer Platz für alles zusammen (Tabelle und Funktion)
(Hashfunktionen sind Linearkombinationen)
geht noch deutlich platzeffizienter
dynamisch noch komplizierter
15 Johannes Singler:
5. Übung – Algorithmen II
Fakultät für Informatik
Institut für Theoretische Informatik
Herunterladen