Navigation News Algorithmen Mathe Downloads Bücher Links Autor 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.