Как уменьшить k-независимую задачу о множестве до 3-SAT

Итак, я получил этот домашний вопрос, и нас просят свести проблему выполнимости k-независимого набора к 3-SAT набору предложений в конъюнктивной нормальной форме.

Итак, для G (V, E) у нас установлены вершины
V = { x1, x2, x3, x4, x5, x6}
и набор ребер
E = {e1 = (x1, x3), e2 = (x1, x5), e3 = (x1, x6), e4 = (x2, x5), e5 = (x2, x6), e6 = (x3, x4), e7 = (x3, x5), e8 = (x5, x6)}

Мой первый подход к этому состоит в том, чтобы иметь предложение для каждого ребра, поскольку у нас не может быть ребра между двумя вершинами в независимом наборе:
e1: (¬x1 v ¬x3)
e2: (¬x1 v ¬ x5)
e3: (¬x1 v ¬x6)
e4: (¬x2 v ¬x5)
e5: (¬x2 v ¬x6)
e6: (¬x3 v ¬x4)
e7: (¬x3 v ¬x5)
e8: (¬x5 v ¬x6)

Но проблема в том, например, для k = 3, как писать предложения, чтобы гарантировать, что По крайней мере, для трех различных переменных (xi) установлено значение true?
Это достижимо с использованием взвешенной-2-выполнимости, но, кажется, трудно достичь, просто используя старый добрый 3-SAT.
Есть какие-нибудь подсказки, как действовать?


person Kop Akio    schedule 20.12.2020    source источник
comment
Вам следует задать этот вопрос на cs.stackexchange.com, а не здесь.   -  person Peter O.    schedule 20.12.2020


Ответы (1)


Если вас интересуют G и k = 3, вероятно, проще всего написать предложения (x i ∨ x j ∨ x k ∨ x ) для всех {i, j, k, ℓ} ⊆ V, а затем уменьшите их до 3-CNF, например, (x ∨ y ∨ z ∨ w) станет (v ∨ x ∨ y ) ∧ (¬v ∨ z ∨ w), где v - новая переменная.

В общем, вам захочется

  1. Определите логическую схему для вычисления x1 +… + xn ≥ k (вы можете вычислить x 1 +… + x n - k в арифметика с дополнением до двух с использованием сумматоры с переносом пульсации, а затем инвертировать знаковый бит).

  2. Переведите эту схему в формулу 3-CNF. Во-первых, замените вентили с более чем двумя входами на несколько вентилей с двумя входами. Затем для каждого узла в схеме создайте переменную. Для каждого элемента напишите четыре предложения, ограничивающие вывод, по одному для каждого возможного входа, например, если есть элемент И с входами x и y и выходом z, то напишите предложения (x ∨ y ∨ ¬z) ∧ (x ∨ ¬y ∧ ¬z) ∧ (¬x ∨ y ∨ ¬z) ∧ (¬x ∨ ¬y ∨ z). Элемент XOR будет (x ∨ y ∨ ¬z) ∧ (x ∨ ¬y ∧ z) ∧ (¬x ∨ y ∨ z) ∧ (¬x ∨ ¬y ∨ ¬z).

person David Eisenstat    schedule 20.12.2020