DATENSTRUKTUREN UND ALGORITHMEN

Werbung
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
DATENSTRUKTUREN UND
ALGORITHMEN
112
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Ist die Datenstruktur so wichtig???
  Wahl der Datenstruktur wichtiger Schritt beim Entwurf und
der Implementierung von Algorithmen
  Dünn besetzte Graphen und Matrizen bilden keine Ausnahme
  Bei dünn besetzten Matrizen gegenseitiger Einfluss:
  Algorithmen bestimmen Wahl der Datenstruktur
  Wahl der Datenstruktur bestimmt Algorithmen
  Analyse der Algorithmen im RAM-Modell und im I/O-Modell
113
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
2.1: EM- bzw. I/O-Modell
Motivation
  Ein Rechner, insbesondere der Speicher, ist hierarchisch
aufgebaut
  Register
  ...
  Grund: ???
  Wichtig: Blockbasierter Zugriff günstiger als zufälliger
  Konzept lässt sich auf andere Bereiche übertragen:
  Parallele Kommunikation
  Stapelweise Abarbeitung
114
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Speicherhierarchie
  Blockweise Abarbeitung unter Ausnutzung von Lokalität
Chip
CPU
Register
115
On-/off-Chip,
geteilt/privat
L2
Cache
L1
Cache
~ 64 KB
~ 4 MB
L1 cache hit:
1-3 Zyklen
L2 cache hit:
10-15 Zyklen
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Main
Memory
(RAM)
~ 8 GB
RAM (cache) hit:
100-250 Zyklen
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
I/O-Modell = EM-Modell
  Speicher ist hierarchisch organisiert:
 
 
 
 
Register
Caches (L1, L2, L3)
RAM
SSD, HDD
Cache
External Memory-Modell:
 
 
 
 
116
2 Ebenen: Schnell und langsam
Schnell: Cache oder (Haupt)Speicher
Langsam: (Haupt)Speicher oder Platte
Benennung nur Termini,
Prinzipien gelten für jeden Ebenenübergang
Graphenalgorithmen und lineare Algebra Hand in Hand
RAM
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Modell-Parameter
  Speicher partitioniert in Blöcke der Größe L
(Größe einer Cachezeile)
  Größe des schnellen Speichers ist Z
  Langsamer Speicher ist nicht limitiert in der Größe
  Referenziertes Datum nicht im Cache:
  Cache-Fehlzugriff
  Blocktransfer vom RAM in den Cache
  Komplexitätsmaß: Zahl der Cache-Fehlzugriffe (I/Os)
  Frage: Welche Komplexität (Anzahl I/O-Operationen) hat das
Scannen eines Arrays der Länge N?
117
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Externes Sortieren
Ausnahmsweise kein Graphen- oder Matrixalgorithmus!
  Eingabe: Zahlenfolge A der Länge N >> Z
  Ausgabe: A sortiert abgelegt im langsamen Speicher
  Externes Merge-Sort am Beispiel (s. Wikipedia):
  Sortiere 400 MB Daten mit 100 MB schnellem Speicher
1.  Lese 100 MB Daten in schnellen Speicher und sortiere diese mit
einem internen Algorithmus, bspw. Quicksort
2.  Schreibe die sortierten Daten in den langsamen Speicher
3.  Wiederhole 1) und 2), bis alle 100 MB-Blöcke sortiert sind.
4.  Lies die ersten 20 MB (= 100 MB / (4 Blöcke + 1)) jedes sortierten
Blocks in den schnellen Speicher, Rest: Ausgabepuffer
5.  Führe 4-fach-Merge(-Sort) durch und speichere Ergebnis im
Ausgabepuffer. Wenn Ausgabepuffer voll, dann in langsamen
Speicher schreiben. Wenn Eingabepuffer leer, dann nächsten
Block lesen
118
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Skizze und Zeitkomplexität
  Externe Sortierphase: O(N/L) I/Os
Merge-Phase: k-faches Verschmelzen mit k = Z/2L
  Zeitkomplexität: O(N/L * logZ/L (N/L)) I/Os = O(sort(N))
119
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Externes Sortieren, alternatives Beispiel
  512 GB Daten sortieren, interner Speicher der Größe 4 GB
  Annahme: 8-faches Verschmelzen besonders effizient
  Frage: Wie läuft der Algorithmus nun ab?
  128 Iterationen der ersten Phase => 128 Blöcke, in sich sortiert (iss)
  1. Verschmelziter.: 8-faches Verschmelzen => 128/8 = 16 Blöcke, iss
  2. Verschmelziter.: 8-faches Verschmelzen => 16/8 = 2 Blöcke, iss
  3. Verschmelziter.: 2-faches Verschmelzen => 2/2 = 1 Block,
vollständig sortiert
  Zeitkomplexität: O(N/L * logZ/L (N/L)) I/Os = O(sort(N))
120
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Analyse im Detail
Merge-Sort intern:
  1. Phase: Erstellung sortierter Folgen
  2. Phase: Verschmelzen von zwei sortierten Folgen
  Abbruch, wenn nur noch eine sortierte Folge übrig bleibt
  Analyse des internen Algorithmus im I/O-Modell:
  1. Phase: keine I/Os
  2. Phase: Verschmelzen von S1 und S2 benötigt
O(1 + (|S1| + |S2|) / L) I/Os (scanning)
  Jedes Element ist in O(log N) Verschmelzungs-Ops. involviert
  Es gibt O(N) Verschmelzungs-Ops. (Baum!)
  => O(N + (N / L) log2 N) I/Os
121
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Illustration
  Siehe Tafel!
122
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Das muss schneller gehen!
  Beschleunigung durch veränderte 1. Phase:
  Sicherstellen, dass 2. Phase mit N / Z sortierten Folgen startet
(anstelle von N)
  Dazu: N / Z Stücke der Größe Z bilden, in den internen Speicher
holen, dort sortieren und wieder zurückschreiben
  Aufwand: O((N / Z) * (Z / L)) = O(N / L) I/Os
  Kosten für neue 2. Phase wg. weniger Sequenzen:
  O(N / Z + (N / L) log2 (N / Z)) I/Os
  Gesamt: O((N / L) log2 (N / L)) I/Os
  Grund: N / Z < N / L, Z <= poly(L)
  Zum Vergleich, vorher: O(N + (N / L) log2 N) I/Os
123
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Basis des log drücken
  Beschleunigung durch veränderte 2. Phase:
  Sicherstellen, dass Zahl der Sequenzen sich um einen
Faktor Ω(Z / L) reduziert von einer Iteration zur nächsten
  Dann: O(logZ / L (N / L)) Iterationen reichen aus!
  Darum: k-faches Verschmelzen mit k = Z / 2L Sequenzen
  Beispiel: Siehe Tafel!
  Gesamtlaufzeit: O(N/L * logZ/L (N/L)) I/Os = O(sort(N))
124
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Zwischenfazit EM-Modell
  Speicherhierarchie wichtiger Aspekt eines Rechners
  Übergang der Ebenen universell
  Blockweise Abarbeitung wichtig
  Dazu Lokalität ausnutzen!
  Möglichst wenig im Speicher springen!
  Wesentliche Operationen mit Laufzeiten:
  Scannen: scan(N) = O(N / L) I/Os
  Sortieren: sort(N) = O(N/L * logZ/L (N/L)) I/Os
125
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Minimum Spanning Forest
Algorithmus für RAM-Modell von Jarnik und Prim
  Eingabe: Ungerichteter gewichteter Graph G = (V, E)
  Ausgabe: Wald von Spannbäumen minimalen Gewichts
  Algorithmus (Skizze):
  Starte mit beliebigem Knoten
  Iteriere: Verbinde unbesuchten Knoten mit Baum, der über die
leichteste Kante verbunden ist
  Wiederhole für weitere ZHK
  Prioritätswarteschlange speichert Knoten
  Laufzeit:
  O(m log n) mit binären Heaps
  O(m + n log n) mit Fibonacci-Heaps
126
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Beispiel
0
1
2
1
3
4
3
2
8
4
5
1
7
4
4
1
2
9
1
3
1
6
4
5
127
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Minimum Spanning Forest
Algorithmus für EM-Modell von [Arge et al., SWAT‘00]
  Eingabe und Ausgabe wie eben
  Änderung des Algorithmus:
  Prioritätswarteschlange PQ für EM-Modell
  PQ speichert nun Kanten anstatt Knoten:
Keine Aktualisierungen nötig
  PQ enthält (mindestens) alle Kanten, die Knoten des Baums mit
Knoten außerhalb verbinden
  Es können darin auch Kanten sein, die zwei Baumknoten
miteinander verbinden
  Iteration des Algorithmus (sei u der aktuelle Knoten):
Extract-min aus PQ für Kante (u, v)
  Nur falls v noch nicht im Baum: Füge v zum Baum hinzu, füge
seine inzidenten Kanten außer (u, v) in PQ ein
128
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Analyse des Algorithmus
Korrektheit
  Jeder Knoten im Baum fügt seine inzidenten Kanten hinzu
  PQ kann daher zwei Kopien derselben Kante beinhalten
  Annahme: Alle Kantengewichte sind verschieden
  Wenn Kante e aus PQ entfernt wird, ist ihre Kopie mglw.
nächstes Min. => zweites extract-min zum Test, ob v im
Baum
  Bei gleichem Startknoten (pro ZHK) und eindeutigen
Kantengewichten:
Reihenfolge der bearbeiteten Knoten wie bei RAMAlgorithmus => gleiches Endergebnis
129
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Prof. Dr. Henning Meyerhenke | Fakultät für Informatik
Analyse des Algorithmus
Laufzeit
  Die Adjazenzliste jedes Knotens wird einmal gelesen:
O(n + m/L) I/Os
  O(m) Einfüge- und extract-min-Operationen
  PQ: Einfügen und extract-min von m Elementen in O(1/L logZ/
L (m/L)) amortisierter Zeit
  Laufzeit:
O((n + m/L) + m * logZ/L (m/L) / L) = O(n + sort(m))
  Schnellere EM-Verfahren existieren
130
Graphenalgorithmen und lineare Algebra Hand in Hand
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Herunterladen