Относительно потока, Доказывающего, что преобразование из CNF в DNF является NP-Hard (и связанный математический поток ):
Как насчет другого направления, от DNF до CNF? Это легко или сложно?
На странице 2 этой статьи они, похоже, намекают на то, что оба направления одинаково трудны, когда говорят: « Мы заинтересованы в максимальном увеличении размера при переключении с представления CNF на представление DNF (или наоборот) ».
Но DNF-SAT находится в P, а CNF-SAT является NP- полной. Поэтому, учитывая выражение DNF , должно быть равнозначное выражение CNF , длина которого полиномиальна по длине . И преобразование может быть сделано за время poly. Это правильно?ϕ 2 ϕ 1 ϕ 1 → ϕ 2
Редактировать: изменен эквивалент на равноудаленный (то есть дополнительные переменные разрешены в ).
источник
Ответы:
Если вы хотите ввести дополнительные переменные, вы можете преобразовать форму DNF в форму CNF за полиномиальное время с помощью преобразования Цейтин . Полученная формула CNF будет равнозначна исходной формуле DNF: формула CNF будет выполнимой, если и только если исходная формула DNF была выполнимой. Смотрите также https://en.wikipedia.org/wiki/Conjunctive_normal_form#Conversion_into_CNF .
Если вы не хотите разрешать ввод дополнительных переменных, преобразование из DNF в форму CNF сопряжено с NP. В частности, проверка того, является ли формула DNF тавтологией, сопро-сложна. Однако проверка того, является ли формула CNF тавтологией, может быть выполнена за полиномиальное время (вы просто отдельно проверяете, является ли каждое предложение тавтологией, что легко, поскольку каждое предложение является дизъюнкцией литералов). Поэтому, если бы вы могли преобразовать форму DNF в форму CNF за полиномиальное время, не вводя новые переменные, вы бы получили алгоритм полиномиального времени для проверки того, является ли формула DNF тавтологией, что кажется маловероятным, учитывая, что мы ожидаем P не равно co-NP. Или, другими словами, преобразование из DNF в форму CNF без введения дополнительных переменных является сопро-сложным.
Это разница между эквивалентностью против equisatisfiability . Эквивалентность требует, чтобы две формулы имели одинаковый набор решений (и, следовательно, не позволяют вводить дополнительные переменные). Уравновешенность требует только того, чтобы обе формулы были выполнимыми или обе были неудовлетворительными (и, следовательно, позволяли вводить дополнительные переменные).
источник