Konjunktív normál forma

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 .

Példák és ellenpéldák

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:

CNF építése

Algoritmus a CNF felépítéséhez

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.

Példa egy CNF létrehozására

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:

k -konjunktív normálforma

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:

Átállás KNF-ről SKNF -re

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 CNF-et leíró formális nyelvtan

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 CNF-beli képlet kielégíthetőségi problémája

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ó.

Jelölés jellemzői

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.

Lásd még

Jegyzetek

  1. Pozdnyakov S.N., Rybin S.V. Diszkrét matematika. - S. 303.

Irodalom

Linkek