Algorithmen



gauss.c Programm, welches die Ablaufgeschwindigkeit eines sequentiellen Algorithmus und des Gauß-Verfahrens zur Berechnung der Summe einer Reihe mit n Elementen misst und miteinander vergleicht. Weiterführende Erklärungen zur Konstruktion und zur Analyse beider Algorithmen gibt es auf meiner Programmieren-Seite genau hier.
euklid.c Das Programm soll ein Ablaufbeispiel der verschiedenen Versionen des Euklidischen Algorithmus darstellen. Dabei werden Schleifendurchläufe und Rekursionsaufrufe gezählt und bei Angabe der Compileroption -DTEST (gcc) auch die Zwischenschritte ausgegeben. Die zugehörige Beschreibung ist auf der Programmieren-Seite zu finden: Euklidischer Algorithmus.
horner.c Vielfache Aufgabe in der Mathematik ist die Berechnung der Summe eines reellen Polynoms. Anstatt mit der Brechstange vorzugehen, verdeutlicht das Horner-Schema, wie man es auch effizienter lösen kann - nämlich mithilfe rekurrenter Beziehungen und in unserem Fall mit rekursiven Funktionsaufrufen. Die zugehörige Beschreibung ist wieder auf der Programmieren-Seite zu finden: Das Horner-Schema.

elem_sort.c

mess_sort.c

Um die elementaren Sortierverfahren nicht ganz außer Acht zu lassen und als Übung für mich habe ich dem interessierten Leser diese zwei Programme gecodet. Da die 4 Sortierverfahren insertion und selection sort, bubblesort und shellsort allerdings durch Kommentare gut beschrieben sind, kann man sie auch wunderbar für das Selbststudium benutzen.
elem_sort.c gibt einem die Möglichkeit, eines der Sortierverfahren auszuwählen, um eine zufällige Permutation zu sortieren. mess_sort.c hingegen misst die Zeit, die jeder Sortieralgorithmus für sich benötigt, um eine große Anzahl von Elementen zu sortieren (Anzahl der Elemente muss mit MAX_N möglicherweise angepasst werden).

quicksort.c

quicksort.c ist ein Programm, welches den klassischen Quicksort-Algorithmus sowie diverse Variationen dazu implementiert und die Zeiten misst, die jeweils zur Abarbeitung benötigt werden.
Einen entsprechenden ausführlichen Text zu den Modifikationen kann man auf der Coding-Seite einsehen, ich wünsche viel Spaß!

nikohaus.c

nikohaus.c stellt eine programmiertechnische Umsetzung des altbekannten "Haus vom Nikolaus" dar. Dabei werden alle Möglichkeiten und Sackgassen ausgegeben, die es zur Konstruktion des Nikohauses gibt. Weitere Informationen erhaltet ihr durch den zugehörigen Artikel: Nikohaus.
simpleNet.zip (v0.5)
simpleNet_prog.zip (v0.5)
simpleNet_prog_ausw.zip (v0.7)
simpleNet_prog_opt.zip (v0.7)
simpleNet_v0.6.zip (v0.6)
simpleNet_v0.7.zip (v0.7)
Bei der C++-Klasse simpleNet handelt es sich um die Implementierung eines einfachen vorwärtsgerichteten Backpropagations-Netzes (siehe auch hier) und kann von anderen Programmierern für ihre Software-Projekte benutzt werden (eine Dokumentation liegt bei).
simpletNet_prog ist eine praktische Anwendungsmöglichkeit der Klasse. Das Netz lernt dabei x Epochen lang die 10 Dezimalnummern, als digitale Ziffern dargestellt. Im Anschluss daran erkennt es Ziffern, bei denen selbst 2 oder mehr Pixel verfälscht sind, korrekt - ordnet die digitale Darstellung also richtig der entsprechenden Dezimalziffer zu.
simpleNet_prog_ausw lernt wie simpleNet_prog die 10 digitalen Ziffern, gibt aber den quadratischen Fehler des Netzes bei x Iterationen für versch. Lernraten und Impulsfaktoren zurück.
simpleNet_prog_opt liefert die optimale Lernrate bei Impulswerten von 0 bis 0.9 zurück.


(c) 2003 by RTC, www.linux-related.de
Dieses Dokument unterliegt der GNU Free Documentation License