Описание тега constraint-programming
Программирование с ограничениями - это форма декларативного программирования. Ограничения определяют желаемые свойства решения, а не последовательность шагов, которые необходимо выполнить.
Проблема удовлетворения ограничений (CSP) определяется тройкой <X,C,D>
, где X
набор переменных, C
- набор ограничений, а D
домен для X
(т.е. отображение переменных в наборы значений). CSP называется согласованным, если у него есть решение.
Программирование с ограничениями естественно сочетается с логическим программированием, поскольку логическое программирование фактически можно рассматривать как особую форму программирования с ограничениями, где предметной областью является набор терминов Хербранда. Когда программирование в ограничениях осуществляется на языке логического программирования, это называется программированием логики ограничений и сокращенно CLP.
Понятие CLP(Х) используется для обозначения ограничения логического программирования над областью X. Следующие примеры имеют особое значение:
- CLP(FD): рассуждения о целых числах (см. Clpfd)
- CLP(B): рассуждения о логических переменных (см. Clpb)
- CLP(Q): рассуждения о рациональных числах (см. Clpq)
- CLP(R): рассуждения о действительных числах или приближении (см. Clpq).
Все широко используемые системы Пролога (см. Пролог) поставляются с несколькими решателями ограничений, которые доступны либо как встроенные предикаты, либо предоставляются библиотеками.
Дополнительная информация: