Sortiernetzwerke. Patrick Bäuerle. Sommersemester Hochschule Aalen Betreuender Professor: Prof. Dr. Thierauf

Ähnliche Dokumente
Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Vom Leichtesten zum Schwersten Sortieralgorithmen

11 Logarithmus und allgemeine Potenzen

Einführung in die linearen Funktionen. Autor: Benedikt Menne

JAVA - Suchen - Sortieren

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

3 Vollständige Induktion

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl.

6. Parallele Algorithmen

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Lösungen zu Ungerade Muster in Pyramiden. Muster: Die Summe der ungeraden Zahlen (in jeder Teilpyramide) ist stets eine Quadratzahl.

2. Symmetrische Gruppen

6 Reelle und komplexe Zahlenfolgen

Induktive Definitionen

Sortierverfahren für Felder (Listen)

Algorithmen und Berechnungskomplexität I

18 Höhere Ableitungen und Taylorformel

$Id: reihen.tex,v /06/12 10:59:50 hk Exp $ unendliche Summe. a 1 + a 2 + a 3 +.

Übungen zur Linearen Algebra 1

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

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Kapitel 10. Lineare Abbildungen Definition linearer Abbildungen Eigenschaften und Beispiele Alle linearen Abbildungen R n V Bild von Unterräumen

Algorithmen und Datenstrukturen

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

TECHNISCHE UNIVERSITÄT MÜNCHEN

Datenstrukturen und Algorithmen

MATHEMATIK FÜR WIRTSCHAFTSWISSENSCHAFTLER MUSTERLÖSUNG 3. TEST

Beschreibungskomplexität von Grammatiken Definitionen

Vorlesung. Vollständige Induktion 1

Analysis I - Stetige Funktionen

Handout zu Beweistechniken

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Bin Packing oder Wie bekomme ich die Klamotten in die Kisten?

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

7 KONVERGENTE FOLGEN 35. inf M = Infimum von M. bezeichnet haben. Definition. Sei (a n ) n N eine beschränkte Folge in R. Dann heißt.

Informationsverarbeitung auf Bitebene

Kapitel 3. Natürliche Zahlen und vollständige Induktion

15 Hauptsätze über stetige Funktionen

7. Übungsblatt Aufgaben mit Lösungen

Algorithmen und Datenstrukturen Kapitel 10

Elementare Beweismethoden

Induktive Beweise und rekursive Definitionen

Nichtlineare Optimierung ohne Nebenbedingungen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Algorithmen II Vorlesung am

Definition 3.1. Sei A X. Unter einer offenen Überdeckung von A versteht man eine Familie (U i ) i I offener Mengen U i X mit U i

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Induktive Definitionen

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Mittwoch den

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

6 F O R M A L E S P R A C H E N. 6.1 formale sprachen

9 Konvergenz und absolute Konvergenz von Reihen

Minimal spannende Bäume

Kapitel 1. Grundlagen Mengen

6 Reelle und komplexe Zahlenfolgen

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

1. Aufgabe [2 Punkte] Seien X, Y zwei nicht-leere Mengen und A(x, y) eine Aussageform. Betrachten Sie die folgenden Aussagen:

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Allgemeines Gleichungssystem mit zwei Gleichungen und zwei Variablen. Der erste Index bezeichnet die Nummer der Zeile, der zweite die der Spalte.

Reihen/Partialsummenfolgen und vollständige Induktion. Robert Klinzmann

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Musterlösung zu Blatt 11, Aufgabe 1

Theoretische Informatik

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1)

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Grundlagen der Informationverarbeitung

Folgen und Reihen. Rainer Hauser. Februar 2011

Kapitel 16 : Differentialrechnung

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

Einführung in die Informatik I Kapitel II.3: Sortieren

Thema 4 Limiten und Stetigkeit von Funktionen

Fragen für die Klausuren

TU8 Beweismethoden. Daniela Andrade

Folge 13 - Quicksort

Abschnitt: Algorithmendesign und Laufzeitanalyse

Fachwissenschaftliche Grundlagen

Die Dimension eines Vektorraumes

Pratts Primzahlzertifikate

1 Das Prinzip der vollständigen Induktion

Induktive Beweise und rekursive Definitionen

Kapitel V. Folgen und Konvergenz. V.1 Konvergenz von Zahlenfolgen

Lösungen 1 zum Mathematik-Brückenkurs für alle, die sich für Mathematik interessieren

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Kapitel 1. Grundlagen

Numerische Ableitung

Lineare Algebra I. Auswahlaxiom befragen. (Wer schon im Internet danach sucht, sollte das auch mal mit dem Begriff

1.2 Eigenschaften der ganzen Zahlen

2 Mengen und Abbildungen

Programmiertechnik II

Vervollständigung Lateinischer Quadrate

mathe plus Aussagenlogik Seite 1

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Donnerstag den x > 1 3x > 3 3x + 3 > 6 6x + 3 > 3x + 6.

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

Transkript:

Sortiernetzwerke Patrick Bäuerle 40510 Hochschule Aalen Betreuender Professor: Prof. Dr. Thierauf Sommersemester 2015

Inhaltsverzeichnis 1 Einleitung 3 2 Grundlagen 4 2.1 Komparator................................... 4 2.2 Komparatornetzwerke............................. 4 2.3 0-1-Folge..................................... 6 2.4 Bitonische Folge................................ 6 3 Sortiernetzwerke 7 3.1 0-1-Prinzip................................... 7 3.2 Half-Cleaner................................... 8 3.3 Bitonischer Sortierer.............................. 9 3.4 Merger...................................... 12 3.5 Sortierer..................................... 13 4 Zusammenfassung und Rückblick 16 2

1 Einleitung Sortiernetzwerke sind Konstrukte, welche effiziente Lösungsansätze für Sortierprobleme in der Informatik bereitstellen. Zum Nachteil gegenüber normalen Sortierverfahren, können Sortiernetzwerke nur Folgen mit fester Länge sortieren, außerdem sind sie viel schwieriger zu konstruieren, als normale Sortieralgorithmen. Ein Vorteil von Sortiernetzwerken ist die parallele Verarbeitung von Zahlenfolgen. Dies ermöglicht insbesondere den Einsatz in Hardware. Ziel dieser Arbeit ist es, das effiziente n-sortiernetzwerk Sortierer, welches sich an dem Sortieralgorithmus Mergesort orientiert, zu entwerfen. Als Grundlagen werden Komparatoren und Komparatornetzwerke, 0-1-Folgen und bitonische Folgen erklärt. Mithilfe dieser Grundlagen werden Half-Cleaner, bitonischer Sortierer und Merger konstruiert. Diese Bausteine werden schließlich in das Sortiernetzwerk Sortierer eingebaut. 3

2 Grundlagen 2.1 Komparator Abbildung 2.1: Komparator Ein Komparator ist die kleinste Komponente in Sortier-/Komparatornetzwerken und wird in linearer Zeit abgearbeitet. Er besitzt genau zwei Eingänge i 1, i 2 sowie zwei Ausgänge o 1, o 2. Der Komparator vergleicht die Werte der beiden Eingänge miteinander und gibt anschließend den niedrigeren Wert an o 1 und den höheren Wert an o 2 aus. Formal sieht die Funktion eines Komparators folgendermaßen aus: o 1 = min(i 1, i 2 ) o 2 = max(i 1, i 2 ) 2.2 Komparatornetzwerke Ein Komparatornetzwerk besitzt n Eingänge e 1 e n und genauso viel Ausgänge a 1 a n. Eingang e i ist mit Ausgang a i (für i = 1,..., n)verbunden. Diese Verbindungen zwischen Eingängen und Ausgängen werden als Leitungen bezeichnet. Eine Leitung überträgt Werte von den Eingängen zu den Ausgängen. In Abbildung 2.2 verlaufen die Leitungen von links nach rechts. Die vertikalen Linien sind Komparatoren, welche zu Gunsten der Übersicht in Linien anstelle von Rechtecken dargestellt werden. An der linken Seite eines Punktes eines Komparators ist dessen Eingang, an der rechten Seite ist dessen Ausgang. Komparatoren vergleichen erst, wenn an beiden seiner Eingänge Werte anliegen. Ein Komparator liegt zwischen zwei beliebigen Leitungen. Er vergleicht die Werte am Eingang und gibt sie sortiert an den Ausgängen aus. Das heißt, wenn an den Eingängen eine Folge (e 1,..., e n ) anliegt, wird diese zum Ausgang transportiert. Im trivialen Fall, wenn das Komparatornetzwerk keinen Komparator hat, ist die Ausgangsfolge (a 1,..., a n ) = (e 1,..., e n ). Sind Komparatoren vorhanden, wird die Eingangsfolge durch die Komparatoren zur Ausgangsfolge transformiert. Die Ausgangsfolge ist immer eine Permutation der Eingangsfolge. 4

Abbildung 2.2: Komparatornetzwerk mit zwei Komparatoren Die Tiefe d eines Komparators entspricht der Anzahl der Komparatoren, welche auf derselben Leitung liegen und vorher ausgeführt wurden (Vorgänger) plus Eins. Tiefe d des Komparators K n wobei K 1,..., K n 1 Vorgänger von K sind: d(k n ) = d(k K 1 ) + 1 Die Tiefe eines Komparatornetzwerkes ist die maximale Tiefe der Komparatoren im Netzwerk. Komparatornetzwerke werden parallel abgearbeitet, allerdings können nur Komparatoren zeitgleich ausgeführt werden, wenn sich deren Eingänge auf verschiedenen Leitungen befinden. Das heißt Komparatoren in der gleichen Tiefe werden gleichzeitig ausgeführt. Sei n die Anzahl der Leitungen. bei n Leitungen können also maximal n 2 Komparatoren gleichzeitig ausgeführt werden. Abbildung 2.3: Tiefe in Komparatornetzwerken. Komparatoren mit derselben Tiefe werden parallel ausgeführt. In Abbildung 2.4 vergleicht der erste Komparator K 1 die Werte auf den Leitungen e 1 und e 3. Die Werte müssen nicht vertauscht werden, da der niedrigere Wert schon oben anliegt. Komparator K 2 vergleicht die Werte auf e 2 und e 4 und vertauscht diese, da der Wert auf der Leitung e 2 > e 4. 5

Abbildung 2.4: Komparatornetzwerk, Beispiel mit Zahlen 2.3 0-1-Folge Definition 1 Eine Folge heißt 0-1-Folge, wenn gilt: a i [0, 1] i N Bsp. 1 010101010101010, 1111100000, 1 Definition 2 Ein Bereich einer 0-1-Folge heißt clean, wenn dieser nur aus Nullen oder nur aus Einsen besteht. 2.4 Bitonische Folge Definition 3 Eine 0-1-Folge (x n ) mit n Elementen heißt bitonisch, falls es einen Index i gibt, so dass gilt: (x 1,..., x i ) ist monoton steigend und (x i+1,..., x n ) ist monoton fallend, oder umgekehrt. Alle 0-1-Folgen mit n 2 Elementen sind bitonisch. Bsp. 2 Es gibt maximal zwei Wechsel zwischen Nullen und Einsen: 0001000, 110, 0, 11111, 1101 6

3 Sortiernetzwerke Sortiernetzwerke sind Komparatornetzwerke, welche beliebige Eingangsfolgen sortieren, so dass die Ausgangsfolge monoton steigend ist. Wenn ein Komparatornetzwerk eine Folge korrekt sortiert, bedeutet das nicht, dass es ein Sortiernetzwerk ist. Ein Sortiernetzwerk der Größe n muss alle möglichen Eingangsfolgen sortieren. 3.1 0-1-Prinzip Satz 1 Wenn ein Komparatornetzwerk mit n Eingängen alle 2 n möglichen 0-1-Eingangsfolgen sortiert, dann sortiert es jede beliebige Folge mit beliebigen Zahlenwerten. Das 0-1-Prinzip wird dazu verwendet, den Beweis für die Korrektheit eines Sortiernetzwerks zu vereinfachen. Es reicht also aus, nur die korrekte Sortierung aller 0-1-Folgen zu beweisen. Falls das 0-1-Prinzip auf ein Komparatornetzwerk zutrifft, bedeutet dies, dass dieses Komparatornetzwerk ein Sortiernetzwerk ist. Theoretisch lassen sich neben Zahlenwerten auch andere Werte sortieren, sofern diese einen logischen Vergleich zulassen. Für den Beweis des 0-1-Prinzips muss erst folgendes Hilfs-Lemma eingeführt werden: Lemma 1 Wenn ein Komparatornetzwerk eine Folge (a n ) = (a 1, a 2,..., a n ) in die Form (b n ) = (b 1, b 2,..., b n ) transformiert, dann gilt für jede monotone Funktion f: Das Komparatornetzwerk transformiert die Folge f(a) = (f(a 1 ), f(a 2 ),..., f(a n )) in die Form f(b) = (f(b 1 ), f(b 2 ),..., f(b n )). Beweis von Lemma 1. Das Lemma baut darauf auf, dass ein Komparator mit der Eingabe (f(x), f(y)) am oberen Ausgang f(min(x, y)) und am unteren Ausgang f(max(x, y)) ausgibt. Als Beweis dieser Aussage gilt folgende Überlegung: Ein Komparator mit der Eingabe (x, y) gibt am oberen Ausgang min(x, y) und am unteren Ausgang max(x, y) aus. Bei monton steigenden Funktion gilt: x y impliziert f(x) f(y). Daher ergibt sich: min(f(x), f(y)) = f(min(x, y)) und max(f(x), f(y)) = f(max(x, y)), womit die obige Aussage bewiesen ist. Beweis des 0-1-Prinzips. Angenommen das 0-1-Prinzip wäre falsch. Dann gäbe es ein Komparatornetzwerk, welches alle 2 n 0-1-Folgen sortiert, aber nicht alle beliebigen Folgen. Das heißt es gibt eine Folge (a n ) mit a i < a j, aber das Komparatornetzwerk setzt 7

a j vor a i in die Ausgangsfolge. Wir definieren folgende monotone Funktion: { 0 für x a i f(x) = (3.1) 1 für x > a i Da der Komparator a j vor a i setzt, folgt aus Lemma 1, dass er f(a j ) vor f(a i ) setzt. Da a j > a i, gilt f(a j ) = 1 und f(a i ) = 0. Somit wird die Folge (a n ) nicht sortiert, falls die 0-1-Folge nicht sortiert wird. 3.2 Half-Cleaner Ein Half-Cleaner ist ein Komparatornetzwerk, welches eine bitonische Folge der Größe n so transformiert, dass gilt: (a 1,..., a n ) ist bitonisch und (a n 2 2 +1,..., a n ) ist clean beziehungsweise (a 1,..., a n ) ist 2 clean und (a n 2 +1,..., a n ) ist bitonisch Das heißt, wenn eine 0-1-Folge am Eingang anliegt, dann sortiert der Half-Cleaner diese so, dass die niedrigeren Werte in der ersten Hälfte der Ausgangsfolge sind und die höheren Werte in der zweiten Hälfte. Beide Hälften sind jeweils bitonisch. Ein Half- Cleaner der Größe n besitzt n 2 Komparatoren. Die Komparatoren K 1,..., K i vergleichen Leitung i mit Leitung i + n 2 für i = 1,..., n 2. Dies bedeutet auch, dass der Half-Cleaner nur Eingaben verarbeiten kann, welche eine Länge von 2 k haben. Abbildung 3.1: Zwei Half-Cleaner mit Zahlenbeispielen Abbildung 3.1 verdeutlicht die Funktionsweise des Half-Cleaners. Beweis: Funktionsweise eines Half-Cleaners. Eine bitonische 0-1-Folge hat entweder die Form 0 i 1 j 0 k oder 1 i 0 j 1 k für i, j, k 1. Bewiesen wird die Funktion für die Eingangsfolge in Form 0 i 1 j 0 k. 1 i 0 j 1 k wird analog bewiesen. Wenn der Einserblock komplett in der ersten oder zweiten Hälfte der Folge ist, also nicht durch n 2 getrennt wird, dann ist die Funktion trivialerweise bewiesen, da der Einserblock vom Half-Cleaner nur von der einen Hälfte auf die andere Hälfte verschoben wird, bzw. die ursprüngliche Form erhalten bleibt. 8

Sei der Anfang des Einserblocks bei n 2 α und das Ende bei n 2 + β. Wenn n 2 α β (der Bereich der Nullen in der ersten Hälfte der Bereich der Einsen in der zweiten Hälfte), dann besteht die erste Hälfte der Ausgangsfolge nur aus Nullen. Wenn n 2 α < β (der Bereich der Nullen in der ersten Hälfte <der Bereich der Einsen in der zweiten Hälfte), dann besteht die zweite Hälfte der Ausgangsfolge nur aus Einsen. 3.3 Bitonischer Sortierer Der bitonische Sortierer sortiert eine bitonische Eingabefolge der Länge n = 2 k für k 1. Er ist rekursiv aufgebaut und besteht, wie in Abbildung 3.2 abgebildet, aus einem Half- Cleaner der Größe n und zwei parallel geschalteten bitonischen Sortierern der Größe n 2. Abbildung 3.2: Bitonischer Sortierer In Abbildung 3.3 ist der bitonische Sortierer der Größe n = 8 abgebildet. Die Rekursion aufgelöst ergibt sieben Half-Cleaner. Der erste Half-Cleaner hat noch die ursprüngliche Größe 8. Die mittleren Half-Cleaner sind halb so groß, deswegen werden zwei parallel 9

geschalten, um alle acht Eingänge zu verarbeiten. Die rechten vier Half-Cleaner bestehen nur noch aus jeweils einem einfachen Komparator und werden ebenfalls parallel abgearbeitet. Daraus lässt sich folgende allgemeine Aussage treffen: Durch die Rekursion halbiert sich die Größe eines Half-Cleaners pro Rekursionsebene, also lg n Rekursionsebenen. Für eine Rekursionsebene k sind n k Half-Cleaner notwendig, um alle n Leitungen zu verarbeiten. Also hat ein bitonischer Sortierer mit n Leitungen n 1 Half-Cleaner. Da der Half-Cleaner eine Tiefe von 1 hat, sind die Anzahl der Rekursionsebenen des bitonischen Sortierers und die Tiefe des bitonischen Sortierers identisch. d bitonischersortierer = lg n Beweis: Funktionsweise eines bitonischen Sortierers. Nach dem ersten Half-Cleaner ist entweder die erste Hälfte clean und besteht aus Nullen oder die zweite Hälfte ist clean und besteht aus Einsen. (Beweis in Kapitel 3.2). Die jeweils andere Hälfte is eine bitonische Folge. Die Hälfte, welche clean ist, wird nicht mehr verändert. Die andere Hälfte wird durch den nächsten Half-Cleaner wieder in zwei bitonische Hälften sortiert, wobei eine clean ist. Im nächsten Rekursionsschritt können wieder die zwei oben genannten Formen auftreten. dadurch vergrößert sich der linke Nullblock oder der rechte Einserblock so lange, bis es nur noch eine sortierte Folge gibt. 10

Abbildung 3.3: Bitonischer Sortierer der Größe 8 11

3.4 Merger Der Merger fügt zwei jeweils sortierte Eingaben der Größe n 2 zusammen und gibt eine sortierte Ausgangsfolge der Größe n aus. Da der bitonische Sortierer eine bitonische Folge als Eingabe benötigt, gleichzeitig aber eine sortierte Folge ausgibt, dreht man die zweite Folge um und hängt diese an die erste Folge an. Folglich wird aus einer sortierten Folge eine bitonische Folge. Bsp. 3 x = 0000111111, y = 000000000001 z = x + y R 0000111111100000000000 = 0000111111 + 100000000000 Diese Invertierung wird implizit realisiert, indem der Half-Cleaner in der ersten Rekursionsebene so abgeändert wird, dass die Anschlüsse der zweiten Hälft invertiert werden. Somit muss die zweite sortierte Folge (im obigen Beispiel y) nicht mit Zusatzaufwand invertiert werden. Das heißt: anstatt i und n 2 + i vergleicht man i und n-i+1. Der modifizierte Half-Cleaner gibt zwei bitonische Folgen der Größe n 2 aus, welche von jeweils einem Half-Cleaner der Größe n 2 bearbeitet wird. Abbildung 3.4: Merger der Größe n=8. Die grünen Kästen stellen die Rekursionsebenen dar. Die erste Rekursionsebene ist gegenüber dem bitonischen Sortierer modifiziert. Da der Merger vom Aufbau fast gleich, wie der bitonische Sortierer ist, muss nur der modifizierte Half-Cleaner bewiesen werden. Der modifizierte Half-Cleaner wandelt zwei sortierte Eingaben der Länge n 2 in zwei bitonische Folgen der Länge n 2 um. Beweis: Funktionsweise des Mergers. α wird als die Anzahl der Einsen der ersten Folge definiert. β wird als die Anzahl der Nullen der zweiten Folge definiert. 12

Wenn α > β gilt, dann folgt: 0,..., n 2 besteht nur aus Nullen. n 2,..., n ist bitonisch. Der Nullerblock 0,..., n 2 α bleibt immer unverändert, da er ganz am Anfang der Folge steht und es keine kleinere Zahlen in der 0-1-Folge geben kann. Die Einsen im Einserblock werden mit den Nullen aus β getauscht. Da α > β werden in β alle Nullen durch Einsen getauscht. Im α-block bleiben noch α β Einsen übrig. Dadurch entsteht für die erste Hälfte die Form: 0 i 1 j 0 k für i, j, k 1. Wenn α < β gilt, dann folgt: 0,..., n 2 ist bitonisch. n 2,..., n besteht nur aus Einsen. Der Einserblock n 2 + β,..., n bleibt immer unverändert, da er ganz hinten in der Folge steht und es keine größeren Zahlen in der 0-1-Folge geben kann. Da α < β werden in α alle Nullen durch Einsen getauscht. Im β-block bleib noch β α Einsen übrig. Dadurch entsteht für die zweite Hälfte die Form: 1 i 0 j 1 k für i, j, k 1 Wenn α = β gilt, dann folgt: 0,..., n 2 ist clean und besteht aus Nullen. n 2,..., n ist clean und besteht aus Einsen. 0,..., n ist sortiert Die zwei äußersten Blöcke werden nicht verändert. α und β sind genau gleich groß, was bedeutet, dass die Nullen aus α in β landen und umgekehrt. 3.5 Sortierer Das Sortiernetzwerk Sortierer ist rekursiv definiert und besteht aus Mergern, welche wiederum aus den Komponenten der vorherigen Kapiteln besteht. Der Sortierer basiert auf dem Mergesort-Verfahren. Es wird eine Eingabefolge sukzessive verkleinert, bis nur noch zwei Werte verglichen werden müssen. Danach werden alle Teilfolgen wieder zu einer 13

gemeinsamen Folge zusammengesetzt. Abbildung 3.5 illustriert den rekursiven Aufbau des Sortierers. Ein Sorter der Größe n besteht aus einen Merger der Größe n und zwei parallel laufenden Sortierern der Größe n 2. Abbildung 3.5 zeigt das vereinfachte, noch nicht rekursiv aufgelöste Sortiernetzwerk. Die Tiefe des Sortierers setzt sich aus der Tiefe des Mergers in der obersten Rekursionsebene und der Tiefe eines n 2 -Sortierers zusammen. Der zweite n 2 -Sortierer läuft parallel zum Anderen und wirkt sich daher nicht auf die Tiefe aus. Die Tiefe des Mergers ergibt sich aus d merger = lg n. Ein n 2 -Sortierer beinhaltet n 2 k -Merger. Ein 1-Merger besteht nur aus einem einzigen Komparator und hat daher die Tiefe 1. Somit ergibt sich die 2 k Tiefe d = d merger +d n/2 Sortierer = lg n+d n/2 Sortierer. Mit dem Master-Theorem (siehe [CLRS01, Kap. 4]) folgt d sortierer[n] = Θ(lg 2 n) Abbildung 3.5: Aufbau des Mergers In Abbildung 3.6 ist ein Sortierer der Größe n = 8 zu sehen. (a) zeigt den Sortierer, wenn man die Rekursion des Sortierers nach Mergern auflöst. (b) zeigt denselben Sortierer, komplett nach Komparatoren aufgelöst. (a) Sortierer mit aufgelöster Rekursion (b) Sortiernetzwerk aus (a), mit Komparatoren eingesetzt Abbildung 3.6: Sortierer der Größe n = 8 Beweis: Funktionsweise des Sortierers. Behauptung: Sortierer der Größe n = 2 k für k 1 sortiert alle 0-1-Folgen. Induktionsanfang: k = 1 Der Sortierer besteht aus einem Merger, welche aus nur einem Komparator besteht und daher die Folge sortiert. 14

Induktionsschritt: k = k+1 Ein Sortierer der Größe 2 k+1 besteht aus zwei Sortierer der Größe 2 k und einem Merger der Größe 2 k+1 (siehe Abbildung 3.5). Nach Induktionsvoraussetzung sortiert der Sortierer der Größe 2 k korrekt. Durch die beiden 2 k -Sortierer werden jeweils die Eingangsfolgen in sortierte Folgen umgewandelt. Der Merger wandelt die zwei für sich sortierten Folgen in einer sortierte Folge um (siehe Beweis in Kapitel 3.4). Somit sortiert der Sortierer jede beliebige 0-1-Folge der Größe 2 k für k 1. Mit dem 0-1-Prinzip (siehe Satz 1) folgt: Das Sortiernetzwerk Sortierer sortiert jede beliebige Eingangsfolge. 15

4 Zusammenfassung und Rückblick Komparatornetzwerke (Kap. 2.2 ) sind Leitungen, welche über Komparatoren verbunden sind. Sortiernetzwerke sind Sonderfälle von Komparatornetzwerke, welche jede beliebe Eingabe sortieren. Die Korrektheit eines Sortiernetzwerkes kann man mithilfe des 0-1- Prinzips ( Satz 1 )bewiesen werden. Das Sortiernetzwerk Sortierer (Kap. 3.5) sortiert jede beliebe Zahlenfolge der Länge 2 k für k 1 in O(lg (2 k )). Um den Sortierer zu konstruieren, wurde zuerst der Half-Cleaner (Kap. 3.2) eingeführt. Der Half-Cleaner wandelt eine bitonische Folge der Größe n in zwei bitonische Folgen der Größe n 2 um. Die obere Folge enthält die niedrigen Werte, die untere Folge enthält die höheren Werte. Eine dieser zwei Folgen ist clean. Der Half-Cleaner wurde dann im bitonischen Sortierer (Kap. 3.3) verbaut. Der bitonische Sortierer sortiert bitonische Folgen. Der Merger(Kap. 3.4) kann zwei sortierte Folgen in eine sortiere Folge zusammenfügen und wird aus bitonischen Sortierern konstruiert. Er ist genauso wie der bitonische Sortierer rekursiv definiert. Der Merger wird schließlich im Sortiernetzwerk Sortierer (Kap. 3.5) verbaut. Der Sortierer sortiert eine beliebige Folge in O(lg 2 n). Parallele Algorithmen sind heutzutage wichtig, da die Hardware nur noch kleine Fortschritte macht, im Gegensatz zu den gigantischen Datenmengen, welche heutzutage verarbeitet werden müssen. Parallele Algorithmen können diesen Rückstand unter Umständen ausgleichen. Zudem wird Hardware immer billiger und macht es somit möglich, parallele Algorithmen zu realisieren. Sortiernetzwerke lassen sich sehr leicht in Hardware realisieren, da sie auf einfachen logischen Vergleichen basieren. Problematisch wird die Anwendung der parallelen (Sortier-)Algorithmen im privaten Bereich. Im privaten Bereich werden kaum mehr als vier Prozessoren eingesetzt. Mit vier Prozessoren lassen sich allerdings nur Folgen mit einer Länge bis zu 16 Stellen bearbeiten. 16

Abbildungsverzeichnis 2.1 Komparator................................... 4 2.2 Komparatornetzwerk mit zwei Komparatoren................ 5 2.3 Tiefe in Komparatornetzwerken. Komparatoren mit derselben Tiefe werden parallel ausgeführt............................. 5 2.4 Komparatornetzwerk, Beispiel mit Zahlen.................. 6 3.1 Zwei Half-Cleaner mit Zahlenbeispielen................... 8 3.2 Bitonischer Sortierer.............................. 9 3.3 Bitonischer Sortierer der Größe 8....................... 11 3.4 Merger der Größe n=8. Die grünen Kästen stellen die Rekursionsebenen dar. Die erste Rekursionsebene ist gegenüber dem bitonischen Sortierer modifiziert.................................... 12 3.5 Aufbau des Mergers.............................. 14 3.6 Sortierer der Größe n = 8........................... 14 17

Literaturverzeichnis [adh] Friedhelm Meyer auf der Heide. Sortiernetzwerke. [CLRS01] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms. 2001. [HP] Sariel Har-Peled. Sorting networks. 18