Обучение предложениям, основанное на конфликтах, было предложено Маркесом-Сильвой и Каремом А. Сакаллахом (1996, 1999) [1] [2] и Байардо и Шрагом (1997). [3]
Фон
Проблема выполнимости булевых уравнений
Проблема выполнимости состоит в нахождении удовлетворяющего задания для заданной формулы в конъюнктивной нормальной форме (КНФ).
где A , B , C — логические переменные, , , и — литералы, а и — предложения.
Удовлетворительное задание для этой формулы, например:
поскольку это делает истинным как первое предложение (поскольку истинно), так и второе (поскольку истинно).
В этом примере используются три переменные ( A , B , C ), и для каждой из них есть два возможных назначения (True и False). Таким образом, у вас есть возможности. В этом небольшом примере можно использовать поиск методом перебора , чтобы перебрать все возможные назначения и проверить, удовлетворяют ли они формуле. Но в реальных приложениях с миллионами переменных и предложений поиск методом перебора непрактичен. Ответственность решателя SAT заключается в эффективном и быстром поиске удовлетворяющего назначения путем применения различных эвристик для сложных формул CNF.
Правило предложения единицы (распространение единицы)
Если в предложении все литералы или переменные, кроме одного, оценены как False, то свободный литерал должен быть True, чтобы предложение было True. Например, если нижеприведенное неудовлетворенное предложение оценивается с помощью и мы должны иметь
, чтобы предложение было true.
Повторное применение правила предложения единицы называется распространением единицы или распространением булевых ограничений (BCP).
Разрешение
Рассмотрим два предложения и . Предложение , полученное путем слияния двух предложений и удаления обоих и , называется резольвентой двух предложений.
Найдите разрез в графе импликации, который привел к конфликту.
Выведите новое предложение, которое является отрицанием присваиваний, которые привели к конфликту.
Нехронологически вернуться («вернуться») на соответствующий уровень принятия решения, где была назначена первая переменная, вовлеченная в конфликт
В противном случае продолжайте с шага 1, пока не будут назначены все значения переменных.
Пример
Наглядный пример алгоритма CDCL: [4]
Сначала выбираем переменную ветвления, а именно x1 . Желтый круг означает произвольное решение.
Теперь применим единичное распространение, которое дает, что x4 должно быть 1 (т.е. True). Серый кружок означает принудительное назначение переменной во время единичного распространения. Полученный график называется импликационным графиком .
Произвольно выберите другую переменную ветвления, x3 .
Примените единичное распространение и найдите новый граф импликации.
Здесь переменные x8 и x12 принудительно устанавливаются равными 0 и 1 соответственно.
Выберите другую переменную ветвления, x2 .
Найдите граф импликации.
Выберите другую переменную ветвления, x7 .
Найдите граф импликации.
Найден конфликт!
Найдите разрез, который привел к этому конфликту. Из разреза найдите конфликтующее условие.
Возьмите отрицание этого условия и сделайте его предложением.
Добавьте к проблеме оговорку о конфликте положений.
Нехронологический обратный переход на соответствующий уровень принятия решения, который в данном случае является вторым по величине уровнем принятия решения литералов в изученном предложении.
Вернитесь назад и установите соответствующие значения переменных.
Полнота
DPLL — это надежный и полный алгоритм для SAT. Решатели CDCL SAT реализуют DPLL, но могут изучать новые предложения и возвращаться нехронологически. Изучение предложений с анализом конфликта не влияет ни на обоснованность, ни на полноту. Анализ конфликта идентифицирует новые предложения с помощью операции разрешения. Следовательно, каждое изученное предложение может быть выведено из исходных предложений и других изученных предложений с помощью последовательности шагов разрешения. Если cN — это новое изученное предложение, то ϕ выполнимо тогда и только тогда, когда ϕ ∪ {cN} также выполнимо. Более того, измененный шаг возврата также не влияет на обоснованность или полноту, поскольку информация возврата получается из каждого нового изученного предложения. [5]
Приложения
Основное применение алгоритма CDCL — в различных решателях SAT, включая:
МиниСАТ
Zchaff SAT
Z3
Глюкоза [6]
ManySAT и т.д.
Алгоритм CDCL сделал решатели SAT настолько мощными, что они эффективно используются в нескольких [ требуется ссылка ] областях реального мира, таких как планирование ИИ, биоинформатика, генерация тестовых шаблонов программного обеспечения, зависимости пакетов программного обеспечения, проверка моделей оборудования и программного обеспечения и криптография.
Связанные алгоритмы
Связанные с CDCL алгоритмы — это алгоритм Дэвиса–Патнэма и алгоритм DPLL . Алгоритм DP использует опровержение резолюции и имеет потенциальную проблему доступа к памяти. [ необходима цитата ] В то время как алгоритм DPLL подходит для случайно сгенерированных экземпляров, он плох для экземпляров, сгенерированных в практических приложениях. CDCL — более мощный подход к решению таких проблем, поскольку применение CDCL обеспечивает меньший поиск в пространстве состояний по сравнению с DPLL.
DPLL: без обучения и хронологического возврата.
CDCL: изучение предложений, основанное на конфликтах, и нехронологический возврат.
Цитируемые работы
^ 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. ISBN978-0-8186-7597-3.
^ 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 .
^ Роберто Дж. Байардо-младший; Роберт К. Шраг (1997). «Использование методов ретроспективного анализа CSP для решения реальных задач SAT» (PDF) . Труды 14-й Национальной конференции по искусственному интеллекту (AAAI) . стр. 203–208 .
^ ab На рисунках ниже « » используется для обозначения «или», умножение — для обозначения «и», а постфикс « » — для обозначения «не».
^ Маркес-Силва, Жоао; Линс, Инес; Малик, Шарад (февраль 2009 г.). Справочник по выполнимости (PDF) . IOS Press. стр. 138. ISBN978-1-60750-376-7.
^ "Домашняя страница Глюкозы".
Ссылки
Мартин Дэвис; Хилари Патнэм (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: от Дэвиса-Патнэма до Зчаффа и далее» Линьтао Чжана. (Несколько фотографий взяты из его презентации)