Abschnitt "Leitungen entfernen": Ausgebaut.
authorFlorian Forster <octo@leeloo.octo.it>
Mon, 13 Dec 2010 14:35:29 +0000 (15:35 +0100)
committerFlorian Forster <octo@leeloo.octo.it>
Mon, 13 Dec 2010 14:35:29 +0000 (15:35 +0100)
diplomarbeit.tex

index a8fd65e..e17b6a4 100644 (file)
@@ -526,24 +526,25 @@ Richtung.
 
 \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}}
@@ -558,6 +559,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
@@ -566,9 +592,58 @@ 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~Eingä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 {\sc 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}.
+
 \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?
 \end{itemize}
 
 \section{Der evolutionäre Ansatz}
@@ -576,7 +651,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,