a861992d1334c2e237723e30188a7815bd3c75b7
[diplomarbeit.git] / diplomarbeit.tex
1 \documentclass[a4paper,10pt]{article}
2 \usepackage[utf8]{inputenc}
3 \usepackage{ngerman}
4 \usepackage{fancyhdr}
5 \usepackage{geometry}
6 \usepackage{amsmath, bbm}
7 \usepackage{amsfonts}
8 \usepackage{amssymb}
9 \usepackage{listings}
10 \usepackage{graphicx}
11 \usepackage{url}
12 %\usepackage{longtable}
13 \usepackage{subfigure}
14 \usepackage{icomma}
15
16 \usepackage{tikz}
17 \usetikzlibrary{arrows,shapes}
18
19 % Fuer mathtoolsset
20 \usepackage{mathtools}
21
22 \geometry{paper=a4paper,margin=25mm}
23
24 \pagestyle{fancy}
25 %\fancyhf{}
26 %\fancyhead[LO,LE]{"Ubung zu Computational Intelligence}
27 %\fancyhead[CO,CE]{2006-05-15}
28 %\fancyhead[RO,RE]{Florian Forster (2099894)}
29
30 \title{Evolutionäre Optimierung von Sortiernetzwerken}
31 \author{Florian Forster}
32 \date{\today}
33
34 \newcommand{\false}{\textsc{False}}
35 \newcommand{\true}{\textsc{True}}
36 \newcommand{\todo}[1]{{\bf TODO:} #1}
37 \newcommand{\qed}{\hfill $\Box$ \par \bigskip}
38
39 \newtheorem{definition}{Definition}
40 \newtheorem{satz}{Satz}
41
42 % Zeige Nummern nur bei referenzierten Gleichungen an.
43 \mathtoolsset{showonlyrefs=true}
44
45 \begin{document}
46
47 \tikzstyle{vertex}   = [circle,draw,thick,fill=black,minimum size=5,inner sep=0pt]
48 \tikzstyle{comp}     = [draw,thick,-]
49 \tikzstyle{compup}   = [draw,thick,->]
50 \tikzstyle{compdown} = [draw,thick,<-]
51 \tikzstyle{edge}     = [draw,thick,-]
52 \tikzstyle{diredge}  = [draw,thick,->]
53 \tikzstyle{prob}     = [font=\tiny]
54
55 \tikzstyle{red box}   = [draw,-,color=red, top color=red!2,bottom color=red!10]
56 \tikzstyle{blue box}  = [draw,-,color=blue,top color=blue!2,bottom color=blue!10]
57 \tikzstyle{green box} = [draw,-,color=teal,top color=teal!2,bottom color=teal!10]
58 \tikzstyle{gray box}  = [draw,-,color=black, top color=black!2,bottom color=black!10]
59
60 \maketitle
61 \begin{abstract}
62 Sortiernetzwerke werden eingeführt und einige bekannte Konstruktionen werden
63 vorgestellt (Off-Even-Transposition, Bitonic-Merge, Odd-Even-Merge, Pairwise).
64 Transformationsmöglichkeiten für Sortiernetzwerke werden besprochen.
65 Evolutionäre Algorithmen werden beschrieben und ein evolutionärer
66 Algorithmus für die Optimierung von Sortiernetzwerken wird angegeben.
67 Die mindestens von diesem Algorithmus erreichte Güte wird angegeben und die
68 Transformation zu einer Markov-Kette wird gezeigt. {\em Natürlich: So fern ich
69 das hinbekomme bzw. Recht behalte.}
70 \end{abstract}
71 \newpage
72
73 \tableofcontents
74 \newpage
75
76 \section{Motivation und Einleitung}
77
78 \subsection{Motivation}\label{sect:motivation}
79
80 \begin{itemize}
81 \item Sortiernetzwerke sind toll, weil $\ldots$
82 \item Sortiernetzwerke sind einfach erklärt, aber trotzdem kompliziert.
83 \item Bisher noch kein evolutionärer Algorithmus zur automatischen
84   Optimierung von Sortiernetzwerken bekannt. \textit{(Glaube ich zumindest.)}
85 \end{itemize}
86
87 \subsection{Einleitung}\label{sect:einleitung}
88
89 \subsubsection{Sortiernetzwerke}\label{sect:einleitung_sortiernetzwerke}
90
91 {\em Komparatoren} sind die Bausteine, die {\em Sortiernetzwerken} zugrunde
92 liegen. Sie haben zwei Eingänge über die sie zwei Zahlen erhalten können.
93 Ausserdem besitzt ein {\em Komparator} zwei Ausgänge, die im Gegensatz zu den
94 Eingängen unterscheidbar sind: Die grö"sere der beiden Zahlen wird immer auf
95 dem einen, die kleinere der beiden Zahlen immer auf dem anderen Ausgang
96 ausgegeben.
97
98 Wenn man nun mehrere {\em Komparatoren} miteinander kombiniert, also die
99 Ausgänge von {\em Komparatoren} mit dem Eingängen anderer {\em Komparatoren}
100 verbindet, erhält man ein {\em Komparatornetzwerk}.
101
102 \begin{figure}
103 \begin{center}
104 \input{images/einfaches_komparatornetzwerk.tex}
105 \end{center}
106 \caption{Einfaches Komparatornetzwerk mit vier Ein- bzw. Ausgängen, bestehend
107 aus 5~Komparatoren.}
108 \label{fig:einfaches_komparatornetzwerk}
109 \end{figure}
110
111 Abbildung~\ref{fig:einfaches_komparatornetzwerk} zeigt ein einfaches
112 Komparatornetzwerk aus fünf Komparatoren in der üblichen Darstellungsweise:
113 Die horizontalen Linien stellen Leitungen von den Eingängen auf der linken
114 Seite zu den Ausgängen auf er rechten Seite dar. Die vertikalen Pfeile
115 symbolisieren die Komparatoren, die die Werte "`auf den Leitungen"'
116 vergleichen und ggf. vertauschen. Nach einem Komparator befindet sich die
117 kleinere Zahl immer auf der Leitung, auf die der Pfeil zeigt, die größere Zahl
118 befindet sich auf der Leitung auf der der Pfeil seinen Ursprung hat.
119
120 Komparatornetzwerke, die für jede beliebige Eingabepermutation eine
121 Ausgabe erzeugen, die der Sortierung der Eingabe entspricht, heißen 
122 {\em Sortiernetzwerke}. Das in
123 Abbildung~\ref{fig:einfaches_komparatornetzwerk} gezeigte Komparatornetzwerk
124 ist kein Sotiernetzwerk: Die Eingabefolge ${(1, 2, 3, 4)}$ würde zur Ausgabe
125 ${(2, 1, 3, 4)}$ führen -- die bestehenden Sortierung wird also sogar
126 zerstört.
127
128 Zu beweisen, dass ein gegebenes Komparatornetzwerk die Sortiereigenschaft
129 {\em nicht} hat, ist mit einem gegebenen Gegenbeispiel also einfach möglich.
130 Dieses Gegenbeispiel zu finden ist allerdings aufwendig.
131
132 \todo{Wie findet man die Gegenbeispiele? Die {\em Entscheidung}, ob ein
133 Netzwerk sortiert, ist doch NP-vollständig, also müsste doch das Finden eines
134 Gegenbeispiels im Allgemeinen auch exponentialle Laufzeit haben..?}
135 \todo{Wenn die {\em Entscheidung}, ob ein Netzwerk sortiert, NP-vollständig
136 ist, müsse man dann nicht einen Zeugen für die Sortiereigenschaft angeben
137 können?}
138
139 \todo{$0-1$-Prinzip}
140
141 Um zu überprüfen, ob ein gegebenes Komparatornetzwerk die Sortiereigenschaft
142 besetzt, müssen nicht alle $n!$ Permutationen von $n$~unterschiedlichen Zahlen
143 ausprobieren. Stattdessen reicht es zu überprüfen, dass das Netzwerk alle
144 $2^n$~${0-1}$-Folgen sortiert.
145
146 Sortiernetzwerke:
147 \begin{itemize}
148 \item Ein Komparator-Netzwerk ist $\ldots$
149 \item Ein Komparator-Netzwerk ist ein Sortiernetzwerk, wenn $\ldots$
150 \item Die Frage nach der Sortiereigenschaft ist NP-vollständig.
151 \end{itemize}
152
153 \subsubsection{Evolutionäre Algorithmen}
154
155 Viele {\em kombinatorische Optimierungsprobleme} sind schwer zu lösen -- die
156 entsprechenden Entscheidungsprobleme liegen oft in der Komplexitätsklasse
157 $NP$, sind also mit bekannten Verfahren nicht effizient exakt lösbar. Sollte
158 sich herausstellen, dass diese Probleme nicht in der Komplexitätsklasse $P$
159 liegen, wäre eine Konsequenz, dass es effiziente exakte Algorithmen für diese
160 Probleme nicht geben kann. Falls sich hingegen herausstellt, dass diese
161 Probleme in der Komplexitätsklasse~$P$ liegen, wird es mit großer
162 Wahrscheinlichkeit noch einige Zeit dauern bis auch Algorithmen mit
163 praktikablen Zeitkonstanten gefunden werden.
164
165 Aus diesem Grund besteht die Notwendigkeit einen Kompromiss einzugehen: Statt
166 die bzw. eine der {\em optimalen} Lösungen als einzige Ausgabe des Algorithmus
167 zuzulassen, wird eine "`möglichst gute"' Lösung ausgegeben. Viele dieser
168 Optimierungsalgorithmen orientieren sich an Vorgängen in der Natur,
169 beispielsweise immitieren die "`Ameisenalgorithmen"' das Verhalten von Ameisen
170 auf der Futtersuche um kurze Rundreisen auf Graphen zu berechnen.
171
172 Bei {\em Evolutionären Algorithmen} stand die Evolution pate. Die Grundidee
173 ist es, bestehende Lösungen zu neuen, unter Umständen besseren Lösungen zu
174 kombinieren. Dabei bedient man sich der in der Evolutionstheorie etablierten
175 Nomenklatur, beispielsweise werden konkrete Lösungen für ein Problem häufig
176 als {\em Individuum} bezeichnet.
177
178 Die Vorgehensweise lässt sich abstrakt wie folgt beschreiben. Aus einer
179 bestehenden Lösungsmenge, der {\em Population} werden zufällig Lösungen
180 ausgesucht {\em (Selektion)} und zu einer neuen Lösung kombiniert ({\em
181 Rekombination}). Unter Umständen wird die neue Lösung noch zufällig
182 verändert {\em (Mutation)}, bevor sie in die bestehende Lösungsmenge
183 integriert wird. Die Wahrscheinlichkeiten, beispielsweise bei der {\em
184 Selektion}, sind dabei nicht zwangsläufig gleichverteilt -- üblicherweise
185 werden bessere Lösungen bevorzugt. Zur Bewertung die die sogenannte {\em
186 Gütefunktion}.
187
188 Nicht alle Probleme eignen sich für diese Strategie: Zum einen muss es möglich
189 sein, eine initiale Population zur Verfügung zu stellen, da diese als Basis
190 aller weiteren Operationen dient. Das ist häufig keine große Einschränkung, da
191 es oft einfach ist {\em irgendeine} Lösung anzugeben. Zum anderen muss eine
192 Methode für die Rekombination existieren. Das insbesondere dann problematisch
193 wenn {\em Nebenbedingungen} eingehalten werden müssen.
194
195 \begin{itemize}
196 \item Unter einem "`Evolutionären Algorithmus"' versteht man $\ldots$
197 \item Da die Sortiereigenschaft zu überprüfen NP-schwer ist, ist die
198 Mutation \textit{(vermutlich)} nicht (effizient) möglich.
199 \end{itemize}
200
201 \section{Bekannte konstruktive Sortiernetzwerke}
202
203 Übersicht über bekannte konstruktive Sortiernetzwerke.
204
205 \subsection{Odd-Even-Transpositionsort}
206 \label{sect:odd_even_transpositionsort}
207
208 Das Sortiernetzwerk {\em Odd-Even-Transpositionsort} (OET) ist eines der
209 einfachsten Sortiernetzwerke. Es besteht aus $n$~{\em Schichten}, die jede
210 "`Leitung"' abwechselnd mit den benachbarten Leitungen verbindet.
211 Abbildung~\ref{fig:odd_even_transposition_08} zeigt das OET-Netzwerk für
212 ${n = 8}$ Leitungen.
213
214 \begin{figure}
215 \begin{center}
216 \input{images/oe-transposition-8.tex}
217 \end{center}
218 \caption{Das {\em Odd-Even-Transpositionsort} Netzwerk für acht Eingänge.}
219 \label{fig:odd_even_transposition_08}
220 \end{figure}
221
222 \subsection{Batcher's Mergesort}
223
224 Ein Netzwerk von K.~E.~Batcher. Siehe:
225 K.E. Batcher: Sorting Networks and their Applications. Proc. AFIPS Spring
226 Joint Comput. Conf., Vol. 32, 307-314 (1968)
227 \todo{Bibtex!}
228
229 \subsubsection{Der bitone Mischer}\label{sect:der_bitone_mischer}
230
231 Das Netzwerk basiert auf dem {\em bitonen Mischer}, einem Komparator-Netzwerk,
232 das eine beliebige bitone Folge in eine sortierte Listen umordnen kann. Eine
233 {\em bitone Folge} ist eine monoton steigende Folge gefolgt von einer monoton
234 fallenden Folge, oder ein zyklischer Shift davon.
235 Abbildung~\ref{fig:beispiel-biton} zeigt die vier prinipiellen Möglichkeiten
236 die durch zyklische Shifts entstehen können. Die wichtigsten Varianten für
237 Batcher's Mergesort-Netzwerk zeigen die Abbildungen~\ref{fig:beispiel-biton-0}
238 und~\ref{fig:beispiel-biton-1}. Sie erhält man, wenn man eine aufsteigend und
239 eine absteigend sortierte Liste aneinanderhängt. Bei den
240 anderen beiden Formen ist wichtig zu beachten, dass das letzte Element nicht
241 größer (Abbildung~\ref{fig:beispiel-biton-2}) bzw. kleiner
242 (Abbildung~\ref{fig:beispiel-biton-3}) als das erste Element der Folge sein
243 darf.
244
245 \begin{figure}
246   \centering
247   \subfigure[aufsteigend, absteigend]{\input{images/beispiel-biton-0.tex}\label{fig:beispiel-biton-0}}
248   \subfigure[absteigend, aufsteigend]{\input{images/beispiel-biton-1.tex}\label{fig:beispiel-biton-1}}
249   \subfigure[aufsteigend, absteigend, aufsteigend]{\input{images/beispiel-biton-2.tex}\label{fig:beispiel-biton-2}}
250   \subfigure[absteigend, aufsteigend, absteigend]{\input{images/beispiel-biton-3.tex}\label{fig:beispiel-biton-3}}
251   \caption{Beispiele bitoner Folgen.}
252   \label{fig:beispiel-biton}
253 \end{figure}
254
255 \begin{figure}
256   \centering
257   \subfigure[normal]{\input{images/bitonic-merge.tex}\label{fig:bitonic-merge-normal}}
258   \qquad
259   \subfigure[trichter]{\input{images/bitonic-merge-trichter.tex}\label{fig:bitonic-merge-tricheter}}
260   \caption{Schematischer Aufbau des bitonen Mischers: Jedes Element der
261   aufsteigenden Folge $u_0, u_1, \ldots$ wird mit dem entsprechenden Element
262   der absteigend sortierten Folge $v_0, v_1, \ldots$ verglichen. Die beiden
263   resultierenden Teilfolgen sind wiederum biton.}
264   \label{fig:bitonic-merge-schema}
265 \end{figure}
266
267 Der Mischer funktioniert folgendermaßen: Gegeben sind zwei Folgen mit je
268 ${m = \frac{n}{2}}$ Elementen, $U = \left(u_0, u_1, \ldots, u_{m-1}\right)$ und
269 $V = \left(v_0, v_1, \ldots, v_{m-1}\right)$. Die Folge $U$ sei aufsteigend
270 sortiert, die Folge $V$ sei absteigend sortiert:
271 \begin{eqnarray}
272  u_0 \leqq u_1 \leqq &\ldots& \leqq u_{m-1} \\
273  v_0 \geqq v_1 \geqq &\ldots& \geqq v_{m-1}
274 \end{eqnarray}
275 Im ersten Schritt werden nun jeweils die Elemente an den gleichen relativen
276 Positionen verglichen und ggf. vertauscht:
277 \begin{equation}
278 u_i \longleftrightarrow v_i, \quad 0 \leqq i < m
279 \end{equation}
280 Sei $j \in \{0 \ldots m\}$ der Index der ersten Elemente $u_j$ und $v_j$, die
281 durch den gemeinsamen Komparator vertauscht werden. Unter der Annahme, dass
282 Elemente nur vertauscht werden wenn, sie ungleich sind, muss ${u_j > v_j}$
283 gelten. Mit $u_j \leqq u_{j+1}$ und $v_j \geqq v_{j+1}$ folgt daraus $u_{j+1}
284 > v_{j+1}$. Es werden also alle Elemente $u_k$ und $v_k$ mit $k \geqq j$
285 vertauscht. $j = m$ bezeichnet den Fall, in dem das größte Element der
286 "`linken"' Folge, $u_{m-1}$, kleiner ist als das kleinste Element der
287 "`rechten"' Folge, $v_{m-1}$. Daraus folgt, dass die entstehende Folge aus
288 zwei bitonen Folgen besteht, die rekursiv zusammengeführt werden können.
289 Abbildung~\ref{fig:bitonic-merge-normal} zeigt die Situationen vor und nach
290 diesem Schritt des Mischers.
291
292 Mit dem bitonen Mischer auch zwei aufsteigend sortierte Folgen sortiert
293 werden. Dazu ist lediglich das "`Umbenennen"' der Leitungen notwendig.
294 Abbildung~\ref{fig:bitonic-merge-tricheter} zeigt das Schema des bitonen
295 Mischers für zwei aufsteigend sortierte Foglen. Durch das Umbenennen verändert
296 sich das Muster der Komparatoren ein wenig: Statt an eine Treppe erinnert das
297 Muster nun an einen Trichter.
298
299 \subsubsection{Batcher's Bitonic-Mergesort-Netzwerk}
300
301 Das Sortiernetzwerk $S(n)$ mit $n$~Eingängen besteht aus zwei Instanzen von
302 $S(\frac{n}{2})$, dem Netzwerk mit $\frac{n}{2}$~Eingängen und dem bitonen
303 Mischer~$M(n)$. Die Rekursion bricht bei ${n = 1}$~ab --~eine einelementige
304 Liste ist immer sortiert.
305 Das konkrete Netzwerk~$S(8)$ ist in Abbildung~\ref{fig:batcher_08} zu sehen.
306 Eingezeichnet sind ebenfalls die beiden Instanzen des Netzwerks~$S(4)$ (rot)
307 sowie der bitone Mischer~$M(8)$ (blau).
308
309
310
311 %\begin{figure}
312 %\begin{center}
313 %\includegraphics[viewport=115 491 372 782,width=7.5cm]{images/sn-rekursiver-aufbau.pdf}
314 %\end{center}
315 %\caption{Rekursiver Aufbau von $S(n)$: Es besteht aus zwei Instanzen von
316 %$S(n/2)$ und dem Mischer $M(n)$.}
317 %\label{fig:bms_rekursiver_aufbau}
318 %\end{figure}
319
320 \begin{figure}
321   \begin{center}
322   \input{images/batcher-8.tex}
323   \end{center}
324   \caption{$S(8)$, Batcher's {\em bitone Mergesort-Netzwerk} für acht
325   Eingänge. Markiert sind die beiden Instanzen von $S(4)$ (rot), die beiden
326   bitonen Mischer~$M(4)$ (blau) und die Komparatoren, die im letzten rekursiven
327   Schritt hinzugefügt wurden (grün).}
328   \label{fig:batcher_08}
329 \end{figure}
330
331 \subsection{Odd-Even-Mergesort}
332
333 Obwohl der Name ähnlich klingt, haben {\em Odd-Even-Mergesort} (OEM) und
334 {\em Odd-Even-Transpositionsort} (OET, siehe
335 Abschnitt~\ref{sect:odd_even_transpositionsort}) wenig gemein. Auch dieses
336 Netzwerk ist von K.~Batcher gefunden worden und wird rekursiv durch einen
337 "`Mischer"' definiert.
338
339 \subsubsection{Der Odd-Even-Mischer}\label{sect:der_odd_even_mischer}
340
341 Der {\em Odd-Even-Mischer} ist ein Komperatornetzwerk, dass zwei sortierte
342 Folgen zu einer sortierten Ausgabe zusammenfügen kann. Dabei kommt es mit
343 weniger Vergleichen aus als der {\em bitone Mischer}, der im
344 Abschnitt~\ref{sect:der_bitone_mischer} vorgestellt wurde.
345
346 Der {\em Odd-Even-Mischer} selbst ist ebenfalls rekursiv aufgebaut: Die
347 Eingabe für den Mischer mit $N = n + m$ Leitungen besteht aus den beiden
348 sortierten Folgen $U = \left(u_0, u_1, \ldots, u_{n-1}\right)$ und
349 $V = \left(v_0, v_1, \ldots, v_{m-1}\right)$. Die gesamte Eingabe sei
350 $W = \left(w_0, w_1, \ldots, w_{N-1}\right)$ mit:
351 \begin{equation}
352 w_i = \left\{ \begin{array}{ll}
353         u_i,     & i < n \\
354         v_{i-n}, & i \geqq n
355       \end{array} \right.,
356       \quad 0 \leqq i < N
357 \end{equation}
358
359 \begin{figure}
360   \begin{center}
361   \input{images/oe-merge.tex}
362   \end{center}
363   \caption{Schematischer Aufbau des {\em Odd-Even} Mischers. Im Vergleich zum
364   bitonen Mischer für Acht kommt dieses Schema mit einem Komparator weniger
365   aus. Der Effekt wird duch den rekursiven Aufbau noch verstärkt.}
366   \label{fig:oe-merge}
367 \end{figure}
368
369 Diese werden jetzt in insgesamt vier sortierte Folgen aufgeteilt, je eine
370 Liste der geraden Indizes und je eine Liste der ungeraden Indizes.
371 \begin{eqnarray}
372   U_{\textrm{gerade}}   &=& \left(u_0, u_2, u_4, \ldots\right) \\
373   U_{\textrm{ungerade}} &=& \left(u_1, u_3, u_5, \ldots\right) \\
374   V_{\textrm{gerade}}   &=& \left(v_0, v_2, u_4, \ldots\right) \\
375   V_{\textrm{ungerade}} &=& \left(v_1, v_3, u_5, \ldots\right)
376 \end{eqnarray}
377
378 Die geraden Folgen $U_{\textrm{gerade}}$ und $V_{\textrm{gerade}}$ bzw. die
379 ungeraden Folgen $U_{\textrm{ungerade}}$ und $V_{\textrm{ungerade}}$ werden
380 rekursiv von kleineren {\em Odd-Even-Mischern} zusammengefügt, so dass sich am
381 Ausgang der Mischer die Folgen
382 \begin{eqnarray}
383   W_{\textrm{gerade}}   &=& \left(w_0, w_2, w_4, \ldots\right) \\
384   W_{\textrm{ungerade}} &=& \left(w_1, w_3, w_5, \ldots\right)
385 \end{eqnarray}
386 ergeben.
387
388 Anschließend werden die Komparatoren zwischen benachbarten Leitungen
389 hinzugefügt,
390 \begin{equation}
391   w_{2i-1} \longleftrightarrow w_{2i}, \quad 1 \leqq i < \frac{N}{2}
392 \end{equation}
393 die die Folge~$W$ sortieren. Den schematischen Aufbau des {\em
394 Odd-Even-Mischers} zeigt Abbildung~\ref{fig:oe-merge}.
395
396 Leider bricht die Rekursion nicht so schön ab, wie das beim {\em bitonen
397 Mischer} der Fall gewesen ist. Insbesondere für ${n = m = 1}$ würde --
398 entsprechend der Konstruktionsvorschrift -- ein leeres Netzwerk entstehen, was
399 offensichtlich nicht korrekt wäre. Die Abbruchbedingungen für den rekursiven
400 Aufbau lauten:
401 \begin{itemize}
402   \item Falls ${n = 0}$ oder ${m = 0}$: Das Netzwerk ist leer.
403   \item Falls ${n = 1}$ und ${m = 1}$: Das Netzwerk besteht aus einem
404   einzelnen Komparator.
405 \end{itemize}
406
407 Dass die resultierende Folge sortiert ist, lässt sich mit dem
408 {\em 0-1-Prinzip} leicht zeigen:
409 Da $U$ und $V$ sortiert sind, ist die Anzahl der Nullen in den geraden
410 Teilfolgen, $U_{\textrm{gerade}}$ bzw. $V_{\textrm{gerade}}$, größer oder
411 gleich der Anzahl der Nullen in den ungeraden Teilfolgen
412 $U_{\textrm{ungerade}}$ bzw. $V_{\textrm{ungerade}}$ --~die Einsen verhalten
413 sich entsprechend umgekehrt. Das trifft demnach auch auf die Folgen
414 $W_{\textrm{gerade}}$ und $W_{\textrm{ungerade}}$ entsprechend zu:
415 \begin{eqnarray}
416   \left|W_{\textrm{gerade}}\right|_0
417   &=& \left|U_{\textrm{gerade}}\right|_0
418     + \left|V_{\textrm{gerade}}\right|_0
419    =  \left\lceil \frac{1}{2} \left|U\right|_0 \right\rceil
420    +  \left\lceil \frac{1}{2} \left|V\right|_0 \right\rceil \\
421   \left|W_{\textrm{ungerade}}\right|_0
422   &=& \left|U_{\textrm{ungerade}}\right|_0
423     + \left|V_{\textrm{ungerade}}\right|_0
424    =  \left\lfloor \frac{1}{2} \left|U\right|_0 \right\rfloor
425    +  \left\lfloor \frac{1}{2} \left|V\right|_0 \right\rfloor
426 \end{eqnarray}
427 Daraus folgt, dass $W_{\textrm{gerade}}$ $0$, $1$ oder $2$ Nullen mehr enthält
428 als $W_{\textrm{ungerade}}$. In den ersten beiden Fällen ist die "`verzahnte"'
429 Ausgabe der beiden kleineren Mischer bereits sortiert. Nur im letzten Fall,
430 wenn $W_{\textrm{gerade}}$ $2$~Nullen mehr enthählt als
431 $W_{\textrm{ungerade}}$, muss eine Vertauschung stattfinden, um die Ausgabe zu
432 sortieren. Die jeweiligen Situationen sind in
433 Abbildung~\ref{fig:oe-post-recursive} dargestellt.
434
435 \begin{figure}
436   \centering
437   \subfigure[$\left|W_{\textrm{gerade}}\right|_0 - \left|W_{\textrm{ungerade}}\right|_0 = 0$]{\input{images/oe-post-recursive-diff0.tex}}
438   \qquad
439   \subfigure[$\left|W_{\textrm{gerade}}\right|_0 - \left|W_{\textrm{ungerade}}\right|_0 = 1$]{\input{images/oe-post-recursive-diff1.tex}}
440   \qquad
441   \subfigure[$\left|W_{\textrm{gerade}}\right|_0 - \left|W_{\textrm{ungerade}}\right|_0 = 2$]{\input{images/oe-post-recursive-diff2.tex}}
442   \caption{Die drei Situationen, die nach dem Verzahnen der Ausgaben der
443   kleineren {\em Odd-Even-Mischer} entstehen können. Ist die Differenz der
444   Anzahl der Nullen gleich $0$ oder $1$, ist die Folge bereits sortiert. Im
445   letzten Fall stellt einer der Komparatoren sicher, dass das Ergebnis
446   sortiert ist.}
447   \label{fig:oe-post-recursive}
448 \end{figure}
449
450 \subsubsection{Das Odd-Even-Mergesort-Netzwerk}
451
452 Auch beim \emph{Odd-Even-Mergesort-Netzwerk} --~wie beim \emph{bitonen
453 Mergesort-Netzwerk}~-- entsteht das Sortiernetzwerk aus dem {\em
454 Odd-Even-Mischer} durch rekursives Anwenden auf einen Teil der Eingabe
455 (üblicherweise die Hälfte der Leitungen) und anschließendes zusammenfügen.
456 Abbildung~\ref{fig:odd_even_mergesort_08} zeigt das Netzwerk für $8$~Eingänge.
457
458 \begin{figure}
459 \begin{center}
460 \input{images/oe-mergesort-8.tex}
461 \end{center}
462 \caption{Das {\em Odd-Even-Mergesort-Netzwerk} für acht Eingänge.}
463 \label{fig:odd_even_mergesort_08}
464 \end{figure}
465
466 \begin{itemize}
467 \item Odd-Even-Transpositionsort
468 \item Bitonic-Mergesort
469 \item Odd-Even-Mergesort
470 \item Pairwise sorting-network
471 \end{itemize}
472
473 \section{Transformation von Sortiernetzwerken}
474
475 \begin{itemize}
476 \item Komprimieren (Alle Komparatoren so früh wie möglich anwenden).
477 \item Normalisieren (Transformation zu Standard-Sortiernetzwerken).
478 \end{itemize}
479
480 \subsection{Zwei Netzwerke kombinieren}
481
482 \begin{itemize}
483 \item Mit dem Bitonic-Merge
484 \item Mit dem Odd-Even-Merge
485 \item Nach dem Pairwise sorting-network Schema.
486 \end{itemize}
487
488 \subsection{Leitungen entfernen}\label{sect:leitungen_entfernen}
489
490 Man kann ein gegebenes Sortiernetzwerk mit $n$~Eingängen auf ein
491 Sortiernetzwerk mit $(n-1)$~Leitungen verkleinern, indem man eine Leitung
492 entfernt. Zunächst wird angenommen, dass das Minimum oder das Maximum an einem
493 der Eingänge anliegt. Der Weg durch das Netzwerk zum entsprechenden Ausgang
494 ist dadurch fest vorgegeben, insbesondere welche Komparatoren dafür sorgen,
495 dass die Leitung gewechselt wird und welche nicht.
496 Abbildung~\ref{fig:oe-transposition-cut0} zeigt den Weg eines Maximums durch
497 das {\em Odd-Even-Transpositionsort-Netzwerk}.
498
499 Im nächsten Schritt werden alle beteiligten Komparatoren gelöscht bzw.
500 ersetzt: Komparatoren, die {\em nicht} zu einem Wechsel der Leitung geführt
501 haben, werden ersatzlos gelöscht. Diese Komparatoren sind in
502 Abbildung~\ref{fig:oe-transposition-cut0} grün markiert. Die Komparatoren, die
503 zum Wechsel der Leitung geführt haben, werden durch sich kreuzende Leitungen
504 ersetzt. Das Resultat zeigt Abbildung~\ref{fig:oe-transposition-cut1}. Wenn
505 man die Maximum-Leitung entfernt (Abbildung~\ref{fig:oe-transposition-cut2}),
506 erhält man ein Sortiernetzwerk für $(n-1)$~Leitungen.
507
508 \begin{figure}
509   \centering
510   \subfigure[foo]{\input{images/oe-transposition-cut0.tex}\label{fig:oe-transposition-cut0}}
511   \subfigure[bar]{\input{images/oe-transposition-cut1.tex}\label{fig:oe-transposition-cut1}}
512   \subfigure[baz]{\input{images/oe-transposition-cut2.tex}\label{fig:oe-transposition-cut2}}
513   \subfigure[qux]{\input{images/oe-transposition-cut3.tex}\label{fig:oe-transposition-cut3}}
514   \caption{Eine Leitung wird aus dem {\em Odd-Even-Transpositionsort} Netzwerk
515   $\textrm{OET}(8)$ entfernt: Auf der rot markierten Leitung wird $\infty$
516   angelegt. Da der Wert bei jedem Komparator am unteren Ende herauskommt, ist
517   der Pfad fest vorgegeben. Da die restlichen Werte trotzdem noch richtig
518   sortiert werden müssen, kann dieser Pfad herausgetrennt werden. In der
519   letzten Abbildung ist $\textrm{OET}(7)$ markiert.}
520 \end{figure}
521
522 Die letzte Abbildung, \ref{fig:oe-transposition-cut3}, zeigt das
523 Sortiernetzwerk wieder mit den üblichen geraden Leitungen und die rot
524 markierten Komparatoren wurden verschoben, so dass sich eine kompaktere
525 Darstellung ergibt. Ausserdem ist das
526 {\em Odd-Even-Transpositionsort-Netzwerk} für sieben Werte markiert. Der
527 zusätzliche Komparator vor dem $\textrm{OET}(7)$ hat keinen Einfluss auf die
528 Ausgabe und kann entfernt werden.
529
530 \begin{itemize}
531 \item Min-Richtung
532 \item Max-Richtung
533 \end{itemize}
534
535 \section{Der evolutionäre Ansatz}
536
537 Um einen evolutionären Algorithmus für Sortiernetzwerke zu entwickeln, werden
538 die vorgestellten Methoden kombiniert.
539
540 \subsection{Bewertungsfunktion}
541
542 Um Sortiernetzwerke überhaupt optimieren zu können, muss zunächst die
543 {\em Güte} eines Netzwerkes definiert werden. Prinzipiell gibt es zwei Ziele,
544 die interessant sind:
545 \begin{itemize}
546   \item Möglichst wenige Komparatoren ("`klein"')
547   \item Möglichst wenige Schichten ("`schnell"')
548 \end{itemize}
549
550 Diese Ziele führen im Allgemeinen zu unterschiedlichen Netzwerken. Das
551 kleinste bekannte Sortiernetzwerk für 16~Eingänge besteht aus 60~Komparatoren
552 in 10~Schichten. Das schnellste Netzwerk besteht aus 61~Komparatoren in nur
553 9~Schichten.
554
555 Eine Gütefunktion, die die beiden Ziele "`klein"' und "`schnell"'
556 berücksichtigen kann, hat die folgende allgemeine Form:
557 \begin{equation}
558   \mathit{Guete}(S) = w_{\mathrm{Basis}}
559                     + w_{\mathrm{Komparatoren}} \cdot \left|S\right|_\mathrm{Komparatoren}
560                     + w_{\mathrm{Schichten}} \cdot \left|S\right|_\mathrm{Schichten}
561 \end{equation}
562 Die Parameter $w_{\mathrm{Komparatoren}}$ und $w_{\mathrm{Schichten}}$ dienen
563 dabei der Festlegung des Optimierungsziels. Wenn einer der beiden Parameter
564 gleich Null ist, wird nur das jeweils andere Ziel verfolgt. Sind beide
565 Parameter gleich Null, werden alle Netzwerke mit der gleich Güte bewertet --
566 jegliche Ergebnisse sind dann rein zufälliger Natur.
567
568 Mit dem Parameter $w_{\mathrm{Basis}}$ kann auf die Selektion Einfluss
569 genommen werden. Ist er groß, wird der relative Unterschied der Güten
570 verschiedener Netzwerke kleiner, was die {\em Exploration}, das Absuchen des
571 gesamten Lösungsraums, begünstigt. Wählt man $w_{\mathrm{Basis}}$ hingegen
572 klein, in Abhängigkeit von den anderen beiden Parametern sind auch negative
573 Werte möglich, werden die relativen Unterschiede groß. Dadurch wird die {\em
574 Exploitation}, das Finden lokaler Optima, bevorzugt.
575
576 \subsection{Selektion}
577
578 ...
579
580 \subsection{Rekombination}
581
582 Bei der Rekombination werden zwei Individuen --~hier Sortiernetzwerke~-- zu
583 einer neuen Lösung kombiniert. Dazu verwenden wir einen Mischer, zum Beispiel
584 den {\em bitonen Mischer} (Abschnitt~\ref{sect:der_bitone_mischer}) oder den
585 {\em Odd-Even-Mischer} (Abschnitt~\ref{sect:der_odd_even_mischer}), um die
586 beiden Netzwerke zu einem Netzwerk mit $2n$~Leitungen zusammenzufügen.
587 Anschließend entfernen wir zufällig $n$~Leitungen wie in
588 Abschnitt~\ref{sect:leitungen_entfernen} beschrieben.
589
590 Dieses Verfahren hat den großen Vorteil, dass es die Sortiereigenschaft
591 erhält.
592
593 \subsection{Mutation}
594
595 Zu einem vollständigen evolutionären Algorithmus gehört außerdem eine Mutation
596 --~eine zufällige Veränderung einer Lösung. Leider ist es nicht möglich ein
597 Sortiernetzwerk zufällig zu verändern aber trotzdem die Sortiereigenschaft zu
598 erhalten. Selbst das \emph{Hinzufügen} eines zufälligen Komparators kann diese
599 Eigenschaft zerstören.
600
601 Nach einer Mutation müsste man überprüfen, ob das neue Komparatornetzwerk die
602 Sortiereigenschaft noch besitzt. Nach heutigem Wissenstand ist diese
603 Überprüfung nur mit exponentiellem Aufwand möglich, etwa durch das
604 Ausprobieren aller $2^n$~Bitmuster.
605
606 Um das Potenzial einer Mutation abzuschätzen habe ich in den evolutionären
607 Algorithmus eine Überprüfung eingebaut. Unmittelbar vor dem Einfügen in die
608 Population überprüft das Programm die Notwendigkeit jedes einzelnen
609 Komparators. Dazu wurde nacheinander jeder Komparator entfernt und überprüft,
610 ob das verbleibende Netzwerk die Sortiereigenschaft noch besitzt.
611
612 \begin{itemize}
613 \item Güte von Sortiernetzwerken (Anzahl der Komparatoren, Anzahl der
614 Schichten, kobiniert)
615 \item Rekombination: Merge Anhängen und Leitungen entfernen.
616 \end{itemize}
617
618 Ein Beispielnetzwerk, das von dem Algorithmus gefunden wird, zeigt
619 Abbildung~\ref{fig:evolutionary_08}.
620
621 \begin{figure}
622 \begin{center}
623 \input{images/evolutionary-08.tex}
624 \end{center}
625 \caption{Ein mit dem evolutionären Algorithmus erzeugtes Sortiernetzwerk mit
626 acht Eingängen. Es besteht aus 19~Komparatoren in 6~Schichten.}
627 \label{fig:evolutionary_08}
628 \end{figure}
629
630 \begin{figure}
631 \begin{center}
632 \input{images/08-e2-1237993371.tex}
633 \end{center}
634 \caption{{\tt images/08-e2-1237993371.tex}: 19~Komparatoren in 6~Schichten}
635 \label{fig:08-e2-1237993371}
636 \end{figure}
637
638 \begin{figure}
639 \begin{center}
640 \input{images/09-e2-1237997073.tex}
641 \end{center}
642 \caption{{\tt images/09-e2-1237997073.tex}: 25~Komparatoren in 8~Schichten}
643 \label{fig:09-e2-1237997073}
644 \end{figure}
645
646 \begin{figure}
647 \begin{center}
648 \input{images/09-e2-1237999719.tex}
649 \end{center}
650 \caption{{\tt images/09-e2-1237999719.tex}: 25~Komparatoren in 7~Schichten}
651 \label{fig:09-e2-1237999719}
652 \end{figure}
653
654 \begin{figure}
655 \begin{center}
656 \input{images/10-e2-1239014566.tex}
657 \end{center}
658 \caption{{\tt images/10-e2-1239014566.tex}: 29~Komparatoren in 8~Schichten}
659 \label{fig:10-e2-1239014566}
660 \end{figure}
661
662 % ============
663
664 \section{Shmoo-Äquivalenz}
665
666 Die folgenden 16-Eingang-Sortiernetzwerke wurden alle mit dem
667 \emph{Algorithmus~1} gefunden. Sie haben alle 63~Komparatoren in 10~Schichten,
668 jeweils die selbe Anzahl wie Odd-Even-Mergesort.
669
670 Um wiederkehrende Muster in den hinteren Schichten der erzeugten
671 Sortiernetzwerke besser untersuchen zu können, wurden die erzeugten Netzwerke
672 in Gruppen aufgeteilt. Zwei Netzwerke befinden sich dann in der selben
673 Gruppen, wenn die Nullen bzw. Einsen, die auf einer Leitung vorkommen können,
674 nach der 5.~Schicht (Schicht~4, da bei Null mit dem Zählen begonnen wird)
675 nicht mehr ändert. Das heißt, dass die Schichten 0--4 unterschiedlich
676 aufgebaut sind, aber den selben Effekt erziehlen. Die Schichten 5--9 sind
677 hingegen innerhalb einer Gruppe austauschbar und oft (immer?) identisch.
678
679 Die Anzahl der Netzwerke in den jeweiligen Gruppen ist unterschiedlich. Zur
680 Zeit sind in den Gruppen so viele Netzwerke:\\
681 \begin{tabular}{|l|r|r|} \hline
682 Gruppe~0 & 18 & $48,7\%$ \\
683 Gruppe~1 & 9  & $24,3\%$ \\
684 Gruppe~2 & 6  & $16,2\%$ \\
685 Gruppe~3 & 3  & $8,1\%$ \\
686 Gruppe~4 & 1  & $2,7\%$ \\ \hline
687 \end{tabular}
688
689 Die hinteren Schichten zwischen den Gruppen~1 und~3 schauen so aus, als wären
690 sie nur gespiegelt. Warum kommt Gruppe~1 aber viel häufiger vor? Ggf. eine
691 Konsequenz aus dem Normieren?
692
693 Dito für die Gruppen~2 und~4. Warum ist die eine häufiger?
694
695 Ist Gruppe~0 symmetrisch bzgl. der Leitungen?
696
697 % Gruppe 0
698
699 \begin{figure}
700 \begin{center}
701 \input{images/16-e1/group0/16-e1-1258009316.tex}
702 \end{center}
703 \caption{{\tt images/16-e1/group0/16-e1-1258009316.tex}: 63~Komparatoren in
704 10~Schichten.}
705 \label{fig:16-e1-1258009316}
706 \end{figure}
707
708 \begin{figure}
709 \begin{center}
710 \input{images/16-e1/group0/16-e1-1258010866.tex}
711 \end{center}
712 \caption{{\tt images/16-e1/group0/16-e1-1258010866.tex}: 63~Komparatoren in
713 10~Schichten.}
714 \label{fig:16-e1-1258010866}
715 \end{figure}
716
717 \begin{figure}
718 \begin{center}
719 \input{images/16-e1/group0/16-e1-1258011861.tex}
720 \end{center}
721 \caption{{\tt images/16-e1/group0/16-e1-1258011861.tex}: 63~Komparatoren in
722 10~Schichten.}
723 \label{fig:16-e1-1258011861}
724 \end{figure}
725
726 \begin{figure}
727 \begin{center}
728 \input{images/16-e1/group0/16-e1-1259060992.tex}
729 \end{center}
730 \caption{{\tt images/16-e1/group0/16-e1-1259060992.tex}: 63~Komparatoren in
731 10~Schichten.}
732 \label{fig:16-e1-1259060992}
733 \end{figure}
734
735 %\begin{figure}
736 %\begin{center}
737 %\input{images/16-e1/group0/16-e1-1259061148.tex}
738 %\end{center}
739 %\caption{{\tt images/16-e1/group0/16-e1-1259061148.tex}: 63~Komparatoren in
740 %10~Schichten.}
741 %\label{fig:16-e1-1259061148}
742 %\end{figure}
743
744 % Gruppe 1
745
746 \begin{figure}
747 \begin{center}
748 \input{images/16-e1/group1/16-e1-1258009982.tex}
749 \end{center}
750 \caption{{\tt images/16-e1/group1/16-e1-1258009982.tex}: 63~Komparatoren in 10~Schichten.
751 Schichten 4--9 identisch zu 16-e1-1258030047 (Gruppe~1).}
752 \label{fig:16-e1-1258009982}
753 \end{figure}
754
755 \begin{figure}
756 \begin{center}
757 \input{images/16-e1/group1/16-e1-1258010023.tex}
758 \end{center}
759 \caption{{\tt images/16-e1/group1/16-e1-1258010023.tex}: 63~Komparatoren in
760 10~Schichten.}
761 \label{fig:16-e1-1258010023}
762 \end{figure}
763
764 \begin{figure}
765 \begin{center}
766 \input{images/16-e1/group1/16-e1-1258029734.tex}
767 \end{center}
768 \caption{{\tt images/16-e1/group1/16-e1-1258029734.tex}: 63~Komparatoren in
769 10~Schichten.}
770 \label{fig:16-e1-1258029734}
771 \end{figure}
772
773 \begin{figure}
774 \begin{center}
775 \input{images/16-e1/group1/16-e1-1258030047.tex}
776 \end{center}
777 \caption{{\tt images/16-e1/group1/16-e1-1258030047.tex}: 63~Komparatoren in
778 10~Schichten.}
779 \label{fig:16-e1-1258030047}
780 \end{figure}
781
782 %\begin{figure}
783 %\begin{center}
784 %\input{images/16-e1/group1/16-e1-1258034768.tex}
785 %\end{center}
786 %\caption{{\tt images/16-e1/group1/16-e1-1258034768.tex}: 63~Komparatoren in
787 %10~Schichten.}
788 %\label{fig:16-e1-1258034768}
789 %\end{figure}
790
791 % Gruppe 2
792
793 \begin{figure}
794 \begin{center}
795 \input{images/16-e1/group2/16-e1-1258029063.tex}
796 \end{center}
797 \caption{{\tt images/16-e1/group2/16-e1-1258029063.tex}: 63~Komparatoren in
798 10~Schichten.}
799 \label{fig:16-e1-1258029063}
800 \end{figure}
801
802 \begin{figure}
803 \begin{center}
804 \input{images/16-e1/group2/16-e1-1258034821.tex}
805 \end{center}
806 \caption{{\tt images/16-e1/group2/16-e1-1258034821.tex}: 63~Komparatoren in
807 10~Schichten.}
808 \label{fig:16-e1-1258034821}
809 \end{figure}
810
811 \begin{figure}
812 \begin{center}
813 \input{images/16-e1/group2/16-e1-1259054993.tex}
814 \end{center}
815 \caption{{\tt images/16-e1/group2/16-e1-1259054993.tex}: 63~Komparatoren in
816 10~Schichten.}
817 \label{fig:16-e1-1259054993}
818 \end{figure}
819
820 \begin{figure}
821 \begin{center}
822 \input{images/16-e1/group2/16-e1-1259058588.tex}
823 \end{center}
824 \caption{{\tt images/16-e1/group2/16-e1-1259058588.tex}: 63~Komparatoren in
825 10~Schichten.}
826 \label{fig:16-e1-1259058588}
827 \end{figure}
828
829 %\begin{figure}
830 %\begin{center}
831 %\input{images/16-e1/group2/16-e1-1259063485.tex}
832 %\end{center}
833 %\caption{{\tt images/16-e1/group2/16-e1-1259063485.tex}: 63~Komparatoren in
834 %10~Schichten.}
835 %\label{fig:16-e1-1259063485}
836 %\end{figure}
837
838 %\begin{figure}
839 %\begin{center}
840 %\input{images/16-e1/group2/16-e1-1259063618.tex}
841 %\end{center}
842 %\caption{{\tt images/16-e1/group2/16-e1-1259063618.tex}: 63~Komparatoren in
843 %10~Schichten.}
844 %\label{fig:16-e1-1259063618}
845 %\end{figure}
846
847 % Gruppe 3
848
849 \begin{figure}
850 \begin{center}
851 \input{images/16-e1/group3/16-e1-1258012027.tex}
852 \end{center}
853 \caption{{\tt images/16-e1/group3/16-e1-1258012027.tex}: 63~Komparatoren in
854 10~Schichten.}
855 \label{fig:16-e1-1258012027}
856 \end{figure}
857
858 \begin{figure}
859 \begin{center}
860 \input{images/16-e1/group3/16-e1-1258037039.tex}
861 \end{center}
862 \caption{{\tt images/16-e1/group3/16-e1-1258037039.tex}: 63~Komparatoren in
863 10~Schichten.}
864 \label{fig:16-e1-1258037039}
865 \end{figure}
866
867 \begin{figure}
868 \begin{center}
869 \input{images/16-e1/group3/16-e1-1259065042.tex}
870 \end{center}
871 \caption{{\tt images/16-e1/group3/16-e1-1259065042.tex}: 63~Komparatoren in
872 10~Schichten.}
873 \label{fig:16-e1-1259065042}
874 \end{figure}
875
876 % Gruppe 4
877
878 \begin{figure}
879 \begin{center}
880 \input{images/16-e1/group4/16-e1-1259060520.tex}
881 \end{center}
882 \caption{{\tt images/16-e1/group4/16-e1-1259060520.tex}: 63~Komparatoren in 10~Schichten.
883 (Gruppe~4).}
884 \label{fig:16-e1-1259060520}
885 \end{figure}
886
887 \begin{figure}
888 \begin{center}
889 \input{images/16-e1/group4/16-e1-1259067171.tex}
890 \end{center}
891 \caption{{\tt images/16-e1/group4/16-e1-1259067171.tex}: 63~Komparatoren in 10~Schichten.
892 (Gruppe~4).}
893 \label{fig:16-e1-1259067171}
894 \end{figure}
895
896 \subsection{Güte}
897
898 \begin{itemize}
899 \item So gut kann man mindestens werden {\em ($\rightarrow$ Bitonic-Mergesort, vermute ich)}.
900 \item Wie gut die Netzwerke werden, hängt stark vom verwendeten \em{Mischer} ab.
901 \end{itemize}
902
903 \subsection{Vom evolutionären Algorithmus zu einer Markov-Kette}
904
905 \begin{itemize}
906 \item Kombiniere immer das aktuelle Netzwerk mit sich selbst.
907 \item Kann die Mindestgüte immernoch erreicht werden? ({\em Ich denke schon.})
908 \item Anzahl der erreichbaren Sortiernetzwerke.
909 \end{itemize}
910
911 \section{Optimierung der Schnitte}
912
913 Der \emph{evolution-cut}-Algorithmus nimmt ein gegebenes Sortiernetzwerk mit
914 $n$~Leitungen und sucht die beste Sequenz von $c$~Min- und Max-Schnitten um
915 ein ${(n-c)}$-Sortiernetzwerk zu erhalten.
916
917 Bei diesem Algorithmus werden die \emph{Schnitt-Sequenzen} als Individuen
918 verwendet. Eine \emph{Schnitt-Sequenz} ist eine Liste mit $c$~Schnitten, die
919 jeweils durch die Start-Leitung und die Richtung \textit{Min} beziehungsweise
920 \textit{Max} gegeben ist. Der Algorithmus wendet jeden Schnitt einzeln an, so
921 dass eine Leitungsnummer mehrfach in einer Schnittsequenz vorkommen kann. Die
922 höchste zulässige Leitungsnummer ist abhängig von der Position des Schnitts in
923 der Sequenz. Der Schnitt an Position~$i$ darf höchstens die
924 Leitungsnummer~${n-i-1}$ enthalten.\footnote{Die niedrigste Leitungsnummer ist
925 $0$, die höchste Leitungsnummer eines $n$-Sortiernetzwerks ist $n-1$.}
926
927 Um zwei Individuen zu rekombinieren werden die ersten $r$~Schnitte der einen
928 Schnitt-Sequenz verwendet und die letzten ${c-r}$~Schnitte der zweiten
929 Sequenz. $r$ ist eine Zufallsvariable mit $0 \leqq r \leqq c$.
930
931 Die Mutation setzt entweder die Leitungs-Nummer eines Schnitts~$i$ zufällig
932 auf einen neuen Wert $l$ mit $0 \leqq l \le n-i$ oder invertiert die
933 Schnitt-Richtung.
934
935 \begin{figure}
936 \begin{center}
937 \input{images/16-ec-1277186619.tex}
938 \end{center}
939 \caption{{\tt images/16-ec-1277186619.tex}: Sortiernetzwerk mit 16~Leitungen
940   und 68~Komparatoren in 10~Schichten. Das Netzwerk wurde von dem Algorithmus
941   \emph{evolution-cut} aus dem Bitonic-Mergesort-Netzwerk $M(32)$ durch
942   16~Schnitte erzeugt.}
943 \label{fig:16-ec-1277186619}
944 \end{figure}
945
946 Wendet man den \emph{evolution-cut}-Algorithmus auf das
947 Bitonic-Mergesort-Netzwerk $M(n)$ an und setzt die Anzahl der Schnitte~$c$ auf
948 $\frac{n}{2}$, so erhält man Sortiernetzwerke, die weniger Komparatoren
949 benötigen als $M(\frac{n}{2})$.
950
951 Das Sortiernetzwerk in Abbildung~\ref{fig:16-ec-1277186619} ist entstanden,
952 indem der Algorithmus \emph{evolution-cut} auf das $M(32)$-Sortiernetzwerk
953 angewendet wurde. Der Algorithmus fand eine Schnitt-Sequenz aus 16~Schnitten,
954 die ein Sortiernetzwerk mit 16~Leitungen und 68~Komparatoren in 10~Schichten
955 erzeugt. Das $M(16)$-Sortiernetzwerk besteht aus 80~Komparatoren in
956 10~Schichten.
957
958 Dieses Ergebnis deckt sich mit dem Sortiernetzwerk, dass
959 \emph{Moritz Mühlenthaler} und \emph{Rolf Wanka} in ihrer Veröffentlichung
960 „Improving Bitonic Sorting by Wire Elimination“ vorstellen. Sie verwenden
961 Schnitte, um Komparatoren beim bitonen $(n,n)$-Mischer enizusparen. Ein
962 sukzessive aus optimieren Mischern aufgebautes Sortiernetzwerk spart
963 --~verglichen mit dem Bitonic-Mergesort-Netzwerk~-- $\frac{1}{4}n(\log n - 1)$
964 Komparatoren ein. Bei einem Sortiernetzwerk mit 16~Leitungen also
965 12~Komparatoren -- 68 statt 80.
966
967 \begin{figure}
968 \begin{center}
969 \input{images/32-ec-1277190372.tex}
970 \end{center}
971 \caption{{\tt images/32-ec-1277190372.tex}: Sortiernetzwerk mit 32~Leitungen
972   und 206~Komparatoren in 15~Schichten. Das Netzwerk wurde von dem Algorithmus
973   \emph{evolution-cut} aus dem Bitonic-Mergesort-Netzwerk $M(64)$ durch
974   32~Schnitte erzeugt.}
975 \label{fig:32-ec-1277190372}
976 \end{figure}
977
978 Abbildung~\ref{fig:32-ec-1277190372} zeigt ein 32-Sortiernetzwerk, dass vom
979 \emph{evolution-cut}-Algorithmus aus dem $M(64)$-Netzwerk erzeugt wurde. Es
980 besteht aus 206~Komparatoren in 15~Schichten -- 34~Komparatoren weniger als
981 $M(32)$ und zwei Komparatoren weniger als das Netzwerk, das nach Mühlenthaler
982 und Wankas Methode konstruiert wird. Die Anzahl der Schichten ist bei allen
983 Netzwerken gleich.
984
985 \textbf{TODO:} $M(128) \rightarrow n=64$: 584~Komparatoren in 21~Schichten
986 möglich (nach ca. 600k Iterationen). Moritz und Rolf: $672-80=592$
987 Komparatoren; $M(64)$: 672~Komparatoren.
988
989 Schnitt-Sequenz:
990 MIN( 92)
991 MAX( 80)
992 MIN(100)
993 MAX( 54)
994 MAX(102)
995 MAX( 53)
996 MAX(105)
997 MAX(  6)
998 MAX( 99)
999 MAX( 79)
1000 MAX( 26)
1001 MIN(111)
1002 MAX( 12)
1003 MIN( 22)
1004 MAX( 61)
1005 MAX( 72)
1006 MAX( 68)
1007 MIN( 80)
1008 MAX( 80)
1009 MAX( 99)
1010 MAX(105)
1011 MAX(  0)
1012 MIN(  8)
1013 MAX( 40)
1014 MAX( 74)
1015 MAX( 40)
1016 MAX( 40)
1017 MIN( 56)
1018 MAX( 27)
1019 MAX( 13)
1020 MAX(  1)
1021 MAX( 81)
1022 MAX( 17)
1023 MAX(  4)
1024 MIN( 36)
1025 MIN( 22)
1026 MAX( 13)
1027 MIN( 72)
1028 MAX( 24)
1029 MAX(  5)
1030 MIN( 10)
1031 MAX( 59)
1032 MIN( 37)
1033 MAX( 65)
1034 MAX( 46)
1035 MAX( 73)
1036 MAX( 58)
1037 MAX( 29)
1038 MAX( 65)
1039 MIN( 23)
1040 MAX( 56)
1041 MAX( 11)
1042 MIN( 75)
1043 MIN( 51)
1044 MIN( 46)
1045 MIN( 34)
1046 MAX( 32)
1047 MAX(  6)
1048 MAX( 37)
1049 MIN(  4)
1050 MIN( 28)
1051 MIN( 20)
1052 MAX( 33)
1053 MAX( 34)
1054
1055 % images/32-ec-1277190372.tex
1056
1057 \section{Empirische Beobachtungen}
1058
1059 \begin{itemize}
1060 \item So schnell konvergiert der Algorithmus.
1061 \item $\ldots$
1062 \end{itemize}
1063
1064 \section{Ausblick}
1065
1066 Das würde mir noch einfallen$\ldots$
1067
1068 %\bibliography{references}
1069 %\bibliographystyle{plain}
1070
1071 %\listoffigures
1072
1073 \end{document}
1074
1075 % vim: set shiftwidth=2 softtabstop=2 tabstop=8 fdm=marker tw=78 :