Transcript Folien
Sortiernetzwerke
Seminar über Algorithmen
SS 2005
von Arash Sarkohi
und Christian Bunse
Sortiernetzwerke
1
Übersicht
Einführung und Begriffe
Laufzeit
Entwickeln eines effizienten
Sortiernetzwerks
Sortiernetzwerke
2
Was ist ein Sortiernetzwerk
Ein Sortiernetzwerk ist ein
Vergleichsnetzwerk, das eine Eingabe
sortiert
Sortiernetzwerke
3
Was ist ein Vergleichsnetzwerk
Ein Vergleichsnetzwerk besteht aus
Vergleichselementen
Es kann Vergleiche parallel durchführen
Begriffe:
Eingabe/Ausgabesequenz: Werte auf den
Eingangs-bzw. Ausgangsleitungen
Sortiernetzwerke
4
Das Vergleichselement
Sortiernetzwerke
5
Das Vergleichselement
Sortiernetzwerke
6
Das Vergleichselement
Sortiernetzwerke
7
Sortiernetzwerke
Begriffe
Vergleichselement arbeitet in Zeit O(1)
Tiefe einer Leitung: Anzahl der VE, die auf
der Leitung liegen
Tiefe des Netzwerkes: Maximale Tiefe einer
Ausgangsleitung
Sortiernetzwerke
8
Beispiel
Sortiernetzwerke
9
Beispiel
Sortiernetzwerke
10
Beispiel
Sortiernetzwerke
11
Beispiel
Sortiernetzwerke
12
Sortiernetzwerke
Begriffe
Sortiernetzwerk ist ein Vergleichsnetzwerk, in
dem die Ausgabesequenz für jede
Eingabesequenz monoton steigend ist.
Sortiernetzwerke
13
Sortiernetzwerke
Laufzeit
Untere Schranke für die Anzahl der
Vergleiche bei vergleichsbasierten
Sortieralgorithmen:
(n log n)
Auch ein Sortiernetzwerk muss mindestens
(n log n) Vergleichselemente besitzen
Sortiernetzwerke
14
Sortiernetzwerke
Laufzeit
=> Jedes Sortiernetzwerk mit n
Eingängen muss mindestens die
Tiefe log n haben.
Sortiernetzwerke
15
Beispiel
Sortiernetzwerke
16
Warum sind Netzwerke mit Tiefe
O(logn) nicht trivial ?
Direkte Umsetzung von bekannten
Algorithmen in Netzwerke ist nur
bedingt möglich
Sequentielle Algorithmen sind nur
bedingt parallelisierbar
Sortiernetzwerke
17
Effiziente Sortiernetzwerke
Es existiert in der Tat ein Sortiernetzwerk
mit der Tiefe O(logn), allerdings mit
riesigen Konstanten und nur schwer
implementierbar
Unser Ziel ist daher ein Sortiernetzwerk mit
der Tiefe
(log2 n)
Sortiernetzwerke
18
Vorgehen
Problemreduktion auf das Null-EinsPrinzip
Entwickeln eines bitonischen
Sortierers
Entwickeln eines Mischers
Entwickeln eines Sortiernetzwerks mit
Hilfe von Mischern
Sortiernetzwerke
19
Problemreduzierung
Ziel: Arbeiten mit dem Alphabet {0,1}
statt mit beliebigen Zahlen.
Zu Zeigen: Wenn SN für Eingabe aus
{0,1} korrekt arbeitet, so arbeitet es
auch korrekt für beliebige Eingaben.
Sortiernetzwerke
20
Problemreduzierung
Lemma: Wenn ein Vergleichsnetzwerk die
Eingabesequenz a = (a1, a2, …, an) in eine
Ausgabesequenz b = (b1, b2, …, bn)
umwandelt, dann transformiert das Netzwerk
die Eingabesequenz
f(a) = (f(a1), f(a2), …,f(an)) für jede beliebige
monoton steigende Funktion f in eine
Ausgabesequenz f(b) = (f(b1), f(b2), …,f(bn))
Sortiernetzwerke
21
Null-Eins-Prinzip
Wenn ein Vergleichsnetzwerk mit n
n
Eingängen alle 2 möglichen
Sequenzen von Nullen und Einsen
korrekt sortiert, dann sortiert es alle
Sequenzen beliebiger Zahlen korrekt
Sortiernetzwerke
22
Bitonisches Netzwerk
Ziel: Vergleichsnetzwerk, das
bitonische Sequenzen sortiert
Sortiernetzwerke
23
Bitonisches Netzwerk
Def.: Eine bitonische Sequenz ist eine
Sequenz, die monoton steigt und
dann monoton fällt oder zirkulär
verschoben werden kann, so dass sie
dann monoton steigend und dann
monoton fallend ist.
Beispiele:
(1,4,6,8,3,2)
(6,9,4,2,3,5).
Sortiernetzwerke
24
Bitonisches Netzwerk
Bitonische Null-Eins-Sequenzen haben die
Form:
i
j
01 0
k
oder
i
j k
10 1
Sortiernetzwerke
für i,j,k >= 0.
25
Bitonisches Netzwerk
Halfcleaner
ein Halfcleaner ist ein Vergleichsnetzwerk
der Tiefe 1, bei dem für i=1,…,n/2 die
Eingabezeile i mit der Zeile i+n/2
verglichen wird.
alle Elemente der oberen Hälfte sind kleiner
gleich alle Elemente der unteren Hälfte
Sortiernetzwerke
26
Bitonisches Netzwerk
Halfcleaner
Sortiernetzwerke
27
Bitonisches Netzwerk
Lemma: Wenn die Eingabe eines
Halfcleaners eine bitonische Sequenz
ist, dann sind sowohl die untere als
auch die obere Hälfte der Ausgabe
bitonisch
Bei Nullen und Einsen ist mind. eine
Hälfte rein bitonisch (nur Einsen oder
nur Nullen)
Sortiernetzwerke
28
Bitonischer Sortierer
Der Bitonische Sortierer [n] sortiert
eine bitonische Eingabesequenz
rekursiv durch einen Halfcleaner[n]
und zwei bitonischen Sortierer[n/2].
Sortiernetzwerke
29
Bitonischer Sortierer
Sortiernetzwerke
30
Bitonischer Sortierer
Sortiernetzwerke
31
Bitonischer Sortierer
Laufzeit
Die Tiefe D(n) kann durch die
folgende Rekursionsgleichung
berechnet werden:
0
D ( n)
D(n / 2) 1
n 1
k
n 2 und k 1
D(n) log n
Sortiernetzwerke
32
Bitonischer Sortierer
Aus dem Null-Eins-Prinzip folgt, dass
jede beliebige bitonische Sequenz in
Tiefe log n sortiert werden kann.
Sortiernetzwerke
33
Bitonischer Sortierer
Vergleichselemente
Anzahl der Vergleichselemente in
einem bitonischen Sortierer:
v(n) n / 2 2v(n / 2)
n / 2 log n
Sortiernetzwerke
34
Mischnetzwerk
Ein Mischnetzwerk ist ein Netzwerk,
das zwei sortierte Eingabesequenzen
zur einer verschmilzt.
Sortiernetzwerke
35
Mischnetzwerk
Idee: bilde aus zwei vorsortierten
Sequenzen eine bitonische, und
sortiere diese wie gehabt.
Invertiere dafür die zweite
Eingabehälfte
Sortiernetzwerke
36
Mischnetzwerk
Äquivalent zu Halfcleaner
Sortiernetzwerke
37
Mischnetzwerk
Das Netzwerk Merger[n] ist identisch
mit dem bitonischen Sortierer,
allerdings wird der Halfcleaner
modifiziert.
Sortiernetzwerke
38
Mischnetzwerk
Sortiernetzwerke
39
Mischnetzwerk
Sortiernetzwerke
40
Mischnetzwerk
Laufzeit
Die Laufzeit ist identisch mit der des
bitonischen Sortierers
Sortiernetzwerke
41
Unser Sortiernetzwerk
Der Sortierer[n] sortiert eine beliebige
Eingabesequenz rekursiv durch zwei
Sortierer[n/2] und einen Mischer[n].
Sortiernetzwerke
42
Unser Sortiernetzwerk
Sortiernetzwerke
43
Unser Sortiernetzwerk
Sortiernetzwerke
44
Unser Sortiernetzwerk
Sortiernetzwerke
45
Unser Sortiernetzwerk
Laufzeit
Die Tiefe D(n) kann durch die folgende
Rekursionsgleichung bestimmt werden:
0
D ( n)
D(n / 2) log n
n 1
k
n 2 und k 1
D(n) (log n)
2
Sortiernetzwerke
46
Unser Sortiernetzwerk
Laufzeit
Damit können n beliebige Zahlen
parallel in Zeit
(log n)
2
sortiert werden.
Sortiernetzwerke
47
Unser Sortiernetzwerk
Vergleichselemente
Anzahl der Vergleichselemente:
n
n
v ( n) log n 2v ( )
2
2
1
2
( n log n n log n)
4
Sortiernetzwerke
48
Ende!
Sortiernetzwerke
49
Literatur
Th.H.Cormen/C.E.Leiserson/R.Rivest/C.Stein
Introduction to Algorithms, Second Edition
Sortiernetzwerke
50