SAT решатели дают мощный способ проверить правильность логической формулы с одним квантификатором.
Например, чтобы проверить правильность , мы можем использовать SAT-решатель, чтобы определить, выполнимо ли . Чтобы проверить правильность , мы можем использовать SAT-решатель, чтобы определить, выполнимо ли . (Здесь - -вектор булевых переменных, а - булева формула.)φ ( x ) ∀ x . φ ( x ) ¬ φ ( x ) x = ( x 1 , … , x n ) n φ
Решатели QBF предназначены для проверки правильности логической формулы с произвольным числом квантификаторов.
Что если у нас есть формула с двумя квантификаторами? Являются ли они эффективными алгоритмами проверки достоверности: лучше, чем обычные алгоритмы для QBF? Чтобы быть более конкретным, у меня есть формула вида (или ), и хотите проверить его правильность. Есть ли хорошие алгоритмы для этого? Редактировать 4/8: я узнал, что этот класс формул иногда называют 2QBF, поэтому я ищу хорошие алгоритмы для 2QBF.∃ х . ∀ у . ψ ( х , у )
Специализируясь далее: в моем конкретном случае у меня есть формула вида , правильность которого я хочу проверить, где - функции, которые производят битный вывод. Существуют ли алгоритмы проверки правильности этой конкретной формулы, более эффективные, чем универсальные алгоритмы для QBF?f , g k
PS Я не спрашиваю о жесткости в худшем случае, в теории сложности. Я спрашиваю о практически полезных алгоритмах (так же, как современные решатели SAT практически полезны для многих задач, даже если SAT является NP-полной).
Ответы:
Если я могу, довольно откровенно, рекламировать себя, мы написали статью об этом прошлом алгоритме на основе абстракций для 2QBF . У меня есть реализация для qdimacs, которую я могу предоставить, если хотите, но из моего опыта можно извлечь большую пользу из специализации алгоритма для конкретной проблемы. Существует также более старая статья «Сравнительное исследование алгоритмов 2QBF» , в которой также представлены довольно легко реализуемые алгоритмы.
источник
Я прочитал две статьи, связанные с этим, одна специально связана с 2QBF. Документы следующие:
Инкрементная детерминация , Маркус Н. Рабе и Санджит Сешиа, Теория и приложения тестирования удовлетворенности (SAT 2016).
Они реализовали свой алгоритм в инструменте CADET . Основная идея заключается в постепенном добавлении новых ограничений в формулу до тех пор, пока ограничения не описывают уникальную функцию Сколема или пока ее отсутствие не будет подтверждено.
Второй - это пошаговое решение QBF , Флориан Лонсинг и Уве Эгли.
Реализовано в инструменте с именем DepQBF . Он не накладывает никаких ограничений на количество чередования кванторов. Он начинается с предположения, что мы имеем тесно связанные формулы qbf. Он основан на пошаговом решении и не выбрасывает пункты, изученные во время последнего решения. Он добавляет предложения и кубы в текущую формулу и останавливается, если предложения или кубы пусты, представляя unsat или sat.
Изменить : просто для того, чтобы посмотреть, насколько хорошо эти подходы работают для 2QBF-тестов. Пожалуйста, посмотрите на результаты QBFEVal-2018 для результатов ежегодного конкурса QBF QBFEVAL . В 2019 году не было трека 2QBF.
Таким образом, эти два подхода на самом деле очень хорошо работают на практике (по крайней мере, в тестах QBFEVAL).
источник
Чтобы показать удовлетворенность , мы можем сыграть в игру с двумя игроками A и B, каждый из которых имеет доступ к решателю SAT. Если мы работаем в области D , то на каждой итерации (включая первую) A выбирает элемент, который удовлетворяет установленному на нем ограничению (начинается с нуля), a ∈ D , в качестве нашего кандидата для выполнения формулы. Затем, B пытается удовлетворить ¬ ф [ а / х ] с некоторым б ∈ B . Если B не может сделать это, это означает , что работа и мы сделали, в противном случае мы возвращаемся к A , и мы добавим его ограничение множество ф∃x∀yϕ D a∈D ¬ϕ[a/x] b∈B a , который гарантирует, что такого рода ошибки больше не будут повторяться. У меня есть ощущение, что можно подумать о форме ϕ и сделать такую процедуру более стратегическим способом, полагаясь на некоторые достаточные подмножества, чтобы исключить любого данного кандидата, или некоторые известные симметрии, чтобы на ранних этапах исключить части этого поиска. Возможно, можно даже добавить свои собственные ограничения к начальному набору ограничений A.ϕ[b/y] ϕ
источник