Kap. 3.3: Externe Sortierverfahren

Ähnliche Dokumente
1. Übungstest. Kap. 3.3: Externe Sortierverfahren. Überblick. Motivation. Durchwandern eines Arrays. Externspeicheralgorithmen

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Algorithmen II Vorlesung am

Motivation Überblick

Grundlagen: Algorithmen und Datenstrukturen

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

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

Algorithm Engineering. Alexander Kröller, Abteilung Algorithmik, IBR

DATENSTRUKTUREN UND ALGORITHMEN

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Algorithmen II. Peter Sanders. Übungen: Moritz Kobitzsch und Dennis Schieferdecker. Institut für Theoretische Informatik, Algorithmik II.

Algorithmen und Datenstrukturen 1

Datenstrukturen & Algorithmen

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

Tutoraufgabe 1 (Sortieralgorithmus):

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

Sortieren II / HeapSort Heaps

JAVA - Suchen - Sortieren

Motivation Binäre Suchbäume

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

Übungsklausur Algorithmen I

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kap. 6.6: Kürzeste Wege

Algorithmen und Datenstrukturen 1 Kapitel 5

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

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

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Abschnitt 19: Sortierverfahren

Grundlagen: Algorithmen und Datenstrukturen

4. Sortieren 4.1 Vorbemerkungen

Informatik II, SS 2014

Datenstrukturen, Algorithmen und Programmierung 2

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

7. Übung zu Algorithmen I 1. Juni 2016

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Data Structures and Algorithm Design

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Algorithmen und Datenstrukturen Heapsort

Vorlesung Datenstrukturen

Übung Algorithmen I

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen, Algorithmen und Programmierung 2

Abstrakte Datentypen und Datenstrukturen

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n

Übung Algorithmen und Datenstrukturen

Kap. 4.2: Binäre Suchbäume

Suchen und Sortieren

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Algorithmen und Datenstrukturen

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

Technische Universität München

Algorithmen und Datenstrukturen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Informatik II, SS 2014

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?

1. Übungsblatt zu Algorithmen II im WS 2011/2012

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

7. Parallele Algorithmen für FPGA-Implementierungen

2. Effizienz von Algorithmen

NAME, VORNAME: Studiennummer: Matrikel:

Algorithmen & Komplexität

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Kap. 6.5: Minimale Spannbäume

6. Sich selbst organisierende Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 3: Sortierverfahren Gliederung

Vorlesung Datenstrukturen

Programmiertechnik II

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Erinnerung VL vom

7. Sortieren Lernziele. 7. Sortieren

Komplexität von Algorithmen:

Übungsklausur Algorithmen I

Suchen und Sortieren Sortieren. Heaps

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

Erinnerung VL

Grundlagen: Algorithmen und Datenstrukturen

Kapitel Andere dynamische Datenstrukturen

Algorithmen und Datenstrukturen

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Abschnitt: Algorithmendesign und Laufzeitanalyse

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

(08 - Einfache Sortierverfahren)

Kapitel 6: Dynamic Shortest Path

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Erinnerung VL

Datenstrukturen und Algorithmen

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

Transkript:

Kap. 3.3: Externe Sortierverfahren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 9. VO TEIL1 DAP2 SS 2009 14. Mai 2009 1

1. Übungstest Termin: Di 19. Mai 2009, Beginn: 12:15 Uhr (bitte um 12:00 Uhr anwesend sein) Ort: im Audi-Max (statt Vorlesung) Dauer: 30 Minuten Stoff: aus VO-Folien, Skript und Übungen bis Heap-Sort inklusive 3.1.6 Realisierung von Priority Queues durch Heaps Ab ca. 12:50 Uhr: Vorlesung bis 13:45 Uhr 2

Motivation Warum soll ich hier bleiben? Externspeicher: Neue Denkweise!!! Warum soll mich das interessieren? Externe Algorithmen werden immer wichtiger!!! 3

Überblick Motivation Externspeicher-Algorithmen Das Externspeichermodell I/O Analyse von MergeSort und HeapSort k-multiway MergeSort 4

Externspeicheralgorithmen Motivation Das Externspeichermodell 5

Durchwandern eines Arrays for i=1,,n: D[i]:=i C:=Permute(D) Lineares Durchlaufen: for i=1,,n: A[D[i]]:=A[D[i]]+1 Zufälliges Durchlaufen: for i=1,,n: A[C[i]]:=A[C[i]]+1 6

sec Durchwandern eines Arrays Größe 2 k k 2 23 =8.388.608 Rechner: CPU 2.4 GHz mit Cache 512 KB: für N=2 25 : 0,39 Sek. vs. 7,89 Sek.

Hierarchisches Speichermodell moderner Computer Externspeicher CPU Cache Faktor 100 schneller als Interner Speicher (Main Memory) Faktor 1000-10 6 schneller als Secondary Memory 9

Probleme klassischer Algorithmen Ein Zugriff im Hauptspeicher spricht jeweils eine Speicherzelle an und liefert jeweils eine Einheit zurück Ein Zugriff im Externspeicher (ein I/O) liefert jeweils einen ganzen Block von Daten zurück Meist keine Lokalität bei Speicherzugriffen, und deswegen mehr Speicherzugriffe als nötig 10

Problem ist aktueller denn je, denn Geschwindigkeit der Prozessoren verbessert sich zwischen 30%-50% im Jahr; Geschwindigkeit des Speichers nur um 7%-10% pro Jahr One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. 11

Donald E. Knuth: The Art of Computer Programming 1967 (Neuauflage 1998): When this book was first written, magnetic tapes were abundant and disk drives were expensive. But disks became enormously better during the 1980s,.... Therefore the once-crucial topic of patterns for tape merging has become of limited relevance to current needs. Yet many of the patterns are quite beautiful, and the associated algorithms reflect some of the best research done in computer science during ist early years; The techniques are just too nice to be discarded abruptly onto the rubbish heap of history.... Therefore merging patterns are discussed carefully and completely below, in what may be their last grand appearance before they accept a final curtain call.

Pavel Curtis in Knuth:``The Art of Computer Programming 1967 (Neuauflage 1998): For all we know now, these techniques may well become crucial once again. 13

Das Externspeichermodell M = Anzahl der Elemente im Hauptspeicher CPU Rechenoperationen können nur mit Daten im Hauptspeicher getätigt werden Annahme: B<M/4 interner Speicher (Main Memory) 1 I/O Externspeicher (External Memory, EM) B = Anzahl der Elemente, die in einen Block passen

Analyse von Externen Algorithmen Anzahl der ausgeführten I/O- Operationen Anzahl der ausgeführten CPU- Operationen im RAM-Modell Anzahl der belegten Blöcke auf dem Sekundärspeicher 15

Ziele beim Entwurf Externer Algorithmen Interne Effizienz: Anzahl der RAM-Operationen vergleichbar zu den besten internen Algorithmen Örtliche Lokalität: Ein r/w Block sollte möglichst viele nützliche Daten enthalten Zeitliche Lokalität: Daten, die im internen Speicher sind, sollten möglichst verarbeitet werden, bevor sie wieder herausgeschrieben werden. 16

I/O-Komplexität im EM-Modell Einlesen einer Menge von N Elementen benötigt mindestens Θ(N/B) I/O s I/O-Komplexität von HeapSort: Θ(???) 17

I/O-Komplexität des HeapSort Create-Heap(): O(N) I/Os HeapSort(): Anzahl der I/Os pro Schleifendurchgang: O(1+log N) I/Os über alle N: O(N log N) I/Os 18

I/O-Komplexität im EM-Modell Einlesen einer Menge von N Elementen benötigt mindestens Θ(N/B) I/O s I/O-Komplexität von HeapSort: Θ(N log N) I/O s I/O-Komplexität von MergeSort: Zur Erinnerung: Merge-Sort 19

MergeSort(ref A,l,r) (1) procedure MergeSort(ref A,l,r) (2) var Index m (3) if l < r then { (4) m:= (l+r)/2 (5) MergeSort(A,l,m) (6) MergeSort(A,m+1,r) (7) Merge(a,l,m,r) (8) } Aufruf: MergeSort(A,1,n) 20

Merge(ref A,l,m,r) (1) procedure Merge(ref A,l,m,r) (2) i:=l; j:=m+1 (3) for k:=l,,r { (4) if (i>m) or ((j r) and (A[i].key>A[j].key])) (5) then (6) B[k]:=A[j]; j:=j+1 (7) else (8) B[k]:=A[i]; i:=i+1 (9) } (10) Schreibe sort. Folge zurück von B nach A

Herleitung der Laufzeitfunktion Sei n=2 k für ein beliebiges k Anzahl der hier: n=8, k=3: 8 Instanzen Zeit pro Instanz Gesa mtzeit 1 = 2 0 8 = 2 3 8 = 2 3 4 4 2 2 2 2 1 1 1 1 1 1 1 1 2 = 2 1 4 = 2 2 8 = 2 3 4 = 2 2 2 = 2 1 8 = 2 3 8 = 2 3 1= 2 0 8 = 2 3 Aufwand in jeder Stufe gleich n=2 k. Es gibt k+1=log n + 1 solcher Stufen

I/O-Komplexität des MergeSort Merge-Phase: Verschmelzen der Teilfolgen S 1 und S 2 : O(1+( S 1 + S 2 )/B) I/Os Anzahl der I/Os auf einer Stufe: O(N+N/B) I/Os über alle Schichten: O((N+N/B) log N) I/Os Dies kann man leicht verbessern! 23

Externer Merge-Sort 1. Verbesserung: Verhindere in der Run- Formationsphase 1-elementige Mengen! Beende die Aufteilung bei Teilmengen der Länge M Lade die N/M Stücke nacheinander in das Main Memory Sortiere diese im Main Memory Schreibe die sortierte Teilfolge zurück nach EM 24

Externer Merge-Sort Beende die Aufteilung bei Teilmengen der Länge M Lade die N/M Stücke nacheinander in das Main Memory Sortiere diese im Main Memory Schreibe die sortierte Teilfolge zurück nach EM Diese Aufteilung kostet zusätzlich: O((N/M)(M/B+1)) =O(N/B) I/Os für das Hin- und Herkopieren (das Sortieren an sich kostet kein I/O) Anzahl der I/Os auf einer Stufe: O(N/M+N/B) I/Os Über alle Stufen: O((N/M+N/B) log (N/M)) I/Os Dies ist gleich O(N/B(1+log(N/B))) denn: N/M N/B

Externer Merge-Sort 2. Verbesserung: Verschmelze statt 2 jeweils p=m/(2b) Runs (Run = aufsteigend sortierte Teilfolgen) Kopiere die jeweils kleinsten Elemente x 1,,x p der Runs S 1,,S p in das Main Memory (Blockzugriff) Kopiere das Minimum x i der Elemente in den Output Run Lese das nächste Element von S i, u.s.w. 26

Externer Merge-Sort Kopiere die jeweils kleinsten Elemente x 1,,x p der Runs S 1,,S p in das MM (mittels Blockzugriff) Kopiere das Minimum x i der Elemente in den Output Run Lese das nächste Elemente von S i usw Verschmelzen der Teilfolgen S 1,,S p : O(p+( S 1 + + S p )/B) I/Os Anzahl der I/Os auf einer Stufe: O(N/M+N/B) I/Os Über alle Stufen: O((N/M+N/B) log M/B (N/B)) I/Os Dies ist gleich O(N/B(1+log M/B (N/B))) 27

I/O-Komplexität im EM-Modell Einlesen einer Menge von N Elementen benötigt mindestens Θ(N/B) I/O s I/O-Komplexität von HeapSort: Θ(N log N) I/O s I/O-Komplexität von MergeSort: O(N/B(1+log M/B (N/B))) I/O s 28

Interne Laufzeit von k-multiway Merging Phase 1: Sortiere N/M Stücke der Länge M: O((N/M) (M log M)) = O(N log M) pro Schicht: Verschmelze N Elemente inkl. Minimumsuche: O(???) 29

Effiziente Verschmelzung von p Runs? Intern: Minimumsuche der Schlüssel x 1,,x p? Naiv: O(p): zu teuer, denn dann würde die Laufzeit der Merge-Phase O(p N log p (N/B)) sein. Lösung: Halte die jeweils kleinsten Elemente x 1,,x p (mit ihren Blockzugriffspartnern) in einer Priority Queue im Main Memory. Laufzeit: DeleteMin: log p, Insert: log p Speicherplatz: Bp=BM/(2B))=M/2. 30

Interne Laufzeit von k-multiway Merging Phase 1: Sortiere N/M Stücke der Länge M: O((N/M) (M log M)) = O(N log M) pro Schicht: Verschmelze N Elemente inkl. Minimumsuche: O(N log p) Tiefe des Baumes: O(log p (N/B)) Insgesamt: O((N log M)+(N log p) log p (N/B)) = O((N log M)+(N log (M/B) log M/B (N/B))=O(N log N) Verwende Logarithmus-Gesetz: log p a=(log 2 a)/(log 2 p) 31

Externes Sortieren Theorem: Eine Menge von N Elementen kann mit Hilfe von k-multiway Merging in interner Zeit O(N log N) mit O(N/B(1+log M/B (N/B))) I/Os sortiert werden. Man kann zeigen: Dies ist bestmöglich! Bemerkung: Bei I/O schreibt man oft +1 innerhalb der Oh-Notation, weil sonst aus log (N/B)=0 folgen würde: O(N/B 0)=O(0) I/Os, obwohl man jedes Mal ein I/O braucht, also die echte I/O-Anzahl O(N/B) wäre. ENDE Kapitel 3: Sortieren und jetzt: Kapitel 4: Suchen 32