Специальные формы КНФ — различия между версиями
Nikitaevg (обсуждение | вклад) м |
(→КНФ в форме Крома) |
||
Строка 13: | Строка 13: | ||
*Существует алгоритм, который за полиномиальное время проверяет, что функцию, заданную в форме Крома можно удовлетворить(т.е КНФ в форме Крома не является тождественным <tex>0</tex>). | *Существует алгоритм, который за полиномиальное время проверяет, что функцию, заданную в форме Крома можно удовлетворить(т.е КНФ в форме Крома не является тождественным <tex>0</tex>). | ||
+ | |||
+ | Для начала приведем данное выражение к импликативной форме следующим образом: заметим, что выражение вида <tex> a \vee b </tex> эквивалентно <tex> \neg a \Rightarrow b \vee \neg b \Rightarrow a </tex>. Это можно воспринимать следующим образом: если есть выражение <tex> a \vee b </tex>, и нам необходимо добиться обращения его в <tex> true </tex> то, если <tex> a = true </tex>, <tex> b </tex> должно быть равно <tex> false </tex> и наоборот. Построим граф импликаций, для каждой переменной в паре будет по две вершины (обозначим их <tex> x </tex> и <tex> \neg x </tex>). Рёбра в графе будут соответствовать импликативным связям. Например, для формулы вида: <tex> (a \vee b) \wedge (a \vee \neg b) </tex> граф импликаций будет содержать следующие ориентированные ребра: <tex> \neg a \rightarrow b, \neg b \rightarrow a, \neg b \rightarrow \neg c, c \rightarrow b </tex>. Заметим, что если для какой-то вершины <tex> x </tex> выполняется, что из <tex> x </tex> достижима <tex> \neg x </tex>, а из <tex> \neg x </tex> достижима <tex> x </tex>, то задача не имеет решения.Это следует из того, что какое бы значение для переменной <tex> x </tex> мы бы ни выбрали, мы всегда придём к противоречию, что должно быть выбрано и обратное ему значение. Условие не существования таких вершин является необходимым и достаточным для решения данной задачи. Переформулируем утверждение в терминах теории графов: для решения данной задачи необходимо и достаточно, чтобы <tex> \forall x </tex> вершины <tex> x </tex> и <tex> \neg x </tex> находились в разных компонентах сильной связности графа импликаций. | ||
+ | |||
*Функцию <tex>F</tex> можно задать в форме Крома <tex> \iff </tex> выполнено следующее следствие: | *Функцию <tex>F</tex> можно задать в форме Крома <tex> \iff </tex> выполнено следующее следствие: |
Версия 14:50, 15 июня 2016
Рассмотрим две формы, с помощью которых можно представить формулы, заданные в конъюнктивной нормальной форме, то есть имеющей вид конъюнкции выражений в скобках, каждое из которых представляет собой дизъюнкцию одного или нескольких литералов. Эти две формы интересны тем, что для них существует алгоритм, который может за полиномиальное время проверить, существует ли набор аргументов, на которых данная функция будет принимать значение , в то время, как для обычной функции, не представленной данной формой, эта задача является NP-полной.
Содержание
КНФ в форме Крома
Определение: |
Конъюнктивная нормальная форма (КНФ) в форме Крома (2-КНФ) (англ. 2-CNF) — это конъюнкция выражений в скобках, каждое из которых представляет собой дизъюнкцию нескольких литералов, количество которых не превышает двух. |
Пример :
Утверждения:
- Существует алгоритм, который за полиномиальное время проверяет, что функцию, заданную в форме Крома можно удовлетворить(т.е КНФ в форме Крома не является тождественным ).
Для начала приведем данное выражение к импликативной форме следующим образом: заметим, что выражение вида
эквивалентно . Это можно воспринимать следующим образом: если есть выражение , и нам необходимо добиться обращения его в то, если , должно быть равно и наоборот. Построим граф импликаций, для каждой переменной в паре будет по две вершины (обозначим их и ). Рёбра в графе будут соответствовать импликативным связям. Например, для формулы вида: граф импликаций будет содержать следующие ориентированные ребра: . Заметим, что если для какой-то вершины выполняется, что из достижима , а из достижима , то задача не имеет решения.Это следует из того, что какое бы значение для переменной мы бы ни выбрали, мы всегда придём к противоречию, что должно быть выбрано и обратное ему значение. Условие не существования таких вершин является необходимым и достаточным для решения данной задачи. Переформулируем утверждение в терминах теории графов: для решения данной задачи необходимо и достаточно, чтобы вершины и находились в разных компонентах сильной связности графа импликаций.
- Функцию можно задать в форме Крома выполнено следующее следствие:
КНФ в форме Хорна
Определение: |
Конъюнктивная нормальная форма (КНФ)в форме Хорна (англ. Horn clause) — это конъюнкция выражений в скобках, каждое из которых представляет собой дизъюнкцию литералов, в которой присутствует не более одного литерала без отрицания. |
Пример:
Каждая скобка представляет собой Дизъюнкт Хорна[1].
Любую формулу можно представить в виде КНФ в форме Хорна. Для этого формулу необходимо преобразовать в конъюнкцию элементарных дизъюнкций и далее каждую дизъюнкцию представить в форме дизьюнкта Хорна.
Утверждения:
- Существует алгоритм, который за полиномиальное время проверяет, что функцию, заданную в форме Хорна можно удовлетворить.
- Функцию можно задать в форме Хорна выполнено следующее следствие: