La forma normal conjuntiva ( CNF ) en lógica booleana es una forma normal en la que una fórmula booleana tiene la forma de una conjunción de disyunciones de literales . La forma normal conjuntiva es conveniente para la demostración automática de teoremas . Cualquier fórmula booleana se puede convertir a CNF. [1] Para esto puedes usar: la ley de la doble negación , la ley de Morgan , la distributividad .
Fórmulas en CNF :
Fórmulas que no están en CNF :
Pero estas 3 fórmulas no son equivalentes en CNF a las siguientes fórmulas en CNF:
1) Deshágase de todas las operaciones lógicas contenidas en la fórmula, reemplazándolas por las principales: conjunción, disyunción, negación. Esto se puede hacer usando fórmulas equivalentes:
2) Reemplazar el signo de negación, referido a la expresión completa, por signos de negación, referidos a enunciados de variables individuales, con base en las fórmulas:
3) Deshazte de los signos negativos dobles.
4) Aplicar, en su caso, a las operaciones de conjunción y disyunción las propiedades de distributividad y fórmulas de absorción.
Reduzcamos la fórmula a CNF
Transformemos la fórmula en una fórmula que no contenga :
En la fórmula resultante, trasladamos la negación a las variables y reducimos las dobles negaciones:
De acuerdo con la ley de distributividad , obtenemos CNF:
Una forma normal conjuntiva k es una forma normal conjuntiva en la que cada disyunción contiene exactamente k literales .
Por ejemplo, la siguiente fórmula está escrita en 2-CNF:
Si falta alguna variable en una disyunción simple (por ejemplo, z), entonces le agregamos la expresión: (esto no cambia la disyunción en sí), después de lo cual abrimos los paréntesis usando la ley de distribución :
Por lo tanto, SKNF se obtiene de CNF.
La siguiente gramática formal describe todas las fórmulas reducidas a CNF:
<CNF> → <disyunción> <CNF> → <CNF> ∧ <disyunción> <disjunto> → <literal>; <disyunción> → (<disyunción> ∨ <literal>) <literal> → <término> <literal> → ¬<término>donde <término> denota una variable booleana arbitraria.
En la teoría de la complejidad computacional, el problema de la satisfacibilidad de las fórmulas booleanas en forma normal conjuntiva juega un papel importante . Según el teorema de Cooke , este problema es NP-completo , y se reduce al problema de satisfacibilidad para fórmulas en 3-CNF, que se reduce, y al que se reducen a su vez otros problemas NP-completos .
El problema de satisfacibilidad para fórmulas 2-CNF se puede resolver en tiempo lineal.
Cabe señalar que, para facilitar la percepción, los símbolos de la multiplicación y la suma aritmética se utilizan a menudo como designación de la conjunción y la disyunción, mientras que el símbolo de la multiplicación suele omitirse. En este caso, las fórmulas del álgebra booleana parecen polinomios algebraicos, lo que resulta más familiar a la vista, pero a veces puede dar lugar a malentendidos.
Por ejemplo, las siguientes entradas son equivalentes:
Por esta razón, CNF en la literatura en idioma ruso a veces se denomina "producto de sumas", que es un papel de calco del término inglés "producto de sumas".