Abschnitt "Anzahl Schnittmuster" weiter ausgebaut.
[diplomarbeit.git] / diplomarbeit.tex
index 0e48941..21ff5e0 100644 (file)
@@ -863,10 +863,10 @@ 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}
+\begin{equation}\label{eqn:anzahl_schnittmuster}
   \prod_{i=n}^{m+1} 2i = 2^{n-m} \frac{n!}{m!}
   \quad (n > m)
-\end{displaymath}
+\end{equation}
 \emph{mögliche} Schnittmuster. Diese Schnittmuster sind nicht alle
 unterschiedlich. Legt man beispielsweise das Minimum auf die unterste Leitung
 und das Maximum auf die oberste Leitung eines Standard-Sortiernetzwerks,
@@ -911,8 +911,103 @@ Unterschied nicht mehr erkennen. In allen sechs Fällen, in denen sich die
 Eingänge unterscheiden, wird anschließend der Komparator entfernt, so dass
 sich die Resultate auch in der ersten Schicht nicht unterscheiden.
 
-\todo{Mit \textit{Approximate Counting} könnte man die Anzahl der
-\emph{unterschiedlichen} Schnittmuster genauer abschätzen.}
+\begin{figure}
+  \begin{center}
+    \includegraphics[viewport=0 0 360 216,width=15cm]{images/count-cuts-16.pdf}
+  \end{center}
+  \caption{Anzahl der \emph{unterschiedlichen} Sortiernetzwerke, die durch
+  8-Schnittmuster aus $\operatorname{OES}(16)$, $\operatorname{BS}(16)$ und
+  $\operatorname{PS}(16)$ hervorgegangen sind. Die Anzahl der
+  unterschiedlichen Netzwerke nach $10^6$~Iterationen ist 3519 für das
+  \emph{Odd-Even-Mergesort-Netzwerk}, 4973 für das \emph{bitone
+  Mergesort-Netzwerk} und 18764 für das \emph{Pairwise-Sorting-Netzwerk}.}
+  \label{fig:count-cuts-16}
+\end{figure}
+
+Um die Anzahl der \emph{unterschiedlichen} Schnittmuster abschätzen zu können,
+wurden je eine Million zufällige 8-Schnittmuster auf die 16-Sortiernetzwerke
+$\operatorname{OES}(16)$, $\operatorname{BS}(16)$ und $\operatorname{PS}(16)$
+angewandt. Abbildung~\ref{fig:count-cuts-16} trägt die Anzahl der
+\emph{unterschiedlichen} Sortiernetzwerke gegen die Anzahl der zufälligen
+Schnittmuster auf. Klar zu sehen ist, dass sich die Anzahl der erzeugten
+Sortiernetzwerke nach $500.000$~Iterationen nur noch gering verändert und der
+Wert nach $1.000.000$~Iterationen allem Anschein nach dem Endwert schon sehr
+nahe ist.
+
+Die Anzahl der 8-Schnittmuster ist entsprechend der
+Formel~\ref{eqn:anzahl_schnittmuster} 3.294.720. Diese möglichen Schnittmuster
+führen aber nur zu wenigen \emph{unterschiedlichen} Sortiernetzwerken: 3519
+($\approx 0,1\%$) im Fall des \emph{Odd-Even-Mergesort-Netzwerks}, 4973
+($\approx 0,15\%$) beim \emph{bitonen Mergesort-Netzwerk} und 18764 ($\approx
+0,57\%$) beim \emph{Pairwise-Sorting-Netzwerk}. Zwar ist es möglich, dass mehr
+Iterationen die Anzahl der unterschiedlichen Netzwerke noch wachsen lässt. Die
+Graphen in Abbildung~\ref{fig:count-cuts-16} geben jedoch Grund zu der
+Annahme, dass Anzahl dieser zusätzlichen, unterschiedlichen Schnittmuster
+vernachlässigbar klein ist.
+
+Bedingt durch die sehr große Anzahl möglicher Schnittmuster ist dieses
+Experiment für größere Sortiernetzwerke leider nicht sinnvoll durchführbar. Um
+die Anzahl der unterschiedlichen Schnittmuster trotzdem abschätzen zu können,
+kann man sich einer stochastischen Methode bedienen, der sogenannten
+\emph{Monte-Carlo-Methode}. Zunächst generiert man eine Menge~$S$ von
+$k$~unterschiedlichen Schnittmustern. Anschließend werden $n$~Schnittmuster
+zufällig erzeugt, und überprüft, ob sie sich 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 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
+  \emph{Monte-Carlo-Methode} für $\operatorname{OES}(32)$ und
+  $\operatorname{BS}(32)$.}
+  \label{fig:collisions-10000-1000000-32}
+\end{figure}
+
+In Abbildung~\ref{fig:collisions-10000-1000000-32} ist das Ergebnis des
+Monte-Carlo-Algorithmus für 16-Schnittmuster zu sehen, die auf
+$\operatorname{OES}(32)$ und $\operatorname{BS}(32)$ angewandt wurden: Von
+jedem Sortiernetzwerk wurden zunächst eine Menge von 10.000
+\emph{unterschiedlichen} Schnittmustern erzeugt. Anschließend wurden 1.000.000
+zufällige Schnittmuster erzeugt und der Anteil der zufälligen Schnittmuster,
+die identisch zu einem in der Menge enthalten Schnittmuster sind, berechnet.
+Für $\operatorname{OES}(32)$ war dieser Anteil etwa $0,19 \%$, für
+$\operatorname{BS}(32)$ etwa $0,29 \%$. Das ergibt eine Abschätzung von $5,2
+\cdot 10^6$ unterschiedlichen Schnittmustern für $\operatorname{OES}(32)$ und
+$3,4 \cdot 10^6$ für $\operatorname{BS}(32)$.
+
+\begin{figure}
+  \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
+  \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$
+  unterschiedlichen Schnittmustern.}
+  \label{fig:collisions-100000-1000000-32-ps}
+\end{figure}
+
+Im vorherigen Abschnitt wurde das \emph{Pairwise-Sorting-Netzwerk}
+$\operatorname{PS}(32)$ nicht betrachtet, da es für dieses Netzwerk viel mehr
+unterschiedliche 16-Schnittmuster gibt als für $\operatorname{OES}(32)$ und
+$\operatorname{BS}(32)$. In Anbetracht der Tatsache, dass die Anzahl der
+unterschiedlichen 8-Schnittmuster für $\operatorname{PS}(16)$ in
+Abbildung~\ref{fig:count-cuts-16} bereits mehr als dreimal größer war als die
+Anzahl für $\operatorname{OES}(16)$ beziehungsweise $\operatorname{BS}(16)$,
+ist dieser Umstand wenig verwunderlich. In einem kombinierten Graphen hätte
+man 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
+Schnittmustern erzeugt. Trotzdem wurden nach 1.000.000 Iterationen nur 385
+Schnittmuster gefunden, die ein Sortiernetzwerk aus dieser Menge erzeugen.
+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 die Anzahl
+der \emph{möglichen} Schnittmuster.
 
 \newpage
 \section{Der \textsc{SN-Evolution}-Algorithmus}