Backtracking
Graphentheorie
Künstliche Intelligenz
Kombinatorik
Kompressions-Algorithmen
Kryptographie
Mathematisches
Sortier-Algorithmen
Datenstrukturen
Formale Sprachen, Compiler etc.
Prolog
TCP/IP Sockets
Datenströme, XML, etc.
coset_dfa.zip (20 KB)
Ein Programm, das zu zwei Zahlen n und b einen
Automaten
konstruiert, der Zahlen im
b-adischen
Zahlensystem erkennt, die durch n teilbar sind. So, wie zum Beispiel der
Automat auf Seite 6
dieser Vorlesungsfolien Binärzahlen erkennt, die durch 3 teilbar sind.
PureLambdaCalculus.zip (228 KB)
Eine funktionale Programmiersprache, die den reinen
-Kalkül benutzt. Das ist eine ziemlich krasse Beschränkung auf
nichts Anderes als Funktionen - nichteinmal Zahlen oder Vergleiche sind erlaubt. Trotzdem ist der Kalkül Turing vollständig, wie ich auch in der beiliegenden
PDF Datei beweise (neben einer Anleitung, wie man mit dem Programm arbeitet und
wie die ganzen standard-Funktionen funktionieren).
Das ganze ist geschrieben in einer Kombination aus lex und yacc. Kompilieren kann man es mit make, eine makefile liegt bei.
string_search.zip (24 KB)
Ein Programm, das prüft, ob ein String in einem anderen vorkommt.
Dazu baut es einen minimalen
deterministischen Automaten für den einen String.
Das interessante daran ist, dass die Konstruktion des deterministischen
Automaten nicht über die
Minimierung der
Potenzmengen-Konstruktion nach
Thompson-Konstruktion realisiert ist, sondern der Automat direkt
aus dem String konstruiert wird, wofür lediglich eine Laufzeit von
benötigt wird, entgegen der Potenzmengen-Konstruktion, die
benötigt,
wobei
die Länge des gesuchten Strings ist.
tm_simulator.zip (971 KB)
Ein Programm, das
Turingmaschinen
simuliert. Das ganze ist recht flexibel designed, sodass man es wohl langfristig so erweitern
können wird, dass man auch noch Unterprogramme einbinden kann.
Die beiliegenden Beispielprogramme "un2bin.tm" und "fast_un2bin.tm" rechnen eine
Unäre Zahl in
ihre Binärdarstellung um,
"bin_addition.tm" addiert zwei Binärzahlen.
Das ganze ist geschrieben in einer Kombination aus
lex und
yacc. Kompilieren
kann man es mit make,
eine makefile liegt bei. Dank Cygwin
ist jetzt auch eine Version für
Windows enthalten.
Virtual_Machines_for_AM_and_ZPP.zip (83 KB)
In der Vorlesung Compilerbau (Skript) entwickelt man im Laufe des Semesters Compiler, die BPS (Beispiel-ProgrammierSprache)
Quellcodes übersetzen in
Zwischencode
für die Abstrakten Maschinen AM und ZPP. Damit man die generierten Codes nicht
nur angucken und ihre Korrektheit nachrechnen kann, habe ich diese beiden virtuellen Maschinen
für AM und ZPP entwickelt, damit man seine generierten Codes auch mal in Aktion sehen kann.