Termin 7: DATENSTRUKTUREN UND ALGORITHMEN

Ähnliche Dokumente
Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN

Vorlesung 5: MATRIX-DATENSTRUKTUREN UND SPARSE GEMM

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand

SpGEMM. SpGEMM detaillierter. Zwei Interpretationen: Benötigte Berechnungen darstellbar als Graph:

DATENSTRUKTUREN UND ALGORITHMEN

NAME, VORNAME: Studiennummer: Matrikel:

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

Lernmodul 7 Algorithmus von Dijkstra

Übung Algorithmen und Datenstrukturen

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Vorlesung 2 KÜRZESTE WEGE

9. November ZHK in dynamischen Graphen Zentralitäten. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 67

Motivation Kap. 6: Graphen

Algorithmen & Komplexität

Grundlagen: Algorithmen und Datenstrukturen

Von Aachen nach Halle...

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

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

15. Elementare Graphalgorithmen

Grundlagen: Algorithmen und Datenstrukturen

Algorithmik kontinuierlicher Systeme

Übungsklausur Algorithmen I

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

16. November 2011 Zentralitätsmaße. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 87

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

2. Programmierung in C

Übung Algorithmen I

Übung Algorithmen und Datenstrukturen

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Einführung in die Programmierung (MA8003)

Einführung in die Programmierung (MA8003)

Algorithmische Methoden zur Netzwerkanalyse

Graphdurchmusterung, Breiten- und Tiefensuche

Wie wird ein Graph dargestellt?

Vorlesung 2 KÜRZESTE WEGE

Algorithmen und Datenstrukturen 1

19. Dynamic Programming I

Inhalt. Peter Sobe 63. Felder in C

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

Klausur Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Algorithmische Methoden zur Netzwerkanalyse

Informatik II, SS 2014

Aufgaben zur Klausurvorbereitung

Übungsklausur Algorithmen I

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

Algorithmen und Datenstrukturen


Customization (Zuschneiden)

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Vorlesung Datenstrukturen

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Algorithmen I - Tutorium 28 Nr. 11

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen 13

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2-1. Seminar -

Graphenalgorithmen I

Datenstrukturen und Algorithmen D-INFK

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

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

19. Dynamic Programming I

2. Repräsentationen von Graphen in Computern

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Vorlesung Datenstrukturen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Quicksort ist ein Divide-and-Conquer-Verfahren.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Informatik II, SS 2014

Informatik II Prüfungsvorbereitungskurs

Klausur Informatik B April Teil I: Informatik 3

Der Rekursionsbaum hat

Algebraische und arithmetische Algorithmen

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Grundbegriffe der Informatik

Abschnitt: Algorithmendesign und Laufzeitanalyse

Informatik B Sommersemester Musterlösung zur Klausur vom

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Informatik II, SS 2018

Informatik II, SS 2016

Programmiertechnik II

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

Blockmatrizen und -Algorithmen

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

16. All Pairs Shortest Path (ASPS)

7. Sortieren Lernziele. 7. Sortieren

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

Graphenalgorithmen und lineare Algebra Hand in Hand

Vorlesung Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Programmierkurs Python

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

Praktikum Einführung in die Mathematik 1 WS 2010/2011 Blatt 2 Lösungen

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Transkript:

Termin 7: DATENSTRUKTUREN UND ALGORITHMEN 133 Modell-Annahmen Annahme: Für eine dünn besetzte Matrix der Dimensionen M x N gilt nnz = Ω(N, M). Annahme: Der schnelle Speicher ist nicht groß genug, um eine Datenstruktur vollständig zu halten. Frage: Wie viele Nichtnull-Einträge lassen sich pro GB RAM speichern? (Annahme: 16 Byte pro Eintrag) Antwort: 2 30 / 16 = 2 26 Annahme: Acht Einträge pro Zeile => N 2 23 Folgerung: L2 Cache kann einen entsprechend großen dicht besetzten Vektor nicht halten. 134

2.2: Wichtige Basisoperationen Matrixoperationen und ihre Entsprechungen bei Graphen: Sparse matrix indexing and assignment (SpRef/SpAsgn): Auswahl eines Teilgraphen Sparse matrix-dense vector multiplication (SpMV): Breitensuche Tiefensuche Sparse matrix addition, andere punktweise Ops (SpAdd): Vereinigung von Graphen Sparse matrix-sparse matrix multiplication (SpGEMM): BFS, DFS von mehreren Startknoten gleichzeitig, APSP 135 SpRef / SpAssgn Auswahl eines Teilgraphen SpRef: B = A(p, q) Speichern einer Teilmatrix von A in B A(p,q) SpAssgn: B(p, q) = A Zuweisung einer Matrix A an eine Teilmatrix von B A B Beispiele fürs Indizieren: Zeilenwahl: A(i, :) Spaltenwahl: A(:, i) A B(p,q) B 136

SpMV Breiten- und Tiefensuche y = Ax (oder auch y = x A) Vermutlich gängigste Operation, eingesetzt u. a. in: Gleichungssystemlösern Eigenlösern Weitere (Anwendungs-)Beispiele: PageRank BFS Bellman-Ford MST-Algorithmus von Jarnik und Prim A x y 137 SpAdd Vereinigung von Graphen C = A + B Addition hier Repräsentant für andere punktweisen Ops: MIN MAX AND OR B C A... Vereinigung von Graphen 138

SpGEMM APSP C = AB Anwendungen: Kontraktion PPC BFS von mehreren Startpunkten APSP A B C Addition von Skalarprodukten (inner products) Addition von dyadischen Produkten (outer products) Zeilenweise Spaltenweise Tafel! 139 2.3: Datenstrukturen für dünn besetzte Graphen und Matrizen Tripel (D)CSR / CSC Dynamische Graphen 140

Tripel-Format Jeder Nichtnull-Eintrag wird durch ein Tripel repräsentiert Zeilenindex Spaltenindex Wert des Eintrags Drei Arrays pro Matrix A: A.I A.J A.V Repräsentation in Strukturen meist besser als 3 separate Arrays (Cache-Performance, Programmierbarkeit) Speicherverbrauch pro Eintrag: 8 + 8 + 8 = 24 Bytes 141 (Un)Geordnete Tripel Ungeordnet: Keine irgendwie geartete Sortierung Zeilenordnung: Einträge sind gemäß Zeilenindex sortiert Einträge derselben Zeile erscheinen in beliebiger Reihenfolge Zeilendominante Reihenfolge: Einträge sind gemäß Zeilenindex sortiert Einträge in derselben Zeile gemäß Spaltenindex sortiert Möglich: Sortierungsreihenfolge tauschen (Zeile Spalte) In der Theorie (und ggf. bei Dynamik) gut: Hashing 142

Beispiel ungeordneter Tripel A.I A.J A.V A = 19 0 11 0 0 43 0 0 0 0 0 0 0 27 0 35 1 1 19 4 2 27 2 2 43 4 4 35 1 3 11 SpMV mit ungeordneten Tripeln: Siehe Tafel! I/O-Komplexität von SpMV: nnz(a)/l + 2 nnz(a) = O(nnz(A)) 143 Geordnete Tripel: Zeilenordnung Indizierung immer noch schwierig Schneller Zeilenzugriff ohne Index nicht möglich Binäre Suche zum Finden des Startpunkts Cache-Performance immer noch problematisch Frage: Warum? A.I A.J A.V 19 0 11 0 1 3 11 A = 0 43 0 0 1 1 19 0 0 0 0 2 2 43 0 27 0 35 4 2 27 4 4 35 144

Zeilendominante geordnete Tripel Zeilendominante Reihenfolge, Zugriff auf A(i, j): Finde mit binärer Suche ein Tripel (i, j, A(i, j )) derselben Zeile i Von diesem Tripel in beide Richtungen jeweils eine unbegrenzte binäre Suche starten; stoppen, wenn Zeile i verlassen wird Innerhalb dieser beiden Stoppgrenzen mit binärer Suche A(i, j) suchen A = 19 0 11 0 0 43 0 0 0 0 0 0 0 27 0 35 A.I A.J A.V 1 1 19 1 3 11 2 2 43 4 2 27 4 4 35 145 Beispiel [KG, S. 304] 146

Komplexität für Referenzierung RAM-Modell: Kosten für Referenzierung: log nnz(a) + log nnz(a(i, :)) EM-Modell: Unbegrenzte binäre Suche mglw. schlechter als lineare Scans Kosten für Suche in einem sortierten Array: min{log nnz(a(i, :)), scan(a(i, :))} Für Spaltenzugriff sowie SpAssgn ergibt sich durch Sortierung innerhalb der Zeilen keine Verbesserung 147 Zeilendominante Reihenfolge y = Ax Auf die Arrays in A sowie y wird überwiegend konsekutiv zugegriffen Auf x wird mit aufsteigendem Index zugegriffen: Verbesserung gegenüber Zeilenordnung Trotzdem: Jeder Zugriff kann ein Cache-Fehlzugriff sein I/O-optimale Algorithmen für SpMV unter Annahmen (Bender et al. 2007) SpAdd: Scannen und verschmelzen von sortierten Arrays: RAM: O(nnz(A) + nnz(b)) EM: O(scan(A) + scan(b)) SpGEMM: Fingersuche (Brodal et al. 2005) 148

Zwischenfazit Datenstrukturen und Algorithmen: Typische Matrixalgorithmen haben unterschiedliche Anforderungen Ungeordnete Tripel Zeilengeordnete Tripel Zeilendominante Tripel Fazit: Je mehr Struktur, desto stärker lässt sich der Cache nutzen 149 CSR / CSC Compressed sparse row/column Auch Adjazenzarrays genannt Wohl die populärsten Formate Abwandlung von Adjazenzlisten Frage: Was ist der Nachteil von Adjazenzlisten in der Praxis? CSR hat 3 Arrays (CSC ist symmetrisch): IR: Größe N+1, Index des Zeilenstarts in anderen Arrays JC: Größe nnz, Spaltenindex des Eintrags NUM: Größe nnz, Wert des Eintrags 154

Beispiel Einfügen ohne Anpassungen ineffizient, daher nur gut für statische Graphen A = 19 0 11 0 0 43 0 0 0 0 0 0 0 27 0 35 A.IR 1 3 4 4 6 A.JC 1 3 2 2 4 A.NUM 19 11 43 27 35 Achtung: Indizierung startet bei 1! 155 Grundoperationen mit CSR Zeilenindizierung in O(1) Iterieren über Zeile: RAM: O(nnz(A(i, :)) EM: O(scan(A(i, :)) Element (i, j) finden: RAM und EM: O(log nnz(a(i, :)) Aber: Sequentieller Zugriff kann bei Caches besser sein als binäre Suche, jedenfalls bei kleinem Knotengrad Spaltenweiser Zugriff ineffizient 156

CSR mit Diagonalverschiebung Für manche Algorithmen: Schneller Zugriff auf Diagonalelement wichtig Abwandlung 1: Diagonale in separatem Array Abwandlung 2: CSR wie bisher, aber erstes Element jeder Zeile ist immer Diagonale (sogar wenn 0) Weitere Varianten existieren... 157 SpMV mit CSR Übung an der Tafel Frage: Bei welcher Struktur der Eingabe kann man durch zusätzliche Techniken Verbesserungen bei SpMV herbeiführen? Frage: Wie könnte man CSR anpassen, damit ein gewisser Grad von Einfügungen und Löschungen von Kanten toleriert werden kann? 158