В противоположной формуле CNF с двойным чтением каждая переменная появляется дважды, один раз положительный и один раз отрицательный.
Меня интересует проблема , которая заключается в вычислении четности числа удовлетворяющих назначений противоположной формуле CNF с .
Я не смог найти никаких ссылок на сложность такой проблемы. Самым близким, что мне удалось найти, является то, что версия является -complete (см. Раздел 6.3 в этой статье ).# P
Заранее спасибо за вашу помощь.
Обновление 10 апреля 2016
- В данной работе , то Проблема Показано, что -полным, однако формула получают восстановлением из не находится в КНФ, и как только вы попытаетесь преобразовать его обратно в CNF, вы получите формулу для чтения трижды.⊕ P 3 SAT
- Показано, что монотонная версия является -полной в этой статье . В такой статье быстро упоминается в конце раздела 4: Valiant говорит, что он вырожден. Мне не ясно, что именно означает вырождение, и что это означает с точки зрения твердости.⊕ P
Обновление 12 апреля 2016
Было бы также очень интересно узнать, изучал ли кто-нибудь всю сложность проблемы . При заданной противоположной формуле CNF с двойным чтением такая задача требует вычислить разницу между количеством удовлетворяющих назначений, для которых нечетное число переменных установлено в значение true, и числом удовлетворяющих назначений, в которых четное число переменных установлено в значение true. Я не нашел никакой литературы об этом.
Обновление 29 мая 2016
Как отметил Эмиль Йержабек в своем комментарии, неправда, что Валиант сказал, что проблема вырождена. Он только сказал, что более ограниченная версия такой проблемы, , является вырожденной. Между тем, я продолжаю не знать, что именно означает дегенерат, но, по крайней мере, теперь кажется очевидным, что это синоним отсутствия выразительной силы.⊕ Pl-Rtw-Opp-3CNF
источник
Ответы:
Оказывается, что каждая формула с противоположным чтением имеет четное число удовлетворяющих заданий. Вот хорошее доказательство этого, хотя, возможно, можно было бы исключить теоретико-графическую терминологию.
Пусть - формула CNF с обратным чтением, дважды. Без ограничения общности ни одно предложение не содержит ни переменной, ни ее отрицания.φ
Рассмотрим граф которого множество вершин являются предложениями ϕ , и для каждой переменной x мы добавляем (неориентированное) ребро, которое падает на два предложения, содержащие x . Наше предположение WLOG в ϕ говорит, что этот граф не имеет самоконтролей. Кроме того, подумайте о маркировке каждого ребра переменной, определяющей его; таким образом мы можем различить параллельные ребра.грамм φ Икс Икс φ
Ориентации представляет собой ориентированный граф, ребра которого образованы путем присвоения направление каждого ребра в G . Назовем ориентацию G допустимой, если каждая вершина G имеет исходящее ребро. Легко видеть , что удовлетворяющие присвоения ф в взаимно однозначном соответствии с допустимыми ориентациями G .грамм грамм грамм грамм φ грамм
Теперь я утверждаю, что число допустимых ориентаций группы четно. Аргумент «инволюция»: Я построить отображение Ф со следующими свойствами:грамм Φ
После того, как они установлены, мы можем наблюдать , что орбиты имеют размер 2 и разделить допустимые ориентации G . Отсюда следует, что число допустимых ориентаций четное.Φ грамм
Чтобы определить , пусть → G - допустимая ориентация и рассмотрим разбиение → G на его сильно связные компоненты. Φ затем отправляет → G в ориентацию, образованную путем обращения всех ребер в сильно связанных компонентах. Свойства затем проверяются напрямую:Φ грамм⃗ грамм⃗ Φ грамм⃗
источник
Я не уверен, что моя идея понятна, поэтому я объясню на примере Джорджио:
.( х1∨ х2∨ х3) ∧ ( ¬ x1∨ ¬ х3∨ х4) ∧ ( ¬ x4∨ х5) ∧ ( ¬ x2∨ ¬ х5∨ ¬ х6)
Сначала мне нужно изменить это в форме DNF:
.( х1∧ х2∧ х3) ∨ ( ¬ x1∧ ¬ х3∧ х4) ∨ ( ¬ x4∧ х5) ∨ ( ¬ x2∧ ¬ х5∧ ¬ х6)
Это должно дать тот же ответ. И неважно, посчитал ли я число решений по модулю 2 для этого:
= 0( х1∧ х2∧ х3) ∨ ( ¬ x1∧ ¬ х3∧ х4) ∨ ( ¬ x4∧ х5) ∨ ( ¬ x2∧ ¬ х5∧ ¬ х6)
или для этого:
= 1.( х1∧ х2∧ х3) ∨ ( ¬ x1∧ ¬ х3∧ х4) ∨ ( ¬ x4∧ х5) ∨ ( ¬ x2∧ ¬ х5∧ ¬ х6)
Поэтому я выбираю второе. У меня есть участники:
= ( x 1 ∧ x 2 ∧ x 3 )я0 ( х1∧ х2∧ х3)
= ( ¬ x 1 ∧ ¬ x 3 ∧ x 4 )я1 ( ¬ x1∧ ¬ х3∧ х4)
= ( ¬ x 4 ∧ x 5 )я2 ( ¬ x4∧ х5)
= ( ¬ x 2 ∧ ¬ x 5 ∧ ¬ x 6 )я3 ( ¬ x2∧ ¬ х5∧ ¬ х6)
Сейчас я строю систему уравнений:
Эта система имеет одно решение. 1 mod 2 = 1, поэтому ответ равен 1. Но встречается только один раз. Если каждая переменная встречается два раза, то возможно иметь ответ = 1?Икс6
источник
извините за большую задержку. До сих пор, вероятно, проблема была решена. Если нет, я представлю свой полиномиальный алгоритм для решения . Сначала попробуем вычислить число решений по модулю 2 этого уравнения: f ( X ) ⊕ g ( X ) . Где f и g - логические функции, а X - вектор переменных. Общая часть, f ( X ) ∧ g ( X ) , встречается два раза (один раз в f (X) и один раз в g (X)). Так что по модулю 2 общая часть не важна. Мы можем вычислить количество решений по модулю 2 из f ( X )⊕ Rtw-Opp-CNF е( Х) ⊕ г( Х) е( Х) ∧ г( Х) е( Х) и число решений по модулю 2 из и затем суммируем эти результаты по модулю 2. Теперь давайте предположим, что функция представлена в следующем виде:грамм( Х)
,я0⊕ я1⊕ я2⊕ . , , ⊕ яn - 1
где является импликантом (я имею в виду переменные, связанные оператором AND; например: x 0 ∧ x 1 ∧ ¬ x 2 ).яJ Икс0∧ х1∧ ¬ х2
Чтобы вычислить количество решений этой функции по модулю 2, мы можем просто вычислить число решений по каждому импликанту по модулю 2 и суммировать все результаты по модулю 2. Если у нас есть вектор переменных X и в импликанте нет всех переменных из этого вектора, то мы знаем это число решений по модулю 2 для этого импликанта равно 0, потому что есть решений, где k - количество отсутствующих переменных. Если импликант имеет все переменные, то число решений равно 1 (k = 0). Таким образом, вычисляется число решений по модулю 2 из i 0 ⊕ i 1 ⊕ i 2 ⊕ . , , ⊕ я п - 1 легко. Теперь давайте рассмотрим:2К я0⊕ я1⊕ я2⊕ . , , ⊕ яn - 1
.я0∨ я1∨ я2∨ . , , ∨ яn - 1
Мы знаем, что . В общем случае операция OR может быть заменена на XOR каждого подмножества импликантов, связанных оператором AND. И это важный шаг: нас интересуют только те подмножества, которые:a ∨ b = a ⊕ b ⊕ ( a ∧ b )
1) имеет все переменные,
2) каждая переменная встречается точно одна (если переменная встречается два раза, то мы имеем положительное и отрицательное значение в одном импликанте, поэтому это будет равно 0).
источник