Konjunktiv normal form - Conjunctive normal form

I boolsk logikk er en formel i konjunktiv normal form ( CNF ) eller klausulær normal form hvis det er en sammenheng av en eller flere ledd , der en klausul er en disjunksjon av bokstavene ; ellers sagt, det er et produkt av summer eller et OG av OR . Som en kanonisk normalform er den nyttig i automatisert teoremvisning og kretsteori .

Alle konjunksjoner av bokstaver og alle disjunksjoner av bokstavene er i CNF, ettersom de kan sees på som konjunksjoner av henholdsvis enbokstav og konjunksjoner av en enkelt klausul. Som i den disjunktive normale formen (DNF), er de eneste proposisjonelle forbindelsene en formel i CNF kan inneholde, og , eller , og ikke . Ikke -operatøren kan bare brukes som en del av en bokstavelig, noe som betyr at den bare kan gå foran en proposisjonsvariabel eller et predikatsymbol .

I automatisert teorem som beviser, brukes begrepet " klausulær normalform " ofte i en smalere forstand, noe som betyr en spesiell fremstilling av en CNF -formel som et sett med bokstaver.

Eksempler og ikke-eksempler

Alle følgende formler i variablene , og er i konjunktiv normal form:

For klarhets skyld er de disjunktive klausulene skrevet inne i parentes ovenfor. I disjunktiv normal form med parenteserte konjunktivklausuler, er det siste tilfellet det samme, men det nest siste er . Konstantene sanne og usanne er angitt med den tomme konjunkten og en klausul bestående av den tomme disjunkten, men er normalt skrevet eksplisitt.

Følgende formler er ikke i konjunktiv normal form:

  • , siden en OR er nestet i et NOT
  • , siden en OG er nestet i en OR

Hver formel kan skrives tilsvarende som en formel i konjunktiv normalform. De tre ikke-eksemplene i CNF er:

Konvertering til CNF

Hver proposisjonsformel kan konverteres til en ekvivalent formel som er i CNF. Denne transformasjonen er basert på regler om logiske ekvivalenser : eliminering av dobbel negasjon , De Morgans lover og distribusjonsloven .

Siden alle proposisjonsformler kan konverteres til en ekvivalent formel i konjunktiv normalform, er bevis ofte basert på antagelsen om at alle formler er CNF. Imidlertid kan denne konverteringen til CNF i noen tilfeller føre til en eksponentiell eksplosjon av formelen. For eksempel overfører følgende ikke-CNF-formel til CNF en formel med setninger:

Spesielt er den genererte formelen:

Denne formelen inneholder setninger; hver klausul inneholder enten eller for hver .

Det finnes transformasjoner til CNF som unngår en eksponentiell økning i størrelse ved å bevare tilfredsheten i stedet for ekvivalens . Disse transformasjonene vil garantert bare øke størrelsen på formelen lineært, men introdusere nye variabler. For eksempel kan formelen ovenfor transformeres til CNF ved å legge til variabler som følger:

En tolkning tilfredsstiller denne formelen bare hvis minst en av de nye variablene er sann. Hvis denne variabelen er , så er begge deler og også sanne. Dette betyr at hver modell som tilfredsstiller denne formelen også tilfredsstiller den opprinnelige. På den annen side tilfredsstiller bare noen av modellene av den opprinnelige formelen denne: siden de ikke er nevnt i den opprinnelige formelen, er deres verdier irrelevante for å tilfredsstille den, noe som ikke er tilfelle i den siste formelen. Dette betyr at den opprinnelige formelen og resultatet av oversettelsen er equisatisfiable men ikke ekvivalent .

En alternativ oversettelse, Tseitin -transformasjonen , inkluderer også klausulene . Med disse klausulene innebærer formelen ; denne formelen blir ofte sett på som "definere" for å være et navn på .

Første ordens logikk

I første ordens logikk kan konjunktiv normal form tas videre for å gi den klausulære normalformen til en logisk formel, som deretter kan brukes til å utføre første ordens oppløsning . I oppløsningsbasert, automatisk teorem-bevising, en CNF-formel

, med bokstavene, er vanligvis representert som et sett med sett
.

Se et eksempel nedenfor .

Beregningskompleksitet

Et viktig sett med problemer i beregningskompleksitet innebærer å finne tildelinger til variablene i en boolsk formel uttrykt i konjunktiv normal form, slik at formelen er sann. Den k -SAT problem er problemet med å finne en tilfredsstillende tilordning til en boolsk formel uttrykt i CNF hvor hver motsetninger inneholder høyst k variabler. 3-SAT er NP-komplett (som alle andre k -SAT-problemer med k > 2) mens 2-SAT er kjent for å ha løsninger i polynomtid . Som en konsekvens er oppgaven med å konvertere en formel til en DNF , bevare tilfredsheten, NP-hard ; dobbeltkrum , konvertering til CNF, bevare gyldighet , er også NP-hard; Derfor er ekvivalensbevarende konvertering til DNF eller CNF igjen NP-hard.

Typiske problemer i dette tilfellet involverer formler i "3CNF": konjunktiv normalform med ikke mer enn tre variabler per konjunkt. Eksempler på slike formler som oppstår i praksis kan være veldig store, for eksempel med 100 000 variabler og 1 000 000 konjunkturer.

En formel i CNF kan konverteres til en equisatisfiable formel i " k CNF" (for k ≥3) ved å erstatte hver konjunkt med mer enn k variabler med to konjunksjoner og med Z en ny variabel, og gjenta så ofte som nødvendig.

Konvertering fra første ordens logikk

For å konvertere første ordens logikk til CNF:

  1. Konverter til negativ form .
    1. Eliminer implikasjoner og ekvivalenser: erstatt gjentatte ganger med ; erstatte med . Etter hvert vil dette eliminere alle forekomster av og .
    2. Flytt NOTs innover ved gjentatte ganger å bruke De Morgans lov . Spesielt erstatt med ; erstatte med ; og bytt ut med ; erstatte med ; med . Etter det kan a bare oppstå umiddelbart før et predikatsymbol.
  2. Standardiser variabler
    1. For setninger som bruker samme variabelnavn to ganger, endrer du navnet på en av variablene. Dette unngår forvirring senere når du slipper kvantifiseringer. Den blir for eksempel omdøpt til .
  3. Skolemize uttalelsen
    1. Flytt kvantifiserere utover: erstatt gjentatte ganger med ; erstatte med ; erstatte med ; erstatte med . Disse erstatningene bevarer ekvivalens, siden det forrige trinnet for standardisering av standardisering sørget for at det ikke forekommer i . Etter disse erstatninger, kan en kvantifiserings forekomme bare på den første prefiks av formelen, men aldri i en , eller .
    2. Gjentatte ganger erstatte med , hvor er et nytt -ary funksjonssymbol, en såkalt " Skolem -funksjon ". Dette er det eneste trinnet som bare bevarer tilfredshet fremfor ekvivalens. Det eliminerer alle eksistensielle kvantifikatorer.
  4. Slipp alle universelle tall.
  5. Fordel ORs innover ANDs: erstatt gjentatte ganger med .

Som et eksempel, formelen sier "Alle som elsker alle dyr, er i sin tur elsket av noen" omdannes til CNF (og senere i klausul form i den siste linjen) som følger (utheving erstatning regel redexes i ):

innen 1.1
innen 1.1
innen 1.2
innen 1.2
innen 1.2
med 2
innen 3.1
innen 3.1
innen 3.2
med 4
med 5
( klausulrepresentasjon )

Uformelt kan Skolem -funksjonen betraktes som å gi personen som er elsket, mens den gir dyret (hvis noen) som ikke elsker. Den tredje siste linjen nedenunder leser så som " elsker ikke dyret , eller annet er elsket av " .

Den andre siste linjen ovenfra , er CNF.

Merknader

  1. ^ Peter B. Andrews, En introduksjon til matematisk logikk og typeteori ,2013, ISBN  9401599343 , s. 48
  2. ^ a b Artificial Intelligence: A modern Approach Archived 2017-08-31 at Wayback Machine [1995 ...] Russell og Norvig
  3. ^ Tseitin (1968)
  4. ^ Jackson og Sheridan (2004)
  5. ^ siden en måte å kontrollere en CNF for tilfredsstillende er å konvertere den til en DNF , hvis tilfredsstillelse kan kontrolleres i lineær tid

Se også

Referanser

Eksterne linker