~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 9136C2BF33BE19671155DBF0852BCA5F__1718706420 ✰
Заголовок документа оригинал.:
✰ Constraint satisfaction - Wikipedia ✰
Заголовок документа перевод.:
✰ Удовлетворение ограничений — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Constraint_satisfaction ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/91/5f/9136c2bf33be19671155dbf0852bca5f.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/91/5f/9136c2bf33be19671155dbf0852bca5f__translat.html ✰
Дата и время сохранения документа:
✰ 20.06.2024 02:16:42 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 18 June 2024, at 13:27 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Удовлетворение ограничений — Википедия Jump to content

Удовлетворение ограничений

Из Википедии, бесплатной энциклопедии

В искусственном интеллекте и исследовании операций удовлетворение ограничений — это процесс поиска решения посредством набор ограничений , которые накладывают условия, которым переменные должны удовлетворять . [1] Таким образом, решение — это присвоение значений переменным, которое удовлетворяет всем ограничениям, то есть точка в допустимой области .

Методы, используемые для удовлетворения ограничений, зависят от типа рассматриваемых ограничений. Часто используются ограничения на конечной области до такой степени, что проблемы удовлетворения ограничений обычно отождествляются с проблемами, основанными на ограничениях на конечной области. Такие проблемы обычно решаются с помощью поиска , в частности, с помощью поиска с возвратом или локального поиска . Распространение ограничений — еще одно семейство методов, используемых для решения таких задач; большинство из них вообще неполны, то есть могут решить задачу или доказать ее невыполнимость, но не всегда. Методы распространения ограничений также используются в сочетании с поиском, чтобы упростить решение конкретной проблемы. Другие рассматриваемые виды ограничений касаются действительных или рациональных чисел; решение проблем с этими ограничениями осуществляется с помощью исключения переменных или симплексного алгоритма .

Удовлетворение ограничений как общая проблема возникла в области искусственного интеллекта в 1970-х годах (см., например, ( Laurière 1978 )). Однако когда ограничения выражаются в виде многомерных линейных уравнений , определяющих (не)равенства, эта область возвращается к Джозефу Фурье в 19 веке: Джорджем Данцигом изобретение симплексного алгоритма для линейного программирования (частный случай математической оптимизации) в 1946 год позволил найти возможные решения задач, содержащих сотни переменных.

встраивание ограничений в язык программирования В 1980-х и 1990-х годах было разработано . Первым языком, специально разработанным со встроенной поддержкой программирования в ограничениях, был Пролог . С тех пор библиотеки программирования в ограничениях стали доступны на других языках, таких как C++ или Java (например, Choco для Java). [2] ).

удовлетворения ограничений Проблема

Как первоначально определялось в искусственном интеллекте, ограничения пересчитывают возможные значения, которые набор переменных может принимать в данном мире. Возможный мир — это полное присвоение значений переменным, представляющим то, каким мог бы быть мир (реальный или воображаемый). [3] Неформально конечная область — это конечное множество произвольных элементов. Задача удовлетворения ограничений в такой области содержит набор переменных, значения которых могут быть взяты только из области, и набор ограничений, каждое ограничение задает допустимые значения для группы переменных. Решением этой проблемы является оценка переменных, удовлетворяющая всем ограничениям. Другими словами, решение — это способ присвоения значения каждой переменной таким образом, чтобы эти значения удовлетворяли всем ограничениям.

В некоторых обстоятельствах могут существовать дополнительные требования: кого-то может интересовать не только решение (и самый быстрый или наиболее эффективный с точки зрения вычислений способ его достижения), но и то, как оно было достигнуто; например, может потребоваться «самое простое» решение («простейшее» в логическом, невычислительном смысле, которое должно быть точно определено). Это часто бывает в логических играх, таких как судоку .

На практике ограничения часто выражаются в компактной форме, а не перечисляются все значения переменных, которые удовлетворяют ограничению. Одним из наиболее часто используемых ограничений является (очевидное) ограничение, устанавливающее, что значения всех затронутых переменных должны быть разными.

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

Хотя арифметические уравнения и неравенства обычно не включены в приведенное выше определение проблемы удовлетворения ограничений, они ограничивают значения содержащихся в них переменных и поэтому могут рассматриваться как форма ограничений. Их областью применения является множество чисел (целых, рациональных или действительных), которое бесконечно: следовательно, отношения этих ограничений также могут быть бесконечными; например, имеет бесконечное число пар удовлетворяющих значений. Арифметические уравнения и неравенства часто не учитываются в определении «проблемы удовлетворения ограничений», которая ограничена конечными областями. Однако они часто используются в программировании с ограничениями .

Можно показать, что арифметические неравенства или уравнения, присутствующие в некоторых типах конечных логических головоломок, таких как Футошики или Какуро (также известных как перекрестные суммы), можно рассматривать как неарифметические ограничения (см. Удовлетворение ограничений на основе шаблонов и логические головоломки). [4] ).

Решение [ править ]

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

Исключение переменных и симплексный алгоритм используются для решения линейных и полиномиальных уравнений и неравенств, а также задач, содержащих переменные с бесконечной областью определения. Обычно они решаются как задачи оптимизации , в которых оптимизируемая функция представляет собой количество нарушенных ограничений.

Сложность [ править ]

Решение проблемы удовлетворения ограничений в конечной области является NP-полной задачей относительно размера области. Исследования показали ряд разрешимых подслучаев, некоторые из которых ограничивают разрешенные отношения ограничений, некоторые требуют, чтобы объемы ограничений сформировали дерево, возможно, в переформулированной версии проблемы. Исследования также установили связь проблемы удовлетворения ограничений с проблемами в других областях, таких как теория конечных моделей .

Программирование ограничений [ править ]

Программирование с ограничениями — это использование ограничений в качестве языка программирования для кодирования и решения проблем. Часто это делается путем внедрения ограничений в язык программирования , который называется основным языком. Программирование с ограничениями возникло в результате формализации равенств терминов в Прологе II , что привело к созданию общей структуры для внедрения ограничений в язык логического программирования . Наиболее распространенными основными языками являются Prolog , C++ и Java , но используются и другие языки.

Программирование логики ограничений [ править ]

Программа логики ограничений — это логическая программа , которая содержит ограничения в телах предложений. В качестве примера можно привести оговорку A(X):-X>0,B(X) это предложение, содержащее ограничение X>0в организме. Ограничения также могут присутствовать в цели. Ограничения в цели и в предложениях, используемых для доказательства цели, накапливаются в наборе, называемом хранилищем ограничений . Этот набор содержит ограничения, которые интерпретатор считает выполнимыми для продолжения оценки. В результате, если этот набор обнаруживается неудовлетворительным, интерпретатор выполняет возврат. Уравнения термов, используемые в логическом программировании, считаются особой формой ограничений, которую можно упростить с помощью унификации . В результате хранилище ограничений можно рассматривать как расширение концепции подстановки , которая используется в обычном логическом программировании. Наиболее распространенными видами ограничений, используемых в программировании логики ограничений, являются ограничения на целые/рациональные/действительные числа и ограничения на конечные области.

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

Наборы инструментов для удовлетворения ограничений [ править ]

Наборы инструментов для удовлетворения ограничений — это программные библиотеки для императивных языков программирования , которые используются для кодирования и решения проблемы удовлетворения ограничений.

  • Решатель ограничений Cassowary проект с открытым исходным кодом для удовлетворения ограничений (доступен из C, Java, Python и других языков).
  • Comet — коммерческий язык программирования и набор инструментов.
  • Gecode — портативный набор инструментов с открытым исходным кодом, написанный на C++, разработанный как качественная и высокоэффективная реализация полной теоретической базы.
  • Gelisp , портативная оболочка Gecode для Lisp с открытым исходным кодом . [5] http://gelisp.sourceforge.net/
  • IBM ILOG CP Optimizer : библиотеки C++, Python , Java, .NET (собственные, бесплатные для академического использования ). [6] Преемник ILOG Solver/Scheduler, который по состоянию на 2006 год считался лидером рынка программного обеспечения для коммерческого программирования в ограничениях. [7]
  • JaCoP — решатель ограничений Java с открытым исходным кодом.
  • Koalog — коммерческий решатель ограничений на основе Java.
  • logilab-constraint — решатель ограничений с открытым исходным кодом, написанный на чистом Python, с алгоритмами распространения ограничений.
  • Minion — решатель ограничений с открытым исходным кодом, написанный на C++, с небольшим языком для определения моделей/задач.
  • ZDC, программа с открытым исходным кодом, разработанная в рамках проекта «Компьютерное удовлетворение ограничений» для моделирования и решения проблем удовлетворения ограничений.

языки программирования с Другие ограничениями

Инструментарий ограничений — это способ встраивания ограничений в императивный язык программирования . Однако они используются только как внешние библиотеки для кодирования и решения задач. Подход, при котором ограничения интегрируются в императивный язык программирования, использован в языке программирования «Калейдоскоп» .

Ограничения также были встроены в функциональные языки программирования .

См. также [ править ]

Ссылки [ править ]

  1. ^ Цанг, Эдвард (13 мая 2014 г.). Основы удовлетворения ограничениями: классический текст . Совет директоров – Книги по запросу. ISBN  978-3-7357-2366-6 .
  2. ^ Choco: Java-библиотека с открытым исходным кодом для программирования в ограничениях. https://choco-solver.org По состоянию на 12 декабря 2021 г.
  3. ^ «4.1.1 Переменные и миры ‣ 4.1 Возможные миры, переменные и ограничения ‣ Глава 4 Рассуждения с ограничениями ‣ Искусственный интеллект: основы вычислительных агентов, 2-е издание» .
  4. ^ (на английском языке) Бертье, Дени (20 ноября 2012 г.). «Удовлетворение ограничений на основе шаблонов и логические головоломки» . Издательство Лулу . ISBN  978-1-291-20339-4 . Архивировано из оригинала 12 января 2013 года . Проверено 24 октября 2012 г.
  5. ^ Маурисио Торо, Карлос Агон, Камило Руэда, Жерар Ассаяг. « GELISP: РАМКА ДЛЯ ПРЕДСТАВЛЕНИЯ МУЗЫКАЛЬНЫХ ОГРАНИЧЕНИЙ ПРОБЛЕМ УДОВЛЕТВОРЕНИЯ И СТРАТЕГИЙ ПОИСКА ». Журнал теоретических и прикладных информационных технологий 86 (2). 2016. 327-331.
  6. ^ Лабори П., Роджери Дж., Шоу П., Вилим П. (2018). «Оптимизатор IBM ILOG CP для планирования». Ограничения . 23 (2): 210–250. дои : 10.1007/s10601-018-9281-x . S2CID   4360357 .
  7. ^ Росси, Франческа ; Питер Ван Бик; Тоби Уолш (2006). Справочник по программированию в ограничениях . Эльзевир. п. 157. ИСБН  978-0-444-52726-4 .

Внешние ссылки [ править ]

Видео [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 9136C2BF33BE19671155DBF0852BCA5F__1718706420
URL1:https://en.wikipedia.org/wiki/Constraint_satisfaction
Заголовок, (Title) документа по адресу, URL1:
Constraint satisfaction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)