Forma normală conjunctivă ( CNF ) în logica booleană este o formă normală în care o formulă booleană are forma unei conjuncții de disjuncții de literale . Forma normală conjunctivă este convenabilă pentru demonstrarea automată a teoremei . Orice formulă booleană poate fi convertită în CNF. [1] Pentru aceasta puteți folosi: legea dublei negații , legea lui de Morgan , distributivitatea .
Formule în CNF :
Formule care nu sunt în CNF :
Dar aceste 3 formule nu sunt în CNF echivalente cu următoarele formule în CNF:
1) Scăpați de toate operațiile logice conținute în formulă, înlocuindu-le cu cele principale: conjuncție, disjuncție, negație. Acest lucru se poate face folosind formule echivalente:
2) Înlocuiți semnul de negație, referitor la întreaga expresie, cu semne de negație, referitor la declarații de variabile individuale, pe baza formulelor:
3) Scapa de semnele negative duble.
4) Aplicați, dacă este necesar, la operațiile de conjuncție și disjuncție proprietățile formulelor de distributivitate și absorbție.
Să reducem formula la CNF
Să transformăm formula într-o formulă care nu conține :
În formula rezultată, transferăm negația la variabile și reducem negațiile duble:
Conform legii distributivității , obținem CNF:
O formă normală k -conjunctivă este o formă normală conjunctivă în care fiecare disjuncție conține exact k literali .
De exemplu, următoarea formulă este scrisă în 2-CNF:
Dacă o variabilă lipsește într-o disjuncție simplă (de exemplu, z), atunci îi adăugăm expresia: (aceasta nu schimbă disjuncția în sine), după care deschidem paranteze folosind legea distribuției :
Astfel, SKNF este obținut din CNF.
Următoarea gramatică formală descrie toate formulele reduse la CNF:
<CNF> → <disjunct> <CNF> → <CNF> ∧ <disjunct> <disjunct> → <literal>; <disjunct> → (<disjunct> ∨ <literal>) <literal> → <termen> <literal> → ¬<termen>unde <term> denotă o variabilă booleană arbitrară.
În teoria complexității computaționale, un rol important îl joacă problema satisfacabilității formulelor booleene în formă normală conjunctivă. Conform teoremei lui Cooke , această problemă este NP-complet și se reduce la problema de satisfacție pentru formulele din 3-CNF, care se reduce și la care alte probleme NP-complete se reduc la rândul lor .
Problema de satisfacție pentru formulele 2-CNF poate fi rezolvată în timp liniar.
Trebuie remarcat faptul că, pentru comoditatea percepției, simbolurile înmulțirii și adunării aritmetice sunt adesea folosite ca desemnare pentru conjuncție și disjuncție, în timp ce simbolul înmulțire este adesea omis. În acest caz, formulele de algebră booleană arată ca polinoame algebrice, ceea ce este mai familiar pentru ochi, dar poate duce uneori la neînțelegeri.
De exemplu, următoarele intrări sunt echivalente:
Din acest motiv, CNF în literatura de limbă rusă este uneori numit „produsul sumelor”, care este o hârtie de calc din termenul englez „produs al sumelor”.