DATENSTRUKTUREN UND ALGORITHMEN

Ähnliche Dokumente
Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN

Vorlesung Datenstrukturen

3.2 Generischer minimaler Spannbaum-Algorithmus

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen II Vorlesung am

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen & Komplexität

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen (SS 2013)

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Übungsklausur Algorithmen I

Datenstrukturen & Algorithmen

Sortieren II / HeapSort Heaps

Datenstrukturen und Algorithmen

Wie wird ein Graph dargestellt?

Karlsruher Institut für Technologie. Klausur Algorithmen I

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Betriebswirtschaftliche Optimierung

Algorithmen und Datenstrukturen

Betriebliche Optimierung

9 Minimum Spanning Trees

1 Kürzeste Pfade in Graphen

Vorlesung Datenstrukturen

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Algorithmen und Datenstrukturen

Kap. 6.6: Kürzeste Wege

Vorlesung 2 KÜRZESTE WEGE

Kap. 6.6: Kürzeste Wege

3. Musterlösung. Problem 1: Boruvka MST

ÜBUNGSKLAUSUR Studienhalbjahr: 2. Semester. Datum: 20. Juli 2016 Bearbeitungszeit: 90 Minuten. Modul: T2INF Dozent: Stephan Schulz

Algorithmen II Vorlesung am

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Algorithmische Methoden für schwere Optimierungsprobleme

Algorithmen & Datenstrukturen 2 Praktikum 3

Lernmodul 7 Algorithmus von Dijkstra

Dynamische Datenstrukturen

Algorithmen & Komplexität

Informatik II - Übung 12

Algorithmen II Vorlesung am

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Vorlesung 5: MATRIX-DATENSTRUKTUREN UND SPARSE GEMM

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Minimal spannende Bäume

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Kombinatorische Optimierung

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

ADS: Algorithmen und Datenstrukturen 2

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Algorithmen und Datenstrukturen (für ET/IT)

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Rückblick: Starke Zusammenhangskomponenten

2. Das single-source-shortest-path-problem

7. Sortieren Lernziele. 7. Sortieren

Klausur Algorithmentheorie

Effizienter Planaritätstest Vorlesung am

5. Bäume und Minimalgerüste

9. Natürliche Suchbäume

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Datenstrukturen und Algorithmen. Vorlesung 8

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Transkript:

DATENSTRUKTUREN UND ALGORITHMEN 2 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 3

2.: 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 4 Speicherhierarchie Blockweise Abarbeitung unter Ausnutzung von Lokalität Chip On-/off-Chip, geteilt/privat Register CPU L Cache ~ 64 KB L2 Cache ~ 4 MB Main Memory (RAM) ~ 8 GB L cache hit: -3 Zyklen L2 cache hit: 0-5 Zyklen RAM (cache) hit: 00-250 Zyklen 5

I/O-Modell = EM-Modell Speicher ist hierarchisch organisiert: Register Caches (L, L2, L3) RAM SSD, HDD Cache External Memory-Modell: 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 RAM 6 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? 7

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 00 MB schnellem Speicher. Lese 00 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 ) und 2), bis alle 00 MB-Blöcke sortiert sind. 4. Lies die ersten 20 MB (= 00 MB / (4 Blöcke + )) 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 8 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 * log Z/L (N/L)) I/Os = O(sort(N)) 9

Externes Sortieren, alternatives Beispiel 52 GB Daten sortieren, interner Speicher der Größe 4 GB Annahme: 8-faches Verschmelzen besonders effizient Frage: Wie läuft der Algorithmus nun ab? 28 Iterationen der ersten Phase => 28 Blöcke, in sich sortiert (iss). Verschmelziter.: 8-faches Verschmelzen => 28/8 = 6 Blöcke, iss 2. Verschmelziter.: 8-faches Verschmelzen => 6/8 = 2 Blöcke, iss 3. Verschmelziter.: 2-faches Verschmelzen => 2/2 = Block, vollständig sortiert Zeitkomplexität: O(N/L * log Z/L (N/L)) I/Os = O(sort(N)) 20 Analyse im Detail Merge-Sort intern:. 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:. Phase: keine I/Os 2. Phase: Verschmelzen von S und S 2 benötigt O( + ( S + S 2 ) / 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) log 2 N) I/Os 2

Illustration Siehe Tafel! 22 Das muss schneller gehen! Beschleunigung durch veränderte. 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) log 2 (N / Z)) I/Os Gesamt: O((N / L) log 2 (N / L)) I/Os Grund: N / Z < N / L, Z <= poly(l) Zum Vergleich, vorher: O(N + (N / L) log 2 N) I/Os 23

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(log Z / L (N / L)) Iterationen reichen aus! Darum: k-faches Verschmelzen mit k = Z / 2L Sequenzen Beispiel: Siehe Tafel! Gesamtlaufzeit: O(N/L * log Z/L (N/L)) I/Os = O(sort(N)) 24 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 * log Z/L (N/L)) I/Os 25

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 26 Beispiel 0 4 8 2 2 3 4 5 4 4 3 6 7 3 2 9 4 5 27

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 28 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 RAM- Algorithmus => gleiches Endergebnis 29

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(/L log Z/ (m/l)) amortisierter Zeit L Laufzeit: O((n + m/l) + m * log Z/L (m/l) / L) = O(n + sort(m)) Schnellere EM-Verfahren existieren 30