Bekannte konstruktive Sortiernetzwerke: Deutlich ausgebaut.
[diplomarbeit.git] / diplomarbeit.tex
index a861992..2545a74 100644 (file)
@@ -19,7 +19,7 @@
 % Fuer mathtoolsset
 \usepackage{mathtools}
 
-\geometry{paper=a4paper,margin=25mm}
+\geometry{paper=a4paper,margin=30mm}
 
 \pagestyle{fancy}
 %\fancyhf{}
@@ -96,8 +96,8 @@ dem einen, die kleinere der beiden Zahlen immer auf dem anderen Ausgang
 ausgegeben.
 
 Wenn man nun mehrere {\em Komparatoren} miteinander kombiniert, also die
-Ausgänge von {\em Komparatoren} mit dem Eingängen anderer {\em Komparatoren}
-verbindet, erhält man ein {\em Komparatornetzwerk}.
+Ausgänge von Komparatoren mit dem Eingängen anderer Komparatoren verbindet,
+erhält man ein {\em Komparatornetzwerk}.
 
 \begin{figure}
 \begin{center}
@@ -117,6 +117,17 @@ vergleichen und ggf. vertauschen. Nach einem Komparator befindet sich die
 kleinere Zahl immer auf der Leitung, auf die der Pfeil zeigt, die größere Zahl
 befindet sich auf der Leitung auf der der Pfeil seinen Ursprung hat.
 
+Komparatoren, die unterschiedliche Leitungen miteinander vergleichen, können
+gleichzeitig angewandt werden. Das Beispiel in
+Abbildung~\ref{fig:einfaches_komparatornetzwerk} verwendet diesen Umstand und
+vergleicht in einem ersten Schritt die zwei oberen und die zwei unteren
+Leitungen gleichzeitig. Eine Gruppe von Komparatoren, die gleichzeitig
+angewendet werden können, nennt man eine \emph{Schicht} des
+Komparatornetwerks. Die \emph{Verzögerung} eines Komparatornetzwerks ist
+gleichbedeutend mit der Anzahl der Schichten, in die sich die Komparatoren
+mindestens gruppieren lassen, da sie die Anzahl der benötigten parallelen
+Schritte darstellt.
+
 Komparatornetzwerke, die für jede beliebige Eingabepermutation eine
 Ausgabe erzeugen, die der Sortierung der Eingabe entspricht, heißen 
 {\em Sortiernetzwerke}. Das in
@@ -126,7 +137,7 @@ ${(2, 1, 3, 4)}$ führen -- die bestehenden Sortierung wird also sogar
 zerstört.
 
 Zu beweisen, dass ein gegebenes Komparatornetzwerk die Sortiereigenschaft
-{\em nicht} hat, ist mit einem gegebenen Gegenbeispiel also einfach möglich.
+{\em nicht} hat, ist mit einem gegebenen Gegenbeispiel einfach möglich.
 Dieses Gegenbeispiel zu finden ist allerdings aufwendig.
 
 \todo{Wie findet man die Gegenbeispiele? Die {\em Entscheidung}, ob ein
@@ -141,7 +152,7 @@ können?}
 Um zu überprüfen, ob ein gegebenes Komparatornetzwerk die Sortiereigenschaft
 besetzt, müssen nicht alle $n!$ Permutationen von $n$~unterschiedlichen Zahlen
 ausprobieren. Stattdessen reicht es zu überprüfen, dass das Netzwerk alle
-$2^n$~${0-1}$-Folgen sortiert.
+$2^n$~0-1-Folgen sortiert.
 
 Sortiernetzwerke:
 \begin{itemize}
@@ -202,24 +213,67 @@ Mutation \textit{(vermutlich)} nicht (effizient) möglich.
 
 Übersicht über bekannte konstruktive Sortiernetzwerke.
 
-\subsection{Odd-Even-Transpositionsort}
+\subsection{Das Odd-Even-Transpositionsort-Netzwerk}
 \label{sect:odd_even_transpositionsort}
 
 Das Sortiernetzwerk {\em Odd-Even-Transpositionsort} (OET) ist eines der
 einfachsten Sortiernetzwerke. Es besteht aus $n$~{\em Schichten}, die jede
 "`Leitung"' abwechselnd mit den benachbarten Leitungen verbindet.
-Abbildung~\ref{fig:odd_even_transposition_08} zeigt das OET-Netzwerk für
+Abbildung~\ref{fig:odd-even-transposition-08} zeigt das OET-Netzwerk für
 ${n = 8}$ Leitungen.
 
 \begin{figure}
-\begin{center}
-\input{images/oe-transposition-8.tex}
-\end{center}
-\caption{Das {\em Odd-Even-Transpositionsort} Netzwerk für acht Eingänge.}
-\label{fig:odd_even_transposition_08}
+  \begin{center}
+    \input{images/oe-transposition-8.tex}
+  \end{center}
+  \caption{Das \emph{Odd-Even-Transpositionsort}-Netzwerk mit acht Eingängen.}
+  \label{fig:odd-even-transposition-08}
 \end{figure}
 
-\subsection{Batcher's Mergesort}
+Dass das Odd-Even-Transporitionsort-Netzwerk tatsächlich jede beliegibe
+Eingabe sortiert ist nicht offensichtlich. Leicht zu sehen ist jedoch, dass
+sowohl das Minimum als auch das Maximum durch das im Netzwerk enthaltene
+Treppenmuster auf die unterste beziehungsweise oberste Leitung gelangt. Beim
+Odd-Even-Transporitionsort-Netzwerk mit drei Eingängen,
+$\operatorname{OET}(3)$, ist die Ausgabe folglich sortiert.
+
+Die Sortiereigenschaft größerer OET-Netzwerke lässt sich rekursiv beweisen,
+indem man $\operatorname{OET}(n)$ auf $\operatorname{OET}(n-1)$ durch
+Herausschneiden einer Leitung reduziert. In
+Abschnitt~\ref{sect:leitungen_entfernen} wird das Vorgehen im Detail
+beschrieben, Abbildung~\ref{fig:oe-transposition-cut} zeigt das
+Herausschneiden einer Leitung aus $\operatorname{OET}(8)$.
+
+Das Odd-Even-Transporitionsort-Netzwerk ist weder in Bezug auf die Anzahl der
+Komparatoren noch in Bezug auf die Anzahl der Schichten, in denen sich die
+Komparatoren anordnen lassen, effizient. Es benötigt
+${\frac12 n (n-1)} = \mathcal{O}(n^2)$~Komparatoren, die in $n$~Schichten
+angeordnet sind. Andere Sortiernetzwerke benötigen deutlich weniger
+Komparatoren, beispielsweise $\mathcal{O}(n (\log n)^2)$, die in weniger
+Schichten, zum Beispiel $\mathcal{O}(\log n)$, angeordnet sind.
+
+Das Interessante am OET-Netzwerk ist seine einfache Konstruktion. Einige der
+folgenden Algorithmen benötigen ein (einfaches) Sortiernetzwerk als
+Starteingabe, auf dessen Basis sie versuchen optimierte Sortiernetzwerke zu
+finden. Häufig dient $\operatorname{OET}(n)$ als Eingabe für diese
+Algorithmen.
+
+\subsection{Das bitone Mergesort-Netzwerk}
+
+Das \emph{bitone Mergesort}-Netzwerk ($\operatorname{BS}(n)$) ist ein
+Sortiernetzwerk, das 1968 von \emph{K.~E.~Batcher} veröffentlicht wurde. Es
+ist deutlich effizienter als das Odd-Even-Transporitionsort-Netzwerk -- sowohl
+in Bezug auf die Anzahl der Komparatoren als auch bezüglich der benötigten
+Zeit, also der Anzahl der Schichten.
+
+Das Sortiernetzwerk basiert auf einem Komparatornetzwerk, welches zwei
+sortierte Listen zusammenfügen (englisch: \textit{to~merge}) kann. Dieser
+\emph{„bitoner Mischer“} (englisch: \textit{bitonic merger}) genannte Baustein
+verleiht dem Sortiernetzwerk seinen Namen.
+
+Da das Sortiernetzwerk rekursiv definiert ist, betrachten wir hier nur die
+Instanzen des Netzwerks, deren Leitungszahl eine Zweierpotenz ist,
+$\operatorname{BS}(n = 2^t)$.
 
 Ein Netzwerk von K.~E.~Batcher. Siehe:
 K.E. Batcher: Sorting Networks and their Applications. Proc. AFIPS Spring
@@ -228,17 +282,18 @@ Joint Comput. Conf., Vol. 32, 307-314 (1968)
 
 \subsubsection{Der bitone Mischer}\label{sect:der_bitone_mischer}
 
-Das Netzwerk basiert auf dem {\em bitonen Mischer}, einem Komparator-Netzwerk,
-das eine beliebige bitone Folge in eine sortierte Listen umordnen kann. Eine
-{\em bitone Folge} ist eine monoton steigende Folge gefolgt von einer monoton
-fallenden Folge, oder ein zyklischer Shift davon.
-Abbildung~\ref{fig:beispiel-biton} zeigt die vier prinipiellen Möglichkeiten
-die durch zyklische Shifts entstehen können. Die wichtigsten Varianten für
-Batcher's Mergesort-Netzwerk zeigen die Abbildungen~\ref{fig:beispiel-biton-0}
+Das \emph{bitone Mergesort-Netzwerk} basiert auf dem sogenannten \emph{bitonen
+Mischer} $\operatorname{BM}(n)$, einem Kom\-parator-Netzwerk, das eine beliebige
+\emph{bitone Folge} in eine sortierte Listen umordnen kann. Eine \emph{bitone
+Folge} ist eine monoton steigende Folge gefolgt von einer monoton absteigenden
+Folge, oder ein zyklischer Shift davon. Abbildung~\ref{fig:beispiel-biton}
+zeigt die vier prinzipiellen Möglichkeiten die durch zyklische Shifts
+entstehen können. Die wichtigsten Varianten für das \emph{bitone
+Mergesort-Netzwerk} zeigen die Abbildungen~\ref{fig:beispiel-biton-0}
 und~\ref{fig:beispiel-biton-1}. Sie erhält man, wenn man eine aufsteigend und
-eine absteigend sortierte Liste aneinanderhängt. Bei den
-anderen beiden Formen ist wichtig zu beachten, dass das letzte Element nicht
-größer (Abbildung~\ref{fig:beispiel-biton-2}) bzw. kleiner
+eine absteigend sortierte Liste aneinanderhängt. Bei den anderen beiden Formen
+ist wichtig zu beachten, dass das letzte Element nicht größer
+(Abbildung~\ref{fig:beispiel-biton-2}) bzw. kleiner
 (Abbildung~\ref{fig:beispiel-biton-3}) als das erste Element der Folge sein
 darf.
 
@@ -284,29 +339,72 @@ gelten. Mit $u_j \leqq u_{j+1}$ und $v_j \geqq v_{j+1}$ folgt daraus $u_{j+1}
 > v_{j+1}$. Es werden also alle Elemente $u_k$ und $v_k$ mit $k \geqq j$
 vertauscht. $j = m$ bezeichnet den Fall, in dem das größte Element der
 "`linken"' Folge, $u_{m-1}$, kleiner ist als das kleinste Element der
-"`rechten"' Folge, $v_{m-1}$. Daraus folgt, dass die entstehende Folge aus
-zwei bitonen Folgen besteht, die rekursiv zusammengeführt werden können.
-Abbildung~\ref{fig:bitonic-merge-normal} zeigt die Situationen vor und nach
-diesem Schritt des Mischers.
-
-Mit dem bitonen Mischer auch zwei aufsteigend sortierte Folgen sortiert
-werden. Dazu ist lediglich das "`Umbenennen"' der Leitungen notwendig.
-Abbildung~\ref{fig:bitonic-merge-tricheter} zeigt das Schema des bitonen
-Mischers für zwei aufsteigend sortierte Foglen. Durch das Umbenennen verändert
-sich das Muster der Komparatoren ein wenig: Statt an eine Treppe erinnert das
-Muster nun an einen Trichter.
-
-\subsubsection{Batcher's Bitonic-Mergesort-Netzwerk}
+"`rechten"' Folge, $v_{m-1}$. Daraus folgt, dass das Resultat in zwei bitone
+Folgen aufteilen lässt: Eine aufsteigende~/ absteigende Folge und eine
+absteigende~/ aufsteigende Folge. Abbildung~\ref{fig:bitonic-merge-normal}
+zeigt die Situationen vor und nach diesem Schritt des Mischers.
+
+Um die Folge vollständig zu sortieren, müssen anschließend die beiden
+resultierenden bitonen Folgen sortiert werden. Die geschieht ebenfalls
+mithilfe des bitonen Mischers, mit zwei Instanzen von
+$\operatorname{BM}(\frac{n}{2})$. Diese rekursive Definition endet mit dem
+bitonen Mischer mit zwei Leitungen, $\operatorname{BM}(2)$, der als
+Komparator-Netzwerk mit einem Komparator zwischen den beiden Leitungen
+definiert ist.
+
+Der bitonen Mischer kann auch zwei aufsteigende Folgen sortieren. Dazu ist
+lediglich eine etwas modifizierte Vergleichs-Kaskade im ersten Schritt
+notwendig. Die folgenden, kleineren Mischer erhalten als Eingabe wieder eine
+„echte“ bitone Folge. Abbildung~\ref{fig:bitonic-merge-tricheter} zeigt das
+Schema des bitonen Mischers für zwei aufsteigend sortierte Foglen. Durch das
+Umdrehen einer Folge verändert sich das Muster der Komparatoren ein wenig:
+Statt an eine Treppe erinnert das Muster nun an einen Trichter.
+
+Da sich die Anzahl der Leitungen in jedem Rekursionsschritt halbiert, endet
+die Rekursion nach $\log(n)$~Schritten. In jedem Rekursionsschritt werden
+$\frac{n}{2}$~Komparatoren eingefügt, so dass der gesamte Mischer aus
+$\frac{1}{2} n \log(n) = \mathcal{O}\left(n \log(n)\right)$~Komparatoren
+besteht, die in $\log(n)$~Schichten angeordnet werden können.
+
+\subsubsection{Das bitone Mergesort-Netzwerk}
+
+Ebenso wie der bitone Mischer $\operatorname{BM}(n)$ ist auch das \emph{bitone
+Mergesort-Netzwerk} $\operatorname{BS}(n)$ rekursiv definiert. Es setzt sich
+zusammen aus zwei Instanzen des bitonen Mergesort-Netzwerks halber Größe,
+$\operatorname{BS}(\frac{n}{2})$, für je die Hälfte der Eingänge, sowie dem
+bitonen Mischer für $n$~Leitungen, $\operatorname{BM}(n)$. Das Rekursionsende
+ist das bitone Mergesort-Netzwerk mit nur einer Leitung,
+$\operatorname{BS}(1)$, welches als leeres Komparatornetzwerk definiert ist. 
+Entsprechend sind die Komparatornetzwerke $\operatorname{BM}(2)$ und
+$\operatorname{BS}(2)$ identisch.
+
+Bei der Konstruktion kommt die trichterförmige Anordnung der Komparatoren
+(Abbildung~\ref{fig:bitonic-merge-tricheter}) gelegen, weil so die beiden
+rekursiven Sortiernetzwerke in die gleiche Richtung sortieren können und so
+alle Komparatoren in die gleiche Richtung zeigen.
 
-Das Sortiernetzwerk $S(n)$ mit $n$~Eingängen besteht aus zwei Instanzen von
-$S(\frac{n}{2})$, dem Netzwerk mit $\frac{n}{2}$~Eingängen und dem bitonen
-Mischer~$M(n)$. Die Rekursion bricht bei ${n = 1}$~ab --~eine einelementige
-Liste ist immer sortiert.
-Das konkrete Netzwerk~$S(8)$ ist in Abbildung~\ref{fig:batcher_08} zu sehen.
-Eingezeichnet sind ebenfalls die beiden Instanzen des Netzwerks~$S(4)$ (rot)
-sowie der bitone Mischer~$M(8)$ (blau).
+\begin{figure}
+  \begin{center}
+  \input{images/batcher-8.tex}
+  \end{center}
+  \caption{$S(8)$, Batcher's {\em bitone Mergesort-Netzwerk} für acht
+  Eingänge. Markiert sind die beiden Instanzen von $S(4)$ (rot), die beiden
+  bitonen Mischer~$M(4)$ (blau) und die Komparatoren, die im letzten rekursiven
+  Schritt hinzugefügt wurden (grün).}
+  \label{fig:batcher_08}
+\end{figure}
 
+Das konkrete Netzwerk~$\operatorname{BS}(8)$ ist in
+Abbildung~\ref{fig:batcher_08} zu sehen. Eingezeichnet sind ebenfalls die
+beiden Instanzen des Netzwerks~$\operatorname{BS}(4)$ (rot) sowie der bitone
+Mischer~$\operatorname{BM}(8)$ (blau). Die trichterförmige Komparator-Kaskade,
+die die bitone Eingabefolge in zwei bitone Ausgabefolgen transformiert, ist
+grün hinterlegt.
 
+Das \emph{bitone Mergesort-Netzwerk} $\operatorname{BS}(8)$ besteht aus
+$\frac{1}{4} n \log(n) \log(n+1) = \mathcal{O}\left(n (log (n))^2\right)$
+Komparatoren, die in $\frac{1}{2} \log(n) \log(n+1) = \mathcal{O}(\log(n))$
+Schichten angeordnet sind.
 
 %\begin{figure}
 %\begin{center}
@@ -317,33 +415,28 @@ sowie der bitone Mischer~$M(8)$ (blau).
 %\label{fig:bms_rekursiver_aufbau}
 %\end{figure}
 
-\begin{figure}
-  \begin{center}
-  \input{images/batcher-8.tex}
-  \end{center}
-  \caption{$S(8)$, Batcher's {\em bitone Mergesort-Netzwerk} für acht
-  Eingänge. Markiert sind die beiden Instanzen von $S(4)$ (rot), die beiden
-  bitonen Mischer~$M(4)$ (blau) und die Komparatoren, die im letzten rekursiven
-  Schritt hinzugefügt wurden (grün).}
-  \label{fig:batcher_08}
-\end{figure}
-
-\subsection{Odd-Even-Mergesort}
+\subsection{Das Odd-Even-Mergesort-Netzwerk}
 
-Obwohl der Name ähnlich klingt, haben {\em Odd-Even-Mergesort} (OEM) und
-{\em Odd-Even-Transpositionsort} (OET, siehe
-Abschnitt~\ref{sect:odd_even_transpositionsort}) wenig gemein. Auch dieses
-Netzwerk ist von K.~Batcher gefunden worden und wird rekursiv durch einen
-"`Mischer"' definiert.
+Obwohl der Name ähnlich klingt, haben das \emph{Odd-Even-Mergesort-Netzwerk}
+(OES) und das \emph{Odd-Even-Transpositionsort-Netzwerk} (siehe
+Abschnitt~\ref{sect:odd_even_transpositionsort}) wenig gemein. Vielmehr ist
+OES dem \emph{bitonen Mergesort-Netzwerk}, das im vorherigen Abschnitt
+vorgestellt wurde, ähnlich: Auch dieses Sortiernetzwerk ist von
+\textit{K.~Batcher} gefunden worden und wird rekursiv durch einen Mischer
+definiert.
 
 \subsubsection{Der Odd-Even-Mischer}\label{sect:der_odd_even_mischer}
 
-Der {\em Odd-Even-Mischer} ist ein Komperatornetzwerk, dass zwei sortierte
-Folgen zu einer sortierten Ausgabe zusammenfügen kann. Dabei kommt es mit
-weniger Vergleichen aus als der {\em bitone Mischer}, der im
-Abschnitt~\ref{sect:der_bitone_mischer} vorgestellt wurde.
+Der \emph{Odd-Even-Mischer} $\operatorname{OEM}(n,m)$ ist ein
+Komperatornetzwerk, dass zwei sortierte Folgen mit $n$ beziehungsweise $m$
+Elementen zu einer sortierten Ausgabefolge mit $N = n+m$~Elementen
+zusammenfügen kann. Dabei kommt es mit weniger Vergleichen aus als der
+\emph{bitone Mischer}, der im Abschnitt~\ref{sect:der_bitone_mischer}
+vorgestellt wurde. Allerdings benötigt der \emph{Odd-Even-Mischer} unter
+Umständen mehr Schichten als der \emph{bitone Mischer}.\footnote{Knuth,
+“Bitonic Sorting”, Seite~230}
 
-Der {\em Odd-Even-Mischer} selbst ist ebenfalls rekursiv aufgebaut: Die
+Der \emph{Odd-Even-Mischer} selbst ist ebenfalls rekursiv aufgebaut: Die
 Eingabe für den Mischer mit $N = n + m$ Leitungen besteht aus den beiden
 sortierten Folgen $U = \left(u_0, u_1, \ldots, u_{n-1}\right)$ und
 $V = \left(v_0, v_1, \ldots, v_{m-1}\right)$. Die gesamte Eingabe sei
@@ -366,8 +459,8 @@ w_i = \left\{ \begin{array}{ll}
   \label{fig:oe-merge}
 \end{figure}
 
-Diese werden jetzt in insgesamt vier sortierte Folgen aufgeteilt, je eine
-Liste der geraden Indizes und je eine Liste der ungeraden Indizes.
+Diese werden in insgesamt vier sortierte Folgen aufgeteilt, je eine Liste der
+geraden Indizes und je eine Liste der ungeraden Indizes.
 \begin{eqnarray}
   U_{\textrm{gerade}}   &=& \left(u_0, u_2, u_4, \ldots\right) \\
   U_{\textrm{ungerade}} &=& \left(u_1, u_3, u_5, \ldots\right) \\
@@ -405,7 +498,7 @@ Aufbau lauten:
 \end{itemize}
 
 Dass die resultierende Folge sortiert ist, lässt sich mit dem
-{\em 0-1-Prinzip} leicht zeigen:
+{\em 0-1-Prinzip} zeigen:
 Da $U$ und $V$ sortiert sind, ist die Anzahl der Nullen in den geraden
 Teilfolgen, $U_{\textrm{gerade}}$ bzw. $V_{\textrm{gerade}}$, größer oder
 gleich der Anzahl der Nullen in den ungeraden Teilfolgen
@@ -427,10 +520,11 @@ $W_{\textrm{gerade}}$ und $W_{\textrm{ungerade}}$ entsprechend zu:
 Daraus folgt, dass $W_{\textrm{gerade}}$ $0$, $1$ oder $2$ Nullen mehr enthält
 als $W_{\textrm{ungerade}}$. In den ersten beiden Fällen ist die "`verzahnte"'
 Ausgabe der beiden kleineren Mischer bereits sortiert. Nur im letzten Fall,
-wenn $W_{\textrm{gerade}}$ $2$~Nullen mehr enthählt als
-$W_{\textrm{ungerade}}$, muss eine Vertauschung stattfinden, um die Ausgabe zu
-sortieren. Die jeweiligen Situationen sind in
-Abbildung~\ref{fig:oe-post-recursive} dargestellt.
+wenn $W_{\textrm{gerade}}$ zwei Nullen mehr enthählt als
+$W_{\textrm{ungerade}}$, muss genau eine Vertauschung stattfinden, um die
+Ausgabe zu sortieren. Diese wird von den Komparatoren, die benachbarte
+Leitungen miteinander vergleichen, ausgeführt. Die jeweiligen Situationen sind
+in Abbildung~\ref{fig:oe-post-recursive} dargestellt.
 
 \begin{figure}
   \centering
@@ -447,35 +541,155 @@ Abbildung~\ref{fig:oe-post-recursive} dargestellt.
   \label{fig:oe-post-recursive}
 \end{figure}
 
+Da die Teilfolgen $U$ und $V$ in jedem Rekursionsschritt etwa halbiert werden,
+bricht die Rekursion nach $\mathcal{O}\left(\log (n) + \log (m)\right)$
+Schritten ab. Die exakte Anzahl der benötigten Rekursionsschritte (und damit
+Schichten im Mischer-Netzwerk), hängt von der Längeren der beiden
+Eingabefolgen ab und beträgt $1 + \lceil \log\left(\max(n, m)\right) \rceil$.
+
+Die Anzahl der Komparatoren $K(n,m)$, die $\operatorname{OEM}(n,m)$ im
+allgemeinen Fall verwendet, ist Gemäß der rekursiven Definition in
+Abhängigkeit der Länge der Eingabefolgen, $n$ und $m$:
+\begin{displaymath}
+  K(n,m) = \left\{ \begin{array}{ll}
+    nm, & \mathrm{falls} \quad nm \leqq 1 \\
+    K\left(\left\lceil \frac{n}{2} \right\rceil, \left\lceil \frac{m}{2} \right\rceil\right)
+    + K\left(\left\lfloor \frac{n}{2} \right\rfloor, \left\lfloor \frac{m}{2} \right\rfloor\right)
+    + \left\lfloor \frac{1}{2} (m + n - 1) \right\rfloor & \mathrm{falls} \quad nm > 1
+  \end{array} \right.
+\end{displaymath}
+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 $\mathcal{O}(N \log (N))$ enthalten ist.
+
+Für den wichtigen Spezialfall, dass $n = m = 2^{t-1}$, 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$
+Komparatoren ein -- einen Komparator weniger als der \emph{bitone Mischer} in
+diesem Schritt. Das selbe gilt für die rekursiv verwendeten kleineren Mischer,
+$\operatorname{OEM}(\frac{n}{2}, \frac{n}{2})$ und so weiter bis
+einschließlich $\operatorname{OEM}(2, 2)$, von denen es $2, 4, \dots,
+\frac{N}{4} = 2^{\log(N)-2}$ Instanzen gibt. Insgesamt werden
+\begin{displaymath}
+  \sum_{i=0}^{\log(N)-2} 2^i = 2^{\log(N) - 1} - 1 = \frac{N}{2} - 1 = n - 1
+\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
+\end{displaymath}
+für die Anzahl der Komparatoren, die von $\operatorname{OEM}(N = 2^t)$
+benötigt werden.
+
 \subsubsection{Das Odd-Even-Mergesort-Netzwerk}
 
-Auch beim \emph{Odd-Even-Mergesort-Netzwerk} --~wie beim \emph{bitonen
-Mergesort-Netzwerk}~-- entsteht das Sortiernetzwerk aus dem {\em
-Odd-Even-Mischer} durch rekursives Anwenden auf einen Teil der Eingabe
-(üblicherweise die Hälfte der Leitungen) und anschließendes zusammenfügen.
-Abbildung~\ref{fig:odd_even_mergesort_08} zeigt das Netzwerk für $8$~Eingänge.
+Das \emph{Odd-Even-Mergesort-Netzwerk} $\operatorname{OES}(n)$ besteht, --~wie
+das \emph{bitonen Mergesort-Netzwerk}~-- rekursiv aus kleineren Varianten von
+sich selbst und einem abschließenden \emph{Odd-Even-Mischer}. Die
+effizientesten Sortiernetzwerke in Bezuf auf Komparator- und Schichtzahl
+entstehen, wenn die Anzahl der Leitungen jeweils halbiert wird. Somit besteht
+$\operatorname{OES}(n)$ aus
+$\operatorname{OES}\left(\left\lceil\frac{n}{2}\right\rceil\right)$,
+$\operatorname{OES}\left(\left\lfloor\frac{n}{2}\right\rfloor\right)$
+und $\operatorname{OEM}\left(\left\lceil\frac{n}{2}\right\rceil,
+\left\lfloor\frac{n}{2}\right\rfloor\right)$. Die Rekursion endet mit
+$\operatorname{OES}(1)$ und $\operatorname{OES}(0)$, die als leere
+Komparatornetzwerke definiert sind.
 
 \begin{figure}
-\begin{center}
-\input{images/oe-mergesort-8.tex}
-\end{center}
-\caption{Das {\em Odd-Even-Mergesort-Netzwerk} für acht Eingänge.}
-\label{fig:odd_even_mergesort_08}
+  \begin{center}
+  \input{images/oe-mergesort-8.tex}
+  \end{center}
+  \caption{Das {\em Odd-Even-Mergesort-Netzwerk} für acht Eingänge. Markiert
+  sind die Instanzen von $\operatorname{OES}(4)$ (rot), die beiden
+  \emph{Odd-Even-Mischer} $\operatorname{OEM}(4)$ für gerade und ungerade
+  Leitungen (blau) und die im ersten Rekursionsschritt hinzugefügten
+  Komparatoren zwischen benachbarten Leitungen (grün).}
+  \label{fig:odd-even-mergesort-08}
 \end{figure}
 
-\begin{itemize}
-\item Odd-Even-Transpositionsort
-\item Bitonic-Mergesort
-\item Odd-Even-Mergesort
-\item Pairwise sorting-network
-\end{itemize}
+In Abbildung~\ref{fig:odd-even-mergesort-08} ist das konkrete Sortiernetzwerk
+$\operatorname{OES}(8)$ zu sehen. Rot markiert sind die beiden rekursiven
+Instanzen $\operatorname{OES}(4)$. Die blauen und der grüne Block stellen den
+\emph{Odd-Even-Mischer} für acht Leitungen dar: Die beiden blauen Blöcke sind
+die rekursiven Instanzen von $\operatorname{OEM}(4)$, der grüne Block markiert
+die Komparatoren, die in ersten Rekursionsschritt hinzugefügt werden.
+
+Im Allgemeinen ist die Anzahl der Komparatoren, die vom
+\emph{Odd-Even-Mergesort-Netzwerk} verwendet wird, $k(n)$, direkt aus der
+Definition beziehungsweise der Konstruktionsanleitung abzulesen:
+\begin{displaymath}
+  k(n) = k\left(\left\lceil\frac{n}{2}\right\rceil\right)
+       + k\left(\left\lfloor\frac{n}{2}\right\rfloor\right)
+       + K\left(\left\lceil\frac{n}{2}\right\rceil, \left\lfloor\frac{n}{2}\right\rfloor\right)
+\end{displaymath}
+Eine geschlossene Form dieser Formel ist schon alleine deshalb schwierig, weil
+sie für $K(n,m)$ schwierig anzugeben ist. Es ist allerdings bekannt, dass
+$k(n)$ in $\mathcal{O}\left(n \left(\log (n)\right)^2\right)$ enthalten ist.
+
+Für den wichtigen Spezialfall, dass $n = 2^t$ eine Zweierpotenz ist, kann die
+Anzahl der Komparatoren wieder explizit angegeben werden. \textit{K.~Batcher}
+zeigt in seiner Arbeit\footnote{\todo{Referenz!}}, 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
+\end{displaymath}
+gilt.
+
+% gnuplot:
+% oem(n,m) = ((n*m) <= 1) ? (n*m) : oem(ceil(.5*n), ceil(.5*m)) + oem(floor(.5*n), floor(.5*m)) + floor(.5*(n+m-1.0))
+% oem1(n) = oem(ceil(.5*n),floor(.5*n))
+% oes(n) = (n <= 1.0) ? 0 : oes(ceil(0.5*n)) + oes(floor(0.5*n)) + oem1(n)
+
+%\begin{itemize}
+%\item Pairwise sorting-network
+%\end{itemize}
 
 \section{Transformation von Sortiernetzwerken}
 
-\begin{itemize}
-\item Komprimieren (Alle Komparatoren so früh wie möglich anwenden).
-\item Normalisieren (Transformation zu Standard-Sortiernetzwerken).
-\end{itemize}
+\subsection{Komprimieren}
+
+\todo{Aus theoretischer Sicht eigentlich eine Trivialität. Rausschmeißen?}
+
+Komparatoren, die unterschiedliche Leitungen miteinander vergleichen, können
+gleichzeitig ausgewertet werden, wie bereits in
+Abschnitt~\ref{sect:einleitung_sortiernetzwerke} beschrieben. Unter
+\emph{Komprimieren} wird eine (Neu-)Gruppierung in die kleinstmögliche Anzahl
+von \emph{Schichten} verstanden.
+
+Diese Anzahl ist insbesondere beim automatisierten Bewerten von
+Komparatornetzwerken interessant. \dots
+
+\subsection{Normalisieren}
+
+\begin{figure}
+  \centering
+  \subfigure[$S(8)$ (nach Konstruktion)]{\input{images/batcher-8-nonstd.tex}\label{fig:bitonic-nonstd}}
+  \subfigure[$S(8)$ (normalisiert)]{\input{images/batcher-8-std.tex}\label{fig:bitonic-std}}
+  \caption{Jedes Sortiernetzwerk kann in ein Standard-Sortiernetzwerk
+  transformiert werden. Gezeigt ist das bitone Sortiernetzwerk nach der
+  intuitiven Konstruktion und die normalisierte Variante.}
+  \label{fig:beispiel_normalisieren}
+\end{figure}
+
+Ein \emph{Standard-Sortiernetzwerk} oder \emph{normalisiertes Sortiernetzwerk}
+ist ein Sortiernetzwerk, dessen Komparatoren alle in die selbe Richtung
+zeigen. Jedes Sortiernetzwerk kann in eine normaliesierte Variante
+transformiert werden. Dazu gibt beispielsweise \emph{Knuth} (\todo{Verweis})
+einen Algorithmus an.
+
+Abbildung~\ref{fig:beispiel_normalisieren} zeigt das das
+bitone Sortiernetzwerk in zwei Varianten. Abbildung~\ref{fig:bitonic-nonstd}
+zeigt das Netzwerk nach der Konstruktionsvorschrift, siehe auch
+Abbildung~\ref{fig:bitonic-merge-normal}: In den ersten drei Schichten werden
+die unter und die obere Hälfte gegenläufig sortiert. Das heißt dass nach drei
+Schritten die eine Hälfte auf- und die andere Hälfte absteigend sortiert ist. 
+In den Schichten~4 bis~6 folgt der bitone Mischer entsprechend der rekursiven
+Definition.
+
+In Abbildung~\ref{fig:bitonic-std} ist die normalisierte Version des bitonen
+Mergesort-Netzwerks zu sehen. Alle Komparatoren zeigen hier in die gleiche
+Richtung. Statt dem typischen "`Treppenmuster"' sind abwechselnd das Treppen-
+und das Trichtermuster zu sehen.
 
 \subsection{Zwei Netzwerke kombinieren}
 
@@ -487,24 +701,25 @@ Abbildung~\ref{fig:odd_even_mergesort_08} zeigt das Netzwerk für $8$~Eingänge.
 
 \subsection{Leitungen entfernen}\label{sect:leitungen_entfernen}
 
+Im vorherigen Abschnitt haben wir gesehen, dass es mithilfe von
+\emph{Mischern} möglich ist, aus zwei Sortiernetzwerken mit je $n$~Eingängen
+ein neues Sortiernetzwerk mit $2n$~Eingängen zu erzeugen. Für einen
+beabsichtigen \emph{evolutionären Algorithmus} ist es jedoch notwendig, dass
+sich die Anzahl der Eingänge nicht verändert. Das heißt, dass wir wieder ein
+Sortiernetzwerk mit $n$~Eingängen erhalten müssen.
+
 Man kann ein gegebenes Sortiernetzwerk mit $n$~Eingängen auf ein
 Sortiernetzwerk mit $(n-1)$~Leitungen verkleinern, indem man eine Leitung
-entfernt. Zunächst wird angenommen, dass das Minimum oder das Maximum an einem
-der Eingänge anliegt. Der Weg durch das Netzwerk zum entsprechenden Ausgang
-ist dadurch fest vorgegeben, insbesondere welche Komparatoren dafür sorgen,
-dass die Leitung gewechselt wird und welche nicht.
+„eliminiert“. Dazu nehmen wir an, dass das Minimum oder das Maximum an einem
+bestimmten Eingang anliegt. Der Weg, den das Minimum beziehungsweise das Maxim
+durch das Sortiernetzwerk nimmt, ist eindeutig bestimmt und endet an einem der
+„Ränder“, also auf der Leitung mit dem höchsten oder dem niedrigsten Index.
+Insbesondere ist bekannt, welche Komparatoren „berührt“ werden und welche
+dafür sorgen, dass der Wert die Leitung gewechselt, da das Minimum jeden
+Vergleich „verliert“ und das Maximum jeden Vergleich „gewinnt“. Die
 Abbildung~\ref{fig:oe-transposition-cut0} zeigt den Weg eines Maximums durch
 das {\em Odd-Even-Transpositionsort-Netzwerk}.
 
-Im nächsten Schritt werden alle beteiligten Komparatoren gelöscht bzw.
-ersetzt: Komparatoren, die {\em nicht} zu einem Wechsel der Leitung geführt
-haben, werden ersatzlos gelöscht. Diese Komparatoren sind in
-Abbildung~\ref{fig:oe-transposition-cut0} grün markiert. Die Komparatoren, die
-zum Wechsel der Leitung geführt haben, werden durch sich kreuzende Leitungen
-ersetzt. Das Resultat zeigt Abbildung~\ref{fig:oe-transposition-cut1}. Wenn
-man die Maximum-Leitung entfernt (Abbildung~\ref{fig:oe-transposition-cut2}),
-erhält man ein Sortiernetzwerk für $(n-1)$~Leitungen.
-
 \begin{figure}
   \centering
   \subfigure[foo]{\input{images/oe-transposition-cut0.tex}\label{fig:oe-transposition-cut0}}
@@ -519,6 +734,31 @@ erhält man ein Sortiernetzwerk für $(n-1)$~Leitungen.
   letzten Abbildung ist $\textrm{OET}(7)$ markiert.}
 \end{figure}
 
+Im nächsten Schritt werden alle beteiligten Komparatoren gelöscht bzw.
+ersetzt: Komparatoren, die {\em nicht} zu einem Wechsel der Leitung geführt
+haben, werden ersatzlos gelöscht. Diese Komparatoren sind in
+Abbildung~\ref{fig:oe-transposition-cut0} grün markiert. Die Komparatoren, die
+zum Wechsel der Leitung geführt haben, werden durch sich kreuzende Leitungen
+ersetzt. Das Resultat ist eine Leitung, auf der das Minimum beziehungsweise
+das Maximum angenommen wird, die an unterster oder oberster Stelle endet und
+auf die keine Komparatoren mehr berührt
+(Abbildung~\ref{fig:oe-transposition-cut1}).
+
+Die Werte auf den verbleibenden $(n-1)$~Leitungen müssen vom restlichen
+Komparatornetzwerk immernoch sortiert werden: Wir haben lediglich die Position
+des Minimums oder des Maximums angenommen. Ein Sortiernetzwerk muss die
+Eingabe sortieren, egal auf welcher Leitung das Minimum~/ das Maximum liegt.
+Wir haben lediglich angefangen, das Sortiernetzwerk unter diese Annahme
+auszuwerten -- über die verbleibenden Eingänge haben wir keine Aussage
+getroffen. Entsprechend müssen die verbleibenden Ausgänge eine sortierte Liste
+mit $(n-1)$~Elementen darstellen.
+
+Wenn wir die Minimum- beziehungsweise Maximum-Leitung entfernen
+(Abbildung~\ref{fig:oe-transposition-cut2}), bleibt das Sortiernetzwerk für
+$(n-1)$~Leitungen übrig. Je nachdem, ob auf einer Leitung ein Minimum oder ein
+Maximum angenommen wird, bezeichnen wir das eliminieren einer Leitung als
+\emph{Minimum-Schnitt} beziehungsweise \emph{Maximum-Schnitt}.
+
 Die letzte Abbildung, \ref{fig:oe-transposition-cut3}, zeigt das
 Sortiernetzwerk wieder mit den üblichen geraden Leitungen und die rot
 markierten Komparatoren wurden verschoben, so dass sich eine kompaktere
@@ -527,9 +767,112 @@ Darstellung ergibt. Ausserdem ist das
 zusätzliche Komparator vor dem $\textrm{OET}(7)$ hat keinen Einfluss auf die
 Ausgabe und kann entfernt werden.
 
+Der Eliminierungsschritt kann iterativ angewandt werden, um aus einem
+Sortiernetzwerk mit $n$~Ein\-gängen Sortiernetzwerke mit $n-1$, $n-2$,
+$n-3$,~\dots Eingängen zu erzeugen. Insbesondere können wir auf diese Art und
+Weise einen Sortiernetzwerk mit $2n$~Eingängen wieder auf ein Sortiernetzwerk
+mit $n$~Eingängen reduzieren.
+
+Bei einem Sortiernetzwerk mit $n$~Eingängen gibt es $2n$~Möglichkeiten eine
+Leitung zu entfernen: Auf jeder der $n$~Leitungen kann sowohl das Minimum als
+auch das Maximum angenommen werden. Wendet man das Verfahren iterativ an, um
+ein $n$-Sortiernetzwerk auf ein $m$-Sortiernetzwerk zu reduzieren, ergeben
+sich insgesamt
+\begin{displaymath}
+  \prod_{i=n}^{m+1} 2i = 2^{n-m} \frac{n!}{m!}
+  \quad (n > m)
+\end{displaymath}
+Möglichkeiten. Diese Möglichkeiten sind nicht alle unterschiedlich. Legt man
+beispielsweise das Minimum auf die unterste Leitung und das Maximum auf die
+oberste Leitung eines Standard-Sortiernetzwerks, führen beide Reihenfolgen zum
+selben Ergebnis.
+
+\textit{Moritz Mühlenthaler} zeigt in seiner Arbeit (\todo{Referenz}), dass
+es möglich ist, mehrere Eingänge gleichzeitig mit Minimum beziehungsweise
+Maximum vorzubelegen. Dadurch wird die Anzahl der möglichen Schnitte
+reduziert, die Menge der erreichbaren Sortiernetzwerke bleibt aber
+unverändert. Die Anzahl der möglichen „Schnittmuster“ setzt sich zusammen aus
+der Anzahl von Möglichkeiten, $n-m$~Leitungen aus $n$ Leitungen auszuwählen,
+und die möglichen Minimum-~/ Maximum-Muster. Damit ergibt sich folgende
+Formel:
+\begin{displaymath}
+  2^{n-m} \cdot \left( \begin{array}{c} n \\ n-m \end{array} \right)
+  = 2^{n-m} \cdot \frac{n!}{(n-m)! m!}
+  = 2^{n-m} \cdot \frac{n!}{m!} \cdot \frac{1}{(n-m)!}
+  \quad (n > m)
+\end{displaymath}
+
+Die Anzahl der möglichen Schnitte wird mit der Anzahl der zu entfernenden
+Leitungen sehr schnell sehr groß. Um ein Sortiernetzwerk mit 32~Eingängen auf
+ein Sortiernetzwerk mit 16~Ein\-gängen zu reduzieren sind 16~Schnitte notwendig,
+für die es bereits etwa ${3,939 \cdot 10^{13}}$ Möglichkeiten gibt. Ein
+Ausprobieren aller Möglichkeiten ist für große Netzwerke nicht oder nur unter
+erheblichem Ressourcenaufwand möglich.
+
+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}. Mit diesem
+Algorithmus wurden zu einer Reihe von „interessanten“ Netzwerken möglichst
+gute Schnittmuster gesucht.
+
+Der \textsc{SN-Evolution-Cut}-Algorithmus verwendet die
+\emph{Schnitt-Sequenzen} als Individuen. Eine \emph{Schnitt-Sequenz} ist eine
+Liste mit $c$~Schnitten, die jeweils durch die Start-Leitung und die Richtung
+\textit{Min} beziehungsweise \textit{Max} gegeben ist. Der Algorithmus wendet
+jeden Schnitt einzeln an, so dass eine Leitungsnummer mehrfach in einer
+Schnittsequenz vorkommen kann. Die höchste zulässige Leitungsnummer ist
+abhängig von der Position des Schnitts in der Sequenz. Der Schnitt an
+Position~$i$ darf höchstens die Leitungsnummer~${n-i-1}$
+enthalten.\footnote{Die niedrigste Leitungsnummer ist $0$, die höchste
+Leitungsnummer eines $n$-Sortiernetzwerks ist $n-1$.}
+
+Um zwei Individuen zu rekombinieren werden die ersten $r$~Schnitte der einen
+Schnitt-Sequenz verwendet und die letzten ${c-r}$~Schnitte der zweiten
+Sequenz. $r$ ist eine Zufallsvariable mit $0 \leqq r \leqq c$.
+
+Die Mutation setzt entweder die Leitungs-Nummer eines Schnitts~$i$ zufällig
+auf einen neuen Wert $l$ mit $0 \leqq l \le n-i$ oder invertiert die
+Schnitt-Richtung.
+
+In ihrer Arbeit \textit{“Improving Bitonic Sorting by Wire Elimination”}
+zeigen \textit{Moritz Mühlenthaler} und \textit{Rolf Wanka}, wie man einen
+bitonen Mischer, der nach Batchers Methode konstruiert wurde, durch
+systematisches Entfernen von Leitungen in einen ebenfalls bitonen Mischer mit
+der Hälfte der Leitungen transformiert. Diese alternativen Mischer sparen im
+Vergleich zu den Mischern, die nach Batchers Methode konstruiert werden,
+Komparatoren ein.
+
+Beispeilsweise geben \textit{Mühlenthaler} und \textit{Wanka} ein
+Sortiernetzwerk mit 16~Eingängen an, das mithilfe der alternativen Mischer
+konstruiert wurde. Dieses Sortiernetzwerk benötigt 68~Komparatoren, 12~weniger
+als das bitone Mergesort-Netzwerk nach Batchers Methode. Gegenüber Batchers
+Methode sparen so konstruierte Sortiernetzwerke ${\frac{1}{4}n(\log n - 1)}$
+Komparatoren ein.
+
+\begin{figure}
+  \begin{center}
+    \input{images/16-ec-1277186619.tex}
+  \end{center}
+  \caption{{\tt images/16-ec-1277186619.tex}: Sortiernetzwerk mit 16~Leitungen
+    und 68~Komparatoren in 10~Schichten. Das Netzwerk wurde von dem
+    Algorithmus \textsc{SN-Evolution-Cut} aus dem bitonen Mergesort-Netzwerk
+    $\operatorname{BS}(32)$ durch 16~Schnitte erzeugt.}
+  \label{fig:16-ec-1277186619}
+\end{figure}
+
+Startet man {\sc SN-Evolution-Cut} mit dem bitonen Mergesort-Netzwerk
+$\operatorname{BS}(32)$ und der Vorgabe 16~Leitungen zu entfernen, liefert der
+Algorithmus Sortiernetzwerke, die ebenfalls aus 68~Komparatoren bestehen. Ein
+16-Sortiernetzwerk, das auf diese Weise generiert wurde, ist in
+Abbildung~\ref{fig:16-ec-1277186619} zu sehen.
+
 \begin{itemize}
-\item Min-Richtung
-\item Max-Richtung
+  \item Beispiel: Moritz und Rolfs Optimierung für Bitonic-Sort.
+  \item Wie gut kann man durch wegschneiden werden?
+  \item Wieviele Schnitte ergeben das selbe Netzwerk?
+  \item Abschnitt „Optimierung der Schnitte“ hier einbauen.
 \end{itemize}
 
 \section{Der evolutionäre Ansatz}
@@ -537,7 +880,7 @@ Ausgabe und kann entfernt werden.
 Um einen evolutionären Algorithmus für Sortiernetzwerke zu entwickeln, werden
 die vorgestellten Methoden kombiniert.
 
-\subsection{Bewertungsfunktion}
+\subsection{Bewertungsfunktion}\label{sect:bewertung}
 
 Um Sortiernetzwerke überhaupt optimieren zu können, muss zunächst die
 {\em Güte} eines Netzwerkes definiert werden. Prinzipiell gibt es zwei Ziele,
@@ -659,240 +1002,6 @@ acht Eingängen. Es besteht aus 19~Komparatoren in 6~Schichten.}
 \label{fig:10-e2-1239014566}
 \end{figure}
 
-% ============
-
-\section{Shmoo-Äquivalenz}
-
-Die folgenden 16-Eingang-Sortiernetzwerke wurden alle mit dem
-\emph{Algorithmus~1} gefunden. Sie haben alle 63~Komparatoren in 10~Schichten,
-jeweils die selbe Anzahl wie Odd-Even-Mergesort.
-
-Um wiederkehrende Muster in den hinteren Schichten der erzeugten
-Sortiernetzwerke besser untersuchen zu können, wurden die erzeugten Netzwerke
-in Gruppen aufgeteilt. Zwei Netzwerke befinden sich dann in der selben
-Gruppen, wenn die Nullen bzw. Einsen, die auf einer Leitung vorkommen können,
-nach der 5.~Schicht (Schicht~4, da bei Null mit dem Zählen begonnen wird)
-nicht mehr ändert. Das heißt, dass die Schichten 0--4 unterschiedlich
-aufgebaut sind, aber den selben Effekt erziehlen. Die Schichten 5--9 sind
-hingegen innerhalb einer Gruppe austauschbar und oft (immer?) identisch.
-
-Die Anzahl der Netzwerke in den jeweiligen Gruppen ist unterschiedlich. Zur
-Zeit sind in den Gruppen so viele Netzwerke:\\
-\begin{tabular}{|l|r|r|} \hline
-Gruppe~0 & 18 & $48,7\%$ \\
-Gruppe~1 & 9  & $24,3\%$ \\
-Gruppe~2 & 6  & $16,2\%$ \\
-Gruppe~3 & 3  & $8,1\%$ \\
-Gruppe~4 & 1  & $2,7\%$ \\ \hline
-\end{tabular}
-
-Die hinteren Schichten zwischen den Gruppen~1 und~3 schauen so aus, als wären
-sie nur gespiegelt. Warum kommt Gruppe~1 aber viel häufiger vor? Ggf. eine
-Konsequenz aus dem Normieren?
-
-Dito für die Gruppen~2 und~4. Warum ist die eine häufiger?
-
-Ist Gruppe~0 symmetrisch bzgl. der Leitungen?
-
-% Gruppe 0
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group0/16-e1-1258009316.tex}
-\end{center}
-\caption{{\tt images/16-e1/group0/16-e1-1258009316.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258009316}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group0/16-e1-1258010866.tex}
-\end{center}
-\caption{{\tt images/16-e1/group0/16-e1-1258010866.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258010866}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group0/16-e1-1258011861.tex}
-\end{center}
-\caption{{\tt images/16-e1/group0/16-e1-1258011861.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258011861}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group0/16-e1-1259060992.tex}
-\end{center}
-\caption{{\tt images/16-e1/group0/16-e1-1259060992.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1259060992}
-\end{figure}
-
-%\begin{figure}
-%\begin{center}
-%\input{images/16-e1/group0/16-e1-1259061148.tex}
-%\end{center}
-%\caption{{\tt images/16-e1/group0/16-e1-1259061148.tex}: 63~Komparatoren in
-%10~Schichten.}
-%\label{fig:16-e1-1259061148}
-%\end{figure}
-
-% Gruppe 1
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group1/16-e1-1258009982.tex}
-\end{center}
-\caption{{\tt images/16-e1/group1/16-e1-1258009982.tex}: 63~Komparatoren in 10~Schichten.
-Schichten 4--9 identisch zu 16-e1-1258030047 (Gruppe~1).}
-\label{fig:16-e1-1258009982}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group1/16-e1-1258010023.tex}
-\end{center}
-\caption{{\tt images/16-e1/group1/16-e1-1258010023.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258010023}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group1/16-e1-1258029734.tex}
-\end{center}
-\caption{{\tt images/16-e1/group1/16-e1-1258029734.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258029734}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group1/16-e1-1258030047.tex}
-\end{center}
-\caption{{\tt images/16-e1/group1/16-e1-1258030047.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258030047}
-\end{figure}
-
-%\begin{figure}
-%\begin{center}
-%\input{images/16-e1/group1/16-e1-1258034768.tex}
-%\end{center}
-%\caption{{\tt images/16-e1/group1/16-e1-1258034768.tex}: 63~Komparatoren in
-%10~Schichten.}
-%\label{fig:16-e1-1258034768}
-%\end{figure}
-
-% Gruppe 2
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group2/16-e1-1258029063.tex}
-\end{center}
-\caption{{\tt images/16-e1/group2/16-e1-1258029063.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258029063}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group2/16-e1-1258034821.tex}
-\end{center}
-\caption{{\tt images/16-e1/group2/16-e1-1258034821.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258034821}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group2/16-e1-1259054993.tex}
-\end{center}
-\caption{{\tt images/16-e1/group2/16-e1-1259054993.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1259054993}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group2/16-e1-1259058588.tex}
-\end{center}
-\caption{{\tt images/16-e1/group2/16-e1-1259058588.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1259058588}
-\end{figure}
-
-%\begin{figure}
-%\begin{center}
-%\input{images/16-e1/group2/16-e1-1259063485.tex}
-%\end{center}
-%\caption{{\tt images/16-e1/group2/16-e1-1259063485.tex}: 63~Komparatoren in
-%10~Schichten.}
-%\label{fig:16-e1-1259063485}
-%\end{figure}
-
-%\begin{figure}
-%\begin{center}
-%\input{images/16-e1/group2/16-e1-1259063618.tex}
-%\end{center}
-%\caption{{\tt images/16-e1/group2/16-e1-1259063618.tex}: 63~Komparatoren in
-%10~Schichten.}
-%\label{fig:16-e1-1259063618}
-%\end{figure}
-
-% Gruppe 3
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group3/16-e1-1258012027.tex}
-\end{center}
-\caption{{\tt images/16-e1/group3/16-e1-1258012027.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258012027}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group3/16-e1-1258037039.tex}
-\end{center}
-\caption{{\tt images/16-e1/group3/16-e1-1258037039.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1258037039}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group3/16-e1-1259065042.tex}
-\end{center}
-\caption{{\tt images/16-e1/group3/16-e1-1259065042.tex}: 63~Komparatoren in
-10~Schichten.}
-\label{fig:16-e1-1259065042}
-\end{figure}
-
-% Gruppe 4
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group4/16-e1-1259060520.tex}
-\end{center}
-\caption{{\tt images/16-e1/group4/16-e1-1259060520.tex}: 63~Komparatoren in 10~Schichten.
-(Gruppe~4).}
-\label{fig:16-e1-1259060520}
-\end{figure}
-
-\begin{figure}
-\begin{center}
-\input{images/16-e1/group4/16-e1-1259067171.tex}
-\end{center}
-\caption{{\tt images/16-e1/group4/16-e1-1259067171.tex}: 63~Komparatoren in 10~Schichten.
-(Gruppe~4).}
-\label{fig:16-e1-1259067171}
-\end{figure}
-
 \subsection{Güte}
 
 \begin{itemize}
@@ -900,69 +1009,62 @@ Schichten 4--9 identisch zu 16-e1-1258030047 (Gruppe~1).}
 \item Wie gut die Netzwerke werden, hängt stark vom verwendeten \em{Mischer} ab.
 \end{itemize}
 
-\subsection{Vom evolutionären Algorithmus zu einer Markov-Kette}
+\section{Markov-Kette}
+
+Der evolutionäre Algorithmus aus dem vorherigen Abschnitt verwendete immer
+zwei zufällige Sortiernetzwerke („Individuen“) aus einer Population. Da die
+beiden „Eltern“ zufällig und unabhängig voneinander ausgewählt werden, kann es
+vorkommen, dass das selbe Sortiernetzwerk zweimal verwendet und mit sich
+selbst kombiniert wird.
+
+Macht man diesen Spezialfall zum Regelfall, indem man \emph{immer} das
+aktuelle Netzwerk mit sich selbst kombiniert und anschließend die Hälfte aller
+Leitungen eliminiert, lassen sich einige interessante Beobachtungen anstellen.
+Netzwerke, die aus einem Netzwerk $S_0$ durch die beschriebene Kombination von
+$S_0$ mit sich selbst und anschließendem Eliminieren der Hälfte der Leitungen
+hervorgehen können, heißen \emph{Nachfolger} von $S_0$.
+
+Beim beschriebenen Vorgehen kann man die Sortiernetzwerke als Knoten in einem
+gerichteten Graphen betrachten. Zwei Knoten $V_0$ und $V_1$, die zwei
+Sortiernetzwerke $S_0$ und $S_1$ repräsentieren, sind genau dann mit einer
+Kante ${E_{0,1} = (V_0, V_1)}$ verbunden, wenn $S_1$ ein \emph{Nachfolger} von $S_0$
+ist, das heißt dass man $S_1$ durch die Rekombination von $S_0$ mit sich
+selbst erzeugen kann.
+
+Der Algorithmus {\sc SN-Markov} legt auf diesem Graph einen zufälligen Weg
+(englisch: \textit{random walk}) zurück. Er startet auf einem gegebenen
+Sortiernetzwerk. Um von einem Sortiernetzwerk zum Nächsten zu gelangen
+rekombiniert er das aktuelle Sortiernetzwerk mit sich selbst und erhält so
+einen zufälligen Nachfolger.
 
 \begin{itemize}
-\item Kombiniere immer das aktuelle Netzwerk mit sich selbst.
-\item Kann die Mindestgüte immernoch erreicht werden? ({\em Ich denke schon.})
-\item Anzahl der erreichbaren Sortiernetzwerke.
+  \item $n \leftarrow \mathrm{Input}$
+  \item \texttt{while} \textit{true}
+  \begin{itemize}
+    \item $n \leftarrow \operatorname{recombine} (n, n)$
+  \end{itemize}
 \end{itemize}
 
-\section{Optimierung der Schnitte}
-
-Der \emph{evolution-cut}-Algorithmus nimmt ein gegebenes Sortiernetzwerk mit
-$n$~Leitungen und sucht die beste Sequenz von $c$~Min- und Max-Schnitten um
-ein ${(n-c)}$-Sortiernetzwerk zu erhalten.
-
-Bei diesem Algorithmus werden die \emph{Schnitt-Sequenzen} als Individuen
-verwendet. Eine \emph{Schnitt-Sequenz} ist eine Liste mit $c$~Schnitten, die
-jeweils durch die Start-Leitung und die Richtung \textit{Min} beziehungsweise
-\textit{Max} gegeben ist. Der Algorithmus wendet jeden Schnitt einzeln an, so
-dass eine Leitungsnummer mehrfach in einer Schnittsequenz vorkommen kann. Die
-höchste zulässige Leitungsnummer ist abhängig von der Position des Schnitts in
-der Sequenz. Der Schnitt an Position~$i$ darf höchstens die
-Leitungsnummer~${n-i-1}$ enthalten.\footnote{Die niedrigste Leitungsnummer ist
-$0$, die höchste Leitungsnummer eines $n$-Sortiernetzwerks ist $n-1$.}
-
-Um zwei Individuen zu rekombinieren werden die ersten $r$~Schnitte der einen
-Schnitt-Sequenz verwendet und die letzten ${c-r}$~Schnitte der zweiten
-Sequenz. $r$ ist eine Zufallsvariable mit $0 \leqq r \leqq c$.
-
-Die Mutation setzt entweder die Leitungs-Nummer eines Schnitts~$i$ zufällig
-auf einen neuen Wert $l$ mit $0 \leqq l \le n-i$ oder invertiert die
-Schnitt-Richtung.
+\begin{itemize}
+  \item Beste erreichte Netzwerke (gleich zu \emph{OE-Mergesort}).
+  \item Anzahl der erreichbaren Sortiernetzwerke.
+  \item Anzahl der Komparatoren und Anzahl der Schichten der durchlaufenen
+    Netzwerke. (Abbildung~\ref{fig:markov-comparators-16})
+\end{itemize}
 
 \begin{figure}
-\begin{center}
-\input{images/16-ec-1277186619.tex}
-\end{center}
-\caption{{\tt images/16-ec-1277186619.tex}: Sortiernetzwerk mit 16~Leitungen
-  und 68~Komparatoren in 10~Schichten. Das Netzwerk wurde von dem Algorithmus
-  \emph{evolution-cut} aus dem Bitonic-Mergesort-Netzwerk $M(32)$ durch
-  16~Schnitte erzeugt.}
-\label{fig:16-ec-1277186619}
+  \begin{center}
+  \includegraphics[viewport=0 0 360 216,width=15cm]{images/markov-comparators-16.pdf}
+  \end{center}
+  \caption{Anzahl der Komparatoren von Sortiernetzwerken (mit 16~Leitungen), die von {\sc SN-Markov} durchlaufen wurden.}
+  \label{fig:markov-comparators-16}
 \end{figure}
 
-Wendet man den \emph{evolution-cut}-Algorithmus auf das
-Bitonic-Mergesort-Netzwerk $M(n)$ an und setzt die Anzahl der Schnitte~$c$ auf
-$\frac{n}{2}$, so erhält man Sortiernetzwerke, die weniger Komparatoren
-benötigen als $M(\frac{n}{2})$.
-
-Das Sortiernetzwerk in Abbildung~\ref{fig:16-ec-1277186619} ist entstanden,
-indem der Algorithmus \emph{evolution-cut} auf das $M(32)$-Sortiernetzwerk
-angewendet wurde. Der Algorithmus fand eine Schnitt-Sequenz aus 16~Schnitten,
-die ein Sortiernetzwerk mit 16~Leitungen und 68~Komparatoren in 10~Schichten
-erzeugt. Das $M(16)$-Sortiernetzwerk besteht aus 80~Komparatoren in
-10~Schichten.
-
-Dieses Ergebnis deckt sich mit dem Sortiernetzwerk, dass
-\emph{Moritz Mühlenthaler} und \emph{Rolf Wanka} in ihrer Veröffentlichung
-„Improving Bitonic Sorting by Wire Elimination“ vorstellen. Sie verwenden
-Schnitte, um Komparatoren beim bitonen $(n,n)$-Mischer enizusparen. Ein
-sukzessive aus optimieren Mischern aufgebautes Sortiernetzwerk spart
---~verglichen mit dem Bitonic-Mergesort-Netzwerk~-- $\frac{1}{4}n(\log n - 1)$
-Komparatoren ein. Bei einem Sortiernetzwerk mit 16~Leitungen also
-12~Komparatoren -- 68 statt 80.
+%\input{shmoo-aequivalenz.tex}
+
+\section{Optimierung der Schnitte}
+
+\todo{In den Abschnitt "`Leitungen entfernen"' einbauen.}
 
 \begin{figure}
 \begin{center}
@@ -970,21 +1072,21 @@ Komparatoren ein. Bei einem Sortiernetzwerk mit 16~Leitungen also
 \end{center}
 \caption{{\tt images/32-ec-1277190372.tex}: Sortiernetzwerk mit 32~Leitungen
   und 206~Komparatoren in 15~Schichten. Das Netzwerk wurde von dem Algorithmus
-  \emph{evolution-cut} aus dem Bitonic-Mergesort-Netzwerk $M(64)$ durch
+  \textsc{SN-Evolution-Cut} aus dem Bitonic-Mergesort-Netzwerk $BS(64)$ durch
   32~Schnitte erzeugt.}
 \label{fig:32-ec-1277190372}
 \end{figure}
 
 Abbildung~\ref{fig:32-ec-1277190372} zeigt ein 32-Sortiernetzwerk, dass vom
-\emph{evolution-cut}-Algorithmus aus dem $M(64)$-Netzwerk erzeugt wurde. Es
-besteht aus 206~Komparatoren in 15~Schichten -- 34~Komparatoren weniger als
-$M(32)$ und zwei Komparatoren weniger als das Netzwerk, das nach Mühlenthaler
+\textsc{SN-Evolution-Cut}-Algorithmus aus dem $BS(64)$-Netzwerk erzeugt wurde.
+Es besteht aus 206~Komparatoren in 15~Schichten -- 34~Komparatoren weniger als
+$BS(32)$ und zwei Komparatoren weniger als das Netzwerk, das nach Mühlenthaler
 und Wankas Methode konstruiert wird. Die Anzahl der Schichten ist bei allen
 Netzwerken gleich.
 
-\textbf{TODO:} $M(128) \rightarrow n=64$: 584~Komparatoren in 21~Schichten
+\textbf{TODO:} $BS(128) \rightarrow n=64$: 584~Komparatoren in 21~Schichten
 möglich (nach ca. 600k Iterationen). Moritz und Rolf: $672-80=592$
-Komparatoren; $M(64)$: 672~Komparatoren.
+Komparatoren; $BS(64)$: 672~Komparatoren.
 
 Schnitt-Sequenz:
 MIN( 92)