Un problema de satisfacción de restricciones (CSP) se define como un conjunto de variables con dominios de valores, y un conjunto de restricciones entre las variables. Un CSP puede ser discreto o continuo, dependiendo de si las variables toman valores discretos o continuos. Las restricciones pueden ser binarias, n-arias, fuertes, débiles o difusas. Resolver un CSP implica encontrar una asignación de valores a las variables que satisfaga todas las restricciones.