From: Florian Forster Date: Fri, 18 Feb 2011 20:53:06 +0000 (+0100) Subject: Ein paar Sätze zur Implementierung. X-Git-Url: https://git.octo.it/?p=diplomarbeit.git;a=commitdiff_plain;h=67e659fd0afe0b842ec8dec9d47844659c88e167 Ein paar Sätze zur Implementierung. --- diff --git a/diplomarbeit.tex b/diplomarbeit.tex index b0fa6ac..7273cbe 100644 --- a/diplomarbeit.tex +++ b/diplomarbeit.tex @@ -1734,10 +1734,53 @@ gib Netzwerk zurück Das würde mir noch einfallen$\ldots$ +- SN-Evolution mit Pairwise als „Mischer“. +- Co-Evolution von Netzwerken und Schnittmustern. + \newpage \section{Implementierung} -So habe ich die ganzen Versuche durchgeführt. +Alle in dieser Arbeit beschriebenen Versuche wurden mit einer eigens +entwickelten C-Bibliothek, \textit{libsortnetwork}, und zugehörigen +Kommandozeilen-Programmen durchgeführt. Die Bibliothek wurde unter der +\textit{GNU Lesser General Public License} (LGPL) in der Version~2.1 +veröffentlicht; die Kommandozeilen-Programme, die in vielen Fällen lediglich +Funktionalität der Bibliothek auf der Kommandozeile zur Verfügung stellen, +stehen unter der \textit{GNU General Public License}, Version~2. Diese +Lizenzen räumen einem Benutzer weitreichende Rechte ein, unter anderem das +Programm beliebig zu verwenden, zu studieren, zu verändern sowie veränderte +und unveränderte Kopien zu veröffentlichen. + +Die Programmierschnittstelle (API) der Bibliothek orientiert sich an +Paradigmen der \textit{objektorientierten Programmierung}. Beispielsweise kann +mit der Funktion \texttt{sn\_network\_ create()} ein neues Zustands-Objekt +erzeugt werden, für das mehrere Manipulations-Methoden, zum Beispiel +\texttt{sn\_network\_comparator\_add()}, zur Verfügung stehen. Auf diese Art +und Weise kann die Bibliothek leicht erweitert werden, ohne dass bestehende +Programme angepasst werden müssen. + +Die meisten Kommandozeilen-Programmen lesen ein Komparatornetzwerk von der +Standard-Eingabe und schreiben ihr Ergebnis auf die Standard-Ausgabe. Um +Beispielsweise eine \emph{normalisierte} Variante des \emph{bitonen +Mergesort}-Netzwerks \bs{18} zu erzeugen, kann folgendes Kommando verwendet +werden: +\begin{verbatim} +$ sn-bitonicsort 18 | sn-normalize >sn-18 +\end{verbatim} +Dieses Prinzip, kleine Programme \emph{eine} Aufgabe erledigen zu lassen und +es einfach zu ermöglichen, Programme zu verketten, ist eines der +Grundprinzipien des UNIX-Be\-triebs\-sys\-tems. Es hat sich in den letzten +Jahrzehnten und beim Verfassen dieser Arbeit als sehr flexibel und mächtig +erwiesen. + +Funktionen, die von Kommandozeilen-Programmen zur Verfügung gestellt werden, +sind unter anderem das Erzeugen von Odd-Even-Mergesort-, bitonic Mergesort- +und Pairwise-Sorting-Netzwerken, das Normalisieren von Sortiernetzwerken, +Anwendung von Schnittmustern auf Sortiernetzwerke und Anwendung eines +Komparatornetzwerks auf eine Eingabe-Permutation. + +\textit{libsortnetwork} kann unter der Web-Adresse +\url{http://octo.it/libsortnetwork/} unentgeldlich heruntergeladen werden. \newpage \bibliography{references}