SN-Evolution: OEM: Beispiel fuer 19-SN hinzugefügt.
[diplomarbeit.git] / diplomarbeit.tex
index 6a77ae3..69bf56e 100644 (file)
@@ -232,8 +232,8 @@ Sortiereigenschaft \emph{nicht} besitzt, da es in diesem Fall die Folge $(1,
 Insgesamt gibt es $n!$~Permutationen von $n$~Elementen. Wenn ein
 Komparatornetzwerk die Sortiereigenschaft besitzt, bildet es alle diese
 Permutationen auf die sortierte Reihenfolge ab. Allerdings wächst $n!$
-über-exponentiell schnell, so dass ein Ausprobieren aller möglichen
-Permutationen schon bei 16~Leitungen praktisch nicht mehr zu bewerkstelligen
+so schnell, dass ein Ausprobieren aller möglichen Permutationen schon bei
+16~Leitungen praktisch nicht mehr zu bewerkstelligen
 ist.\footnote{1.307.674.368.000 Permutationen}
 
 \label{sect:0-1-prinzip}
@@ -260,47 +260,55 @@ Verhalten jedes einzelnen Komparators nicht: Wenn bei der Permutation eine
 Zahl größer als $a_i$ und eine Zahl kleiner oder gleich $a_i$ verglichen
 wurden, liegen jetzt entsprechend eine Null und eine Eins an, die genauso
 vertauscht werden oder nicht, wie das bei der Permutation der Fall war. Liegen
-zwei Nullen oder zwei Einsen an, entsprechen sie zwei Zahlen kleiner als $a_i$
-oder zwei Zahlen größer oder gleich $a_i$. Da im Fall der 0-1-Folge zwei
-gleiche Zahlen am Komparator anliegen, dürfen wir davon ausgehen, dass sich
-der Komparator so verhält, wie er sich bei der Permutation verhalten hat --
-ohne das Ergebnis zu beeinflussen. Entsprechend kommen an den Ausgängen $i-1$
-und $i$ eine Null und eine Eins in der falschen Reihenfolge an. Das steht im
-Widerspruch zu der Annahme, dass alle 0-1-Folgen sortiert werden.
-
-Im Gegensatz zum Überprüfen aller möglichen Permutationen, was der
-Komplexitätsklasse
-$\Theta\left(\sqrt{n}\left(\frac{n}{e}\right)^n\right)$ zuzuordnen ist,
-ist das Überprüfen aller 0-1-Folgen „nur“ mit dem Aufwand $\Theta(2^n)$
-verbunden. Entsprechend ist dieses Verfahren nicht \emph{effizient} -- ein
-schnelleres Verfahren ist bisher allerdings nicht bekannt. Um zu überprüfen,
-ob ein Komparatornetzwerk mit 16~Leitungen die Sortiereigenschaft besitzt,
-sind mit dieser Methode nur 65.536 Tests notwendig -- eine Zahl, die für
-aktuelle Prozessoren keine Herausforderung darstellt. Für die Überprüfung
-eines Komparatornetzwerks mit 32~Leitungen sind jedoch bereits etwa
-4,3~Milliarden Tests notwendig, die einen Rechner durchaus mehrere Minuten
-beschäftigen.
+zwei Nullen oder zwei Einsen an, entsprechen sie zwei Zahlen kleiner als
+$a_i$, beziehungsweise zwei Zahlen größer oder gleich $a_i$. Da im Fall der
+0-1-Folge zwei gleiche Zahlen am Komparator anliegen, dürfen wir davon
+ausgehen, dass sich der Komparator so verhält, wie er sich bei der Permutation
+verhalten hat -- ohne das Ergebnis zu beeinflussen. Entsprechend müssen an den
+Ausgängen $i-1$ und $i$ eine Null und eine Eins in der falschen Reihenfolge
+ankommen. Das steht im Widerspruch zu der Annahme, dass alle 0-1-Folgen
+sortiert werden.
+
+Im Gegensatz zum Überprüfen aller möglichen Permutationen, was mit dem Aufwand
+$\Theta\left(\sqrt{n}\left(\frac{n}{e}\right)^n\right)$ verbunden ist, besitzt
+das Überprüfen aller 0-1-Folgen „nur“ den Aufwand $\Theta(2^n)$. Entsprechend
+ist dieses Verfahren nicht \emph{effizient} -- ein schnelleres Verfahren ist
+bisher allerdings nicht bekannt.
+
+Um zu überprüfen, ob ein Komparatornetzwerk mit 16~Leitungen die
+Sortiereigenschaft besitzt, sind mit dieser Methode nur 65.536 Tests notwendig
+-- eine Zahl, die für aktuelle Prozessoren keine Herausforderung darstellt.
+Für die Überprüfung eines Komparatornetzwerks mit 32~Leitungen sind jedoch
+bereits etwa 4,3~Milliarden Tests notwendig, die einen Rechner durchaus
+mehrere Minuten beschäftigen. Das ist deshalb problematisch, weil die im
+Folgenden vorgestellten \emph{Evolutionären Algorithmen} eine entsprechende
+Überprüfung in jeder Iteration durchführen müssten. Wenn die Überprüfung eines
+Zwischenergebnisses fünf Minuten in Anspruch nimmt, sind für eine Million
+Iterationen fast zehn Jahre Rechenzeit notwendig. Selbst wenn die Berechnung
+auf 1000~Computern mit je 4~Prozessoren verteilt wird, werden über 20~Stunden
+für einen Lauf benötigt.
 
 \subsubsection{Evolutionäre Algorithmen}
 
 Viele {\em kombinatorische Optimierungsprobleme} sind schwer zu lösen -- die
 entsprechenden Entscheidungsprobleme liegen oft in der Komplexitätsklasse
-$\mathcal{NP}$. Das heißt, dass keine Verfahren bekannt sind, die diese
-Probleme effizient exakt lösen. Sollte sich herausstellen, dass diese Probleme
-außerhalb der Komplexitätsklasse~$\mathcal{P}$ liegen, wäre eine Konsequenz,
-dass es effiziente exakte Algorithmen für diese Probleme nicht gibt. Falls
-sich hingegen herausstellt, dass diese Probleme neben $\mathcal{NP}$ auch in
-der Komplexitätsklasse~\textit{P} liegen, gibt es effiziente Algorithmen. Es
-ist jedoch wahrscheinlich, dass die Zeitkonstanten solcher Algorithmen sehr
-groß sein würden, so dass der praktische Nutzen fraglich bleibt.
-
-Aus diesem Grund besteht die Notwendigkeit einen Kompromiss einzugehen: Statt
-die \emph{optimale Lösung}, beziehungsweise eine der \emph{optimalen
-Lösungen}, als einzige Ausgabe des Algorithmus zuzulassen, wird eine
-"`möglichst gute"' Lösung ausgegeben. Viele dieser Optimierungsalgorithmen
-orientieren sich an Vorgängen in der Natur. Beispielsweise imitieren die
-„Ameisenalgorithmen“ das Verhalten von Ameisen auf der Futtersuche, um kurze
-Rundreisen auf Graphen zu berechnen.
+$\mathcal{NP}$-vollständig. Das heißt, dass keine Verfahren bekannt sind, die
+diese Probleme effizient exakt lösen. Sollte sich herausstellen, dass diese
+Probleme außerhalb der Komplexitätsklasse~$\mathcal{P}$ liegen, wäre eine
+Konsequenz, dass es für diese Probleme keine effizienten exakten Algorithmen
+gibt. Stellt sich hingegen heraus, dass diese Probleme neben
+$\mathcal{NP}$-vollständig auch in der Komplexitätsklasse~\textit{P} liegen,
+gibt es effiziente Algorithmen. Es ist jedoch wahrscheinlich, dass die
+Zeitkonstanten solcher Algorithmen sehr groß wären, so dass der praktische
+Nutzen fraglich bleibt.
+
+Aus diesem Grund besteht die Notwendigkeit, einen Kompromiss einzugehen: Statt
+die \emph{optimale Lösung}, beziehungsweise eine der \emph{optimalen Lösungen}
+als einzige Ausgabe des Algorithmus zuzulassen, wird eine "`möglichst gute"'
+Lösung ausgegeben. Dafür verringert sich die Laufzeit des Algorithmus. Viele
+dieser Optimierungsalgorithmen orientieren sich an Vorgängen in der Natur.
+Beispielsweise imitieren die „Ameisenalgorithmen“ das Verhalten von Ameisen
+auf der Futtersuche, um kurze Rundreisen auf Graphen zu berechnen.
 
 Bei {\em Evolutionären Algorithmen} stand die Evolution Pate. Die Grundidee
 ist, bekannte Lösungen zu neuen -- unter Umständen besseren -- Lösungen zu
@@ -420,7 +428,7 @@ in dieser Arbeit trotzdem verwendet.}, bilden die Grundlage für die
 beschriebenen evolutionären Algorithmen beziehungsweise dienen als initiale
 Eingabe. Im Folgenden werden daher vier Konstruktionsverfahren vorgestellt.
 
-% \todo{Drei oder vier Verfahren?}
+\todo{Drei oder vier Verfahren? Sprich: Mit oder ohne Pairwise Sorting.}
 
 \subsection{Das Odd-Even-Transpositionsort-Netzwerk}
 \label{sect:odd_even_transpositionsort}
@@ -488,7 +496,7 @@ sortierte Listen zusammenfügen (Englisch: \textit{to~merge}) kann. Dieser
 verleiht dem Sortiernetzwerk seinen Namen.
 
 Da das Sortiernetzwerk rekursiv definiert ist, betrachten wir hier nur die
-Instanzen des Netzwerks, deren Leitungszahl $n = 2^t$ eine Zweierpotenz ist.
+Instanzen des Netzwerks, deren Leitungszahl $n = 2^d$ eine Zweierpotenz ist.
 Es ist jedoch möglich, das Sortiernetzwerk für beliebige~$n$ zu erzeugen.
 
 \subsubsection{Der bitone Mischer}\label{sect:der_bitone_mischer}
@@ -768,7 +776,7 @@ Leider ist es schwierig, diese allgemeine Formel in einer geschlossenen Form
 anzugeben. Aus der Anzahl der Rekursionsschritte ist jedoch leicht erkennbar,
 dass $K(n,m)$ in $\Theta(N \log (N))$ enthalten ist.
 
-Für den wichtigen Spezialfall, dass $n = m = 2^{t-1}$ beträgt, lässt sich die
+Für den wichtigen Spezialfall, dass $n = m = 2^{d-1}$ beträgt, lässt sich die
 Anzahl der Komparatoren im Vergleich zum \emph{bitonen Mischer} angeben: Der
 erste Rekursionsschritt der OEM-Konstruktion fügt
 $\left\lfloor \frac{1}{2} (m + n - 1) \right\rfloor = \frac{N}{2} - 1$
@@ -782,9 +790,9 @@ einschließlich $\operatorname{OEM}(2, 2)$, von denen es $2, 4, \dots,
 \end{displaymath}
 Komparatoren eingespart. Damit ergibt sich
 \begin{displaymath}
-  K\left(n = 2^{t-1}, n = 2^{t-1}\right) = \frac{1}{2} N \log(N) - \frac{N}{2} + 1
+  K\left(n = 2^{d-1}, n = 2^{d-1}\right) = \frac{1}{2} N \log(N) - \frac{N}{2} + 1
 \end{displaymath}
-für die Anzahl der Komparatoren, die von $\operatorname{OEM}(N = 2^t)$
+für die Anzahl der Komparatoren, die von $\operatorname{OEM}(N = 2^d)$
 benötigt werden.
 
 \subsubsection{Das Odd-Even-Mergesort-Netzwerk}
@@ -832,11 +840,11 @@ geschlossene Darstellung von $k(n)$ ebenfalls nicht ohne weiteres möglich. Es
 ist allerdings bekannt, dass $k(n)$ in $\Theta\left(n \left(\log
 (n)\right)^2\right)$ enthalten ist.
 
-Für den wichtigen Spezialfall, dass $n = 2^t$ eine Zweierpotenz ist, kann die
+Für den wichtigen Spezialfall, dass $n = 2^d$ eine Zweierpotenz ist, kann die
 Anzahl der Komparatoren wieder explizit angegeben werden. \textit{Kenneth
 Batcher} zeigt in~\cite{B1968}, dass in diesem Fall
 \begin{displaymath}
-  k(n = 2^t) = \frac{1}{4} n \left(\log (n)\right)^2 - \frac{1}{4}n\log(n) + n - 1
+  k(n = 2^d) = \frac{1}{4} n \left(\log (n)\right)^2 - \frac{1}{4}n\log(n) + n - 1
 \end{displaymath}
 gilt.
 
@@ -876,7 +884,7 @@ früh wie möglich ausführt. So entsteht die kleinstmögliche Anzahl von
 \emph{Schichten}, in die sich ein Sortiernetzwerk unterteilen lässt.
 
 Diese Anzahl ist insbesondere beim automatisierten Bewerten von
-Komparatornetzwerken interessant, wie in Abschnitt~\ref{sect:bewertung}
+Komparatornetzwerken interessant, wie in Abschnitt~\ref{sect:sn-evolution:bewertung}
 beschrieben. Die Anzahl der Schichten kann künstlich vergrößert werden, indem
 Komparatoren später angewendet werden. Deshalb sollte vor einer Bewertung, die
 die Anzahl der Schichten als Bewertungskriterium verwendet, immer eine
@@ -1242,9 +1250,11 @@ Algorithmus}, der die in den vorherigen Abschnitten beschriebenen Mischer
 (Abschnitt~\ref{sect:konstruktive_netzwerke}) und Schnittmuster
 (Abschnitt~\ref{sect:leitungen_entfernen}) verwendet, um „möglichst gute“
 Sortiernetzwerke zu erzeugen. Was ein „gutes“ Sortiernetzwerk ausmacht, wird
-in Abschnitt~\ref{sect:bewertung} behandelt.
+in Abschnitt~\ref{sect:sn-evolution:bewertung} behandelt. Informationen zur Implementierung
+von \textsc{SN-Evolution} befinden sich in
+Abschnitt~\ref{sect:implementierung}.
 
-\subsection{Bewertungsfunktion}\label{sect:bewertung}
+\subsection{Bewertungsfunktion}\label{sect:sn-evolution:bewertung}
 
 Um Sortiernetzwerke überhaupt optimieren zu können, muss zunächst die
 {\em Güte} eines Netzwerks definiert werden. Prinzipiell gibt es zwei Ziele,
@@ -1269,8 +1279,9 @@ Abbildung~\ref{fig:16-green} dargestellt. Das \emph{schnellste} bekannte
 16-Sortiernetzwerk besteht aus 61~Komparatoren in nur 9~Schichten und ist in
 Abbildung~\ref{fig:16-voorhis} zu sehen.
 
-Eine Gütefunktion, die die beiden Ziele "`effizient"' und "`schnell"'
-berücksichtigen kann, hat die folgende allgemeine Form:
+\textsc{SN-Evolution} verwendet eine Gütefunktion, die die beiden Ziele
+"`effizient"' und "`schnell"' berücksichtigen kann. Sie hat die folgende
+generelle Form:
 \begin{equation}
   \operatorname{Guete}(S) = w_{\mathrm{Basis}}
                     + w_{\mathrm{Komparatoren}} \cdot \left|S\right|_\mathrm{Komparatoren}
@@ -1295,7 +1306,7 @@ verschiedener Netzwerke kleiner, was die {\em Exploration}, das Absuchen des
 gesamten Lösungsraums, begünstigt. Wählt man $w_{\mathrm{Basis}}$ hingegen
 klein -- in Abhängigkeit von den anderen beiden Parametern sind auch negative
 Werte möglich -- werden die relativen Unterschiede groß. Dadurch wird die {\em
-Exploitation}, das Finden (lokaler) Optima, bevorzugt.
+Exploitation}, das Streben zu (lokalen) Optima, verstärkt.
 
 Diese Parameter haben einen großen Einfluss auf die Geschwindigkeit, mit der
 der \textsc{SN-Evolution}-Algorithmus konvergiert und ob er tatsächlich gute
@@ -1306,10 +1317,25 @@ Leitungszahlen und Mischer-Typen experimentiert werden muss.
 Als guter Standardansatz für \textsc{SN-Evolution} haben sich die folgenden
 Werte herausgestellt:
 \begin{eqnarray*}
-w_{\mathrm{Basis}} &=& 0 \\
-w_{\mathrm{Komparatoren}} &=& 1 \\
-w_{\mathrm{Schichten}} &=& \left|S\right|_\mathrm{Leitungen}
+  w_{\mathrm{Basis}}        &=& 0 \\
+  w_{\mathrm{Komparatoren}} &=& 1 \\
+  w_{\mathrm{Schichten}}    &=& \left|S\right|_\mathrm{Leitungen}
 \end{eqnarray*}
+Sofern nicht anders angegeben, werden diese Werte im Folgenden zur Bewertung
+von Sortiernetzwerken verwendet. Die Bewertungsfunktion bevorzugt mit diesen
+Konstanten \emph{schnelle} Sortiernetzwerke, da das Einsparen einer Schicht
+ein höheres Gewicht als das Einsparen von Komparatoren hat.
+
+Wenn der \textsc{SN-Evolution}-Algorithmus nach \emph{effizienten}
+Sortiernetzwerken suchen soll, werden alternative Werte für die Konstanten der
+Bewertungsfunktion verwendet. Die Werte
+\begin{eqnarray*}
+  w_{\mathrm{Basis}}        &=& 0 \\
+  w_{\mathrm{Komparatoren}} &=& 2 \\
+  w_{\mathrm{Schichten}}    &=& 1
+\end{eqnarray*}
+geben dem Einsparen eines Komparators ein höheres Gewicht als dem Einsparen
+einer Schicht. \todo{Fehler hier noch was?}
 
 \subsection{Selektion}
 
@@ -1392,37 +1418,12 @@ wurde beim \textsc{SN-Evolution}-Algorithmus auf eine Mutation verzichtet.
 
 \subsection[Bitoner Mischer]{Versuche mit dem bitonen Mischer}
 
-\begin{figure}
-  \begin{center}
-    \input{images/16-e1-bitonic-1296542566.tex}
-  \end{center}
-  \caption{Sortiernetzwerk mit 16~Leitungen und 67~Komparatoren in
-    10~Schichten. Das Netzwerk wurde von dem Algorithmus
-    \textsc{SN-Evolution} unter Verwendung des \emph{bitonen Mischers}
-    erzeugt.}
-  \label{fig:16-e1-bitonic-1296542566}
-\end{figure}
-
 Wenn \textsc{SN-Evolution} mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk
 als Eingabe gestartet wird und in der Rekombinationsphase den \emph{bitonen
-Mischer} verwendet, gibt der Algorithmus Sortiernetzwerke wie das in
-Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte zurück.
-
-Viele der Sortiernetzwerke, die von \textsc{SN-Evolution} in dieser
-Konfiguration gefunden werden, sind effizienter als das \emph{bitone
-Mergesort}-Netzwerk \bs{n}, das ebenfalls auf dem \emph{bitonen
-Merge}-Netzwerk \bm{n} beruht. Das in
-Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte 16-Sortiernetzwerk
-benötigt 67~Komparatoren, 13~Komparatoren weniger als \bs{n}.
-
-Wenn die Gütefunktion so gewählt ist, dass sie schnelle Sortiernetzwerke
-bevorzugt, können Netzwerke zurückgegeben werden, die schneller als \bs{n}
-sind. Viele der schnellen Sortiernetzwerke sind außerdem effizienter als
-\bs{n}. Das Sortiernetzwerk mit $n = 23$ Leitungen benötigt mit
-134~Komparatoren jedoch einen Komparator mehr als \bs{23}. Die Daten von
-schnellen Sortiernetzwerken, die \textsc{SN-Evolution} mit dem \emph{bitonen
-Merge}-Netzwerk erzeugt hat, sind in Tabelle~\ref{tbl:sn-ev-bm-fast}
-aufgelistet.
+Mischer} verwendet, gibt der Algorithmus \emph{effiziente} und in einigen
+Fällen \emph{schnelle} Sortiernetzwerke aus. Die Ergebnisse des
+\textsc{SN-Evolution}-Algorithmus unter Verwendung des \emph{bitonen Mischers}
+sind in Tabelle~\ref{tbl:sn-ev-bm-fast} zusammengefasst.
 
 \begin{table}\label{tbl:sn-ev-bm-fast}
 \begin{center}
@@ -1433,23 +1434,23 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}} & \multicolumn{2}{|l|
 \cline{2-5}
     ($n$) & Komp. & Schichten & Komp. & Schichten \\
 \hline
-        8 & \gcell  20 &         6 &         24 &         6 \\
-        9 & \Gcell  26 &         8 &         28 &         8 \\
-       10 & \gcell  31 & \gcell  8 &         33 &         9 \\
-       11 & \Gcell  37 & \Gcell  9 &         39 &        10 \\
-       12 & \gcell  42 & \gcell  9 &         46 &        10 \\
-       13 & \Gcell  48 &        10 &         53 &        10 \\
-       14 & \gcell  54 &        10 &         61 &        10 \\
-       15 & \Gcell  61 &        10 &         70 &        10 \\
-       16 & \gcell  67 &        10 &         80 &        10 \\
-       17 & \Gcell  76 &        12 &         85 &        12 \\
-       18 & \gcell  87 & \gcell 12 &         91 &        13 \\
-       19 & \Gcell  93 & \Gcell 13 &         98 &        14 \\
-       20 & \gcell 104 & \gcell 13 &        106 &        14 \\
-       21 & \Gcell 109 & \Gcell 14 &        114 &        15 \\
-       22 & \gcell 118 & \gcell 14 &        123 &        15 \\
-       23 &        134 & \Gcell 14 & \Gcell 133 &        15 \\
-       24 & \gcell 133 &        15 &        144 &        15 \\
+        8 & \gcell  20 &         6 &  24 &  6 \\
+        9 & \Gcell  26 &         8 &  28 &  8 \\
+       10 & \gcell  31 & \gcell  8 &  33 &  9 \\
+       11 & \Gcell  37 & \Gcell  9 &  39 & 10 \\
+       12 & \gcell  42 & \gcell  9 &  46 & 10 \\
+       13 & \Gcell  48 &        10 &  53 & 10 \\
+       14 & \gcell  54 &        10 &  61 & 10 \\
+       15 & \Gcell  61 &        10 &  70 & 10 \\
+       16 & \gcell  67 &        10 &  80 & 10 \\
+       17 & \Gcell  76 &        12 &  85 & 12 \\
+       18 & \gcell  87 & \gcell 12 &  91 & 13 \\
+       19 & \Gcell  93 & \Gcell 13 &  98 & 14 \\
+       20 & \gcell 104 & \gcell 13 & 106 & 14 \\
+       21 & \Gcell 109 & \Gcell 14 & 114 & 15 \\
+       22 & \gcell 118 & \gcell 14 & 123 & 15 \\
+       23 & \Gcell 129 & \Gcell 14 & 133 & 15 \\
+       24 & \gcell 133 &        15 & 144 & 15 \\
 \hline
 \end{tabular}
 \caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus
@@ -1461,19 +1462,89 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}} & \multicolumn{2}{|l|
 \end{center}
 \end{table}
 
-\subsection[Odd-Even-Mischer]{Versuche mit dem Odd-Even-Mischer}
+Alle Sortiernetzwerke, die von \textsc{SN-Evolution} in dieser Konfiguration
+gefunden wurden, waren \emph{effizienter} als das \emph{bitone
+Mergesort}-Netzwerk \bs{n}, das ebenfalls auf dem \emph{bitonen
+Merge}-Netzwerk \bm{n} beruht. Zum Beispiel benötigt das in
+Abbildung~\ref{fig:16-e1-bitonic-1296542566} dargestellte 16-Sortiernetzwerk
+67~Komparatoren, 13~Komparatoren weniger als \bs{n}.
 
 \begin{figure}
   \begin{center}
-    \input{images/16-e1-oddeven-1296543330.tex}
+    \input{images/16-e1-bitonic-1296542566.tex}
   \end{center}
-  \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in
+  \caption{Sortiernetzwerk mit 16~Leitungen und 67~Komparatoren in
     10~Schichten. Das Netzwerk wurde von dem Algorithmus
-    \textsc{SN-Evolution} unter Verwendung des \emph{Odd-Even}-Mischers
+    \textsc{SN-Evolution} unter Verwendung des \emph{bitonen Mischers}
     erzeugt.}
-  \label{fig:16-e1-oddeven-1296543330}
+  \label{fig:16-e1-bitonic-1296542566}
 \end{figure}
 
+Wenn die Gütefunktion so gewählt ist, dass sie schnelle Sortiernetzwerke
+bevorzugt, werden in einigen Fällen Netzwerke zurückgegeben, die
+\emph{schneller} und \emph{effizienter} als \bs{n} sind. Das
+19-Sortiernetzwerk in Abbildung~\ref{fig:19-e1-bm-fast} besitzt beispielsweise
+nur 13~Schichten und benötigt damit einen parallelen Schritt weniger als
+\bs{19}.
+
+\begin{figure}
+  \begin{center}
+    \input{images/19-e1-bm-fast.tex}
+  \end{center}
+  \caption{Sortiernetzwerk mit 19~Leitungen und 93~Komparatoren in
+    13~Schichten. Das Netzwerk wurde von dem Algorithmus \textsc{SN-Evolution}
+    unter Verwendung des \emph{bitonen Mischers} erzeugt.}
+  \label{fig:19-e1-bm-fast}
+\end{figure}
+
+\subsection[Odd-Even-Mischer]{Versuche mit dem Odd-Even-Mischer}
+
+Die folgenden Ergebnisse wurden erzielt, indem \textsc{SN-Evolution} mit dem
+\emph{Odd-Even-Transpositionsort}-Netzwerk als Eingabe gestartet wurde und in
+der Rekombinationsphase das \emph{Odd-Even-Merge}-Netzwerk verwendete. So
+erzeugt der Algorithmus entweder Sortiernetzwerke, die genauso schnell und
+effizient wie das \oes{n}-Netzwerk, oder Sortiernetzwerke, die schneller aber
+weniger effizient als das \oes{n}-Netzwerk sind. Die Ergebnisse von
+\textsc{SN-Evolution} mit dem \emph{Odd-Even}-Mischer sind in
+Tabelle~\ref{tbl:sn-ev-oem-fast} zusammengefasst.
+
+\begin{table}\label{tbl:sn-ev-oem-fast}
+\begin{center}
+\rowcolors{4}{black!5}{}
+\begin{tabular}{|r|r|r|r|r|}
+\hline
+Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \oem{n}} & \multicolumn{2}{|l|}{\oes{n}} \\
+\cline{2-5}
+          & Komp. & Schichten & Komp. & Schichten \\
+\hline
+        8 &   19 &         6 &         19 &         6 \\
+        9 &   26 &         8 &         26 &         8 \\
+       10 &   31 &         9 &         31 &         9 \\
+       11 &   38 & \Gcell  9 & \Gcell  37 &        10 \\
+       12 &   43 & \gcell  9 & \gcell  41 &        10 \\
+       13 &   48 &        10 &         48 &        10 \\
+       14 &   53 &        10 &         53 &        10 \\
+       15 &   59 &        10 &         59 &        10 \\
+       16 &   63 &        10 &         63 &        10 \\
+       17 &   74 &        12 &         74 &        12 \\
+       18 &   82 &        13 &         82 &        13 \\
+       19 &   93 & \Gcell 13 & \Gcell  91 &        14 \\
+       20 &   97 &        14 &         97 &        14 \\
+       21 &  108 & \Gcell 14 & \Gcell 107 &        15 \\
+       22 &  117 & \gcell 14 & \gcell 114 &        15 \\
+       23 &  129 & \Gcell 14 & \Gcell 122 &        15 \\
+       24 &  128 &        15 & \gcell 127 &        15 \\
+\hline
+\end{tabular}
+\caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus
+  unter Verwendung des \emph{Odd-Even-Merge}-Netzwerks \oem{n}. Der
+  Algorithmus wurde mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk \oet{n}
+  gestartet und nach 2.500.000 Iterationen beendet. Die Bewertungsfunktion
+  nutzte die Konstanten $w_{\mathrm{Basis}} = 0$, $w_{\mathrm{Komparatoren}} =
+  1$, $w_{\mathrm{Schichten}} = n$.}
+\end{center}
+\end{table}
+
 Im vorherigen Abschnitt wurde gezeigt, dass der
 \textsc{SN-Evolution}-Algorithmus unter Verwendung des \emph{bitonen Mischers}
 Sortiernetzwerke erzeugen kann, die effizienter als das rekursiv aus dem
@@ -1483,16 +1554,34 @@ erzielen. Die Sortiernetzwerke, die \textsc{SN-Evolution} unter Verwendung des
 \emph{Odd-Even-Merge}-Netzwerks findet, erreichen das
 \emph{Odd-Even-Mergesort}-Netzwerk bezüglich Effizienz, übertreffen es aber
 nicht. Ein Beispiel für ein entsprechendes Sortiernetzwerk ist in
-Abbildung~\ref{fig:16-e1-oddeven-1296543330} zu sehen.
+Abbildung~\ref{fig:16-e1-oem-fast} dargestellt.
+
+\begin{figure}
+  \begin{center}
+    \input{images/16-e1-oem-fast.tex}
+  \end{center}
+  \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in
+    10~Schichten. Das Netzwerk wurde von dem Algorithmus
+    \textsc{SN-Evolution} unter Verwendung des \emph{Odd-Even}-Mischers
+    erzeugt.}
+  \label{fig:16-e1-oem-fast}
+\end{figure}
 
 Mit einer Gütefunktion, die schnelle Sortiernetzwerke bevorzugt, ist es auch
 mit dem \emph{Odd-Even}-Mischer möglich, dass \textsc{SN-Evolution}
-Sortiernetzwerke zurück gibt, die schneller als \oes{n} sind. Dies geschieht
-beispielsweise bei $n = 11$ und $n = 12$: für diese Leitungszahlen gibt
-\textsc{SN-Evolution} Sortiernetzwerke aus, die nur 9~Schicten benötigen.
-\oes{11} und \oes{12} benötigen jeweils 10~Schichten. Eine Auflistung der
-Ergebnisse von \textsc{SN-Evolution} mit dem \emph{Odd-Even}-Mischer befindet
-sich in Tabelle~\ref{tbl:sn-ev-oem-fast}.
+Sortiernetzwerke zurück gibt, die schneller als \oes{n} sind. Beispielsweise
+benötigt das 19-Sortiernetzwerk, das in Abbildung~\ref{fig:19-e1-oem-fast}
+dargestellt ist, nur 13~Schichten, während \oes{19} 14~Schichten benötigt.
+
+\begin{figure}
+  \begin{center}
+    \input{images/19-e1-oem-fast.tex}
+  \end{center}
+  \caption{Sortiernetzwerk mit 19~Leitungen und 93~Komparatoren in
+    13~Schichten. Das Netzwerk wurde von dem Algorithmus \textsc{SN-Evolution}
+    unter Verwendung des \emph{Odd-Even}-Mischers erzeugt.}
+  \label{fig:19-e1-oem-fast}
+\end{figure}
 
 %\begin{figure}
 %\begin{center}
@@ -1526,43 +1615,6 @@ sich in Tabelle~\ref{tbl:sn-ev-oem-fast}.
 %\label{fig:10-e2-1239014566}
 %\end{figure}
 
-\begin{table}\label{tbl:sn-ev-oem-fast}
-\begin{center}
-\rowcolors{4}{black!5}{}
-\begin{tabular}{|r|r|r|r|r|}
-\hline
-Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \oem{n}} & \multicolumn{2}{|l|}{\oes{n}} \\
-\cline{2-5}
-          & Komp. & Schichten & Komp. & Schichten \\
-\hline
-        8 &   19 &         6 &         19 &         6 \\
-        9 &   26 &         8 &         26 &         8 \\
-       10 &   31 &         9 &         31 &         9 \\
-       11 &   38 & \Gcell  9 & \Gcell  37 &        10 \\
-       12 &   43 & \gcell  9 & \gcell  41 &        10 \\
-       13 &   48 &        10 &         48 &        10 \\
-       14 &   53 &        10 &         53 &        10 \\
-       15 &   59 &        10 &         59 &        10 \\
-       16 &   63 &        10 &         63 &        10 \\
-       17 &   74 &        12 &         74 &        12 \\
-       18 &   82 &        13 &         82 &        13 \\
-       19 &   93 & \Gcell 13 & \Gcell  91 &        14 \\
-       20 &   97 &        14 &         97 &        14 \\
-       21 &  108 & \Gcell 14 & \Gcell 107 &        15 \\
-       22 &  117 & \gcell 14 & \gcell 114 &        15 \\
-       23 &  129 & \Gcell 14 & \Gcell 122 &        15 \\
-       24 &  128 &        15 & \gcell 127 &        15 \\
-\hline
-\end{tabular}
-\caption{Übersicht über die Ergebnisse des \textsc{SN-Evolution}-Algorithmus
-  unter Verwendung des \emph{Odd-Even-Merge}-Netzwerks \oem{n}. Der
-  Algorithmus wurde mit dem \emph{Odd-Even-Transpositionsort}-Netzwerk \oet{n}
-  gestartet und nach 2.500.000 Iterationen beendet. Die Bewertungsfunktion
-  nutzte die Konstanten $w_{\mathrm{Basis}} = 0$, $w_{\mathrm{Komparatoren}} =
-  1$, $w_{\mathrm{Schichten}} = n$.}
-\end{center}
-\end{table}
-
 \subsection{Zufälliger Mischer}
 
 Die Ergebnisse der beiden vorhergehenden Abschnitte zeigen, dass für einige
@@ -1610,7 +1662,7 @@ Leitungen & \multicolumn{2}{l|}{\textsc{SN-EV} mit \bm{n}}
        20 &        104 & \gcell 13 & \gcell  97 &        14 &        101 & \gcell 13 \\
        21 &        109 &        14 &        108 &        14 & \Gcell 107 &        14 \\
        22 &        118 &        14 &        117 &        14 & \gcell 116 &        14 \\
-       23 &        134 &        14 &        129 &        14 & \Gcell 128 &        14 \\
+       23 &        129 &        14 &        129 &        14 & \Gcell 128 &        14 \\
        24 &        133 &        15 & \gcell 128 &        15 &        130 &        15 \\
 \hline
 \end{tabular}
@@ -1802,7 +1854,7 @@ Das Programm \textsc{SN-Evolution-Cut} implementiert einen evolutionären
 Algorithmus, der zu einem gegebenen Sortiernetzwerk und einer gewünschten
 Leitungszahl ein Schnittmuster sucht, dass ein Sortiernetzwerk mit einer
 möglichst geringen Anzahl von Komparatoren und Schichten ergibt. Zur Bewertung
-von Sortiernetzwerken siehe auch Abschnitt~\ref{sect:bewertung}.
+von Sortiernetzwerken siehe auch Abschnitt~\ref{sect:sn-evolution:bewertung}.
 
 Der \textsc{SN-Evolution-Cut}-Algorithmus verwendet \emph{Schnittmuster}, die
 in Abschnitt~\ref{sect:anzahl_schnittmuster} definiert wurden, als Individuen.