A computational paradigm especially suitable for solving combinatorial problems. Constraint Programming involves specifying constraints that potential solutions must satisfy. A solver then searches for solutions that meet all these constraints. CP is powerful in situations where the problem domain is complex and the number of potential solutions is vast.