Этот дальнейший ответ подразумевает обратную связь с комментарием divybyzero к моему предыдущему ответу.
Как говорит DivideByzero, это, безусловно, правда, что CNF и DNF являются двумя сторонами одной медали.
Когда вам нужно найти удовлетворяющее назначение, DNF является явным, поскольку оно явно показывает вам свои удовлетворяющие назначения (DNF Удовлетворенность принадлежит ), тогда как CNF является неявным, поскольку оно скрывает и удовлетворяет ваши удовлетворяющие назначения от ваших глаз (CNF Удовлетворенность равна N Р - с о м п л е т е ). Мы не знаем какой-либо процедуры, которая могла бы разворачивать и разматывать любую формулу CNF в некоторую равноудаленную формулу DNF, которая не имеет экспоненциального размера. Это был смысл моего предыдущего ответа (пример которого должен был показать экспоненциальный рост, хотя, по общему признанию, такой пример был не лучшим из возможных).PNP−complete
И наоборот, когда вам нужно найти фальсифицирующее назначение, CNF является явным, поскольку он явно показывает вам свои фальсифицирующие назначения (фальсифицируемость CNF принадлежит P ), в то время как DNF является неявным, так как он скрывает свои фальсифицирующие назначения от ваших глаз (фальсифицируемость DNF) является ). Мы не знаем какой-либо процедуры, которая могла бы разворачивать и разматывать любую формулу DNF в некоторую равносильную формулу CNF, которая не имеет экспоненциального размера.NP−complete
На одном конце у нас есть противоречия, то есть неудовлетворительные формулы. На противоположном конце у нас есть тавтологии, то есть неопределяемые формулы. В середине у нас есть формулы, которые являются как выполнимыми, так и фальсифицируемыми.
В любой формуле CNF с переменными каждое предложение длины k явно кодирует 2 n - k фальсифицирующих присваиваний.nk2n−k
В любой формуле DNF с переменными каждый член длины k явно кодирует 2 n - k, удовлетворяющих присваиваниям.nК2н - к
Формула CNF без предложений - это тавтология, потому что она не имеет фальсифицирующего назначения. Формула CNF, содержащая пустое предложение (которое включает каждое другое предложение), является противоречием, потому что пустое предложение (которое имеет ) указывает, что все 2 nк = 02N присваиваний фальсифицируются. Любая другая формула КНФ является либо Противоречие или один из этих формул в середине (и это , чтобы различать эти 2 случая).NP−complete
Формула DNF без терминов является противоречием, потому что она не имеет удовлетворительного назначения. Формула DNF, содержащая пустой термин (который включает все остальные термины), является тавтологией, потому что пустой термин (который имеет ) указывает, что все 2 nk=02n назначений удовлетворяют. Любая другая формула ДНФ либо тавтология или один из этих формул в середине (и это , чтобы различать эти 2 случая).NP−complete
2N
2N
В этом свете становится все более очевидным, почему удовлетворенность CNF и фальсифицируемость DNF эквивалентны с точки зрения вычислительной твердости. Потому что на самом деле это одна и та же проблема, поскольку основная задача точно такая же: определить, равно ли объединение нескольких множеств пространству всех возможностей . Такая задача приводит нас к более широкой области подсчета, которая, по моему скромному мнению, является одним из тех путей, которые нужно горячо исследовать, чтобы надеяться на некоторый немаловажный прогресс в решении этих проблем (я сомневаюсь, что дальнейшее исследование решателей на основе резолюций может в конечном итоге принести принципиально новые теоретические достижения, хотя, безусловно, продолжает приносить удивительные практические успехи).
Сложность такой задачи заключается в том, что эти наборы сильно перекрываются друг с другом в режиме включения-исключения.
Наличие такого перекрытия - именно то, где находится точность счета. Более того, тот факт, что мы допускаем перекрытие этих множеств, является той самой причиной, которая позволяет нам иметь компактные формулы, пространство решения которых, тем не менее, экспоненциально велико.