A konjunktív normálforma ( CNF ) a logikai logikában egy olyan normálforma , amelyben a Boole-képlet literálok diszjunkcióinak konjunkciója . A konjunktív normálalak alkalmas az automatikus tételbizonyításra . Bármely Boole-képlet konvertálható CNF-re. [1] Ehhez használhatja: a kettős tagadás törvénye , de Morgan törvénye , disztributivitás .
Képletek a CNF-ben :
A CNF-ben nem szereplő képletek :
De ez a 3 képlet nem egyenértékű a CNF-ben a következő képletekkel a CNF-ben:
1) Szabaduljon meg a képletben szereplő összes logikai művelettől, és cserélje le őket a főbbekre: konjunkció, diszjunkció, tagadás. Ezt egyenértékű képletekkel lehet megtenni:
2) Cserélje ki a teljes kifejezésre utaló tagadójelet tagadójelekre, amelyek az egyes változók állításaira vonatkoznak, a képletek alapján:
3) Szabadulj meg a kettős negatív előjelektől.
4) Szükség esetén alkalmazza a konjunkció és a diszjunkció műveleteire az eloszlási és abszorpciós képletek tulajdonságait.
Csökkentsük a képletet CNF-re
Alakítsuk át a képletet olyan képletre, amely nem tartalmazza :
A kapott képletben a tagadást átvisszük a változókra, és csökkentjük a kettős tagadásokat:
Az elosztási törvény szerint CNF-et kapunk:
A k -konjunktív normálforma olyan konjunktív normálforma, amelyben minden diszjunkció pontosan k literált tartalmaz .
Például a következő képlet 2-CNF-ben van írva:
Ha egy egyszerű diszjunkcióból hiányzik valamilyen változó (például z), akkor hozzáadjuk a következő kifejezést: (ez magát a diszjunkciót nem változtatja meg), majd az eloszlási törvény segítségével megnyitjuk a zárójeleket :
Így az SKNF-t a CNF-ből nyerik.
A következő formális nyelvtan leírja az összes CNF-re redukált képletet:
<CNF> → <diszjunkt> <CNF> → <CNF> ∧ <diszjunkt> <diszjunkt> → <szó szerinti>; <disjunkt> → (<disjunkt> ∨ <szó szerinti>) <szó szerinti> → <kifejezés> <szó szerinti> → ¬<kifejezés>ahol a <term> tetszőleges logikai változót jelöl.
A számítási komplexitás elméletében fontos szerepet játszik a logikai képletek konjunktív normál formában való kielégíthetőségének problémája . Cooke tétele szerint ez a probléma NP-teljes , és a 3-CNF-ben lévő képletek kielégíthetőségi problémájára redukálódik, amely redukálódik, és amelyre más NP-teljes problémák redukálódnak .
A 2-CNF képletek kielégítési problémája lineáris időben megoldható.
Meg kell jegyezni, hogy az érzékelés megkönnyítése érdekében az aritmetikai szorzás és összeadás szimbólumait gyakran használják kötő- és diszjunkció jelölésére, míg a szorzás szimbólumát gyakran elhagyják. Ebben az esetben a Boole-algebrai képletek algebrai polinomoknak tűnnek, ami ismerősebb a szem számára, de néha félreértésekhez vezethet.
Például a következő bejegyzések egyenértékűek:
Emiatt a CNF-et az orosz nyelvű irodalomban néha "összegek szorzatának" nevezik, ami az angol "product of summas" kifejezésből származó pauszpapír.