Изменения

Перейти к: навигация, поиск

Специальные формы КНФ

536 байт убрано, 12:12, 17 июня 2016
КНФ в форме Хорна
{{Утверждение
|statement= Существует алгоритм, который за полиномиальное время проверяет, что функцию, заданную в форме Хорна , можно удовлетворить.
|proof= Далее будет приведено доказательство, предлагающее алгоритм решения.
*:Опустим одиночно стоящие переменные и скобки, в которых значение стало равным <tex>1</tex>. Перейдём к <tex>1</tex> шагу алгоритма. По определению формы Хорна, в каждой из скобок, где мы опустили переменную не больше <tex>1</tex> переменной без отрицания. Либо какая-то из переменных внутри скобки будет иметь отрицание, т.е. при подстановке <tex>0</tex> станет равна <tex>1</tex>, либо мы рассмотрим переменную без отрицания как отдельно стоящую переменную. Значит <tex>1</tex> шаг алгоритма выполнится верно. Будем проделывать алгоритм, начиная сначала, пока <tex>1</tex> шаг не найдёт ответ.
Будем считать, что длиной формулы является количество переменных, входящих в нее, и обозначим ее Обозначим за <tex> N </tex>.Разберём время выполнения каждого из шагов. *Первый шаг выполняется за <tex>O(N)</tex>число переменных, так как найти одиночно стоящие переменные можно за линейный проход. *Второй шаг выполняется за <tex>O(N)</tex>входящих в формулу, так как выписать, присвоить значения, можно за линейное время.*Третий шаг выполняется за <tex>O(N)</tex>, записать формулу для <tex>1</tex> шага можно за линейное времяназовём это число длиной формулы.В итоге, так как каждый Каждый из шагов выполняется за время <tex>O(N)</tex>, а упрощений подстановок значений в переменные формулы может быть не больше <tex>N</tex> раз, получается т.к. мы присваиваем каждой переменной значение один раз. Получается сложность <tex>O(N^2)</tex>.
}}
{{Утверждение
Анонимный участник

Навигация