¿Cuál es la diferencia entre un algoritmo basado en restricciones y un algoritmo basado en reglas?

Los algoritmos basados ​​en restricciones y en reglas son miembros de dos paradigmas de programación diferentes.

Los algoritmos basados ​​en reglas son parte del paradigma de programación imperativo , que generalmente es lo que pensamos cuando hablamos de programación. Un programa imperativo consta de varios pasos con reglas lógicas. Ejemplo: “Si A, entonces haz B”.

El paradigma de programación de restricción es un subconjunto del paradigma de programación declarativa . Los programas declarativos describen cómo se evalúan las expresiones, en lugar de controlar el orden en que se calculan. En la programación de restricciones en particular, las expresiones se evalúan en función de las restricciones. Ejemplo: “X tiene que ser menor que 100. Y tiene que ser mayor que X pero menor que 200”.

En la programación declarativa y de restricción, las expresiones generalmente se calculan solo cuando son necesarias, lo que se denomina evaluación diferida. En la programación imperativa, tengo que asignar un valor a X antes de poder hacer algo con él. En la programación declarativa, X será evaluado cuando lo solicite.