You are on page 1of 21

PROBLEMAS NP

Juan Romn Alonso

Introduccin Clases de complejidad Problemas P y NP Problema de satisfactibilidad (SAT)


Davis Putnam SAT NP

Introduccin

La complejidad computacional estudia el coste de la resolucin de un problema. El esfuerzo necesario para resolver un problema de forma eficiente puede variar enormemente. Como unidad de medida del tiempo de ejecucin se suele utilizar la Operacin Bsica, para que el rendimiento del algoritmo sea independiente de la potencia del ordenador, la calidad del compilador, la habilidad del programador, etc.

Introduccin ii

Los recursos comnmente estudiados en complejidad computacional son:

El tiempo: mediante una aproximacin al nmero de pasos de ejecucin que un algoritmo emplea para resolver un problema. El espacio: mediante una aproximacin a la cantidad de memoria utilizada para resolver el problema.

Clases de Complejidad

La mayor parte de los problemas en teora de la complejidad tienen que ver con los problemas de decisin, que corresponden a poder dar una respuesta positiva o negativa a un problema dado. Los problemas se clasifican en conjuntos o clases de complejidad (L, NL, P, PCompleto, NP, NP-Completo, NP Duro...) Nosotros nos vamos a centrar en las clases P y NP y fundamentalmente en esta ltima.

Problemas P y NP

LA CLASE P contiene aquellos problemas de decisin que pueden ser resueltos en tiempo polinmico por una MT determinista, esto es, aquellas en las que para cada par estado y smbolo exista a lo sumo una posibilidad de ejecucin. Los problemas de complejidad polinmica son tratables, es decir, en la prctica se pueden resolver en un tiempo razonable. LA CLASE NP contiene los problemas de decisin que son resueltos por una MT no determinista en tiempo polinmico y de ah su nombre: Non-Deterministic Polynomial-time.

Problemas P y NP ii

Naturalmente, cualquier problema en P tambin se encuentra en NP:

Si una mquina de Turing determinista resuelve el problema, una no determinista tambin y en igual tiempo (MTD es un caso particular de MTND).

Pero qu relacin existe entre la clase P y la clase NP?

Problemas P y NP iii

Saber si P=NP o PNP es el ms importante problema abierto en computacin terica. Demostrar que las clases son distintas es uno de los problemas premiados con 1 milln $. Aunque el enigma est lejos de resolverse, parece que las clases son distintas. As que de momento:
Clase NP Clase P

Problemas P y NP iv
Como ejemplos de problemas NP tenemos:

El problema del TSP visto en prcticas. Bin Packing, que consiste en dada una secuencia de nmeros, empaquetarlos en el mnimo nmero de latas posible, teniendo en cuenta que cada lata tiene capacidad M y la suma de los nmeros introducidos en la lata no puede exceder el valor M. Los problemas de satisfactibilidad (SAT) de los que hablaremos a continuacin

Problema de satisfactibilidad (SAT)

El problema de satisfactibilidad (SAT) es un problema de lgica matemtica y la teora de la computacin. La satisfactibilidad proposicional es el problema de decidir si existe una asignacin de 0s y 1s a los tomos de una frmula proposicional que la hacen verdadera. Se puede asumir que las instancias SAT estn expresadas en FNC sin prdida de generalidad.

Problema de satisfactibilidad (SAT) ii

Ejemplo: La asignacin de valores de verdad que satisfacen la frmula ( P Q) ( Q R) ( R P) es P = Q = 1 y R = 0, por lo que la frmula es satisfactible. Ejemplo ii: ( P Q) ( Q P) (P Q) (P Q)
Es satisfactible?

Problema de satisfactibilidad (SAT) iii

La manera obvia para resolver un problema de este tipo con n variables es generar sistemticamente todas las combinaciones posibles (2^n) y parar al encontrar la solucin. Eso est bien para n pequeos....si no el tiempo crece exponencialmente incluso para valores de n no muy grandes.

Problema de satisfactibilidad (SAT) iv


DAVIS-PUTNAM

A comienzos de los sesenta, M. Davis y H. Putnam descubrieron un algoritmo sencillo que mejora ligeramente la bsqueda exhaustiva (su coste no deja de ser exponencial). Se basa en aplicar una regla de resolucin que elimina las variables una por una y aade todos los resolventes al conjunto de clausulas. Se trata de un algoritmo completo: Si existe solucin la encuentra.

Problema de satisfactibilidad (SAT) v


DAVIS-PUTNAM (continuacin)
Sea E la expresin en FNC para la que se busca la asignacin, el pseudocdigo del algoritmo sera:

funcin partir (E)


1. Si E contiene la clusula vaca, el algoritmo termina y devuelve f . 2. Si E no contiene clausulas el algoritmo finaliza devolviendo la asignacin parcial que tenamos en ese momento. 3. Seleccionar la siguiente variable Xi sin asignar de la expresin E 4. partir (E(Xi=0)) 5. partir (E (X i=1))

Problema de satisfactibilidad (SAT) vi


DAVIS-PUTNAM (continuacin)
( X1 X3) ( X1 X2) (X1 X3) X1=0 X1=1

(X3) X2=0 (X3) X2=1 (X3) X2=0

(X3)(X2) X2=1 (X3)

(X3) ()

()

()

()

rbol de decisin de Davis Putnam para un ejemplo

Problema de satisfactibilidad (SAT) vii


SAT NP

Porque es un problema de decisin Porque podemos construir una mquina de Turing No Determinsta que resuelva el problema en tiempo polinmico.

Problema de satisfactibilidad (SAT) viii


SAT NP (C ont)
Una MTND para SAT se construir de la siguiente forma: 1. Emplear la parte no determinista para adivinar y escribir cada una de las posibilidades (2^n siendo n el nmero de variables). 2. Para cada una de las 2^n posibilidades (asignaciones) se comprueba de manera determinista si hace satisfactible la frmula.

Problema de satisfactibilidad (SAT) ix


SAT NP (C ont)
Sea E la expresin en FNC con N variables. En nuestro caso 5 por simplificar a las que llamamos X1,X2...X5. Nuestra MTND tendr 2^N cintas, cada una con una de las posibles asignaciones a las variables al principio y la expresin a continuacin:

0 0 0 0

0 0 0 0

0 0 0 0

0 0 1 1

0 1 0 1

$ $ $ $

X1 X1 X1 X1

X2 X2 X2 X2

^ ^ ^ ^

X3 X3 X3 X3

X4 X4 X4 X4

^ ^ ^ ^

X2 X2 X2 X2

X5 X5 X5 X5

$ $ $ $

1 1 1 1 1 $

X1 X2

X3 X4

X2 X5

$ es fin y comienzo de la expresin, ^ conjuncin (separa las clusulas), - negacin de la siguiente variable.

Problema de satisfactibilidad (SAT) x


SAT NP (C ont)
La mquina constar de dos partes: La primera, no determinista para copiar a la izquierda de la cinta cada combinacin posible (una vez identificado el nmero de variables). La segunda, determinista para asignar cada combinacin a las variables y finalmente dar el veredicto. Si al menos una asignacin hace satisfactible la expresin entonces la frmula es satisfactible. Fase de copia:

* /0 */1

* /0 */1

* /0 */1

* /0 */1

* /0 */1

COPIA CADA COMBINACIN A LAS VARIABLES

Fase de verificacin:
INSATISFACTIBLE

0/0

^/^

^/^ $/$
-/-

+
1/1

1/1

0/0

$/$
INSATISFACTIBLE

$/$

$/

Problema de satisfactibilidad (SAT) xi


SAT NP (C ont)
Turing en su tesis doctoral introdujo un nuevo concepto: Las mquinas con orculos. Son mquinas standard que incluyen instrucciones extra para preguntar al orculo e incorporar las respuestas a la cinta. Son equivalentes a una MTND C on este concepto, la demostracin anterior se reducira a la ltima parte de lo anterior con un orculo capaz de proporcionarnos entre las 2 ^N combinaciones para N variables una combinacin que satisfazga la frmula (si existe).

Problema de satisfactibilidad (SAT) xii


SAT NP (C ont)
Ahora nuestra mquina se rige por la contestacin del orculo (tercer carcter)
*/*/0

INSATISFACTIBLE

^/^/* $/$/*

+
-/-/* */*/1

^/ ^/*
*/*/1

+
0

$/$/*

INSATISFACTIBLE

*/

*/

Problema de satisfactibilidad (SAT) xiii

Al hablar de satisfactibilidad a muchos se les habr venido a la cabeza el famoso juego del Sudoku.

y aunque no lo vamos a ver, a modo de curiosidad el juego se puede expresar como un problema SAT con 729 variables proposicionales y una frmula en FNC de 8829 clusulas.

http://sat.inesc-id.pt/~ines/publications/aimath06.pdf

You might also like