Professional Documents
Culture Documents
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
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
Si una mquina de Turing determinista resuelve el problema, una no determinista tambin y en igual tiempo (MTD es un caso particular de MTND).
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
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.
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?
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.
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.
(X3) ()
()
()
()
Porque es un problema de decisin Porque podemos construir una mquina de Turing No Determinsta que resuelva el problema en tiempo polinmico.
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.
* /0 */1
* /0 */1
* /0 */1
* /0 */1
* /0 */1
Fase de verificacin:
INSATISFACTIBLE
0/0
^/^
^/^ $/$
-/-
+
1/1
1/1
0/0
$/$
INSATISFACTIBLE
$/$
$/
INSATISFACTIBLE
^/^/* $/$/*
+
-/-/* */*/1
^/ ^/*
*/*/1
+
0
$/$/*
INSATISFACTIBLE
*/
*/
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