Konjunktivní normální forma ( CNF ) v booleovské logice je normální forma , ve které má booleovská formule formu konjunkce disjunkcí literálů . Konjunktivní normální forma je vhodná pro automatické dokazování věty . Jakýkoli booleovský vzorec lze převést na CNF. [1] K tomu můžete použít: zákon dvojí negace , de Morganův zákon , distributivita .
Vzorce v CNF :
Vzorce , které nejsou v CNF :
Ale tyto 3 vzorce nejsou v CNF ekvivalentní následujícím vzorcům v CNF:
1) Zbavte se všech logických operací obsažených ve vzorci a nahraďte je těmi hlavními: konjunkce, disjunkce, negace. To lze provést pomocí ekvivalentních vzorců:
2) Nahraďte znaménko negace odkazující na celý výraz za znaménko negace odkazující na jednotlivé výroky proměnných na základě vzorců:
3) Zbavte se dvojitých negativních znamének.
4) Aplikujte, je-li to nutné, na operace konjunkce a disjunkce vlastnosti vzorců distributivity a absorpce.
Zredukujeme vzorec na CNF
Převedeme vzorec na vzorec, který neobsahuje :
Ve výsledném vzorci převedeme negaci na proměnné a snížíme dvojité negace:
Podle zákona distributivity dostaneme CNF:
K -konjunktivní normální forma je konjunktivní normální forma, ve které každá disjunkce obsahuje přesně k literálů .
Například následující vzorec je napsán v 2-CNF:
Pokud v jednoduché disjunkci nějaká proměnná chybí (například z), pak k ní přidáme výraz: (tím se samotná disjunkce nemění), načež závorky otevřeme pomocí distribučního zákona :
SKNF se tedy získává z CNF.
Následující formální gramatika popisuje všechny vzorce redukované na CNF:
<CNF> → <disjunkt> <CNF> → <CNF> ∧ <disjunkt> <disjunkt> → <doslovný>; <disjunkt> → (<disjunct> ∨ <literal>) <doslovný> → <termín> <doslovný> → ¬<termín>kde <term> označuje libovolnou booleovskou proměnnou.
V teorii výpočetní složitosti hraje důležitou roli problém splnitelnosti booleovských formulí v konjunktivním normálním tvaru. Podle Cookova teorému je tento problém NP-úplný a redukuje se na problém splnitelnosti pro vzorce v 3-CNF, který se redukuje a na který se postupně redukují další NP-úplné problémy .
Problém splnitelnosti pro vzorce 2-CNF lze vyřešit v lineárním čase.
Je třeba poznamenat, že pro usnadnění vnímání jsou symboly aritmetického násobení a sčítání často používány jako označení pro konjunkci a disjunkci, zatímco symbol násobení je často vynechán. V tomto případě vzorce Booleovské algebry vypadají jako algebraické polynomy, což je oku známější, ale někdy to může vést k nedorozuměním.
Například následující položky jsou ekvivalentní:
Z tohoto důvodu se CNF v ruskojazyčné literatuře někdy nazývá „součin součtů“, což je pauzovací papír z anglického výrazu „produkt součtů“.