Programming paradigm wherein relations between variables are stated in the form of constraints
This article possibly contains original research. Please improve it by verifying the claims made and adding inline citations. Statements consisting only of original research should be removed.(June 2011) (Learn how and when to remove this message)
Constraint programming (CP)[1] is a paradigm for solving combinatorial problems that draws on a wide range of techniques from artificial intelligence, computer science, and operations research. In constraint programming, users declaratively state the constraints on the feasible solutions for a set of decision variables. Constraints differ from the common primitives of imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. In addition to constraints, users also need to specify a method to solve these constraints. This typically draws upon standard methods like chronological backtracking and constraint propagation, but may use customized code like a problem-specific branching heuristic.
Constraint programming takes its root from and can be expressed in the form of constraint logic programming, which embeds constraints into a logic program. This variant of logic programming is due to Jaffar and Lassez,[2] who extended in 1987 a specific class of constraints that were introduced in Prolog II. The first implementations of constraint logic programming were Prolog III, CLP(R), and CHIP.
Instead of logic programming, constraints can be mixed with functional programming, term rewriting, and imperative languages.
Programming languages with built-in support for constraints include Oz (functional programming) and Kaleidoscope (imperative programming). Mostly, constraints are implemented in imperative languages via constraint solving toolkits, which are separate libraries for an existing imperative language.
^Rossi, Francesca; Beek, Peter van; Walsh, Toby (2006-08-18). Handbook of Constraint Programming. Elsevier. ISBN 9780080463803.
^Jaffar, Joxan, and J-L. Lassez. "Constraint logic programming." Proceedings of the 14th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, 1987.
and 22 Related for: Constraint programming information
expressed in the form of constraint logic programming, which embeds constraints into a logic program. This variant of logic programming is due to Jaffar and...
Constraint logic programming is a form of constraintprogramming, in which logic programming is extended to include concepts from constraint satisfaction...
integer programming (MIP) and answer set programming (ASP) are all fields of research focusing on the resolution of particular forms of the constraint satisfaction...
non-concurrent constraint logic programming in that they are aimed at programming concurrent processes that may not terminate. Constraint handling rules...
Concurrent constraint logic programming is a version of constraint logic programming aimed primarily at programming concurrent processes rather than (or...
linear programming, economics and cost modeling Constrained writing, in literature Constraint algorithm, such as SHAKE, or LINCS Constraintprogramming Constraint...
science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic...
Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical...
Linear programming is a special case of mathematical programming (also known as mathematical optimization). More formally, linear programming is a technique...
In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm...
concurrency A constraintprogramming language is a declarative programming language where relationships between variables are expressed as constraints. Execution...
Conference on Principles and Practice of Constraint Programming Multiple Authors. "Java ConstraintProgramming solver" (Java). JaCoP. Krzysztof Kuchcinski &...
In constraint satisfaction research in artificial intelligence and operations research, constraint graphs and hypergraphs are used to represent relations...
Competitive programming or sport programming is a mind sport involving participants trying to program according to provided specifications. The contests...
other (programming) language paradigms have also been used, such as constraintprogramming or probabilistic programming. Inductive programming incorporates...
artificial intelligence List of constraintprogramming languages List of computer algebra systems List of logic programming languages List of constructed...
Constraint Handling Rules (CHR) is a declarative, rule-based programming language, introduced in 1991 by Thom Frühwirth at the time with European Computer-Industry...
function subject to linear constraints on the variables. Quadratic programming is a type of nonlinear programming. "Programming" in this context refers to...
algorithms for finding solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions...