Transcript pps

Slide 1

External Quicksort
Optimierung des Quicksort-Verfahrens für
Speicherhierarchien

Martin Gronemann, Bernd Zey


Slide 2

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


Slide 3

Quicksort - Erinnerung
Pivot-Element: 23

L L L L L R R R R
12 42
5 23
22 1 60
23 17
17
23 55 22
23 42
60
5

12 5 22 1 17 23 55 60
22 42

1 5 12 22 17 23 42 55 60

1 5 12 17 22 23 42 55 60


Slide 4

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


Slide 5

Intuitive Lösung: Beispiel
EM:

MM:
L L L LL L

Pivot

RR R R R R R R R


Slide 6

Analyse: Intuitive Lösung
• Analyse der I/O‘s äquivalent zur
Laufzeitanalyse von Quicksort
• Pro Rekursionstiefe: O(N/B) I/O‘s benötigt
• Im average case beträgt die Rekursionstiefe
O(log2 N)
 I/O-Anzahl O(N/B log2 N/B)
 interne Laufzeit O(N log2 N)

• Im worst case (N2)


Slide 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


Slide 8

Berechnung der PivotElemente (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-FloydPratt-Rivest-Tarjan)


Slide 9

Berechnung der PivotElemente (2)
Chunks
(sortiert)

Array U
(sortiert)
BFPRT
µ-1 Pivot-Elemente


Slide 10

Analyse: Berechnung der
Pivot-Elemente
• U kann mit O(N/B) I/O‘s erzeugt werden.
• BFPRT benötigt
O((|U|/B) lg µ) =
O((N/aB) lg µ) I/O‘s
Für a ≥ lg µ:
O(N/B)

• Insgesamt O(N/B) I/O‘s für die Berechnung
der Pivot-Elemente


Slide 11

Rekursion
1. Sortiere jedes Element in den richtigen
„Bucket“ (Distribution)
Bi := {x | pi ≤ x < pi+1}

2. Starte Rekursion auf jedem „Bucket“
3. Wenn „Bucket“ Blockgröße erreicht
hat dann intern sortieren


Slide 12

Beispiel µ=4
-∞

Pivot 1

Pivot 2

Blockgröße

Pivot 3



Rekursionstiefe: O(logµN/B)


Slide 13

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


Slide 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 (Θ(logB n) via B-trees), and sorting (Θ(n
logm n) via mergesort); external comparison trees“
http://compgeom.cs.uiuc.edu/~jeffe/teaching/473/01search+sort.pdf