Projektseminar:

Pattern-Datenbanken für heuristische

Suchverfahren

Inhalt
Heuristische Suchalgorithmen werden in der Künstlichen Intelligenz, in Planungssystemen und in der kombinatorischen Optimierung eingesetzt, um Zustandsgraphen nach kostenoptimalen Lösungen zu durchsuchen. Die Effizienz des Suchprozesses hängt ganz wesentlich von der Güte der verwendeten Heuristik ab. Aktuelle Algorithmen verwenden als Heuristik sogenannte Pattern-Datenbanken (pattern databases), die komprimiert im Hauptspeicher liegen und über schnelle Indizierungsfunktionen adressiert werden.

Am Beispiel von Einpersonen-Puzzles (n-Puzzle, Rubics Cube) und Sequenz-Alignmentverfahren der Bioinformatik wollen wir effiziente, parallele Algorithmen für die Erstellung großer Pattern-Datenbanken programmieren, die dann ihrerseits für die Lösungssuche in komplexen Problemen angewandt werden. Dabei kommen die Programmiersprachen C, C++ und Assembler sowie thread-parallele Methoden (OpenMP) zum Einsatz. Zur Entwicklung und Erprobung stehen hochparallele Cluster-Systeme mit großem Hauptspeicher und breiten Vektoreinheiten zur Verfügung.

Die Studierenden sollten Programmiererfahrung (möglichst C, C++) sowie Grundkenntnisse in Systemarchitektur mitbringen. Nach einer Einführung durch den Veranstalter halten die Studierenden Kurzvorträge zu ausgewählten Suchalgorithmen und Pattern-Datenbanken. Diese werden in Kleingruppen programmiert, getestet und optimiert und die Ergebnisse in einem Abschlussvortrag vorgestellt.

Ort/Zeit
Mittwochs, 13-15 und 15-17 Uhr
Raum 1'307 im CMS-Gebäude

Planung, Unterrichtsmaterial (Passwort geschützt)

10.04.2019   Organisatorisches
10.04.2019   Einführung
17.04.2019   Depth-First Iterative-Deepening
24.04.2019   Literaturstudium / Vorbereitung der Vorträge
01.05.2019   Feiertag
08.05.2019   Vorträge zu Themen 1 und 2
    Paralleles A*
    Paralleles IDA*
15.05.2019   Vorträge zu Themen 3 und 6
    Bidirektionale Suche
    Compressing Pattern Databases
23.05.2019   Pattern Datenbanken
    MapReduce für parallele Heuristische Suche
29.05.2019   Festlegung der Projektthemen
05.06.2019   Diskussion im Plenum zum Projektfortschritt
    Message Passing Interface
12.06.2019   Termin entfällt: Programmierarbeit in Kleingruppen
19.06.2019   Vorstellung erster Projektergebnisse im Plenum
26.06.2019   Integration mit Kompressions-API (siehe git), kein Treffen
03.07.2019   Vorstellung der Projektergebnisse im Plenum
10.07.2019   Vorstellung der Projektergebnisse im Plenum
    IDA* Duplicate Node Detection
    Projektergebnis Parallel A*