Автоматное программирование
- 1 year ago
- 0
- 0
Программирование в ограничениях (или программирование ограничениями ) — парадигма программирования , в которой отношения между переменными указаны в форме ограничений. Ограничения отличаются от общих примитивов языков императивного программирования тем, что они определяют не последовательность шагов для исполнения, а свойства искомого решения, что делает такое программирование формой декларативного программирования . Возможны разные виды ограничений: те, которые используются в задачах удовлетворения ограничений (например, «А или В истинно»), те, которые решаются симплекс-алгоритмом (например, « ») и другие. Ограничения, как правило, встроены в язык программирования или осуществляются через отдельные программные библиотеки .
Программирование в ограничениях тесно связано с теорией удовлетворения ограничений , которая предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта . Среди задач, решаемых средствами программирования в ограничениях — верификация электронных схем, , , а также множество комбинаторных задач.
Исторически первая форма — (англ.) (, основанное на логическом программировании , появившееся в 1987 году как определённый класс ограничений для Пролога-II, первые реализации — Пролог III, CLP (R) и CHIP. Из современных интерпретаторов логическое программирования в ограничениях поддерживается, в частности, в GNU Prolog .
Ограничения могут быть также смешаны с функциональным программированием , переписыванием термов и императивным языком . Языки программирования с встроенной поддержкой ограничений — Oz (функциональное программирование) и (императивное программирование). Главным образом, ограничения осуществляются в императивных языках через инструментальные средства для решения задач с ограничениями, которые являются отдельными библиотеками для существующих императивных языков.