Описание тега constraint-programming

Сеть ограничений определяется триплетом <x>, где X - это набор переменных,C - это набор ограничений, а D - область для X (т. е. отображение переменных в наборы значений). Проблема удовлетворения ограничений (CSP) - это вопрос о том, есть ли у сети с ограничениями решение или нет. </x>

Программирование с ограничениями - это форма декларативного программирования. Ограничения определяют желаемые свойства решения, а не последовательность шагов, которые необходимо выполнить.

Проблема удовлетворения ограничений (CSP) определяется тройкой <X,C,D>, где X набор переменных, C - набор ограничений, а D домен для X(т.е. отображение переменных в наборы значений). CSP называется согласованным, если у него есть решение.

Программирование с ограничениями естественно сочетается с логическим программированием, поскольку логическое программирование фактически можно рассматривать как особую форму программирования с ограничениями, где предметной областью является набор терминов Хербранда. Когда программирование в ограничениях осуществляется на языке логического программирования, это называется программированием логики ограничений и сокращенно CLP.

Понятие CLP(Х) используется для обозначения ограничения логического программирования над областью  X. Следующие примеры имеют особое значение:

  • CLP(FD): рассуждения о целых числах (см. Clpfd)
  • CLP(B): рассуждения о логических переменных (см. Clpb)
  • CLP(Q): рассуждения о рациональных числах (см. Clpq)
  • CLP(R): рассуждения о действительных числах или приближении (см. Clpq).

Все широко используемые системы Пролога (см. Пролог) поставляются с несколькими решателями ограничений, которые доступны либо как встроенные предикаты, либо предоставляются библиотеками.

Дополнительная информация:

https://en.wikipedia.org/wiki/Constraint_programming