В логике и информатике проблема выполнимости булевых выражений (иногда называемая проблемой выполнимости высказываний и сокращенно ВЫПОЛНИМОСТЬ , SAT или B-SAT ) — это проблема определения того, существует ли интерпретация , которая удовлетворяет заданной булевой формуле . Другими словами, она спрашивает, можно ли последовательно заменить переменные заданной булевой формулы значениями ИСТИНА или ЛОЖЬ таким образом, чтобы формула дала значение ИСТИНА. Если это так, формула называется выполнимой . С другой стороны, если такого назначения не существует, функция, выраженная формулой, является ЛОЖЬЮ для всех возможных назначений переменных, и формула невыполнима . Например, формула « a AND NOT b » выполнима, потому что можно найти значения a = ИСТИНА и b = ЛОЖЬ, которые делают ( a AND NOT b ) = ИСТИНА. Напротив, « a AND NOT a » невыполнима.
SAT — первая задача, для которой было доказано, что она NP-полная — это теорема Кука–Левина . Это означает, что все задачи в классе сложности NP , который включает в себя широкий спектр естественных задач принятия решений и оптимизации, в лучшем случае так же сложны для решения, как и SAT. Не существует известного алгоритма, который эффективно решает каждую задачу SAT, и обычно считается, что такого алгоритма не существует, но это убеждение не было доказано математически, и решение вопроса о том, имеет ли SAT алгоритм полиномиального времени , эквивалентно задаче P против NP , которая является известной открытой проблемой в теории вычислений.
Тем не менее, по состоянию на 2007 год эвристические SAT-алгоритмы способны решать примеры задач, включающие десятки тысяч переменных и формулы, состоящие из миллионов символов, [1] чего достаточно для многих практических задач SAT, например, из области искусственного интеллекта , проектирования схем [2] и автоматического доказательства теорем .
Формула пропозициональной логики , также называемая булевым выражением , строится из переменных , операторов AND ( конъюнкция , также обозначается как ∧), OR ( дизъюнкция , ∨), NOT ( отрицание , ¬) и скобок. Формула считается выполнимой, если ее можно сделать ИСТИННОЙ, присвоив ее переменным соответствующие логические значения (т. е. ИСТИНА, ЛОЖЬ). Задача выполнимости булевой системы (SAT) заключается в проверке выполнимости формулы. Эта задача принятия решений имеет центральное значение во многих областях компьютерных наук , включая теоретическую информатику , теорию сложности , [3] [4] алгоритмику , криптографию [5] [6] и искусственный интеллект . [7] [ необходимы дополнительные ссылки ]
Литерал — это либо переменная (в этом случае он называется положительным литералом ), либо отрицание переменной (называемое отрицательным литералом ). Предложение — это дизъюнкция литералов (или один литерал). Предложение называется предложением Хорна , если оно содержит не более одного положительного литерала. Формула находится в конъюнктивной нормальной форме (КНФ), если она является конъюнкцией предложений (или одним предложением).
Например, x 1 — положительный литерал, ¬ x 2 — отрицательный литерал, а x 1 ∨ ¬ x 2 — предложение. Формула ( x 1 ∨ ¬ x 2 ) ∧ (¬ x 1 ∨ x 2 ∨ x 3 ) ∧ ¬ x 1 находится в конъюнктивной нормальной форме; ее первое и третье предложения являются предложениями Хорна, но второе предложение — нет. Формула выполнима, если выбрать x 1 = ЛОЖЬ, x 2 = ЛОЖЬ и x 3 произвольно, так как (ЛОЖЬ ∨ ¬ЛОЖЬ) ∧ (¬ЛОЖЬ ∨ ЛОЖЬ ∨ x 3 ) ∧ ¬ЛОЖЬ оценивается как (ЛОЖЬ ∨ ИСТИНА) ∧ (ИСТИНА ∨ ЛОЖЬ ∨ x 3 ) ∧ ИСТИНА, и в свою очередь как ИСТИНА ∧ ИСТИНА ∧ ИСТИНА (т. е. ИСТИНА). Напротив, формула CNF a ∧ ¬ a , состоящая из двух предложений одного литерала, невыполнима, так как для a = ИСТИНА или a = ЛОЖЬ она оценивается как ИСТИНА ∧ ¬ИСТИНА (т. е. ЛОЖЬ) или ЛОЖЬ ∧ ¬ЛОЖЬ (т. е. снова ЛОЖЬ) соответственно.
Для некоторых версий задачи SAT полезно определить понятие обобщенной формулы конъюнктивной нормальной формы , а именно как конъюнкцию произвольного числа обобщенных предложений , причем последнее имеет вид R ( l 1 ,..., l n ) для некоторой булевой функции R и (обычных) литералов l i . Различные наборы разрешенных булевых функций приводят к различным версиям задачи. Например, R (¬ x , a , b ) является обобщенным предложением, а R (¬ x , a , b ) ∧ R ( b , y , c ) ∧ R ( c , d ,¬ z ) является обобщенной конъюнктивной нормальной формой. Эта формула используется ниже, причем R является тернарным оператором, который имеет значение ИСТИНА только тогда, когда ровно один из его аргументов имеет значение ИСТИНА.
Используя законы булевой алгебры , каждая пропозициональная логическая формула может быть преобразована в эквивалентную конъюнктивную нормальную форму, которая, однако, может быть экспоненциально длиннее. Например, преобразование формулы ( x 1 ∧ y 1 ) ∨ ( x 2 ∧ y 2 ) ∨ ... ∨ ( x n ∧ y n ) в конъюнктивную нормальную форму дает
в то время как первое представляет собой дизъюнкцию n конъюнкций из 2 переменных, последнее состоит из 2 n предложений из n переменных.
Однако, используя преобразование Цейтина , мы можем найти равновыполнимую конъюнктивную нормальную форму формулы с длиной, линейной по размеру исходной пропозициональной логической формулы.
SAT была первой известной задачей, которая была NP-полной , что было доказано Стивеном Куком в Университете Торонто в 1971 году [8] и независимо Леонидом Левиным в Российской академии наук в 1973 году. [9] До этого времени понятия NP-полной задачи даже не существовало. Доказательство показывает, как каждая задача принятия решений в классе сложности NP может быть сведена к задаче SAT для формул CNF [примечание 1] , иногда называемых CNFSAT . Полезным свойством редукции Кука является то, что она сохраняет количество приемлемых ответов. Например, решение о том, имеет ли данный граф 3-раскраску , является еще одной проблемой в NP; если граф имеет 17 допустимых 3-раскрасок, то формула SAT, полученная редукцией Кука–Левина, будет иметь 17 удовлетворяющих назначений.
NP-полнота относится только к времени выполнения худших случаев. Многие случаи, которые встречаются в практических приложениях, могут быть решены гораздо быстрее. См. §Алгоритмы для решения SAT ниже.
Как и проблема выполнимости для произвольных формул, определение выполнимости формулы в конъюнктивной нормальной форме, где каждое предложение ограничено максимум тремя литералами, также является NP-полной задачей; эта задача называется 3-SAT , 3CNFSAT или 3-выполнимостью . Чтобы свести неограниченную задачу SAT к 3-SAT, преобразуем каждое предложение l 1 ∨ ⋯ ∨ l n в конъюнкцию n - 2 предложений
где x 2 , ⋯ , x n −2 — новые переменные , не встречающиеся в других местах. Хотя эти две формулы логически не эквивалентны , они равновыполнимы . Формула, полученная в результате преобразования всех предложений, не более чем в 3 раза длиннее исходной; то есть рост длины полиномиален. [10]
3-SAT — одна из 21 NP-полных задач Карпа , и она используется в качестве отправной точки для доказательства того, что другие задачи также являются NP-трудными . [примечание 2] Это делается путем полиномиального сокращения 3-SAT до другой задачи. Примером задачи, где использовался этот метод, является задача о клике : если задана формула CNF, состоящая из c предложений, соответствующий граф состоит из вершины для каждого литерала и ребра между каждыми двумя непротиворечивыми [примечание 3] литералами из разных предложений; см. рисунок. Граф имеет c -клику тогда и только тогда, когда формула выполнима. [11]
Существует простой рандомизированный алгоритм, предложенный Шёнингом (1999), который работает за время (4/3) n , где n — число переменных в предложении 3-SAT, и с высокой вероятностью успешно решает 3-SAT. [12]
Гипотеза экспоненциального времени утверждает, что ни один алгоритм не может решить 3-SAT (или даже k -SAT для любого k > 2 ) за время exp( o ( n )) (то есть, принципиально быстрее, чем экспоненциальный по n ).
Selman, Mitchell и Levesque (1996) приводят эмпирические данные о сложности случайно сгенерированных формул 3-SAT в зависимости от их параметров размера. Сложность измеряется в количестве рекурсивных вызовов, выполненных алгоритмом DPLL . Они определили область фазового перехода от почти наверняка выполнимых к почти наверняка невыполнимым формулам при соотношении предложений к переменным около 4,26. [13]
3-выполнимость может быть обобщена до k-выполнимости ( k-SAT , также k-CNF-SAT ), когда формулы в CNF рассматриваются с каждым предложением, содержащим до k литералов. [ требуется ссылка ] Однако, поскольку для любого k ≥ 3 эта задача не может быть ни проще, чем 3-SAT, ни сложнее, чем SAT, а последние две являются NP-полными, поэтому должна быть k-SAT.
Некоторые авторы ограничивают k-SAT формулами CNF с ровно k литералами . [ требуется ссылка ] Это также не приводит к другому классу сложности, так как каждое предложение l 1 ∨ ⋯ ∨ l j с j < k литералами может быть дополнено фиксированными фиктивными переменными до l 1 ∨ ⋯ ∨ l j ∨ d j +1 ∨ ⋯ ∨ d k . После заполнения всех предложений необходимо добавить 2 k –1 дополнительных предложений [примечание 4] , чтобы гарантировать, что только d 1 = ⋯ = d k = FALSE может привести к удовлетворяющему назначению. Поскольку k не зависит от длины формулы, дополнительные предложения приводят к постоянному увеличению длины. По той же причине не имеет значения, разрешены ли дублирующиеся литералы в предложениях, как в ¬ x ∨ ¬ y ∨ ¬ y .
Конъюнктивная нормальная форма (в частности, с 3 литералами на предложение) часто считается каноническим представлением для формул SAT. Как показано выше, общая проблема SAT сводится к 3-SAT, проблеме определения выполнимости формул в этой форме.
SAT тривиален, если формулы ограничены формулами в дизъюнктивной нормальной форме , то есть они являются дизъюнкцией конъюнкций литералов. Такая формула действительно выполнима, если и только если хотя бы одна из ее конъюнкций выполнима, а конъюнкция выполнима, если и только если она не содержит как x, так и NOT x для некоторой переменной x . Это можно проверить за линейное время. Более того, если они ограничены тем, что находятся в полной дизъюнктивной нормальной форме , в которой каждая переменная появляется ровно один раз в каждой конъюнкции, их можно проверить за постоянное время (каждая конъюнкция представляет одно удовлетворяющее назначение). Но может потребоваться экспоненциальное время и пространство, чтобы преобразовать общую задачу SAT в дизъюнктивную нормальную форму; чтобы получить пример, замените «∧» и «∨» в приведенном выше примере экспоненциального раздутия на конъюнктивные нормальные формы.
Вариантом проблемы 3-выполнимости является 3-SAT one-in-three (также известная как 1-in-3-SAT и exact-1 3-SAT ). При заданной конъюнктивной нормальной форме с тремя литералами на предложение проблема состоит в том, чтобы определить, существует ли истинностное назначение переменным, так что каждое предложение имеет ровно один ИСТИННЫЙ литерал (и, таким образом, ровно два ЛОЖНЫХ литерала). Напротив, обычная 3-SAT требует, чтобы каждое предложение имело по крайней мере один ИСТИННЫЙ литерал. Формально проблема 3-SAT one-in-three дается как обобщенная конъюнктивная нормальная форма со всеми обобщенными предложениями, использующими тернарный оператор R , который является ИСТИННЫМ, только если ровно один из его аргументов является ИСТИННЫМ. Когда все литералы формулы 3-SAT one-in-three положительны, проблема выполнимости называется 3-SAT one-in-three positive .
One-in-three 3-SAT, вместе с его положительным случаем, указана как NP-полная задача "LO4" в стандартном справочнике Computers and Intractability: A Guide to the Theory of NP-Completeness Майкла Р. Гэри и Дэвида С. Джонсона . Было доказано, что One-in-three 3-SAT является NP-полной задачей Томасом Джеромом Шефером как частный случай теоремы Шефера о дихотомии , которая утверждает, что любая задача, обобщающая булеву выполнимость определенным образом, либо принадлежит классу P, либо является NP-полной. [14]
Шефер дает конструкцию, позволяющую легко за полиномиальное время сократить 3-SAT до 3-SAT один-из-трех. Пусть "( x или y или z )" будет предложением в формуле 3CNF. Добавьте шесть новых булевых переменных a , b , c , d , e и f , которые будут использоваться для моделирования этого предложения и никакого другого. Тогда формула R ( x , a , d ) ∧ R ( y , b , d ) ∧ R ( a , b , e ) ∧ R ( c , d , f ) ∧ R ( z , c ,FALSE) выполнима некоторой настройкой новых переменных тогда и только тогда, когда хотя бы одно из x , y или z является ИСТИНА, см. рисунок (слева). Таким образом, любой экземпляр 3-SAT с m предложениями и n переменными может быть преобразован в равновыполнимый экземпляр 3-SAT один из трех с 5 m предложениями и n + 6 m переменными. [15] Другое сокращение включает только четыре новых переменных и три предложения: R (¬ x , a , b ) ∧ R ( b , y , c ) ∧ R( c , d ,¬ z ), см. рисунок (справа).
Другой вариант — проблема не-все-равной 3-выполнимости (также называемая NAE3SAT ). При наличии конъюнктивной нормальной формы с тремя литералами на предложение, проблема состоит в том, чтобы определить, существует ли назначение переменным, такое, что ни в одном предложении все три литерала не имеют одинакового значения истинности. Эта задача также является NP-полной, даже если не допускаются символы отрицания, по теореме Шефера о дихотомии. [14]
Формула 3-SAT является линейной SAT ( LSAT ), если каждое предложение (рассматриваемое как набор литералов) пересекает не более одного другого предложения, и, более того, если два предложения пересекаются, то у них есть ровно один общий литерал. Формула LSAT может быть изображена как набор непересекающихся полузамкнутых интервалов на линии. Решение вопроса о том, является ли формула LSAT выполнимой, является NP-полным. [16]
SAT проще, если количество литералов в предложении ограничено максимум 2, в этом случае задача называется 2-SAT . Эта задача может быть решена за полиномиальное время и фактически является полной для класса сложности NL . Если дополнительно все операции OR в литералах заменить на операции XOR , то результат называется исключительной-ИЛИ 2-выполнимостью , что является проблемой полной для класса сложности SL = L.
Проблема определения выполнимости заданной конъюнкции предложений Хорна называется выполнимостью Хорна , или HORN-SAT . Она может быть решена за полиномиальное время с помощью одного шага алгоритма единичного распространения , который создает единственную минимальную модель набора предложений Хорна (по отношению к набору литералов, назначенных TRUE). Выполнимость Хорна является P-полной . Ее можно рассматривать как версию P проблемы булевой выполнимости. Кроме того, определение истинности квантифицированных формул Хорна может быть выполнено за полиномиальное время. [17]
Хорновские предложения интересны тем, что они способны выражать импликацию одной переменной из набора других переменных. Действительно, одно такое предложение ¬ x 1 ∨ ... ∨ ¬ x n ∨ y можно переписать как x 1 ∧ ... ∧ x n → y ; то есть, если x 1 ,..., x n все являются ИСТИННЫМИ, то y также должен быть ИСТИННЫМ.
Обобщением класса формул Хорна является класс переименовываемых формул Хорна, представляющих собой набор формул, которые можно представить в форме Хорна, заменив некоторые переменные их соответствующим отрицанием. Например, ( x 1 ∨ ¬ x 2 ) ∧ (¬ x 1 ∨ x 2 ∨ x 3 ) ∧ ¬ x 1 не является формулой Хорна, но может быть переименована в формулу Хорна ( x 1 ∨ ¬ x 2 ) ∧ (¬ x 1 ∨ x 2 ∨ ¬ y 3 ) ∧ ¬ x 1 путем введения y 3 как отрицания x 3 . Напротив, никакое переименование ( x 1 ∨ ¬ x 2 ∨ ¬ x 3 ) ∧ (¬ x 1 ∨ x 2 ∨ x 3 ) ∧ ¬ x 1 не приводит к формуле Горна. Проверка существования такой замены может быть выполнена за линейное время; следовательно, выполнимость таких формул находится в P, поскольку ее можно решить, сначала выполнив эту замену, а затем проверив выполнимость полученной формулы Горна.
Другим особым случаем является класс задач, где каждое предложение содержит операторы XOR (т. е. исключающее ИЛИ ), а не (простое) ИЛИ. [примечание 5] Это в P , поскольку формулу XOR-SAT можно также рассматривать как систему линейных уравнений mod 2 и можно решить за кубическое время методом исключения Гаусса ; [18] см. пример во вставке. Эта переработка основана на родстве между булевыми алгебрами и булевыми кольцами , а также на том факте, что арифметика по модулю два образует конечное поле . Поскольку XOR b XOR c оценивается как ИСТИНА, если и только если ровно 1 или 3 члена { a , b , c } являются ИСТИННЫМИ, каждое решение задачи 1-in-3-SAT для данной формулы CNF также является решением задачи XOR-3-SAT, и, в свою очередь, каждое решение XOR-3-SAT является решением 3-SAT; см. рисунок. Вследствие этого для каждой формулы CNF можно решить задачу XOR-3-SAT, определяемую этой формулой, и на основании результата сделать вывод о том, что задача 3-SAT разрешима или что задача 1-in-3-SAT неразрешима.
При условии, что классы сложности P и NP не равны , ни 2-, ни Хорн-, ни XOR-выполнимость не являются NP-полными, в отличие от SAT.
Приведенные выше ограничения (CNF, 2CNF, 3CNF, Horn, XOR-SAT) связывают рассматриваемые формулы с конъюнкциями подформул; каждое ограничение устанавливает определенную форму для всех подформул: например, только бинарные предложения могут быть подформулами в 2CNF.
Теорема Шефера о дихотомии утверждает, что для любого ограничения на булевы функции, которые могут быть использованы для формирования этих подформул, соответствующая проблема выполнимости находится в P или NP-полной. Принадлежность к P выполнимости формул 2CNF, Horn и XOR-SAT является частным случаем этой теоремы. [14]
В следующей таблице приведены некоторые распространённые варианты SAT.
Расширение, которое приобрело значительную популярность с 2003 года, — это теории выполнимости по модулю ( SMT ), которые могут обогатить формулы CNF линейными ограничениями, массивами, всеразличными ограничениями, неинтерпретируемыми функциями [19] и т. д. Такие расширения обычно остаются NP-полными, но теперь доступны очень эффективные решатели, которые могут обрабатывать многие виды таких ограничений.
Проблема выполнимости становится более сложной, если кванторы «для всех» ( ∀ ) и «существует» ( ∃ ) разрешены для связывания булевых переменных. Примером такого выражения может быть ∀ x ∀ y ∃ z ( x ∨ y ∨ z ) ∧ (¬ x ∨ ¬ y ∨ ¬ z ) ; оно допустимо, поскольку для всех значений x и y может быть найдено соответствующее значение z , а именно z =TRUE, если и x, и y являются FALSE, и z =FALSE в противном случае. Сам SAT (неявно) использует только кванторы ∃. Если вместо этого разрешены только кванторы ∀ , получается так называемая проблема тавтологии , которая является co-NP-полной . Если оба квантификатора разрешены, то проблема называется квантифицированной проблемой булевой формулы ( QBF ), которая, как можно показать, является PSPACE-полной . Широко распространено мнение, что PSPACE-полные проблемы строго сложнее, чем любые проблемы в NP, хотя это еще не доказано. Используя высокопараллельные системы P , проблемы QBF-SAT могут быть решены за линейное время. [20]
Обычный SAT спрашивает, есть ли хотя бы одно назначение переменной, которое делает формулу истинной. Различные варианты имеют дело с количеством таких назначений:
Другие обобщения включают выполнимость для логики первого и второго порядка , проблемы удовлетворения ограничений , целочисленное программирование 0-1 .
В то время как SAT является проблемой принятия решений , проблема поиска удовлетворяющего назначения сводится к SAT. То есть, каждый алгоритм, который правильно отвечает, является ли экземпляр SAT разрешимым, может быть использован для поиска удовлетворяющего назначения. Сначала вопрос задается по заданной формуле Φ. Если ответ «нет», формула невыполнима. В противном случае вопрос задается по частично инстанцированной формуле Φ { x 1 =ИСТИНА} , то есть Φ с первой переменной x 1 заменой на ИСТИНА и соответственно упрощенной. Если ответ «да», то x 1 =ИСТИНА, в противном случае x 1 =ЛОЖЬ. Значения других переменных могут быть найдены впоследствии таким же образом. Всего требуется n +1 запусков алгоритма, где n — количество различных переменных в Φ.
Это свойство используется в нескольких теоремах теории сложности:
Поскольку задача SAT является NP-полной, для нее известны только алгоритмы с экспоненциальной сложностью в худшем случае. Несмотря на это, эффективные и масштабируемые алгоритмы для SAT были разработаны в 2000-х годах и способствовали значительному прогрессу в способности автоматически решать примеры задач, включающие десятки тысяч переменных и миллионы ограничений (т. е. предложений). [1] Примерами таких задач в автоматизации электронного проектирования (EDA) являются формальная проверка эквивалентности , проверка моделей , формальная верификация конвейерных микропроцессоров , [19] автоматическая генерация тестовых шаблонов , маршрутизация ПЛИС , [26] задачи планирования и составления расписания и т. д. Механизм решения SAT также считается важным компонентом в наборе инструментов автоматизации электронного проектирования .
Основные методы, используемые современными решателями SAT, включают алгоритм Дэвиса–Патнэма–Логеманна–Лавленда (или DPLL), обучение на основе конфликтных положений (CDCL) и алгоритмы стохастического локального поиска , такие как WalkSAT . Почти все решатели SAT включают тайм-ауты, поэтому они завершат работу в разумные сроки, даже если не смогут найти решение. Различные решатели SAT найдут разные примеры легкими или сложными, и некоторые преуспеют в доказательстве невыполнимости, а другие в поиске решений. Недавно [ когда? ] были предприняты попытки изучить выполнимость примера с использованием методов глубокого обучения. [27]
Решатели SAT разрабатываются и сравниваются в соревнованиях по решению SAT. [28] Современные решатели SAT также оказывают значительное влияние на области верификации программного обеспечения, решения ограничений в искусственном интеллекте и исследования операций, среди прочих.
решатели SAT часто могут решать задачи с миллионами ограничений и сотнями тысяч переменных..
(по дате публикации)