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.

Eugene C. Freuder: Constraints. April 1997.

Constraint-Programmierung erlaubt eine klare (deklarative) Beschreibung und effiziente Lösung von Problemen mit unvollständiger Information.

Während man mit imperativen Sprachen, wie z.B. C, C++ und Java, beschreibt, wie ein Problem gelöst wird, erlauben deklarative Sprachen eine Programmierung nahe an der Problemspezifikation und -domäne. Der Nutzer beschreibt hier lediglich, was das Problem und seine Lösung ausmacht. Die Beschreibung des Lösungsprozesses wird weitgehend dem Lauzeitsystem überlassen. Die Problembeschreibung erfolgt in mathematischer Weise basierend auf Relationen und/oder Funktionen. Dementsprechend unterscheidet man logische, constraint-basierte und funktionale Sprachen.

Constraint-Programmierung hat in den vergangenen zwei Jahrzehnten eine rapide Entwicklung vollzogen. Seine Ursprünge hat dieses Paradigma auf der einen Seite in der Mathematik und auf der anderen Seite in der Künstlichen Intelligenz. Während in den Anfängen vor allem logische Sprachen wie z.B. Prolog um Constraints erweitert wurden, gibt es heute verschiedenste constraint-basierte Sprachen, Spracherweiterungen und Bibliotheken, sowohl in der deklarativen als auch in der imperativen Welt.

Mit Constraint Programming beschäftigen wir uns zum einen im Rahmen der Integration von Constraints in Programmiersprachen. Ein weiteres Forschungsthema liegt im Bereich der Kooperation und der Koordination von Lösungstechniken.  Das Paradigma der Constraint-Programmierung bietet effiziente Mechanismen zur Behandlung von Constraints verschiedener Domänen. Die Lösung komplexerer Probleme, die mit einzelnen Constraint-Lösern nicht ausreichend behandelt werden können, wird durch die Kombination mehrerer Constraint-Löser ermöglicht. Aufbauend auf einer einheitlichen Schnittstelle für Constraint-Löser wurde ein allgemeines Framework Meta-S für die Kooperation verschiedener Löser entwickelt. Meta-S erlaubt die Integration neuer Löser und die Definition von Kooperationsstrategien für die beteiligten Löser in Abhängigkeit verschiedenster Einflüsse.

Schließlich sind wir an Anwendungsfeldern der constraint-basierten Programmierung interessiert. Hierunter zählen neben den klassischen Gebieten der Constraint-Programmierung, wie Planung, Scheduling und Konfiguration, Anwendungen

  • im Compilerbau mit dem Ziel der Sicherheit und der Qualität von Software und
  • zur Beschreibung spezieller Anforderungen beispielsweise im Bereich verteilter Anwendungen.

Unsere Webseite verwendet Cookies. Diese haben zwei Funktionen: Zum einen sind sie erforderlich für die grundlegende Funktionalität unserer Website. Zum anderen können wir mit Hilfe der Cookies unsere Inhalte für Sie immer weiter verbessern. Hierzu werden pseudonymisierte Daten von Website-Besuchern gesammelt und ausgewertet. Das Einverständnis in die Verwendung der technisch nicht notwendigen Cookies können Sie jeder Zeit wiederrufen. Weitere Informationen erhalten Sie auf unseren Seiten zum Datenschutz.

Erforderlich

Diese Cookies werden für eine reibungslose Funktion unserer Website benötigt.

Statistik

Für den Zweck der Statistik betreiben wir die Plattform Matomo, auf der mittels pseudonymisierter Daten von Websitenutzern der Nutzerfluss analysiert und beurteilt werden kann. Dies gibt uns die Möglichkeit Websiteinhalte zu optimieren.

Name Zweck Ablauf Typ Anbieter
_pk_id Wird verwendet, um ein paar Details über den Benutzer wie die eindeutige Besucher-ID zu speichern. 13 Monate HTML Matomo
_pk_ref Wird benutzt, um die Informationen der Herkunftswebsite des Benutzers zu speichern. 6 Monate HTML Matomo
_pk_ses Kurzzeitiges Cookie, um vorübergehende Daten des Besuchs zu speichern. 30 Minuten HTML Matomo