Konjunktiv normalform ( CNF ) i boolesk logik är en normalform där en boolesk formel har formen av en konjunktion av disjunktioner av bokstaver . Den konjunktiva normalformen är lämplig för automatisk satsbevisning . Vilken boolesk formel som helst kan konverteras till CNF. [1] För detta kan du använda: lagen om dubbel negation , de Morgans lag , distributionskraft .
Formler i CNF :
Formler som inte finns i CNF :
Men dessa 3 formler är inte i CNF ekvivalenta med följande formler i CNF:
1) Bli av med alla logiska operationer som finns i formeln, ersätt dem med de viktigaste: konjunktion, disjunktion, negation. Detta kan göras med hjälp av motsvarande formler:
2) Ersätt negationstecken, med hänvisning till hela uttrycket, med negationstecken, med hänvisning till individuella variabelsatser, baserat på formlerna:
3) Bli av med dubbla negativa tecken.
4) Tillämpa, om nödvändigt, egenskaperna för fördelnings- och absorptionsformler på operationerna av konjunktion och disjunktion .
Låt oss reducera formeln till CNF
Låt oss omvandla formeln till en formel som inte innehåller :
I den resulterande formeln överför vi negationen till variablerna och reducerar de dubbla negationerna:
Enligt distributionslagen får vi CNF:
En k -konjunktiv normalform är en konjunktiv normalform där varje disjunktion innehåller exakt k literals .
Till exempel är följande formel skriven i 2-CNF:
Om någon variabel saknas i en enkel disjunktion (till exempel z), lägger vi till uttrycket till den: (detta ändrar inte själva disjunktionen), varefter vi öppnar parenteserna med hjälp av distributionslagen :
Sålunda erhålls SKNF från CNF.
Följande formella grammatik beskriver alla formler reducerade till CNF:
<CNF> → <disjunkt> <CNF> → <CNF> ∧ <disjunkt> <disjunkt> → <bokstavlig>; <disjunkt> → (<disjunkt> ∨ <bokstavlig>) <bokstavlig> → <term> <bokstavlig> → ¬<term>där <term> anger en godtycklig boolesk variabel.
I teorin om beräkningskomplexitet spelas en viktig roll av problemet med tillfredsställelse av booleska formler i konjunktiv normal form. Enligt Cookes teorem är detta problem NP-komplett , och det reduceras till tillfredsställbarhetsproblemet för formler i 3-CNF, vilket reducerar, och till vilket andra NP-kompletta problem minskar i sin tur .
Tillfredsställbarhetsproblemet för 2-CNF-formler kan lösas i linjär tid.
Det bör noteras att för att underlätta uppfattningen används ofta symbolerna för aritmetisk multiplikation och addition som en beteckning för konjunktion och disjunktion, medan multiplikationssymbolen ofta utelämnas. I det här fallet ser booleska algebraformler ut som algebraiska polynom, vilket är mer bekant för ögat, men ibland kan leda till missförstånd.
Till exempel är följande poster likvärdiga:
Av denna anledning kallas CNF i den ryskspråkiga litteraturen ibland "produkten av summor", vilket är ett spårningspapper från den engelska termen "produkt av summor".