Problema del millon de dolares P VS NP

Anuncio
LOS ALGORITMOS DEL MILLON DE DOLARES
P VS NP
DANIEL MEZA
JUAN POSADA
CESAR SOLINAS
DAVID TOCA
UNIVERSIDAD PILOTO DE COLOMBIA
FACULTAD DE INGENIERIA DE SISTEMAS
ANALISIS DE ALGORITMOS
BOGOTA, 18 DE NOVIEMBRE DE 2010
LOS ALGORITMOS DEL MILLON DE DOLARES
P VS NP
TRABAJO FINAL
INTEGRANTES:
DANIEL MEZA
JUAN POSADA
CESAR SOLINAS
DAVID TOCA
DIRIGIDO A:
PROFESORA DIANA MABEL DIAZ
UNIVERSIDAD PILOTO DE COLOMBIA
CONTENIDO
1. INTRODUCCIÓN.
2. OBJETIVOS.
3. ESTADO DEL ARTE.
4. DESCRIPCION DEL PROBLEMA.
5. EXPLICACION DEL ALGORITMO.
6. CONCLUSIONES.
7. BIBLIOGRAFIA
INTRODUCCION
En este trabajo se pretende dar a conocer el problema del millón de dólares p vs
np definiendo cada uno de estas complejidades y los avances e intentos fallidos,
probables en encontrar la solución a este problema.
OBJETIVOS

Dar a conocer el problema del millón de dólares p vs np.

Comprender el significado de complejidad p.

Comprender el significado de complejidad np.

Explicar cuál es el significado del problema del millón de dólares p vs np.
3. Estado del arte
PROBLEMAS P
En teoría de la complejidad, la clase de complejidad de los problemas de decisión
que pueden ser resueltos en tiempo polinómico calculado a partir de la entrada por
una máquina de Turing determinista es llamada P.
Los problemas contenidos en P son aquellos que pueden ser resueltos en forma
razonablemente rápida. P suele ser la clase de problemas computacionales que
son “eficientemente resolubles” o “tratables”. Aunque también existen problemas
en P que no son tratables en términos prácticos; por ejemplo, unos requieren al
menos n1000000 operaciones.
Problemas notables en P
Algunos problemas naturales son completos para P, incluyendo la conectividad (o
la accesibilidad) en grafos no dirigidos.
P contiene a la mayoría de problemas naturales, algoritmos de programación
lineal, funciones simples,... Por ejemplo la suma de dos números naturales se
resuelven en tiempo polinómico (para ser más exactos es de orden 2n). Entre los
problemas que se pueden resolver en tiempo polinómico nos encontramos con
diversas variedades como los lineales (n), los cuadráticos (n2), los cúbicos (n3),...
Volviendo al ejemplo principal llegamos a la conclusión que la función de elevar al
cuadrado está contenida en la clase P.
Los problemas de complejidad p pertenecen a la clase de complejidad EXPTIME,
los problemas de complejidad EXP es el conjunto de los problemas de decisión
que pueden ser resueltos en una máquina de Turing determinista en tiempo
O(2p(n)), donde p(n) es una función polinomial sobre n.
Se sabe que
P c NP c PSPACE c EXPTIME c EXPSPACE
Y por el teorema de la jerarquía temporal:
P c EXPTIME
De manera que al menos una de las inclusiones de la primera línea debe ser
estricta (se piensa que todas esas inclusiones son estrictas).
Los problemas P-Completo
Otra generalización de P es el tiempo polinómico no uniforme (P/Poly). Si un
problema está en P/poly, entonces puede solucionarse en un tiempo polinomial
determinado el cual, dado una cadena, este solo depende de la longitud de la
entrada. A diferencia de NP, no se comprueban las cadenas defectuosas que
entran en la máquina de Turing, puesto que no es un verificador. En otras palabras
un problema de decisión está en P-completo si está en NP y todo problema de P
puede ser reducido a él en tiempo poli logarítmico en una máquina paralela con un
número polinómico de procesadores. Es decir, un problema A está en P-completo
si para todo problema B en P, existen constantes c y k tales que B puede ser
reducido en A en tiempo O((log n) c) utilizando O (nk),
Generalmente se admite que la clase P contiene todos los problemas "resolubles"
por una máquina secuencial y contiene la clase NC, que consiste en aquellos
problemas que se pueden resolver eficientemente en una máquina paralela. Esto
se debe a que las máquinas paralelas pueden simularse con máquinas
secuenciales. No se sabe si NC=P. En otras palabras, no se sabe si existen
problemas resolubles que son inherentemente secuenciales. Como generalmente
se acepta que P no es igual a NP, generalmente se acepta también que NC y P
son distintos.
El más básico problema P-completo es este: dada una máquina de Turing, una
entrada para esa máquina y un entero T (escrito en notación unaria), determinar si
la máquina se para en los primeros T pasos. Queda claro que el problema es Pcompleto: Si se pudiera paralelizar una simulación general de una máquina
secuencial, se tendría un método general para paralelizar cualquier programa que
corre en esa máquina. Si este problema está en NC, todo problema de P también
estaría en NC.
Este problema ilustra una técnica común utilizada en la teoría de la P-completitud.
El interés no está realmente en saber si un problema se puede resolver
rápidamente en una máquina paralela. Solo interesa saber si la máquina paralela
lo puede resolver muchísimo más rápidamente que la máquina secuencial. Por
tanto, el problema también se puede replantear para que la versión secuencial
esté en P. Es por ello que en este problema se requiere que T esté escrito en
unario. Si un número 'T está escrito como un número binario, el algoritmo
secuencial más obvio puede tomar tiempo 2n. En cambio, si T está escrito como
un número unario (una cadena de n unos, para n=T), solo toma tiempo n. Al
escribir T en unario en lugar de binario, se reduce el algoritmo obviamente
secuencial de tiempo exponencial a lineal, lo cual coloca el problema en la
categoría P. Por tanto estará en NC si y solo si es paralelizable,
Se ha probado que muchos otros problemas son P-completos y por tanto es una
idea generalmente aceptada que se trata de los problemas inherentemente
secuenciales. Los siguientes problemas están en P-completo, sea tal y como
están expresados, sea transformándolos a la forma de un problema de decisión:
 Problema del valor de una compuerta en un circuito (Circuit Value Problem
o CVP) - Dado un circuito booleano, sus entradas y una compuerta lógica
en el circuito, calcular la salida de la puerta
 CVP restringido- Igual al anterior, excepto que cada compuerta tiene dos
entradas y dos salidas (F y su negación), el resto son compuertas NAND, la
entrada de una compuerta viene de la capa inmediatamente anterior
 Programación lineal - Maximizar una función lineal sujeta a restricciones
expresadas como desigualdades
 Búsqueda ordenada en profundidad - Dado un grafo con adyacencias fijas
ordenadas, y dos nodos u y v, saber si el nodo u será visitado antes del
nodo v en una búsqueda en profundidad
 Pertenencia a una gramática libre de contexto - Dado una gramática libre de
contexto y una palabra, saber si la palabra pertenece al lenguaje generado
por la gramática
 Juego de la vida - Dado una configuración general del juego de la vida de
John Conway, una celda particular, y un entero T (en notación unaria),
¿estará la celda viva luego de T pasos?
Para demostrar que un problema es P-completo, típicamente se intenta reducir a
un problema P-completo, utilizando un algoritmo paralelo eficiente.
Existen problemas que no han podido ser clasificados ni en P ni en NP-completo.
Uno de ellos es el problema de factorización entera. Similarmente existen
problemas que no se sabe si están en NC o en P-completo, pero que se piensa
que son difíciles de paralelizar. Uno de ellos es el problema de decisión asociado
al máximo común divisor de dos enteros en notación binaria.
Las pruebas existenciales de algoritmos de tiempo polinómico
Se conoce que algunos problemas son resolubles en tiempo polinómico, pero no
se conoce ningún algoritmo concreto para solucionarlos. Por ejemplo, el teorema
Robertson-Seymour garantiza que hay una lista finita de los menores permitidos
que compone (por ejemplo) el conjunto de los grafos que pueden ser integrados
sobre un toroide; además, Robertson y Seymour demostraron que hay una
complejidad O (n3) en el algoritmo para determinar si un grafo tiene un grafo
incluido. Esto nos da una prueba no constructiva de que hay un algoritmo de
tiempo polinómico para determinar si dado un grafo puede ser integrado sobre un
toroide, a pesar de no conocerse ningún algoritmo concreto para este problema.
Ejemplos
Camino Mínimo: encontrar el camino mínimo desde un vértice origen al resto de
los vértices.
Ciclo Euleriano: Encontrar un ciclo que pase por cada arco de un grafo una única
vez.
NP del inglés
determinado).
nondeterministic polynomial time (tiempo polinomial no
“El concepto de "NP-completo" fue introducido por Stephen Cook en un artículo
titulado 'The complexity of theorem-proving procedures' en las páginas 151-158 de
Proceedings of the 3rd Annual ACM Symposium on Theory of Computing en 1971,
aunque el término "NP-completo" como tal no aparece en el documento. En la
conferencia de ciencias de la computación hubo un intenso debate entre los
científicos de la computación sobre si los problemas NP-completos podían ser
resueltos en tiempo polinómico o en una máquina de Turing determinista. John
Hopcroft llevó a todos los asistentes de la conferencia a consenso concluyendo
que el estudio sobre si los problemas NP-completos son resolubles en tiempo
polinomial debiera ser pospuesto ya que nadie había conseguido probar
formalmente sus hipótesis ni en un sentido ni en otro. Esto se conoce como el
problema ¿P=NP?
Nadie ha sido capaz aun de dar una respuesta final a este problema, haciéndolo
uno de los grandes problemas no resueltos de la matemática. El Clay Mathematics
Institute está ofreciendo una recompensa de un millón de dólares a quien logre dar
una demostración de que P=NP o P≠NP.
El Teorema de Cook demuestra que el problema de satisfacibilidad booleana es
un problema NP-completo. En 1972, Richard Karp demostró que otros problemas
eran también NP-completos (ver Lista de 21 problemas NP-completos de Karp). A
partir de los resultados originales del Teorema de Cook, cientos de problemas se
han descubierto que pertenecen también a NP-completo por reducciones desde
otros problemas que previamente se habían demostrado NP-completos, muchos
de estos problemas han sido recogidos en libro de 1979 de Garey and Johnson's
Computers and Intractability: A Guide to NP-Completeness.”
PROBLEMAS NP
Es la clase de los problemas difíciles de resolver.
Ejemplos: TSP, ciclo hamiltoniano, SAT.
TSP (Travelling Salesman Problem)
“Encontrar una permutación que represente el recorrido de una serie de ciudades
de tal forma que todas sean visitadas (sólo una vez), minimizando la distancia total
viajada.”
Ejemplo: TSP para doce ciudades de Alemania.
PROBLEMAS NP-COMPLETO
Un problema interesante en teoría de grafos es el de isomorfismo de grafos: Dos
grafos son isomorfos si se puede transformar uno en el otro simplemente
renombrando los vértices. De los dos problemas siguientes:
Isomorfismo de grafos: ¿Es el grafo G1 isomorfo al grafo G2?
Isomorfismo de subgrafos: ¿Es el grafo G1 isomorfo a un subgrafo del grafo
G2?
El problema de isomorfismo de subgrafos es NP-completo. Se sospecha que el
problema de isomorfismo de grafos no está ni en P ni en NP-completo, aunque
está en NP. Se trata de un problema difícil, pero no tanto como para estar en NPcompleto.
La forma más sencilla de demostrar que un nuevo problema es NP-completo es
primero demostrar que está en NP y luego transformar polinomialmente un
problema que ya esté en NP-completo a éste. Para ello resulta útil conocer
algunos de los problemas para los que existe prueba de pertenencia a NPcompleto
PROBLEMAS NP-HARD
El problema de la suma de subconjuntos es un ejemplo de problema NP-hard y se
define como sigue: dado un conjunto S de enteros, ¿existe un subconjunto no
vacío de S cuyos elementos sumen cero?
El problema del viajante
El ejemplo clásico de problema "NP-completo" es el
problema del viajante.
Imagina que tienes que visitar 5 ciudades en un viaje de
negocios. Conoces todas las distancias. ¿Cuál es el viaje
más corto que puedes hacer volviendo al punto de partida?
¿ABCEDA? ¿ADECBA?
Una solución
posibilidades.
muy
clara
es
comprobar
todas
las
Pero esto sólo funciona bien si el problema es pequeño. Y si
añades una ciudad nueva tienes que probar otra vez todas
las combinaciones.
Así que este método lleva "tiempo factorial": t = n!
Digamos que el programa pudiera resolver el problema de 20 ciudades en 1
segundo, entonces 21 ciudades llevarían unos 21 segundos. Y 22 ciudades
llevarían unos 462 segundos (más de 7 minutos), y 30 ciudades llevarían 3
millones de años. ¡Ay!
Por suerte, hay maneras especiales de dividir el problema en subproblemas
(llamadas "programación dinámica"), pero aun así la mejor necesita "tiempo
exponencial": t = 2n
Así, un programa que resolviera el problema de 20 ciudades en 1 segundo
tardaría unos 10 minutos en resolver el de 30 ciudades y para 60 ciudades
tardaría 35,000 años.
Pero si tuviéramos la "Computadora Asombrosa" de más arriba, ella podría, por
ejemplo, hacer copias de sí misma para comprobar todas las posibilidades, y
quizás resolver el problema muy rápidamente.
Tiempo polinomial.
Hace referencia al tiempo de complejidad algorítmica, que puede ser expresada
en una función polinomica, por ejemplo O(N2) puede ser considerado como tiempo
polinomial, sin embargo O(2n) no.
Maquina de Turing.
Es un modelo teórico matemático y computacional inventado por Alan turing, su
funcionamiento se resume de la siguiente manera, la maquina recibe información
de entrada por medio de una cinta, esta información se procesa, de modo que la
maquina puede cambiar de estado, si la maquina alcanza un estado final, imprime
el resultado. Está conformado por
1.
2.
3.
4.
5.
Un conjunto finito de estado
Un conjunto finito de símbolos, representando el alfabeto de la entrada
Un estado inicial
Un símbolo que determinado blanco
Un conjunto de estados finales de aceptación
Existen dos tipos de maquinas de turing
Deterministica: solo sigue un camino computacional, es decir, un paso al tiempo
(como los computadores actuales)
No Deterministica: la maquina se bifurca en varias copias que siguen cada una de
las posibles transiciones, es decir, puede dividirse de modo que puede procesar
varios estados al tiempo.
Tiempo de complejidad
Es el tiempo que tarda un algoritmo en su ejecución, en función de la entrada
AVANCES
En los comienzos de agosto de 2010, Vinay Deolalikar anuncio una prueba de
que P no es igual a NP. El escribió.
¨La prueba requiere unir las piezas desde múltiples áreas de las matemáticas. El
mayor esfuerzo en construir esta prueba fue descubriendo una cadena de
enlaces conceptuales entre distintos campos y observándolos a través de lentes
normales. Después de esto se encontraban los obstáculos técnicos se tenían que
encarar en cada nivel de la prueba. Este trabajo se construyo sobre
contribuciones que muchos estimados investigadores han hecho sobre sus
campos. En la presentación de este documento, fue mi intención de proveer al
lector con una comprensión de las herramientas globales para esta prueba. Los
detalles técnicos y computacionales dentro de los capítulos fueron minimizados
tanto como fue posible.¨
Existe una lista de muchos documentos que tratan de contribuir la pregunta P
versus NP. Solo hay un documento que ha aparecido en una revista, es el único
que ha sido verificado por los expertos en el área, y las cuales son aceptadas por
la comunidad de investigadores. El documento de Mihalis Yannakakis. Pero este
documento no soluciona el problema, solo muestra que una cierta aproximación a
solucionar esta pregunta nunca funcionara.
4. Descripción del problema
Supongamos que queremos organizar los cuartos para dormir de un grupo de
400 estudiantes. El espacio es limitado y solo 100 de los estudiantes recibirá
lugares en el dormitorio. Para complicar las cosas el decano ha dado una lista de
parejas de estudiantes incompatibles, y ha pedido que ninguna pareja de esta
lista aparezca en la opción final. Este es un ejemplo de lo que los científicos
llaman un problema NP, el cual es fácil de chequear si una muestra dada de 100
estudiantes propuesta por un compañero de trabajo es satisfactoria (por ejemplo,
ninguna pareja tomada del compañero de trabajo puede aparecer en la lista del
decano.), De todas formas la tarea de generar tal lista de la nada parece tan difícil
como tan completamente impráctica.
Y es cierto, el número total de caminos de escoger 100 estudiantes de 400
aplicantes es mucho más grande que el número de átomos en el universo
conocido. Por esto ninguna civilización futura podría nunca tener la esperanza de
construir una supercomputadora capaz de resolver el problema por fuerza bruta;
esto es, tratando chequear cualquier posible combinación de 100 estudiantes.
De todas formas, esta aparente dificultad podría solo reflejar la falta de
ingenuidad del programador. De hecho, uno de los problemas más impactantes
en la ciencia de la computación es la forma de determinar si existen preguntas
cuyas respuestas puedan ser fácilmente chequeadas, pero que requieran un
tiempo demasiado largo para resolverlas por cualquier procedimiento directo.
Problemas como el del decano parecen de este tipo, pero hasta ahora nadie ha
sido capaz de probar que alguno de ellos es tan difícil como parecen, por
ejemplo, que no hay una forma posible de generar una respuesta con la ayuda de
un computador.
Stephen Cool y Leonid Levin formularon el problema P (fácil de encontrar) versus
NP (Fácil de chequear) independientemente en 1971.
IMPORTANCIA DEL PROBLEMA
Dentro de la clase de complejidad NP, encontramos muchos problemas
interesantes, por ejemplo, está el problema de satisfacción de restricciones, y el
problema del comerciante viajero, así que si se logra probar que N=NP, se
encontraría una solución que resolvería en tiempo polinomio en los computadores
actuales, esto sería aplicable por ejemplo, a la forma en que la información viaja
por las redes, sin embargo, por otro lado, la criptografía también se basa en
algoritmos NP, así que esto también implicaría que los actuales algoritmos de
encriptación podrían ser hackeados fácilmente.
Por otro lado, si se llega a comprobar que P!=NP, no tendría mucho impacto en
las ciencias de la computación, y solo reafirmaría el hecho de que se necesita
enfocar el trabajo en las computadoras cuánticas.
5. Explicación del algoritmo
¿Por qué es difícil probarlo?
Es posible probar que una maquina de turing deterministica (MTD), es un caso
especial de una maquina de turing no-deterministica (MTND), si simplemente se
toma una MTD, como un subestado de MTND, así que en teoría cualquier
problema resolvible por una MTD en un tiempo polinomial, también es resolvible
por una MTND.
También es posible, aunque muy difícil de probar, que una MTND puede emular
una MTD, sin embargo esto implica modifico el tiempo, de polinomio a
exponencial, y aun así esto no prueba que P!=NP.
La primera complicación surge debido a que la MTND en realidad es solo teórica,
así que es difícil comprobar, por ejemplo, que una MTND es más poderosa que
una MTD.
Si se desea probar que P=NP se debe probar a su vez que:
Existe un set de problemas, pertenecientes a NP, tales que exista un algoritmo en
el cual una MTND pueda resolver en un X-tiempo polinomial
Existe un set de problemas, no pertenecientes a P, tales que no exista un
algoritmo en el cual una MTD pueda resolver en un X tiempo polinomial
Comúnmente se piensa que P!=NP, pero hasta que no esté comprobado, no se
puede estar totalmente seguro.
CONCLUSIONES
 Muchos de las soluciones a este problema no son aceptadas porque los
métodos utilizados no están comprobados.
 No hay forma de comprobar el problema del milenio p vs np de forma
práctica.
 Un hardware más avanzados ayudaría a encontrar una solución a este
problema.
6. Bibliografía
http://www.genciencia.com/matematicas/p-versus-np-nunca-lo-entendiste
http://es.wikipedia.org/wiki/Clase_de_complejidad
http://es.wikipedia.org/wiki/P-completo
http://es.wikipedia.org/wiki/NP-completo
http://es.wikipedia.org/wiki/NP_%28Complejidad_computacional%29
http://www.disfrutalasmatematicas.com/conjuntos/np-completo.html
http://es.wikipedia.org/wiki/NP-completo
http://es.wikipedia.org/wiki/NP-hard
http://www.win.tue.nl/~gwoegi/P-versus-NP.htm
http://gregbaker.ca/blog/2010/08/07/p-n-np/
http://www.win.tue.nl/~gwoegi/P-versus-NP/Deolalikar.pdf
http://www.scribd.com/doc/35539144/pnp12pt
http://www.claymath.org/millennium/P_vs_NP/
http://qntm.org/pnp
Descargar