Naar inhoud springen

Conjunctieve normaalvorm

Uit Wikipedia, de vrije encyclopedie

In de logica is een formule in conjunctieve normaalvorm (Eng. conjunctive normal form, CNF, ook wel afgekort als CNV) als die bestaat uit een conjunctie van disjuncties met literalen (ook een conjunctie van clausules genoemd). In een conjunctieve normaalvorm komen alleen de booleaanse operatoren 'en', 'of' en negatie voor, waarbij de negatie alleen als onderdeel van een literaal kan voorkomen. Er bestaat ook een disjunctieve normaalvorm, een disjunctie van conjuncties.

Elke formule kan omgezet worden naar een equivalente formule in conjunctieve normaalvorm met behulp van equivalentieregels (zoals de wetten van De Morgan en distributiviteit) die de formule omschrijven naar een logisch equivalente vorm in CNF.

Voorbeelden[bewerken | brontekst bewerken]

Voorbeelden van formules in conjunctieve normaalvorm:

De volgende formules zijn niet in conjunctieve normaalvorm:

De volgende formules in conjunctieve normaalvorm zijn respectievelijk logisch equivalent aan de voorgaande drie formules:

Toepassingen[bewerken | brontekst bewerken]

De CNF is onder andere belangrijk in het vakgebied automatisch redeneren, het deelgebied van informatica, waarin computers logische redeneerprocessen uitvoeren. Verschillende klassieke algoritmen in dat vakgebied, zoals het DPLL-algoritme, verwachten een formule in conjunctieve normaalvorm als invoer. Het omschrijven naar de conjunctieve normaalvorm kan met behulp van logische wetten en met de Tseitin-transformatie. Dit algoritme levert een vervulbaarheidsequivalente formule in conjunctieve normaalvorm op en geen logisch equivalente formule.

Conversie naar conjunctieve normaalvorm[bewerken | brontekst bewerken]

Elke formule van de klassieke propositielogica kan omgezet worden naar een CNF door herhaling van de volgende stappen.

  1. Elimineer (bi-implicatie) met behulp van:
  2. Elimineer (implicatie) met behulp van:
  3. Verplaats (negatie) naar binnen met behulp van:
    (elimineren van dubbele negatie)
    (wetten van De Morgan)
    (wetten van De Morgan)
  4. Distribueer over :

Voor de klassieke predicatenlogica bestaat een soortgelijke procedure. In de modale logica is conversie naar CNF niet in alle gevallen mogelijk.

Vervulbaarheid[bewerken | brontekst bewerken]

Binnen de complexiteitstheorie bestaat een vervulbaarheidsprobleem waarbij men onderzoekt of een formule in conjunctieve normaalvorm vervulbaar is; dit probleem heet CNF-SAT.

Het -SAT probleem bestaat uit het vervullen van een formule in conjunctieve normaalvorm waarbij elke disjunct literals bevat. Het probleem 3-SAT is NP-volledig (evenals elk ander '-SAT probleem voor ) terwijl voor 2-SAT een oplossing in polynomiale tijd gevonden kan worden.

Tautologie[bewerken | brontekst bewerken]

Het is mogelijk om in polynomiale tijd te controleren of een formule in conjunctieve normaalvorm een tautologie is (een formule die altijd waar is). Het algoritme in pseudocode:

isCNFTautology(formule F):
 for each conjunct C in F:
   if C bevat geen complementaire literals:
     return false
 return true

Een formule in conjunctieve normaalvorm bestaat uit een conjunctie van disjuncties dus de gehele formule is waar als elk van de conjuncten waar is. Een disjunctie is altijd waar als het complementaire literals bevat (zowel als de negatie daarvan). Het is dus mogelijk om een formule af te lopen en voor elk van de conjuncten te kijken of het complementaire literals bevat. Als dit het geval is voor elk van de conjuncten dan is de formule een tautologie. In de pseudocode hierboven wordt alleen true teruggegeven wanneer dit geldt; als voor een van de conjucten de gegeven voorwaarde niet geldt, dan wordt al gelijk false teruggegeven.

Trivia[bewerken | brontekst bewerken]

  • Een conjunctie staat ook in conjunctieve normaalvorm; elk van de disjuncties bevat exact 1 literal.

Zie ook[bewerken | brontekst bewerken]