Изучение положений, основанных на конфликтах

Алгоритм решения SAT

В информатике обучение на основе конфликта ( CDCL ) — это алгоритм решения проблемы выполнимости булевых уравнений (SAT). При наличии булевой формулы задача SAT требует назначения переменных таким образом, чтобы вся формула была оценена как истинная. Внутренние механизмы решателей CDCL SAT были вдохновлены решателями DPLL . Главное различие между CDCL и DPLL заключается в том, что обратный переход CDCL не является хронологическим.

Обучение предложениям, основанное на конфликтах, было предложено Маркесом-Сильвой и Каремом А. Сакаллахом (1996, 1999) [1] [2] и Байардо и Шрагом (1997). [3]

Фон

Проблема выполнимости булевых уравнений

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

Пример такой формулы:

( ( не А ) или (не С ))   и   ( В или С ),

или, используя общепринятую запись: [4]

( ¬ А ¬ С ) ( Б С ) {\displaystyle (\lnot A\or \lnot C)\land (B\or C)}

где A , B , C — логические переменные, , , и — литералы, а и — предложения. ¬ А {\displaystyle \lnot A} ¬ С {\displaystyle \lnot C} Б {\displaystyle Б} С {\displaystyle С} ¬ А ¬ С {\displaystyle \lnot A\or \lnot C} Б С {\displaystyle B\или C}

Удовлетворительное задание для этой формулы, например:

А = Ф а л с е , Б = Ф а л с е , С = Т г ты е {\ displaystyle A = \ mathrm {False}, B = \ mathrm {False}, C = \ mathrm {True} }

поскольку это делает истинным как первое предложение (поскольку истинно), так и второе (поскольку истинно). ¬ А {\displaystyle \lnot A} С {\displaystyle С}

В этом примере используются три переменные ( A , B , C ), и для каждой из них есть два возможных назначения (True и False). Таким образом, у вас есть возможности. В этом небольшом примере можно использовать поиск методом перебора , чтобы перебрать все возможные назначения и проверить, удовлетворяют ли они формуле. Но в реальных приложениях с миллионами переменных и предложений поиск методом перебора непрактичен. Ответственность решателя SAT заключается в эффективном и быстром поиске удовлетворяющего назначения путем применения различных эвристик для сложных формул CNF. 2 3 = 8 {\displaystyle 2^{3}=8}

Правило предложения единицы (распространение единицы)

Если в предложении все литералы или переменные, кроме одного, оценены как False, то свободный литерал должен быть True, чтобы предложение было True. Например, если нижеприведенное неудовлетворенное предложение оценивается с помощью и мы должны иметь , чтобы предложение было true. А = Ф а л с е {\displaystyle A=\mathrm {False} } Б = Ф а л с е {\displaystyle B=\mathrm {False} } С = Т г ты е {\displaystyle C=\mathrm {Истина} } ( А Б С ) {\displaystyle (А\лор Б\лор С)}

Повторное применение правила предложения единицы называется распространением единицы или распространением булевых ограничений (BCP).

Разрешение

Рассмотрим два предложения и . Предложение , полученное путем слияния двух предложений и удаления обоих и , называется резольвентой двух предложений. ( А Б С ) {\displaystyle (А\лор Б\лор С)} ( ¬ С Д ¬ Э ) {\displaystyle (\neg C\lor D\lor \neg E)} ( А Б Д ¬ Э ) {\displaystyle (A\lor B\lor D\lor \neg E)} ¬ С {\displaystyle \отрицательный С} С {\displaystyle С}

Алгоритм

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

  1. Выберите переменную и назначьте True или False. Это называется состоянием решения. Запомните назначение.
  2. Применить распространение булевых ограничений (единичное распространение).
  3. Постройте график импликации .
  4. Если есть какой-либо конфликт
    1. Найдите разрез в графе импликации, который привел к конфликту.
    2. Выведите новое предложение, которое является отрицанием присваиваний, которые привели к конфликту.
    3. Нехронологически вернуться («вернуться») на соответствующий уровень принятия решения, где была назначена первая переменная, вовлеченная в конфликт
  5. В противном случае продолжайте с шага 1, пока не будут назначены все значения переменных.

Пример

Наглядный пример алгоритма CDCL: [4]

Полнота

DPLL — это надежный и полный алгоритм для SAT. Решатели CDCL SAT реализуют DPLL, но могут изучать новые предложения и возвращаться нехронологически. Изучение предложений с анализом конфликта не влияет ни на обоснованность, ни на полноту. Анализ конфликта идентифицирует новые предложения с помощью операции разрешения. Следовательно, каждое изученное предложение может быть выведено из исходных предложений и других изученных предложений с помощью последовательности шагов разрешения. Если cN — это новое изученное предложение, то ϕ выполнимо тогда и только тогда, когда ϕ ∪ {cN} также выполнимо. Более того, измененный шаг возврата также не влияет на обоснованность или полноту, поскольку информация возврата получается из каждого нового изученного предложения. [5]

Приложения

Основное применение алгоритма CDCL — в различных решателях SAT, включая:

  • МиниСАТ
  • Zchaff SAT
  • Z3
  • Глюкоза [6]
  • ManySAT и т.д.

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

Связанные с CDCL алгоритмы — это алгоритм Дэвиса–Патнэма и алгоритм DPLL . Алгоритм DP использует опровержение резолюции и имеет потенциальную проблему доступа к памяти. [ необходима цитата ] В то время как алгоритм DPLL подходит для случайно сгенерированных экземпляров, он плох для экземпляров, сгенерированных в практических приложениях. CDCL — более мощный подход к решению таких проблем, поскольку применение CDCL обеспечивает меньший поиск в пространстве состояний по сравнению с DPLL.

Цитируемые работы

  1. ^ JP Marques-Silva; Karem A. Sakallah (ноябрь 1996 г.). "GRASP-A New Search Algorithm for Satisfiability". Сборник докладов Международной конференции IEEE по автоматизированному проектированию (ICCAD) . стр.  220–227 . CiteSeerX  10.1.1.49.2075 . doi :10.1109/ICCAD.1996.569607. ISBN 978-0-8186-7597-3.
  2. ^ JP Marques-Silva; Karem A. Sakallah (май 1999). "GRASP: алгоритм поиска пропозициональной выполнимости" (PDF) . IEEE Transactions on Computers . 48 (5): 506– 521. doi :10.1109/12.769433. Архивировано из оригинала (PDF) 2016-03-04 . Получено 2014-11-29 .
  3. ^ Роберто Дж. Байардо-младший; Роберт К. Шраг (1997). «Использование методов ретроспективного анализа CSP для решения реальных задач SAT» (PDF) . Труды 14-й Национальной конференции по искусственному интеллекту (AAAI) . стр.  203–208 .
  4. ^ ab На рисунках ниже « » используется для обозначения «или», умножение — для обозначения «и», а постфикс « » — для обозначения «не». + {\displaystyle +} {\displaystyle '}
  5. ^ Маркес-Силва, Жоао; Линс, Инес; Малик, Шарад (февраль 2009 г.). Справочник по выполнимости (PDF) . IOS Press. стр. 138. ISBN 978-1-60750-376-7.
  6. ^ "Домашняя страница Глюкозы".

Ссылки

  • Мартин Дэвис; Хилари Патнэм (1960). «Вычислительная процедура для теории квантификации». J. ACM . 7 (3): 201– 215. doi : 10.1145/321033.321034 . S2CID  31888376.
  • Мартин Дэвис; Джордж Логеманн; Дональд Лавленд (июль 1962 г.). «Машинная программа для доказательства теорем». Сообщения ACM . 5 (7): 394– 397. doi :10.1145/368273.368557. hdl : 2027/mdp.39015095248095 . S2CID  15866917.
  • Мэтью В. Москевич; Конор Ф. Мэдиган; Ин Чжао; Линтао Чжан; Шарад Малик (2001). «Чафф: разработка эффективного решателя SAT» (PDF) . Труды 38-й ежегодной конференции по автоматизации проектирования (DAC) . стр.  530–535 .
  • Lintao Zhang; Conor F. Madigan; Matthew H. Moskewicz; Sharad Malik (2001). "Эффективное обучение, управляемое конфликтами, в решателе булевой выполнимости" (PDF) . Proc. IEEE/ACM Int. Conf. on Computer-aided design (ICCAD) . pp.  279–285 .
  • Презентация – «Решение SAT: от Дэвиса-Патнэма до Зчаффа и далее» Линьтао Чжана. (Несколько фотографий взяты из его презентации)
Взято с "https://en.wikipedia.org/w/index.php?title=Обучение_конфликтным_пунктам&oldid=1261686190"