Grundläggande logik och modellteori Kapitel 4: Konjunktiv och disjunktiv normalform Henrik Björklund Umeå universitet 15. september, 2014
CNF och DNF Konjunktiv normalform (CNF) Omskrivning av en formel till CNF Disjunktiv normalform (DNF) Lite om komplexitet
Konjunktiv normalform Definition En litteral är en atom eller en negerad atom. En klausul är en formel på formen l 1 l m där m N and l 1,..., l m är litteraler. En formel är på konjunktiv normalform (Conjunctive Normal Form CNF) om den är på formen A 1 A n där n N och A 1,..., A n är klausuler. En formel i CNF är alltså en konjunktion av disjunktioner av litteraler. Exempel: (p r s) (q q) (p r s t) q.
Uppgift 1 Vilka av följande formler är på konjunktiv normalform? A 1 = p q A 5 = p A 2 = (p r) q A 6 = p q r A 3 = (p r) q A 7 = p q r A 4 = p q A 8 = ( p p) (p p)
Lösning 1 A 1 är på CNF då den har två klausuler med en litteral i varje. A 2 är på CNF. A 3 är inte på CNF då den är en disjunktion av konjunktioner. A 4 är på CNF då den består av en enda klausul. A 5 är på CNF då även den består av en enda klausul. A 6 är inte på CNF, även om de implicit parenteserna läggs till (för då får man p (q r) eftersom binder hårdare än. A 7 är på CNF med tre klausuler om vardera en litteral. A 8 är på CNF, en klausul kan innehåller samma litteral flera gånger, även om det är onödigt.
Två specialfall Den tomma formeln är en formel på CNF med 0 klausuler. Den tomma klaususlen (kursboken använder ) är en klausul med 0 litteraler. Är satisfierbar? Är? Svar: Den tomma formeln är en tautologi, eftersom varje tolkning satisfierar alla ingående klausuler. Den tomma klausulen är inte satisfierbar, eftersom ingen tilldelning gör någon av de ingående litteralerna sanna.
Ett exempel på omskrivning till CNF Varje formel kan skrivas om till en ekvivalent formel på CNF. Exempel: (p ( (q r))) ( (r (p s))) ( p ( (q r))) ( (r (p s))) ( p ( q r)) ( r (p s)) ( p ( q r)) ( r ( p s)) ( p ( q r)) (( r p) ( r s)) (A A A A ) (de Morgan) (de Morgan, dubbelneg.) (distr.) (parenteser) ( p q r) ( r p) ( r s)
1. Använd ekvivalenserna samt Omskrivning till CNF i allmänhet A A (A A ) ( A A ) A A A A för att få en formel som endast innehåller, och. 2. Använd de Morgans regler samt A A för att flytta alla negationer in till atomerna. 3. Använd distributivlagen A (A A ) (A A ) (A A ) för att eliminera disjunktioner av konjunktioner. 4. Snygga till formeln genom att ta bort överflödiga parenteser. Formeln kan ev också förenklas, t ex genom att ta bort dubbla litteraler i klausuler. OBS! Kom ihåg att upprepa stegen 2 och 3 tills formeln är på den önskade formen (dvs tills det inte längre går att fortsätta).
Disjunktiv normalform Definition En formel är på disjunktiv normalform (DNF) om den är på formen A 1 A n där n N and A 1,..., A n är konjunktioner av litteraler (dvs på formen l 1 l m där m N and l 1,..., l m är litteraler). Exempel: (p r s) (q q) (p r s t) q. Omskrivning av godtyckliga formler till DNF Funkar på samma sätt som när det gäller CNF men i steg 3 används den duala distributivlagen A (A A ) (A A ) (A A ) istället.
Uppgift 2 Vilka av följande formler är på disjunktiv normalform? A 1 = p q A 5 = p A 2 = (p r) q A 6 = (p q) r A 3 = p r q A 7 = p r A 4 = p q r A 8 = ( p p) (p p)
Lösning 2 A 1 är på DNF då den består av en enda konjunktion. A 2 är inte på DNF då den är en konjunktion av disjunktioner. A 3 är på DNF eftersom den består av en enda konjunktion med tre litteraler. A 4 är på DNF om de implicita parenteserna som följer av prioritetsreglerna läggs till kring p q. A 5 är på DNF och består av en enda konjunktion. A 6 är DNF. A 7 är på DNF och har två konjunktioner, p och r. A 8 är på DNF; en konjunktion kan innehåller samma litteral flera gånger.
Lite om komplexitet (1) Satisfierbarhet av formler i CNF (problemet SAT) är NP-komplett. Satisfierbarhet av formler i DNF (problemet DNF-SAT) är mycket enklare: Säg att två litteraler l, l är komplementära om de är varandras komplement, dvs om en av dem är en atom och den andra är dess negation. En konjunktion av litteraler är satisfierbar om och endast om den inte innehåller komplementära litteraler. Dessutom är en disjunktion A 1 A n satisfierbar om och endast om en av A 1,..., A n är satisfierbar. En formel A 1 A n på DNF är alltså satisfierbar omm någon A i inte innehåller komplementära litteraler. Slutsats: Satisfierbarhet av formler i DNF kan avgöras på linjär tid.
Lite om komplexitet (2) Varför kan SAT inte lösas genom att först konvertera formeln till DNF och sedan lösa DNF-SAT (dvs med hjälp av en reduktion)? Jovisst, det går men... Problemet är att distributivlagen fördubblar den del av formeln som distribueras: A (A A ) ( A A ) ( A A ). Dess iterativa tillämpning kan därmed leda till en formel vars längd är 2 n (exaktare: Ω(2 n )), där n är formelns ursprungliga längd. Den här algoritmen skulle alltså ta exponentiell tid. Det här innebär inget bevis på att det inte går att lösa SAT inom polynomisk tid. Det enda vi för närvarande kan säga är att det inte går på det här viset (samt att P=NP om det skulle gå på något annat sätt).
CNF i praktiken Omvandling av en formel till en logiskt ekvivalent formel på CNF kan också leda till exponentiellt större formler på grund av distributivlagens beteende. Hur ska vi i praktiken kunna undvika detta? Lösningen är att bevara satisfierbarhet snarare än att bevara logisk ekvivalens.
Exempel p q (p q) (( (p q)) ( (q p))) p q q p
Exempel, y 1, y 2, y 3 p q, y 4, y 5, y 6, y 7 φ = (p q) (( (p q)) ( (q p))) p q q p φ = y 1 (y 1 (y 2 y 3 )) (y 2 (p q)) (y 3 (y 4 y 5 )) (y 4 y 6 ) (y 5 y 7 ) (y 6 (p q) (y 7 (q p)
Example φ = y 1 (y 1 (y 2 y 3 )) (y 2 (p q)) (y 3 (y 4 y 5 )) (y 4 y 6 ) (y 5 y 7 ) (y 6 (p q) (y 7 (q p) Notera att φ är en konjunktion av formler som innehåller högst tre litteraler. För varje sådan formel finns en logiskt ekvivalent formel på CNF som har högst tre litteralerper klausul. Till exempel: y 1 (y 2 y 3 ) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) (y 1 y 2 y 3 ) (y 1 y 2 y 3 )
Hur hittar vi dessa formler? Exempel Svar: Genom att titta på sanningstabellen: y 1 y 2 y 3 (y 1 (y 2 y 3 )) T T T T T T F F (y 1 y 2 y 3 ) T F T F (y 1 y 2 y 3 ) T F F T F T T F ( y 1 y 2 y 3 ) F T F T F F T T F F F F ( y 1 y 2 y 3 ) (y 1 (y 2 y 3 )) (y 1 y 2 y 3 ) (y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 )
Exempel (y 1 (y 2 y 3 )) (y 1 y 2 y 3 ) (y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) Detta ger oss (y 1 (y 2 y 3 )) ((y 1 y 2 y 3 ) (y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 )) Använd De Morgans lag: (y 1 (y 2 y 3 )) (y 1 y 2 y 3 ) (y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 )) Och De Morgan igen: (y 1 (y 2 y 3 )) ( y 1 y 2 y 3 ) ( y 1 y 2 y 3 ) (y 1 y 2 y 3 ) (y 1 y 2 y 3 )
CNF i praktiken Notera: Varje konnektiv i orginalformeln ger upphov till en formel med tre litteraler. Varje sådan formel ger upphov till max åtta klausuler med max tre litteraler var. Den nya formeln är alltså linjär i orginalformeln.