Programação por restrições é um paradigma de programação que se refere ao uso de restrições na construção de relações entre variáveis. Consiste em especificar, para uma solução, que critérios (restrições) esta tem de cumprir. Surgiu inicialmente contido no contexto da programação lógica, apesar de actualmente existirem implementações baseadas em programação funcional (como em Oz) e programação imperativa (como em Kaleidoscope).
De forma geral, as restrições são implementadas como uma extensão de uma linguagem já existente. Estas, operam sobre domínios específicos, sendo os mais usuais os seguintes:
- booleanos
- números inteiros e racionais
- lineares
- finitos
- mistos (vários dos anteriores)
Apesar dos vários domínios disponíveis, o mais usado actualmente é o domínio finito, devido principalmente à sua versatilidade. Na prática, o interpretador cria inicialmente o domínio para cada variável do problema e vai restringindo cada domínio à medida que avalia cada restrição. No fim deste processo, obter-se-á uma ou várias soluções que satisfaçam as restrições ou, caso estas não sejam satisfatíveis, nenhuma solução.
Ligações externas