Konjunktiv normalform

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 .

Exempel och motexempel

Formler i CNF :

Formler som inte finns i CNF :

Men dessa 3 formler är inte i CNF ekvivalenta med följande formler i CNF:

Konstruktion av CNF

Algoritm för att konstruera 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 .

Ett exempel på att konstruera en CNF

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:

k -konjunktiv normalform

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:

Övergång från KNF till SKNF

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.

Formell grammatik som beskriver 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.

Tillfredsställbarhetsproblemet för en formel i CNF

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.

Notationsfunktioner

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

Se även

Anteckningar

  1. Pozdnyakov S.N., Rybin S.V. Diskret matematik. - S. 303.

Litteratur

Länkar