Algorithmus für die Optimierung von Sortiernetzwerken wird angegeben.
Die mindestens von diesem Algorithmus erreichte Güte wird angegeben und die
Transformation zu einer Markov-Kette wird gezeigt. {\em Natürlich: So fern ich
-das hinbekomme bzw. Recht behalte.}
+das hin bekomme bzw. Recht behalte.}
\end{abstract}
\newpage
schnell verstanden werden kann. Eine Einführung wird in
Abschnitt~\ref{sect:einleitung_sortiernetzwerke} gegeben. Nichtsdestotrotz ist
das Finden von Sortiernetzwerken sowie das Beweisen, dass ein
-Komparatornetzwerk jede beliegibe Eingabe sortiert, im Allgemeinen sehr
+Komparatornetzwerk jede beliebige Eingabe sortiert, im Allgemeinen sehr
schwierig und nach heutigem Kenntnisstand nur mit exponentiellem Aufwand zu
bewältigen.
eine horizontale Linie dargestellt und als \emph{Leitung} bezeichnet. Die
\emph{Komparatoren} sind durch vertikale Pfeile dargestellt und verbinden je
zwei verschiedene \emph{Leitungen} miteinander. Die Verbindungsstellen von
-\emph{Leitungen} und \emph{Komparatoren} sind zur besseren Übersichlichkeit
+\emph{Leitungen} und \emph{Komparatoren} sind zur besseren Übersichtlichkeit
durch schwarze Punkte symbolisiert.
Auf der linken Seite befinden sich die Eingänge. Hier wird eine Zahlenfolge in
-das Netzwerk hineingegeben. Jeder Komparator vergleicht die Zahlen „auf“ den
+das Netzwerk hinein gegeben. Jeder Komparator vergleicht die Zahlen „auf“ den
beiden Leitungen, die er verbindet. 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.
Abbildung~\ref{fig:einfaches_komparatornetzwerk} verwendet diesen Umstand und
vergleicht 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
+eine \emph{Schicht} des Komparatornetzwerks. 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.
erzeugen, die der Sortierung der Eingabe entspricht, heißen
\emph{Sortiernetzwerke}. Das in
Abbildung~\ref{fig:einfaches_komparatornetzwerk} gezeigte Komparatornetzwerk
-ist \emph{kein} Sotiernetzwerk: Die Eingabefolge ${(1, 2, 3, 4)}$ führt zur
+ist \emph{kein} Sortiernetzwerk: Die Eingabefolge ${(1, 2, 3, 4)}$ führt zur
Ausgabe ${(2, 1, 3, 4)}$ -- die bestehenden Sortierung wird also sogar
zerstört.
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~Millarden Tests notwendig, die einen Rechner durchaus mehrere Minuten
+4,3~Milliarden Tests notwendig, die einen Rechner durchaus mehrere Minuten
beschäftigen.
\subsubsection{Evolutionäre Algorithmen}
Aus diesem Grund besteht die Notwendigkeit einen Kompromiss einzugehen: Statt
die beziehungsweise eine der {\em 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.
+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
Sortiernetzwerke zu untersuchen. \textit{W.~Daniel Hillis} verwendete
\emph{Co-Evolution} um neben Komparatornetzwerken auch „schwierige Eingaben“
zu optimieren~\cite{H1992}. Diese \emph{Parasiten} genannten Eingaben wurden
-daran gemessen, bei wievielen Komparatornetzwerken sie beweisen konnten, dass
+daran gemessen, bei wie vielen Komparatornetzwerken sie beweisen konnten, dass
sie keine Sortiernetzwerke sind. So mussten bei neuen Individuen~/
Komparatornetzwerken nicht alle 0-1-Folgen, sondern nur erfolgreiche
Parasiten~/ schwierige Eingaben überprüft werden. Auf diese Art und Weise
sondern um eine verteilte, probabilistische Breitensuche, die an die
\emph{Strahlsuche} (englisch: \textit{beam search}), ein Verfahren der
Künstlichen Intelligenz, angelehnt ist. Die aufwendigste Operation bei diesem
-Ansatz ist die Bewertungsfunktion, die abschätzt, wieviele Komparatoren zu
+Ansatz ist die Bewertungsfunktion, die abschätzt, wie viele Komparatoren zu
einem Komparatornetzwerk hinzugefügt werden müssen, um ein Sortiernetzwerk zu
erhalten. Mit diesem Ansatz gelang es \textit{Juillé} zwei 13-Sortiernetzwerke
anzugeben, die mit 45~Komparatoren effizienter sind als alle bis dahin
\label{fig:odd-even-transposition-08}
\end{figure}
-Dass das Odd-Even-Transporitionsort-Netzwerk tatsächlich jede beliegibe
+Dass das Odd-Even-Transpositionsort-Netzwerk tatsächlich jede beliebige
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,
+Odd-Even-Transpositionsort-Netzwerk mit drei Eingängen,
$\operatorname{OET}(3)$, ist die Ausgabe folglich sortiert.
Die Sortiereigenschaft größerer OET-Netzwerke lässt sich rekursiv beweisen,
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
+Das Odd-Even-Transpositionsort-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
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
+Schema des bitonen Mischers für zwei aufsteigend sortierte Folgen. 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.
\subsubsection{Der \emph{Odd-Even}-Mischer}\label{sect:der_odd_even_mischer}
Der \emph{Odd-Even}-Mischer $\operatorname{OEM}(n,m)$ ist ein
-Komperatornetzwerk, dass zwei sortierte Folgen mit $n$ beziehungsweise $m$
+Komparatornetzwerk, 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}
\end{center}
\caption{Schematischer Aufbau des {\em Odd-Even} Mischers. Im Vergleich zum
bitonen Mischer für Acht kommt dieses Schema mit einem Komparator weniger
- aus. Der Effekt wird duch den rekursiven Aufbau noch verstärkt.}
+ aus. Der Effekt wird durch den rekursiven Aufbau noch verstärkt.}
\label{fig:oe-merge}
\end{figure}
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}}$ zwei Nullen mehr enthählt als
+wenn $W_{\textrm{gerade}}$ zwei Nullen mehr enthält 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: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-
+Richtung. Statt dem typischen „Treppenmuster“ sind abwechselnd das Treppen-
und das Trichtermuster zu sehen.
\subsection{Zwei Netzwerke kombinieren}
Man kann ein gegebenes Sortiernetzwerk mit $n$~Eingängen auf ein
Sortiernetzwerk mit ${n-1}$~Leitungen verkleinern, indem man eine Leitung
„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
+bestimmten Eingang anliegt. Der Weg, den das Minimum beziehungsweise das
+Maximum 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}.
\centering
\subfigure[Auf der Leitung~4 wird $-\infty$ angelegt. Dadurch ist der Pfad
durch das Sortiernetzwerk eindeutig festgelegt.]{\input{images/oe-transposition-cut0.tex}\label{fig:oe-transposition-cut0}}
- \subfigure[Komparatoren, die einen wechsel der Leitungen bewirken, werden
+ \subfigure[Komparatoren, die einen Wechsel der Leitungen bewirken, werden
durch sich kreuzende Leitungen ersetzt.]{\input{images/oe-transposition-cut1.tex}\label{fig:oe-transposition-cut1}}
\subfigure[Leitung~4 wurde entfernt. Übrig bleibt ein Sortiernetzwerk mit
7~Leitungen.]{\input{images/oe-transposition-cut2.tex}\label{fig:oe-transposition-cut2}}
markierten Leitung wird $-\infty$ angelegt. Da der Wert bei jedem Komparator
am unteren Ende herauskommt, ist der Pfad fest vorgegeben. Da die restlichen
Werte trotzdem noch richtig sortiert werden müssen, kann dieser Pfad
- herausgetrennt werden. In der letzten Abbildung ist \oet{7} markiert.}
+ heraus getrennt werden. In der letzten Abbildung ist \oet{7} markiert.}
\label{fig:oe-transposition-cut}
\end{figure}
(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
+Komparatornetzwerk immer noch 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.
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
-Darstellung ergibt. Ausserdem ist das
+Darstellung ergibt. Außerdem ist das
\emph{Odd-Even-Transpositionsort}-Netzwerk für sieben Werte markiert. Der
zusätzliche Komparator vor dem \oet{7} hat keinen Einfluss auf die Ausgabe und
kann entfernt werden.
Die Anzahl der möglichen Schnittmuster wird mit der Anzahl der zu entfernenden
Leitungen sehr schnell sehr groß. Um ein Sortiernetzwerk mit 32~Eingängen auf
-ein Sortiernetzwerk mit 16~Eingängen zu reduzieren, ist ein Schmittmuster mit
+ein Sortiernetzwerk mit 16~Eingängen zu reduzieren, ist ein Schnittmuster mit
16~Schnitten notwendig, für das 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.
Werte unterscheiden.
Bei diesen letzten sechs Konfigurationen werden je zwei auf das selbe
-Ausgangmuster abgebildet, weil die Position des Minimums beziehungsweise des
+Ausgangsmuster abgebildet, weil die Position des Minimums beziehungsweise des
Maximums durch den Komparator vorgegeben wird. Das heißt, dass die neun
unterschiedlichen Eingangsmuster nur sechs unterschiedliche Ausgangsmuster
erzeugen. In der zweiten und allen folgenden Schichten kann man diesen
zufällig erzeugt und überprüft, ob sie in der Menge~$S$ enthalten sind. Unter
der Annahme, dass das Verhältnis der zufälligen Schnittmuster, die in $S$
enthalten sind, und $n$ dem Verhältnis von $k$ und der Anzahl der
-unterschiedlichen Schnittmuster ingesamt entspricht, kann man die Anzahl der
+unterschiedlichen Schnittmuster insgesamt entspricht, kann man die Anzahl der
unterschiedlichen Schnittmuster abschätzen.
\begin{figure}
\begin{center}
\includegraphics[viewport=0 0 425 262,width=15cm]{images/collisions-10000-1000000-32.pdf}
\end{center}
- \caption{Abschnätzung der unterschiedlichen Schnittmuster mit der
+ \caption{Abschätzung der unterschiedlichen Schnittmuster mit der
\emph{Monte-Carlo-Methode} für $\operatorname{OES}(32)$ und
$\operatorname{BS}(32)$.}
\label{fig:collisions-10000-1000000-32}
\begin{center}
\includegraphics[viewport=0 0 425 262,width=15cm]{images/collisions-100000-1000000-32-ps.pdf}
\end{center}
- \caption{Abschnätzung der unterschiedlichen Schnittmuster mit der
+ \caption{Abschätzung der unterschiedlichen Schnittmuster mit der
\emph{Monte-Carlo-Methode} für $\operatorname{PS}(32)$. 385 von 1.000.000
zufälligen Schnittmustern waren äquivalent zu einem Schnittmuster in einer
Menge von 100.000. Daraus ergibt sich eine Schätzung von $2,6 \cdot 10^8$
ist dieser Umstand wenig verwunderlich. Entsprechend hätte man in einem
kombinierten Graphen keine Details mehr erkennen können. Aufgrund der hohen
Anzahl unterschiedlicher Schnittmuster, wurde für das gleiche Experiment mit
-$\operatorname{PS}(32)$ eine initiale Menge von 100.000 unterschiedilchen
+$\operatorname{PS}(32)$ eine initiale Menge von 100.000 unterschiedlichen
Schnittmustern erzeugt. Trotzdem wurden nach 1.000.000 Iterationen nur 385
Schnittmuster gefunden, die zu einem Schnittmuster in der Menge äquivalent
sind. Daraus ergibt sich eine Abschätzung von $2,6 \cdot 10^8$
unterschiedlichen Schnittmustern -- zwei Zehnerpotenzen mehr als bei den
-vorherigen Sortiernetzwerken, aber immernoch fünf Zehnerpotenzen kleiner als
+vorherigen Sortiernetzwerken, aber immer noch fünf Zehnerpotenzen kleiner als
die Anzahl der \emph{möglichen} Schnittmuster.
\newpage
\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,
+{\em Güte} eines Netzwerks definiert werden. Prinzipiell gibt es zwei Ziele,
die bei Sortiernetzwerken verfolgt werden können:
\begin{itemize}
\item Möglichst wenige Komparatoren („effizient“)
wird nacheinander jeder Komparator entfernt und überprüft, ob das verbleibende
Netzwerk die Sortiereigenschaft noch besitzt.
-Trotz des hohen Rechenaufwandes -- bei 16-Sortiernetzwerken sind gut
+Trotz des hohen Rechenaufwands -- bei 16-Sortiernetzwerken sind gut
4~Millionen Tests notwendig, um alle Komparatoren zu überprüfen -- waren die
Ergebnisse ernüchternd: Nach circa 1~Million Iterationen mit
16-Sortiernetzwerken fand der so modifizierte Algorithmus keinen einzigen
$\operatorname{OES}(n)$ in mindestens einem Merkmal übertrifft, konnte jedoch
nicht beobachtet werden.
-\todo{Ggf. Abschnitt „Shmoo-Äquivalenz“ kürzen und hier einbauen.}
-
%\begin{figure}
%\begin{center}
%\input{images/08-e2-1237993371.tex}
Schnittmusters verwendet und die letzten ${c-r}$~Schnitte des zweiten
Schmittmusters. $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
+Die Mutation setzt entweder die Leitungsnummer eines Schnitts~$i$ zufällig auf
+einen neuen Wert $l$ mit $0 \leqq l \le n-i$ oder invertiert die
Schnitt-Richtung.
\subsection{Versuche mit dem bitonen Mergesort-Netzwerk}
unregelmäßig. Bisher ist es nicht gelungen eine Konstruktionsanweisung für
gute Schnittmuster anzugeben.
-Entscheidend für das Ergebnis eines Schnittmusters scheint beim bitonen
-Mergesort-Netzwerk die Aufteilung der Minimum- und Maximumschnitte zu sein.
+Entscheidend für das Ergebnis eines Schnittmusters scheint beim \emph{bitonen
+Mergesort}-Netzwerk die Aufteilung der Minimum- und Maximumschnitte zu sein.
Von Hundert 16-Schnittmustern für $\operatorname{BS}(32)$, die in
Sortiernetzwerken mit 68~Komparatoren in 10~Schichten resultieren, hatten 73
ein Verhältnis von $5/11$, 13 hatten ein Verhältnis von $4/12$ und 14 hatten
leicht invertieren lassen, werden der Fall, dass es mehr Minimumschnitte, und
der Fall, dass es mehr Maximumschnitte gibt, nicht unterschieden.
+\begin{figure}
+ \centering
+ \subfigure[11-Sortiernetzwerk aus 37~Komparatoren in 9~Schichten. Das
+ Netzwerk wurde von \textsc{SN-Evolution-Cut} aus \bs{22} erzeugt.]{\input{images/11-ec-from-bs22-fast.tex}\label{fig:11-ec-from-bs22-fast}}
+ \subfigure[12-Sortiernetzwerk aus 42~Komparatoren in 9~Schichten. Das
+ Netzwerk wurde von \textsc{SN-Evolution-Cut} aus \bs{24} erzeugt.]{\input{images/12-ec-from-bs24-fast.tex}\label{fig:12-ec-from-bs24-fast}}
+ \caption{Startet man \textsc{SN-Evolution-Cut} mit \bs{22} und \bs{24}, kann
+ der Algorithmus schnelle Sortiernetzwerke ausgeben.}
+ \label{fig:11-12-ec-from-bs22-bs24}
+\end{figure}
+
+Verwendet man als Eingabe für \textsc{SN-Evolution-Cut} Instanzen des
+\emph{bitonen Mergesort}-Netzwerks, deren Leitungszahl keine Zweierpotenz ist,
+können Sortiernetzwerke zurückgegeben werden, die sowohl schneller als auch
+effizienter als das entsprechende \emph{bitone Mergesort}-Netzwerk sind. Die
+folgende Tabelle listet einige interessante Fälle auf. Die Eingabe für
+\textsc{SN-Evolution-Cut} war jeweils das \emph{bitone Mergesort}-Netzwerk mit
+der doppelten Leitungszahl.
+Abbildung~\ref{fig:23-ec-from-bs46} zeigt beispielhaft ein
+23-Sortiernetzwerk, das aus \bs{46} generiert wurde.
+\begin{center}
+\begin{tabular}{|r|r|r|r|r|}
+\hline
+Leitungen & Komparatoren & Schichten & Komparatoren & Schichten \\
+ & \textsc{SN-EC} & \textsc{SN-EC} & \bs{n} &
+ \bs{n} \\
+\hline
+11 & 37 & 9 & 39 & 10 \\
+12 & 42 & 9 & 46 & 10 \\
+19 & 93 & 13 & 98 & 14 \\
+20 & 102 & 13 & 106 & 14 \\
+% 20: # sn-cut 2:MAX 3:MIN 4:MIN 9:MIN 10:MIN 13:MIN 14:MIN 15:MIN 19:MIN 20:MAX 24:MAX 26:MIN 27:MAX 29:MIN 31:MAX 33:MIN 34:MAX 35:MIN 37:MIN 39:MAX
+21 & 109 & 14 & 114 & 15 \\
+22 & 116 & 14 & 123 & 15 \\
+23 & 124 & 14 & 133 & 15 \\
+\hline
+\end{tabular}
+\end{center}
+
+\begin{figure}
+ \begin{center}
+ \input{images/23-ec-from-bs46-fast.tex}
+ \end{center}
+ \caption{23-Sortiernetzwerk mit 124~Komparatoren in 14~Schichten. Das
+ Netzwerk wurde von \textsc{SN-Evolution-Cut} aus \bs{46} mit dem
+ Schnittmuster $\operatorname{MIN}(2, 4, 9, 12, 20, 22, 28, 30, 32, 33, 37,
+ 38, 41)$, $\operatorname{MAX}(1, 5, 16, 19, 21, 24, 25, 35, 36, 43)$
+ erzeugt.}
+ \label{fig:23-ec-from-bs46}
+\end{figure}
+
Dass die Ergebnisse von \textsc{SN-Evolution-Cut} keine erkennbare Struktur
haben, ist jedoch kein Eigenschaft des Algorithmus, sondern hängt insbesondere
von der Eingabe ab. Wird \textsc{SN-Evolution-Cut} beispielsweise mit dem
$m$~Schnitten gestartet, so ist das beste Ergebnis immer das
$\operatorname{OET}(n-m)$-Netzwerk.
-\begin{figure}
- \begin{center}
- \input{images/16-ec-from-ps32.tex}
- \end{center}
- \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in
- 10~Schichten. Das Netzwerk wurde von dem Algorithmus
- \textsc{SN-Evolution-Cut} aus dem \emph{Pairwise-Sorting-Netzwerk}
- $\operatorname{PS}(32)$ durch 16~Schnitte erzeugt.}
- \label{fig:16-ec-from-ps32}
-\end{figure}
-
\subsection{Versuche mit dem Pairwise-Sorting-Netzwerk}
Anders verhält sich das \emph{Pairwise-Sorting-Netzwerk}
$\operatorname{OES}(16)$. Eines dieser Sortiernetzwerke ist in
Abbildung~\ref{fig:16-ec-from-ps32} dargestellt.
+\begin{figure}
+ \begin{center}
+ \input{images/16-ec-from-ps32.tex}
+ \end{center}
+ \caption{Sortiernetzwerk mit 16~Leitungen und 63~Komparatoren in
+ 10~Schichten. Das Netzwerk wurde von dem Algorithmus
+ \textsc{SN-Evolution-Cut} aus dem \emph{Pairwise-Sorting-Netzwerk}
+ $\operatorname{PS}(32)$ durch 16~Schnitte erzeugt.}
+ \label{fig:16-ec-from-ps32}
+\end{figure}
+
Obwohl das \emph{Pairwise-Sorting-Netzwerk} den \emph{Odd-Even}-Mischer nicht
einsetzt und auch nicht auf einem Mischer basiert, ist der
$\operatorname{OEM}(8,8)$ im Sortiernetzwerk in
Abbildung~\ref{fig:16-ec-from-ps32} eindeutig erkennbar (Schichten~7--10). In
-den Schichten~1--6 erkennt man zwei unabhängige Sortiernetzerke, die
-strukturell identisch zu $\operatorname{PS}(8)$ sind -- lediglich die
+den Schichten~1--6 erkennt man zwei unabhängige Sortiernetzwerke, die
+strukturell sehr ähnlich zu $\operatorname{PS}(8)$ sind -- lediglich die
Schichten~1 und~2 sowie 4~und~5 sind vertauscht.
\begin{figure}
8-Schnittmuster das \emph{Odd-Even-Mergesort}-Netzwerk \oes{8} erhalten. Für
größere Sortiernetzwerke ist dies hingegen nicht mehr möglich, beispielsweise
kann $\operatorname{PS}(32)$ nicht durch ein 16-Schnittmuster in \oes{16}
-konvertiert werden. Die Verwandschaft von $\operatorname{PS}(n)$ und \oes{n}
+konvertiert werden. Die Verwandtschaft von $\operatorname{PS}(n)$ und \oes{n}
untersucht \textit{Moritz Mühlenthaler} ausführlich in~\cite{M2009}.
\subsection{Versuche mit dem Odd-Even-Mergesort-Netzwerk}
\emph{Odd-Even-Mergesort}-Netzwerk die wenigsten unterschiedlichen
16-Schnittmuster besitzt -- nur etwa $5,2$~Millionen. Entsprechend ist es
wenig verwunderlich, dass \textsc{SN-Evolution-Cut} gestartet mit
-$\operatorname{OES}(32)$ sehr schnell ein gutes 16-Schnittmuster findet.
-
-Eines der eher zufälligen Schnittmuster ist $\operatorname{MIN}(1, 6, 11, 14,
-17, 23, 26, 29)$, $\operatorname{MAX}(2, 7, 8,$ $13, 18, 21, 27, 31)$. Das
-Schnittmuster ist in Abbildung~\ref{fig:16-ec-from-oes32-cut} veranschaulicht,
-das resultierende Netzwerk ist in Abbildung~\ref{fig:16-ec-from-oes32} zu sehen.
+$\operatorname{OES}(32)$ sehr schnell\footnote{Auf dem Computer, auf dem diese
+Arbeit geschrieben wurde, dauerte es in den meisten Fällen weniger als eine
+Sekunde bis ein entsprechendes Schnittmuster gefunden wurde.} ein gutes
+16-Schnittmuster findet.
+
+Eines der 16-Schnittmuster für \oes{32}, die ein Sortiernetzwerk erzeugen, das
+bezüglich Effizienz und Geschwindigkeit identisch ist zu \oes{16}, ist
+$\operatorname{MIN}(1, 6, 11, 14, 17, 23, 26, 29)$, $\operatorname{MAX}(2, 7,
+8,$ $13, 18, 21, 27, 31)$. Das Schnittmuster ist in
+Abbildung~\ref{fig:16-ec-from-oes32-cut} veranschaulicht, das resultierende
+Netzwerk ist in Abbildung~\ref{fig:16-ec-from-oes32} zu sehen.
\begin{figure}
\begin{center}
\label{fig:16-ec-from-oes32}
\end{figure}
+Bei diesem Schnittmuster fällt auf, dass es für jeweils vier Eingänge (0--3,
+4--7, \dots, 28--31) einen Minimum- und einen Maximumschnitt gibt. Aus dieser
+Beobachtung kann man das regelmäßige Schnittmuster
+\begin{displaymath}
+\textit{Eingang}_i = \left\{ \begin{array}{rl}
+ \infty & \quad \textrm{falls } i \bmod 4 = 0 \\
+ -\infty & \quad \textrm{falls } i \bmod 4 = 3 \\
+ ? & \quad \mathrm{sonst}
+ \end{array} \right.
+\end{displaymath}
+ableiten. Es entfernt die Hälfte der Leitungen, vorausgesetzt die Anzahl der
+Leitungen ist durch Vier teilbar. Das Schnittmuster erzeugt effiziente
+Netzwerke, wenn die Anzahl der Leitungen $n = 2^d$ eine Zweierpotenz ist. Ein
+32-Sortiernetzwerk, das mit diesem Schnittmuster aus \oes{64} erzeugt wurde,
+ist in Abbildung~\ref{fig:32-ec-from-oes64} zu sehen.
+
+\begin{figure}
+ \begin{center}
+ \input{images/32-ec-from-oes64.tex}
+ \end{center}
+ \caption{32-Sortiernetzwerk mit 191~Komparatoren in 15~Schichten.
+ Das Netzwerk wurde mit einem regelmäßigen Schnittmuster aus dem
+ \emph{Odd-Even-Mergesort}-Netzwerk \oes{64} erzeugt.}
+ \label{fig:32-ec-from-oes64}
+\end{figure}
+
+Wenn die Anzahl der Leitungen keine Zweierpotenz ist, erreichen die so
+erzeugten Sortiernetzwerke die Effizienz des
+\emph{Odd-Even-Mergesort}-Netzwerks nicht. Wendet man das Schnittmuster
+beispielsweise auf \oes{24} an, so erhält man ein Sortiernetzwerk mit
+43~Komparatoren -- \oes{12} kommt mit 41~Komparatoren aus. Die Geschwindigkeit
+beider Sortiernetzwerke ist mit 10~Schichten identisch.
+
+Startet man hingegen den \textsc{SN-Evolution-Cut}-Algorithmus mit \oes{24}
+und dem Ziel, ein gutes 12-Schnittmuster zu finden, hängt die Ausgabe von der
+verwendeten Gütefunktion ab. Werden effiziente Netzwerke bevorzugt, findet der
+Algorithmus Schnittmuster wie $\operatorname{MIN}(6, 7, 8, 9, 16, 17, 20,
+22)$, $\operatorname{MAX}(2, 4, 12, 14)$, dessen Ergebnis in
+Abbildung~\ref{12-ec-from-oes24-efficient} zu sehen ist. Das resultierende
+Sortiernetzwerk besteht aus 41~Komparatoren, die in 10~Schichten angeordnet
+werden können. Damit ist das Netzwerk bezüglich Effizienz und Geschwindigkeit
+gleichauf mit \oes{12}. Werden hingegen schnelle Sortiernetzwerke bevorzugt,
+werden stattdessen Schnittmuster wie $\operatorname{MIN}(6, 7, 11, 12, 15,
+16)$, $\operatorname{MAX}(1, 3, 10, 17, 20, 23)$ ausgegeben. Das Ergebnis
+dieses Schnittmusters ist in Abbildung~\ref{fig:12-ec-from-oes24-fast} zu
+sehen. Das Sortiernetzwerk besteht aus 43~Komparatoren, die in 9~Schichten
+angeordnet sind. Das heißt, dass das resultierende Netzwerk zwar nicht so
+effizient wie \oes{12} ist, dafür aber schneller als \oes{12} und \bs{12}.
+
+\begin{figure}
+ \centering
+ \subfigure[Schnelles 12-Sortiernetzwerk aus 43~Komparatoren in 9~Schichten,
+ das von \textsc{SN-Evolution-Cut} aus dem \emph{Odd-Even-Mergesort}-Netzwerk
+ generiert
+ wurde.]{\input{images/12-ec-from-oes24-fast.tex}\label{fig:12-ec-from-oes24-fast}}
+ \subfigure[Effizientes 12-Sortiernetzwerk aus 41~Komparatoren in
+ 10~Schichten, das von \textsc{SN-Evolution-Cut} aus dem
+ \emph{Odd-Even-Mergesort}-Netzwerk generiert
+ wurde.]{\input{images/12-ec-from-oes24-efficient.tex}\label{fig:12-ec-from-oes24-efficient}}
+ \caption{Startet man \textsc{SN-Evolution-Cut} mit \oes{24}, hängt das
+ Ergebnis von der Bewertungsfunktion ab.}
+ \label{fig:12-ec-from-oes24}
+\end{figure}
+
+Das \oes{24}-Sortiernetzwerk ist kein Einzelfall: \textsc{SN-Evolution-Cut}
+findet Sortiernetzwerke, die schneller sind als das entsprechende
+\emph{Odd-Even-Mergesort}-Netzwerk, unter anderem für das
+\emph{Odd-Even-Mergesort}-Netzwerk mit 22, 24, 38, 40, 42, 44 und 46
+Eingängen. In der folgenden Tabelle sind einige schnelle Netzwerke, die von
+\textsc{SN-Evolution-Cut} generiert werden können, charakterisiert. Die
+Eingabe für \textsc{SN-Evolution-Cut} war jeweils das
+\emph{Odd-Even-Mergesort}-Netzwerk mit der doppelten Leitungszahl.
+Abbildung~\ref{fig:23-ec-from-oes46} zeigt beispielhaft ein
+23-Sortiernetzwerk, das aus \oes{46} generiert wurde.
+\begin{center}
+\begin{tabular}{|r|r|r|r|r|}
+\hline
+Leitungen & Komparatoren & Schichten & Komparatoren & Schichten \\
+(Resultat) & \textsc{SN-EC} & \textsc{SN-EC} & \oes{n} & \oes{n} \\
+\hline
+11 & 38 & 9 & 37 & 10 \\
+12 & 43 & 9 & 41 & 10 \\
+19 & 93 & 13 & 91 & 14 \\
+20 & 101 & 13 & 97 & 14 \\
+21 & 108 & 14 & 107 & 15 \\
+22 & 116 & 14 & 114 & 15 \\
+23 & 125 & 14 & 122 & 15 \\
+\hline
+\end{tabular}
+\end{center}
+
+\begin{figure}
+ \begin{center}
+ \input{images/23-ec-from-oes46-fast.tex}
+ \end{center}
+ \caption{23-Sortiernetzwerk mit 125~Komparatoren in 14~Schichten.
+ Das Netzwerk wurde von \textsc{SN-Evolution-Cut} aus \oes{46} mit dem
+ Schnittmuster $\operatorname{MIN}(6, 7, 9, 17, 19, 22, 29, 30, 32, 34, 38,
+ 44)$, $\operatorname{MAX}(4, 5, 11, 16, 18, 25, 31, 36, 39, 42, 45)$
+ erzeugt.}
+ \label{fig:23-ec-from-oes46}
+\end{figure}
+
\newpage
\section{Der \textsc{SN-Markov}-Algorithmus}
\label{sect:markov}
Komparatoren der Sortiernetzwerke, die \textsc{SN-Markov} auf seinem
zufälligen Pfad durchläuft (rot). Für jeden Graphen wurde der
\textsc{SN-Markov}-Algorithmus auf einem entsprechenden
-\emph{Odd-Even-Transporitionsort}-Netzwerk gestartet hat mindestens
+\emph{Odd-Even-Transpositionsort}-Netzwerk gestartet hat mindestens
1.000.000~Iterationen durchlaufen. In jedem Schritt wurde die Anzahl der
Komparatoren des Sortiernetzwerks bestimmt und ein entsprechender Zähler
erhöht. In Abbildung~\ref{fig:markov-comparators} ist die resultierende
-prezenturale Verteilung zu sehen.
+prozentuale Verteilung zu sehen.
Ebenfalls in die Graphen in Abbildung~\ref{fig:markov-comparators}
eingezeichnet ist eine \emph{Gamma-Verteilung} (grün), die die gemessenen
63~Komparatoren auskamen, ist die Rate bei \textsc{SN-Markov} mit $0,000335
\%$ rund 20~mal höher.
-Erwartunggemäß sind die besten Netzwerke, die \textsc{SN-Evolution} mit dem
+Erwartungsgemäß sind die besten Netzwerke, die \textsc{SN-Evolution} mit dem
\emph{bitonen Mischer} findet, aus 67~Komparatoren aufgebaut. Überraschend ist
jedoch, dass in dieser Konfiguration Sortiernetzwerke auftreten können, die
mehr Komparatoren besitzen als \emph{Odd-Even-Transpositionsort} -- \oet{16}
\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})
\item \textsc{SN-Count-Markov} (ggf)
\end{itemize}
Dies ließe sich für \textsc{SN-Evolution} nutzen, um zwei Individuen zu
rekombinieren. Da es für das \emph{Pairwise-Sorting}-Netzwerk sehr viele
-\emph{unterscheidliche} Schnittmuster gibt
-(Abbschnitt~\ref{sect:anzahl_schnittmuster}), ist es möglich, dass die
+\emph{unterschiedliche} Schnittmuster gibt
+(Abschnitt~\ref{sect:anzahl_schnittmuster}), ist es möglich, dass die
Verwendung dieser Rekombinationsmethode neue Ergebnisse ermöglicht. Leider
wird die Aussicht auf Erfolg durch die Tatsache geschmälert, dass keine
$n$-Schnittmuster für \ps{2n} gefunden werden konnten, die zu besseren
Schnittmuster auf das zusammengeführte Netzwerk an und gibt dem besten
Ergebnis den Zuschlag. Anschließend erfährt das entsprechende Schnittmuster
eine Aufwertung, so dass es wahrscheinlicher wird, dass \emph{dieses}
-Schnittmuster zur nächten Generation beiträgt. Im Gegensatz zum Ansatz der
+Schnittmuster zur nächsten Generation beiträgt. Im Gegensatz zum Ansatz der
parasitären Eingaben entsteht eine \emph{Synergie} zweier Populationen, die
das Gesamtergebnis oder zumindest die Konvergenzgeschwindigkeit verbessern
könnte.
Komparatornetzwerks auf eine Eingabe-Permutation.
\textit{libsortnetwork} kann unter der Web-Adresse
-\url{http://octo.it/libsortnetwork/} unentgeldlich heruntergeladen werden.
+\url{http://octo.it/libsortnetwork/} unentgeltlich heruntergeladen werden.
\newpage
\bibliography{references}
\end{document}
-% vim: set shiftwidth=2 softtabstop=2 tabstop=8 fdm=marker tw=78 :
+% vim: set shiftwidth=2 softtabstop=2 tabstop=8 fdm=marker tw=78 spelllang=de :