Jump to content

Алгоритм AC-3

В удовлетворении ограничений алгоритм AC-3 (сокращение от Arc Consistency Algorithm #3) является одним из серии алгоритмов , используемых для решения проблем удовлетворения ограничений (или CSP). Он был разработан Аланом Маквортом в 1977 году. Более ранние алгоритмы AC часто считаются слишком неэффективными, а многие из более поздних алгоритмов трудно реализовать, поэтому AC-3 чаще всего изучается и используется в очень простых решателях ограничений.

Алгоритм

[ редактировать ]

AC-3 работает с ограничениями , переменными и областями переменных (областями действия). Переменная ; может принимать любое из нескольких дискретных значений набор значений для конкретной переменной известен как ее область определения . Ограничение отношение — это , которое ограничивает или ограничивает значения, которые может иметь переменная. Ограничение может включать значения других переменных.

Текущее состояние CSP во время работы алгоритма можно рассматривать как ориентированный граф , где узлами являются переменные задачи, с ребрами или дугами между переменными, связанными симметричными ограничениями, где каждая дуга в рабочем списке представляет собой ограничение, которое необходимо проверить целостность . AC-3 продолжает исследование дуг между парами переменных ( x , y ). Он удаляет из области определения x те значения , которые не соответствуют ограничениям между x и y . Алгоритм хранит коллекцию дуг, которые еще предстоит проверить; когда из домена переменной удалены какие-либо значения, в коллекцию добавляются все дуги ограничений, указывающие на эту сокращенную переменную (кроме дуги текущего ограничения). Поскольку области определения переменных конечны и на каждом шаге удаляется либо одна дуга, либо хотя бы одно значение, этот алгоритм гарантированно завершится .

Для иллюстрации вот пример очень простой задачи с ограничениями: X (переменная) имеет возможные значения {0, 1, 2, 3, 4, 5} — набор этих значений является областью определения X или D( X ). Переменная Y имеет область определения D( Y ) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. Вместе с ограничениями C1 = « X должно быть четным» и C2 = « X + Y должно быть равно 4» мы имеем CSP, который может решить AC-3. Обратите внимание, что фактический граф ограничений, представляющий эту проблему, должен содержать два ребра между X и Y, поскольку C2 ненаправлен, но представление графа, используемое AC-3, является направленным.

AC-3 решает проблему, сначала удаляя нечетные значения из области определения X , как того требует C1 , оставляя D( X ) = { 0, 2, 4 }. Затем он исследует дуги между X и Y , подразумеваемые C2 . Только пары ( X =0, Y =4), ( X =2, Y =2) и ( X =4, Y =0) соответствуют ограничению C2 . Затем AC-3 завершается с D( X ) = {0, 2, 4} и D ( Y ) = {0, 2, 4}.

AC-3 выражается в псевдокоде следующим образом:

 Input:
   A set of variables X
   A set of domains D(x) for each variable x in X. D(x) contains vx0, vx1... vxn, the possible values of x
   A set of unary constraints R1(x) on variable x that must be satisfied
   A set of binary constraints R2(x, y) on variables x and y that must be satisfied
   
 Output:
   Arc consistent domains for each variable.
 
 function ac3(X, D, R1, R2)
     // Initial domains are made consistent with unary constraints.
     for each x in X
         D(x) := { vx in D(x) | vx satisfies R1(x) }   
     // 'worklist' contains all arcs we wish to prove consistent or not.
     worklist := { (x, y) | there exists a relation R2(x, y) or a relation R2(y, x) }
 
     do
         select any arc (x, y) from worklist
         worklist := worklist - (x, y)
         if arc-reduce (x, y) 
             if D(x) is empty
                 return failure
             else
                 worklist := worklist + { (z, x) | z != y and there exists a relation R2(x, z) or a relation R2(z, x) }
     while worklist not empty
 
 function arc-reduce(x, y)
     bool change = false
     for each vx in D(x)
         find a value vy in D(y) such that vx and vy satisfy the constraint R2(x, y)
         if there is no such vy {
             D(x) := D(x) - vx
             change := true
         }
     return change

наихудшую временную сложность O ed ( Алгоритм имеет 3 ) и пространственная сложность O ( e ) , где e — количество дуг, а d — размер наибольшей области.

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: abe725d0f56b51e057e4b35fdf3480b0__1697201700
URL1:https://arc.ask3.ru/arc/aa/ab/b0/abe725d0f56b51e057e4b35fdf3480b0.html
Заголовок, (Title) документа по адресу, URL1:
AC-3 algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)