From: Florian Forster Date: Mon, 13 Dec 2010 14:35:29 +0000 (+0100) Subject: Abschnitt "Leitungen entfernen": Ausgebaut. X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=7e92c8e96f4292dc5e930b52a4460e4a5c55724d;p=diplomarbeit.git Abschnitt "Leitungen entfernen": Ausgebaut. --- diff --git a/diplomarbeit.tex b/diplomarbeit.tex index a8fd65e..e17b6a4 100644 --- a/diplomarbeit.tex +++ b/diplomarbeit.tex @@ -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,