Программирование в ограничениях (Hjkijgbbnjkfguny f kijguncyunx])
Программирование в ограничениях (или программирование ограничениями) — парадигма программирования, в которой отношения между переменными указаны в форме ограничений. Ограничения отличаются от общих примитивов языков императивного программирования тем, что они определяют не последовательность шагов для исполнения, а свойства искомого решения, что делает такое программирование формой декларативного программирования. Возможны разные виды ограничений: те, которые используются в задачах удовлетворения ограничений (например, «А или В истинно»), те, которые решаются симплекс-алгоритмом (например, «») и другие. Ограничения, как правило, встроены в язык программирования или осуществляются через отдельные программные библиотеки.
Программирование в ограничениях тесно связано с теорией удовлетворения ограничений, которая предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта. Среди задач, решаемых средствами программирования в ограничениях — верификация электронных схем, календарное планирование, составление расписаний, а также множество комбинаторных задач.
Исторически первая форма — логическое программирование в ограничениях[англ.], основанное на логическом программировании, появившееся в 1987 году как определённый класс ограничений для Пролога-II, первые реализации — Пролог III, CLP (R) и CHIP. Из современных интерпретаторов логическое программирования в ограничениях поддерживается, в частности, в GNU Prolog.
Ограничения могут быть также смешаны с функциональным программированием, переписыванием термов и императивным языком. Языки программирования с встроенной поддержкой ограничений — Oz (функциональное программирование) и Kaleidoscope (императивное программирование). Главным образом, ограничения осуществляются в императивных языках через инструментальные средства для решения задач с ограничениями, которые являются отдельными библиотеками для существующих императивных языков.
Литература
[править | править код]- Apt K. R. Principles of Constraint Programming. New York: Cambridge University Press, 2003. 407 p.
- Rossi F., van Beek P., Walsh T. (eds.) Handbook Of Constraint Programming. Elsevier, 2006. 978 p.
- Ушаков Д. М., Телерман В. В. Системы программирования в ограничениях (обзор) // Системная информатика: Сб. науч. тр. Новосибирск: Наука, 2000. Вып.7: Проблемы теории и методологии создания параллельных и распределенных систем. С. 275—310.
- Щербина О. А. Удовлетворение ограничений и программирование в ограничениях, препринт, 2012.
- A Gentle Guide to Constraint Logic Programming via ECLiPSe by Antoni Niederliński, Third edition, 2014, 570 pages, ISBN 978-83-62652-08-2
Ссылки
[править | править код]Для улучшения этой статьи желательно: |