jak przekonwertować (a ∧ b) ↔ c do postaci CNF?
Po sporządzeniu tabeli prawdy wymyśliłem:
(¬ (a ∧ b) ∨ c) ∧ ((a ∧ b) ∨ c) ∧ ((a ∧ b) ∨ ¬ c)
Ale teraz trudno mi przekształcić to w CNF. Nie mam pojęcia, jak zmienić ∧ tak, aby stały się ∨ w klauzulach.
To, co robię, to używanie (a ∧ b) ic do utworzenia CNF. Ale to mnie do niczego nie prowadzi.
Skonsultowałem się z moimi kolegami, którzy powiedzieli, że zamiast tego powinienem używać a, b i c do utworzenia CNF. Myślę, że mają rację, ale nie wiem, dlaczego się mylę.
Czy powinienem używać tylko zdań atomowych zamiast zdania złożonego? Czy to dlatego uderzam tutaj w ceglaną ścianę?
Gdybym użył zdań atomowych, czy nie miałoby to innego znaczenia niż użycie zdania złożonego (a ∧ b)?
Proszę pomóż. Dzięki wielkie.
Odpowiedzi
$(a\land b)\leftrightarrow c$ staje się $$(a\land b\land c)\lor(\neg a\land\neg c)\lor(\neg b\land\neg c)$$To jest DNF. Aby uzyskać CNF, rozdzielamy OR na AND, usuwając kombinacje zawierające takie rzeczy jak$a\lor\neg a$ oraz klauzule zawarte w innych klauzulach: $$(a\lor\neg c)\land(b\lor\neg c)\land(c\lor\neg a\lor\neg b)$$