Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

External Quicksort Optimierung des Quicksort-Verfahrens für Speicherhierarchien Martin Gronemann, Bernd Zey.

Ähnliche Präsentationen


Präsentation zum Thema: "External Quicksort Optimierung des Quicksort-Verfahrens für Speicherhierarchien Martin Gronemann, Bernd Zey."—  Präsentation transkript:

1 External Quicksort Optimierung des Quicksort-Verfahrens für Speicherhierarchien Martin Gronemann, Bernd Zey

2 Überblick 1.Quicksort - Erinnerung 2.Intuitive Lösung 3.Distribution-Sort (external Quicksort)

3 Quicksort - Erinnerung 12 Pivot-Element: RL L RL L 221 L R R

4 Intuitive Lösung 1.Lade den Wert des Pivot-Elements und die ersten und letzen B Array- Elemente in den Main Memory 2.Starte normalen Quicksort 3.Laden und Schreiben bei Bedarf

5 Intuitive Lösung: Beispiel EM: MM: L R Pivot L R L R L R L R L R L R L R L R L R

6 Analyse: Intuitive Lösung Analyse der I/Os äquivalent zur Laufzeitanalyse von Quicksort Pro Rekursionstiefe: O( N / B ) I/Os benötigt Im average case beträgt die Rekursionstiefe O(log 2 N) I/O-Anzahl O( N / B log 2 N / B ) interne Laufzeit O(N log 2 N) Im worst case (N 2 )

7 Distribution Sort Mit mehreren Pivot-Elementen arbeiten Pivot-Elemente definieren Buckets Element muss in Bucket einsortiert werden Jeden Bucket rekursiv sortieren bis Blockgröße B erreicht ist

8 Berechnung der Pivot- Elemente (1) 1.Unterteile Eingabemenge in N / M Chunks 2.Sortiere jeden Chunk 3.Nehme jedes a-te Element aus jedem Chunk in Array U auf (|U| = N / a ) 4.Sortiere U 5.Berechne µ-1 äquidistante Pivot-Elemente aus dem Array U mit BFPRT (Blum-Floyd- Pratt-Rivest-Tarjan)

9 Berechnung der Pivot- Elemente (2) BFPRT Array U (sortiert) µ-1 Pivot-Elemente Chunks (sortiert)

10 Analyse: Berechnung der Pivot-Elemente U kann mit O( N / B ) I/Os erzeugt werden. BFPRT benötigt O(( |U| / B ) lg µ) = O(( N / aB ) lg µ) I/Os Für a lg µ: O( N / B ) Insgesamt O( N / B ) I/Os für die Berechnung der Pivot-Elemente

11 Rekursion 1.Sortiere jedes Element in den richtigen Bucket (Distribution) B i := {x | p i x < p i+1 } 2.Starte Rekursion auf jedem Bucket 3.Wenn Bucket Blockgröße erreicht hat dann intern sortieren

12 Beispiel µ=4 Pivot 1Pivot 2Pivot 3- Blockgröße Rekursionstiefe: O(log µ N / B )

13 Analyse Rekursionstiefe bis zur Blockgröße: O(log µ N / B ) I/Os Einsortieren kostet pro Rekursionstiefe O( N / B ) I/Os Gesamt: O( N / B log µ N / B ) I/Os

14 Literatur Alok Aggarwal and Jerey Scott Vitter, 1988: The Input/Output Complexity of Sorting and Related Problems Jeff Erickson - Prof. an der University of Illinois:Introduction: the standard external-memory model; upper and lower bounds for scanning (Θ(n)), searching (Θ(log B n) via B-trees), and sorting (Θ(n log m n) via mergesort); external comparison trees search+sort.pdf


Herunterladen ppt "External Quicksort Optimierung des Quicksort-Verfahrens für Speicherhierarchien Martin Gronemann, Bernd Zey."

Ähnliche Präsentationen


Google-Anzeigen