stringtranslate.com

Forma normal conjuntiva

En lógica booleana , una fórmula está en forma normal conjuntiva ( CNF ) o en forma normal clausal si es una conjunción de una o más cláusulas , donde una cláusula es una disyunción de literales ; Dicho de otra manera, es un producto de sumas o un AND de OR . Como forma normal canónica , es útil en la demostración automatizada de teoremas y en la teoría de circuitos .

En la demostración automatizada de teoremas, la noción de " forma normal clausal " se utiliza a menudo en un sentido más estricto, es decir, una representación particular de una fórmula CNF como un conjunto de conjuntos de literales.

Definición

Una fórmula lógica se considera en CNF si es una conjunción de una o más disyunciones de uno o más literales . Como en la forma normal disyuntiva (DNF), los únicos operadores proposicionales en CNF son o ( ), y ( ), y no ( ). El operador not solo puede usarse como parte de un literal, lo que significa que solo puede preceder a una variable proposicional .

La siguiente es una gramática libre de contexto para CNF:

  1. CNF → ( Disyunción ) CNF
  2. CNF → ( Disyunción )
  3. DisyunciónDisyunción literal
  4. DisyunciónLiteral
  5. LiteralesVariables
  6. LiteralesVariables

Donde Variable es cualquier variable.

Todas las siguientes fórmulas en las variables y están en forma normal conjuntiva:

Las siguientes fórmulas no están en forma normal conjuntiva:

Conversión a CNF

En lógica clásica cada fórmula proposicional se puede convertir en una fórmula equivalente que está en CNF. [1] Esta transformación se basa en reglas sobre equivalencias lógicas : eliminación de la doble negación , leyes de De Morgan y la ley distributiva .

Algoritmo básico

El algoritmo para calcular un equivalente CNF de una fórmula proposicional dada se basa en la forma normal disyuntiva (DNF) : paso 1. [2] Luego se convierte intercambiando AND con OR y viceversa mientras se niegan todos los literales. Eliminar todo . [1]

Conversión por medios sintácticos

Convertir a CNF la fórmula proposicional .

Paso 1 : convierte su negación a forma normal disyuntiva. [2]

, [3]

donde cada uno es una conjunción de literales . [4]

Paso 2 : Negar . Luego, muévase hacia adentro aplicando las equivalencias (generalizadas) de De Morgan hasta que ya no sea posible.

dónde

Paso 3 : Elimina todas las dobles negaciones.

Ejemplo

Convertir a CNF la fórmula proposicional . [5]

El equivalente (completo) DNF de su negación es [2]

Conversión por medios semánticos

Se puede derivar un equivalente CNF de una fórmula a partir de su tabla de verdad . De nuevo, considere la fórmula

. [5]

La tabla de verdad correspondiente es

Un equivalente de CNF es

Cada disyunción refleja una asignación de variables cuya evaluación es F(alse). Si en tal asignación una variable

Otros enfoques

Dado que todas las fórmulas proposicionales se pueden convertir en una fórmula equivalente en forma normal conjuntiva, las pruebas a menudo se basan en el supuesto de que todas las fórmulas son CNF. Sin embargo, en algunos casos esta conversión a CNF puede provocar una explosión exponencial de la fórmula. Por ejemplo, traducir la fórmula no CNF

en CNF produce una fórmula con cláusulas:

Cada cláusula contiene o para cada uno .

Existen transformaciones en CNF que evitan un aumento exponencial de tamaño al preservar la satisfacibilidad en lugar de la equivalencia . [6] [7] Se garantiza que estas transformaciones solo aumentarán linealmente el tamaño de la fórmula, pero introducirán nuevas variables. Por ejemplo, la fórmula anterior se puede transformar en CNF agregando variables de la siguiente manera:

Una interpretación satisface esta fórmula sólo si al menos una de las nuevas variables es verdadera. Si esta variable es , entonces ambos y también son verdaderos. Esto significa que cada modelo que satisface esta fórmula también satisface la original. Por otro lado, sólo algunos de los modelos de la fórmula original satisfacen éste: dado que no se mencionan en la fórmula original, sus valores son irrelevantes para su satisfacción, lo que no ocurre en la última fórmula. Esto significa que la fórmula original y el resultado de la traducción son equisatisfacibles pero no equivalentes .

Una traducción alternativa, la transformación de Tseitin , incluye también las cláusulas . Con estas cláusulas, la fórmula implica ; A menudo se considera que esta fórmula "define" como un nombre para .

Número máximo de disyunciones

Considere una fórmula proposicional con variables, .

Hay posibles literales: .

tiene subconjuntos no vacíos. [8]

Este es el número máximo de disyunciones que puede tener un CNF. [10]

Todas las combinaciones de funciones de verdad se pueden expresar con disyunciones, una para cada fila de la tabla de verdad. En el siguiente ejemplo están subrayados.

Ejemplo

Considere una fórmula con dos variables y .

El CNF más largo posible tiene disyunciones: [10]

Esta fórmula es una contradicción .

Complejidad computacional

Un conjunto importante de problemas de complejidad computacional implica encontrar asignaciones a las variables de una fórmula booleana expresada en forma normal conjuntiva, de modo que la fórmula sea verdadera. El problema k -SAT es el problema de encontrar una asignación satisfactoria a una fórmula booleana expresada en CNF en la que cada disyunción contiene como máximo k variables. 3-SAT es NP-completo (como cualquier otro problema de k -SAT con k >2), mientras que se sabe que 2-SAT tiene soluciones en tiempo polinomial . Como consecuencia, [11] la tarea de convertir una fórmula en un DNF , preservando la satisfacibilidad, es NP-difícil ; dualmente , convertir a CNF, preservar la validez , también es NP-duro; por lo tanto, la conversión que preserva la equivalencia a DNF o CNF es nuevamente NP-duro.

Los problemas típicos en este caso involucran fórmulas en "3CNF": forma normal conjuntiva con no más de tres variables por conjunción. Los ejemplos de este tipo de fórmulas que se encuentran en la práctica pueden ser muy grandes, por ejemplo con 100.000 variables y 1.000.000 de conjunciones.

Una fórmula en CNF se puede convertir en una fórmula equisatisfactible en " k CNF" (para k ≥3) reemplazando cada conjunción con más de k variables por dos conjunciones y con Z una nueva variable, y repitiendo tantas veces como sea necesario.

Lógica de primer orden

En la lógica de primer orden, la forma normal conjuntiva se puede llevar más lejos para producir la forma normal clausal de una fórmula lógica, que luego se puede utilizar para realizar una resolución de primer orden . En la demostración automatizada de teoremas basada en resolución, una fórmula CNF

Vea a continuación un ejemplo.

Conversión de lógica de primer orden

Para convertir lógica de primer orden a CNF: [13]

  1. Convertir a forma normal de negación .
    1. Eliminar implicaciones y equivalencias: reemplazar repetidamente con ; reemplazar con . Con el tiempo, esto eliminará todas las apariciones de y .
    2. Mueva los NOT hacia adentro aplicando repetidamente la ley de De Morgan . Específicamente, reemplácelo con ; reemplazar con ; y reemplazar con ; reemplazar con ; con . Después de eso, a puede aparecer sólo inmediatamente antes de un símbolo de predicado.
  2. Estandarizar variables
    1. Para oraciones como las que usan el mismo nombre de variable dos veces, cambie el nombre de una de las variables. Esto evita confusiones posteriores al eliminar cuantificadores. Por ejemplo, se le cambia el nombre a .
  3. Skolemizar la declaración
    1. Mueva los cuantificadores hacia afuera: reemplácelos repetidamente con ; reemplazar con ; reemplazar con ; reemplazar con . Estos reemplazos preservan la equivalencia, ya que el paso anterior de estandarización de variables aseguró que eso no ocurriera en . Después de estos reemplazos, un cuantificador puede aparecer solo en el prefijo inicial de la fórmula, pero nunca dentro de , o .
    2. Reemplace repetidamente con , donde hay un nuevo símbolo de función -aria, la llamada " función Skolem ". Este es el único paso que preserva sólo la satisfacibilidad y no la equivalencia. Elimina todos los cuantificadores existenciales.
  4. Elimina todos los cuantificadores universales.
  5. Distribuya los OR hacia adentro sobre los AND: reemplácelos repetidamente con .

Ejemplo

Como ejemplo, la fórmula que dice "Cualquiera que ama a todos los animales, es a su vez amado por alguien" se convierte en CNF (y posteriormente en forma de cláusula en la última línea) de la siguiente manera (resaltando las reglas de reemplazo redex en ):

Informalmente, se puede considerar que la función Skolem produce la persona que es amada, mientras que produce el animal (si lo hay) que no ama. La tercera y última línea desde abajo dice " no ama al animal , o es amado por " .

La penúltima línea desde arriba, es el CNF.

Ver también

Notas

  1. ^ ab Howson 2005, pág. 46.
  2. ^ abc ver Forma normal disyuntiva#Conversión a DNF
  3. ^ número máximo de conjunciones para
  4. ^ número máximo de literales para
  5. ^ ab = (( NO (p Y q)) IFF (( NO r) NAND (p XOR q)))
  6. ^ Tseitín 1968.
  7. ^ Jackson y Sheridan 2004.
  8. ^
  9. ^ me gusta
  10. ^ ab Se supone que las repeticiones y variaciones [9] basadas en la conmutatividad y asociatividad de y no ocurren.
  11. ^ dado que una forma de verificar la satisfacibilidad de un CNF es convertirlo en un DNF , cuya satisfacibilidad se puede verificar en tiempo lineal
  12. ^ número máximo de disyunciones número máximo de literales
  13. ^ Russel & Norvig 2010, págs. 345–347, 9.5.1 Forma normal conjuntiva para lógica de primer orden.

Referencias

enlaces externos