Constraintprogrammierung
aus Wikipedia, der freien Enzyklopädie
Die Constraintprogrammierung (Constraint Programming) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und sich als natürliche Weiterentwicklung der logischen Programmierung versteht. Logische und Constraintprogrammierung werden typischerweise in Kombination eingesetzt, was zu einer erheblichen Steigerung der Ausdrucksstärke, Flexibilität und Effektivität der Paradigmen führt.
Als Constraint kann man beispielsweise eine mathematische Gleichung oder ein logisches Prädikat verstehen, zum Beispiel X-Y=3 oder X<=Y. Die beiden erwähnten Constraints enthalten zwar Informationen über die Werte der Variablen X und Y, allerdings in schlecht verwertbarer Form. Ziel der Constraintprogrammierung ist es, eine Menge derartiger Informationen auf Widerspruchsfreiheit zu prüfen und gegebenenfalls zu vereinfachen. So könnte beispielsweise aus den Informationen X-Y=3 und X+Y=7 die Lösung X=5 und Y=2 gefolgert werden.
Diese Vereinfachungen werden von einem speziellen Algorithmus, dem Constraintlöser durchgeführt, welcher ein fest implementierter Teil der Constraint-Programmiersprache ist. Verschiedene Versuche, das Lösen von Constraints flexibler zu machen und dem Benutzer mehr Einflussmöglichkeiten zu geben, haben in den 1990er Jahren zur Entwicklung der Programmiersprache CHR (Constraint Handling Rules) geführt.