Пусть - выполнимая формула CNF с переменными и предложениями. Пусть - пространство решений .
Рассмотрим проблему определения для данной другой формулы CNF с тем же набором переменных, что и для , с (то же пространство решений, что и для ), но с как можно меньшим количеством предложений ( единственная цель состоит в том, чтобы минимизировать количество предложений, поэтому количество литералов в каждом предложении не имеет значения).
Вопрос
Кто-нибудь уже исследовал эту проблему? Есть ли какие-либо результаты в литературе по этому поводу?
В качестве примера рассмотрим следующую формулу CNF (каждая строка является предложением):
х 2 ∨ х 3 ∨ х 4 ¬ х 1 ∨ х 2 ∨ х 4 ¬ х 1 ∨ х 2 ∨ ¬ х 3 ¬ х 1 ∨ х 3 ∨ х 5 ¬ х 1 ∨ х 2 ∨ ¬
и следующая формула :
х 2 ∨ х 3 ∨ х 4 ¬ х 1 ∨ х 3 ∨ х 5 ¬ х 1 ∨ х 2
оба имеют одинаковое пространство решений, но в то время как имеет 6 предложений, F 2 имеет только 4 .
Наконец, рассмотрим следующую формулу :
¬ х 1 ∨ х 3 ∨ х 5 ¬ х 1 ∨
Пространство решений опять то же самое, но только с предложениями.
источник
Ответы:
Задача определения того , существует ли эквивалентная формула КНФА с не более заданным числом литералов -полный. Версия, минимизирующая количество предложений, находится в пределах коэффициента n от размера формулы, где nΠp2 n n - количество переменных. Смотрите раздел 6 из:
Недавний результат показывает, что вычисление конкретной нижней границы для размера самой короткой эквивалентной формулы CNF (измеряемой количеством предложений, как вы указываете) является NP-полным. В этой статье также говорится, что ваша задача минимизации количества предложенийΠp2 -полной, ссылаясь на статью Уманса, приведенную выше, хотя почему это не сразу понятно для меня.
источник
Проблема минимизации схемы неразрешима (см. Комментарии ниже). Кроме того, я думаю, что вас может заинтересовать метод, используемый некоторыми решателями SAT (по крайней мере, в некоторой степени), который называется предварительной обработкой SAT. Например, хорошо известный решатель MiniSAT использует минимизатор CNF SatELite для предварительной обработки экземпляра. Google Scholar также дает много результатов для "предварительной обработки".
источник
основным стандартным / известным решением минимизации CNF в EE является алгоритм Куайна-МакКласки который имеет множество реализаций, в том числе публичный домен. однако я понимаю, что (не упомянутое в текущей статье в википедии) большинство возвращается к эвристике и жадным алгоритмам для поиска решений, особенно для больших формул, т.е. найти оптимальное решение, особенно для больших входных данных.
Quine-MCluskey - это обобщение работы с картами Карно, диаграммы которых могут быть успешными для небольших случаев.
и обратите внимание, что может быть несколько оптимальных решений в терминах эквивалентных формул с одинаковым (минимальным) размером предложения, это будет указано в хорошей ссылке на subj. нахождение минимума, по-видимому, сводится к перечислению всех простых импликатов, что может привести к значительному экспоненциальному взрыву в памяти / «пространстве» по сравнению с размером исходной формулы.
источник