Конъюнктивная нормальная форма - Conjunctive normal form

В булевой логике , A формула находится в конъюнктивной нормальной форме ( КНФ ) или клаузальной нормальной форме , если это соединение одного или несколько положений , где раздел представляет собой дизъюнкцию из литералов ; иначе говоря, это произведение сумм или И или ИЛИ . Как каноническая нормальная форма , она полезна в автоматическом доказательстве теорем и теории цепей .

Все союзы литералов и все дизъюнкции литералов находятся в CNF, поскольку их можно рассматривать как союзы однобуквенных предложений и союзов одного предложения, соответственно. Как и в дизъюнктивной нормальной форме (ДНФ), единственные пропозициональные связки, которые может содержать формула в КНФ, - это и , или , и not . Оператор not может использоваться только как часть литерала, что означает, что он может предшествовать только пропозициональной переменной или символу предиката .

В автоматическом доказательстве теорем понятие « нормальная форма клаузии » часто используется в более узком смысле, имея в виду конкретное представление формулы CNF в виде набора наборов литералов.

Примеры и не примеры

Все следующие формулы в переменных и имеют конъюнктивную нормальную форму:

Для ясности дизъюнктивные предложения написаны выше в круглых скобках. В дизъюнктивной нормальной форме с заключенными в скобки конъюнктивными предложениями последний случай такой же, но предпоследний . Константы true и false обозначаются пустым конъюнктом и одним предложением, состоящим из пустого дизъюнкта, но обычно записываются явно.

Следующие формулы не имеют конъюнктивной нормальной формы:

  • , поскольку ИЛИ вложено в НЕ
  • , так как И вложено в ИЛИ

Каждую формулу можно эквивалентно записать как формулу в конъюнктивной нормальной форме. Три не примеров в CNF:

Преобразование в CNF

Каждую пропозициональную формулу можно преобразовать в эквивалентную формулу в CNF. Это преобразование основано на правилах логической эквивалентности : исключении двойного отрицания , законах Де Моргана и распределительном законе .

Поскольку все пропозициональные формулы могут быть преобразованы в эквивалентные формулы в конъюнктивной нормальной форме, доказательства часто основываются на предположении, что все формулы являются КНФ. Однако в некоторых случаях это преобразование в CNF может привести к экспоненциальному взрыву формулы. Например, перевод следующей формулы, отличной от CNF, в CNF дает формулу с пунктами:

В частности, полученная формула:

Эта формула содержит пункты; каждое предложение содержит одно или для каждого .

Существуют преобразования в CNF, которые избегают экспоненциального увеличения размера, сохраняя выполнимость, а не эквивалентность . Эти преобразования гарантируют только линейное увеличение размера формулы, но вводят новые переменные. Например, приведенная выше формула может быть преобразована в CNF путем добавления следующих переменных :

Интерпретация удовлетворяет эта формула только тогда , когда по крайней мере один из новых переменных верно. Если эта переменная есть , то оба и также верны. Это означает, что каждая модель , удовлетворяющая этой формуле, также удовлетворяет исходной. С другой стороны, только некоторые из моделей исходной формулы удовлетворяют этой модели: поскольку они не упоминаются в исходной формуле, их значения не имеют отношения к ее удовлетворению, чего нет в последней формуле. Это означает, что исходная формула и результат перевода равнозначны, но не эквивалентны .

Альтернативный перевод, преобразование Цейтина , также включает в себя клаузулы . С этими пунктами формула подразумевает ; эта формула часто рассматривается как «определение» как название для .

Логика первого порядка

В логике первого порядка конъюнктивная нормальная форма может быть взята дальше, чтобы получить клаузальную нормальную форму логической формулы, которую затем можно использовать для выполнения разрешения первого порядка . В автоматическом доказательстве теорем на основе разрешающей способности формула CNF

, с литералами, обычно представляется как набор наборов
.

См ниже в качестве примера.

Вычислительная сложность

Важный набор проблем вычислительной сложности включает нахождение присвоений переменным булевой формулы, выраженной в конъюнктивной нормальной форме, таким образом, чтобы формула была истинной. Проблема k -SAT - это проблема нахождения удовлетворительного присваивания булевой формуле, выраженной в CNF, в которой каждая дизъюнкция содержит не более k переменных. 3-SAT является NP-полной (как и любая другая задача k -SAT с k > 2), в то время как 2-SAT, как известно, имеет решения за полиномиальное время . Как следствие, задача преобразования формулы в ДНФ с сохранением выполнимости является NP-трудной ; в общем , преобразование в CNF с сохранением достоверности также является NP-трудным; следовательно, преобразование с сохранением эквивалентности в DNF или CNF снова является NP-трудным.

Типичные проблемы в этом случае связаны с формулами в "3CNF": конъюнктивная нормальная форма с не более чем тремя переменными на конъюнкт. Примеры таких формул, встречающихся на практике, могут быть очень большими, например, со 100 000 переменных и 1 000 000 конъюнктов.

Формула в КНФ может быть преобразована в equisatisfiable формулы в « K CNF» (для к ≥3) путем замены каждого конъюнкт с более чем K переменных двумя конъюнктов и с Z новой переменной, и повторяя так часто , как это необходимо.

Преобразование из логики первого порядка

Чтобы преобразовать логику первого порядка в CNF:

  1. Преобразовать в нормальную форму отрицания .
    1. Устранение последствий и эквивалентностей: неоднократно заменять на ; заменить на . В конце концов, это устранит все вхождения и .
    2. Переместите НЕ внутрь, многократно применяя закон Де Моргана . В частности, заменить на ; заменить на ; и заменить на ; заменить на ; с . После этого a может стоять только непосредственно перед предикатным символом.
  2. Стандартизируйте переменные
    1. Для предложений, например, которые используют одно и то же имя переменной дважды, измените имя одной из переменных. Это позволяет избежать путаницы при отбрасывании кванторов. Например, переименован в .
  3. Сколемизируйте заявление
    1. Переместить кванторы наружу: повторно заменить на ; заменить на ; заменить на ; заменить на . Эти замены сохраняют эквивалентность, поскольку предыдущий шаг стандартизации переменных гарантировал, что этого не произойдет в . После этих замен, квантор может иметь место только в начальном префиксе формулы, но никогда не Внутри , или .
    2. Неоднократно заменяйте на , где - новый символ функции, так называемая « сколемская функция ». Это единственный шаг, который сохраняет только выполнимость, а не эквивалентность. Он устраняет все экзистенциальные кванторы.
  4. Отбросьте все универсальные кванторы.
  5. Распределите ИЛИ внутрь по И: несколько раз замените на .

В качестве примера формула «Любой, кто любит всех животных, в свою очередь, кого-то любит» преобразуется в CNF (а затем в форму предложения в последней строке) следующим образом (выделение правила замены заменяется переиндексом в ):

на 1,1
на 1,1
на 1,2
на 1,2
на 1,2
на 2
на 3,1
на 3,1
на 3,2
по 4
на 5
( представление статьи )

Неформально функция Сколема может рассматриваться как уступка человеку, которого любит, в то время как порождение животного (если оно есть), которое не любит. Третья последняя строка снизу читается как « не любит животное , иначе его любит » .

Вторая последняя строка сверху - это CNF.

Примечания

  1. ^ Питер Б. Эндрюс, Введение в математическую логику и теорию типов , 2013, ISBN  9401599343 , стр. 48
  2. ^ a b Искусственный интеллект: современный подход. Архивировано 31 августа 2017 г. в Wayback Machine [1995 ...] Рассел и Норвиг.
  3. ^ Цейтин (1968)
  4. ^ Джексон и Шеридан (2004)
  5. ^ так как один из способов проверить CNF на выполнимость - это преобразовать его в DNF , выполнимость которого может быть проверена за линейное время.

Смотрите также

использованная литература

внешние ссылки