Constraint-Programmierung

"Constraint Programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it." (E. Freuder)

Die Constraint-basierte Programmierung ist aus der geschickten Verbindung zweier logik-basierter deklarativer Paradigmen entstanden: Logikprogrammierung und Lösen von Constraints. In der Logikprogrammierung werden Berechnungen durch Regeln definiert. Unter Constraintlösen wiederum versteht man das Lösen von Problemen, indem man Constraints (Bedingungen, Einschränkungen) angibt, die von einer Lösung erfüllt werden müssen, und diese Constraints kombiniert, um die Lösung weiter einzuschränken, bevor man durch einen Suchschritt Alternativen erprobt. Dadurch lassen sich schnell und elegant komplexe kombinatorische Probleme durch eine Verbindung aus Constraintlösen und Suche behandeln.

Haupteinsatzbereiche sind Produktions- und Personalplanung, Transportoptimierung sowie Layoutgenerierung. Der weltweite Umsatz durch Anwendung dieser Technologie wurde für 1996 auf 100 Millionen Dollar geschätzt.

Die Vorlesung führt in Konzepte ein, wie sie in der Programmanalyse und Künstlichen Intelligenz bereits Standard sind, und gibt einen Ausblick welche Eigenschaften Programmiersprachen in den nächsten Jahrzehnten haben könnten. Die Vorlesung deckt sowohl formale als auch praktische Aspekte ab und bietet ausgereiftes, ständig aktualisiertes Lehrmaterial und freie Software Online als auch in Buchform für Studenten, die Freude an Abstraktion und Problemlösen haben. Die Vorlesung gliedert sich in zwei Hauptteile: Constraint-Programmiersprachen und Constraintsysteme.

  • Constraint-Programmiersprachen: Constraint-Logikprogrammierung, nebenläufige Constraint-Programmierung, Constraint Handling Rules
  • Constraintsysteme mit ihren Anwendungen: Terme, lineare Gleichungen, endliche Bereiche, Intervalle

Die Übung ermöglicht es, praktische Erfahrungen mit einer der fortgeschrittensten Constraintprogrammiersprachen zu sammeln.

Termin

Dienstag 14-16 Uhr in O27-122
Donnerstag 12-14 Uhr in O27-122

Weitere Informationen

Vorlesungsverzeichnis