Rezolucja oraz problem SAT

Transkrypt

Rezolucja oraz problem SAT
MFI
Metody Formalne Informatyki: Zestaw 2
Semestr zimowy 2016/2017
Kraków
13 października 2016
Rezolucja oraz problem SAT
Zadanie 1. Niech Φ będzie formułą w koniunkcyjnej postaci normalnej (CNF). Udowodnij, że Φ jest tautologią wtedy i tylko wtedy, gdy każda klauzula zawiera przynajmniej
jedną zmienną występującą zarówno pozytywnie jak i negatywnie.
Zadanie 2. Niech Φ będzie formułą w dysjunkcyjnej postaci normalnej (DNF). Udowodnij, że Φ jest spełnialna wtedy i tylko wtedy, gdy Φ posiada klauzulę, w której żadna
zmienna nie występuje jednocześnie pozytywnie jak i negatywnie.
Zadanie 3. Niech Φ będzie dowolną formułą w koniunkcyjnej postaci normalnej. Wykaż,
że istnieje formuła Ψ w koniunkcyjnej postaci normalnej taka, że:
(i) Φ jest spełnialna wtedy i tylko wtedy gdy Ψ jest spełnialna,
(ii) Ψ składa się z klauzul zawierających co najwyżej trzy literały.
Zadanie 4. Podaj warunek konieczny i wystarczający na to, że instancja problemu 1-SAT
była spełnialna. Ile różnych wartościowań może jednocześnie spełniać taką formułę?
Zadanie 5. Używając metody rezolucji, udowodnij następujące twierdzenia:
(i) p → p,
(ii) p → (p ∨ q),
(iii) p ↔ ¬¬p,
(iv) (p → q) ↔ (¬q → ¬p),
(v) ((p → q) → p) → p.
Zadanie 6. Niech Φ będzie formułą 2-SAT. Jeżeli używając metody rezolucji na Φ, nie
da się jednocześnie wygenerować (x ∨ x) oraz (¬x ∨ ¬x) dla dowolnej zmiennej x wówczas
mówimy, że Φ jest spójna. Wykaż, że Φ jest spójna wtedy i tylko wtedy gdy Φ jest
spełnialna.
Zadanie 7. Rozważmy formuły CNF gdzie każda klauzula posiada co najwyżej jedno
niezaprzeczone wystąpienie zmiennej. Takie formuły nazywamy formułami Horna. Niech
dany będzie poniższy algorytm zachłanny rozstrzygający czy dana na wejściu formuła
Horna jest spełnialna. Udowodnij poprawność tego algorytmu.
Algorithm Greedy
Input: Φ = C1 ∧ . . . ∧ Cm – formuła Horna
Output: T rue wtedy i tylko wtedy gdy Φ jest spełnialna
1: ρ ← {v1 → F alse, v2 → F alse, . . . , vn → F alse}
2: while ∃i (Ci = (vi1 ∨ ¬vi2 ∨ . . . ∨ ¬vik ) oraz Ci jest fałszywa) do
i
3:
ρ := ρ[vi1 → T rue]
4: end while
5: return ∀i (Ci = (¬vi1 ∨ . . . ∨ ¬vik ) =⇒ Ci jest prawdziwa)
i
Strona 1/1