16 votos

¿Puede alguien explicarme el 3-CNF?

Hoy estaba leyendo un libro de texto y me topé con la 3-CNF: forma normal conjuntiva. Aparentemente, es una forma conjuntiva, donde cada OR tiene como máximo 3 variables.

¿Podría alguien explicar

  • ¿Cuál es el uso de 3CNF?
  • ¿Cómo se puede convertir CNF en 3CNF? ¿Cómo se puede convertir una fórmula "normal" en 3CNF?
  • ¿Por qué 3CNF tiene como máximo 24 veces más apariciones de variables que la fórmula original?

He intentado buscar en Google, pero sólo he encontrado algunos artículos que tratan de 3CNF en el contexto de la resolución de SAT.

Gracias de antemano y perdón por los errores gramaticales que haya cometido.

0 votos

El límite propuesto para el tamaño de la fórmula depende del tipo de fórmula que se admita como entrada. Si se permite, por ejemplo, el operador de equivalencia $\leftrightarrow$ se obtiene una explosión exponencial.

16voto

John Fouhy Puntos 759

El punto de 3CNF es que es una "forma normal" para las fórmulas: como usted menciona, cada fórmula es equivalente, hasta una ampliación cuadrática (¿lineal?), a una fórmula 3CNF. Las fórmulas 3CNF son "simples" y, por tanto, más fáciles de tratar. En particular, si alguna vez lees sobre la completitud NP, te darás cuenta de que queremos poner nuestros "problemas desafiantes" en una forma tan simple como sea posible. Esto facilita tanto el diseño y el análisis de los algoritmos que resuelven estos problemas, como demostrar que otros problemas también son difíciles reduciendo 3CNF a ellos (mostrando cómo resolver 3CNF usando un algoritmo para ellos).

Nos preocupamos específicamente por 3CNF por razones históricas, fue el primer (o uno de los primeros) problemas NP-completos (consulte el artículo de Cook o el de Karp en sus respectivas páginas). Además, 2CNF no es "completo" (las fórmulas arbitrarias no pueden ser equivalentes a un 2CNF), y es fácil determinar si son satisfacibles o no (busque en Google si está interesado).

La conversión de CNF a 3CNF se explica mejor con un ejemplo. Convertimos cada cláusula por separado. La cláusula $A \lor B \lor C \lor D \lor E$ es equivalente al 3CNF $$(A \lor B \lor x_1) \land (\lnot x_1 \lor C \lor x_2) \land (\lnot x_2 \lor D \lor E), $$ en el sentido de que la fórmula original (en este caso, una sola cláusula) es satisfactoria si la fórmula convertida lo es. Se convierte cada una de las cláusulas y se toma su conjunción.

Suponga que tiene una fórmula arbitraria que utiliza las conectivas $\lnot,\lor,\land$ . Imagínatelo como un árbol, en el que los nodos interiores están etiquetados con $\lnot,\lor,\land$ y cada nodo tiene una ( $\lnot$ ) o dos ( $\lor,\land$ ) niños. Lamento no poder proporcionar una imagen. El primer paso es "empujar las negaciones a las hojas" utilizando las reglas de de Morgan (q.v.). Eso nos libra de todas las $\lnot$ nodos, pero ahora las hojas pueden ser literales (variables o negaciones de variables). Ahora convertimos la fórmula en una CNF de forma recursiva.

Denota por $\varphi$ la función que estamos construyendo, que toma una fórmula como la anterior (con $\land,\lor$ y posiblemente variables negadas) y devuelve un CNF. Para el caso base, tenemos $\varphi(x) = x$ y $\varphi(\lnot x) = \lnot x$ . Para una fórmula de la forma $A \land B$ no tenemos que trabajar mucho: definimos $\varphi(A \land B) = \varphi(A) \land \varphi(B)$ . El caso más difícil son las fórmulas de la forma $A \lor B$ Una opción algo más económica es $$\varphi(A \lor B) = (y \lor \varphi(A)) \land ((\lnot y) \lor \varphi(B)), $$ donde $y$ es una nueva variable, y $y \lor \varphi(A)$ significa añadir $y$ a todas las cláusulas.

Las fórmulas generales con conectivos arbitrarios pueden manejarse expresando los conectivos mediante $\lor,\land,\lnot$ por ejemplo, escribiendo una tabla de verdad; sin embargo, esto puede ser bastante derrochador.

Toda la construcción da lugar a un aumento cuadrático del tamaño de la fórmula (sus "ocurrencias de variables"; hay muchas otras formas de definir el tamaño de la fórmula). Sin embargo, el resultado que citas es sólo una ampliación lineal (de hecho, por un factor de $24$ ). Es muy posible que esa construcción exista, pero yo no la conozco; quizás alguno de los lectores sí. La parte de SAT a 3SAT tiene una ampliación lineal con un factor de $3$ .


Si no permite añadir nuevas variables, entonces no es posible una conversión sencilla. Aunque siempre es posible convertir una fórmula arbitraria en una CNF (utilizando el enfoque de la "tabla de verdad"), no todas las fórmulas son convertibles en una 3CNF sin añadir nuevas variables. Un ejemplo es la paridad en $4$ variables. Además, la conversión de una fórmula arbitraria a una CNF puede dar lugar a una explosión exponencial, por ejemplo para la paridad en $n$ variables pasamos de $\Theta(n^2)$ a $\Theta(n2^n)$ .

0 votos

"La cláusula A \lor B \lor C \lor D \lor E es equivalente a la 3CNF (A \lor B \lor x_1) \land ( \lnot x_1 \lor C \lor x_2) \land ( \lnot x_2 \lor D \lor E)." No lo entiendo. Esas fórmulas no son equivalentes. ¿Qué sentido tiene generar una CNF si no es equivalente a la fórmula original?

0 votos

Por favor, asigne una tarea que satisfaga una fórmula, pero no la otra.

0 votos

Por ejemplo, cuando C y x_2 son verdaderas, mientras que otras variables son falsas.

3voto

Brad Puntos 3206

¿Cómo se puede convertir CNF en 3CNF?

(sólo para añadir a la respuesta anterior)

41 minutos de la conferencia de Ullman - conversión de CNF a 3CNF (con prueba): http://www.youtube.com/watch?v=s9P33IgjwUA

El origen de la conferencia es http://www.coursera.org y en realidad no responde a tus otras preguntas.

2voto

Vijeth PO Puntos 1

Aquí hay que tener cuidado. NO todas las fórmulas son equivalentes a una fórmula 3CNF. Un ejemplo sencillo sería $p\vee q\vee r\vee s$ donde $p,q,r,s$ son variables proposicionales. Ahora, respondamos a las preguntas:

  • Uso de 3CNF: si no todas las fórmulas pueden escribirse de forma equivalente en 3CNF, ¿por qué es útil 3CNF? Porque 3SAT, el problema de decidir si una fórmula 3CNF es satisfactoria, es un problema NP-completo, igual que SAT. Así que, en particular, si quieres saber si una fórmula $\phi$ se puede satisfacer, se puede construir una fórmula $\psi$ en 3CNF tal que $\phi$ es satisfacible si y sólo si $\psi$ es satisfactoria. Eso NO es lo mismo que decir que son equivalentes (puede existir alguna interpretación que haga que $\psi$ cierto pero $\phi$ no es cierto). El hecho de que 3SAT sea NP-completo es muy útil, ya que se puede reducir 3SAT a otros problemas y así demostrar que a su vez son NP-completos (o al menos, NP-duros). Y puede ser MUCHO más fácil reducir a partir de 3SAT en lugar de SAT, ya que 3SAT tiene mucha más estructura: es una forma normal, ya sabes la forma que tiene.
  • Cómo hacer la conversión: siendo "conversión" lo explicado anteriormente, es decir, fórmula dada $\phi$ construir la fórmula $\psi$ en 3CNF tal que $\phi$ es satisfactoria si $\psi$ es satisfactoria. Para ello hay que utilizar un pequeño truco, y se explica en el enlace publicado en otra respuesta, alrededor del minuto 41 del vídeo: https://www.youtube.com/watch?v=s9P33IgjwUA También se explica aquí: https://www.quora.com/Why-is-3-SAT-NP-complete
  • Esto será mucho más claro una vez que hayas entendido la "conversión" de CNF a 3CNF (estamos asumiendo que la fórmula original estaba en CNF).

0voto

Akhil Dixit Puntos 1

Toda fórmula booleana puede expresarse en una fórmula 3CNF equivalente. El problema es que el aumento de tamaño no siempre es polinómico respecto al tamaño de la fórmula original. Por ejemplo, tome cualquier fórmula DNF (que es una disyunción de cláusulas, donde cada cláusula es una conjunción de literales) y forme una CNF o 3CNF equivalente. Esto aumentará exponencialmente el tamaño. ¡Esto va con el hecho de que DNF-SAT es en P, mientras que CNF-SAT es Np-completo! Si obtuvieras una fórmula 3CNF equivalente con una expansión cuadrática o lineal, estarías demostrando que P=NP y recibirías un premio de un millón de dólares del Clay Mathematics Institute.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X