Vous êtes sur la page 1sur 16

Problemas P y NP

Joan Manuel Vidal Encarnacin Juan Erasmo Rivera Garcia

13-0980 13-0992

Artculo: Problemas P y NP

Joan Manuel Vidal Encarnacin, Juan Erasmo Rivera Garca Mat. 13-0980 Mat. 13-0992

Prof. Dra. Ing. Rina Familia Teora de Autmatas y Lenguajes Formales

Universidad Iberoamericana (UNIBE) Santo Domingo, Repblica Dominicana 24 de Febrero de 2014

Breve resumen acerca del contenido de este articulo

En este estudio que hemos realizado, estaremos mostrando los problemas P y NP, as como varios ejemplos de los mismos. El propsito de este artculo, es enfatizar los tipos de problemas y las posibles soluciones de los mismo, adicional ver si alguien entiende de forma muy sencilla como explicar los problemas NP y sus soluciones, que conllevara a ganar 1 milln de dlares que propone el Instituto Clay por lograr esta hazaa. Por nuestra parte tambin estaremos explicando que son los problemas P y no tan directamente, pero tambin estaremos explicando los problemas NP que componen un universo tan directo y difcil a su vez. Gracias a la solucin del problema P se descubri como crear el computador, se estima que al descubrir el problema NP se puedo lograr algo superior, ya que es mucho ms complicado este tipo de problemas.

Introduccin En este tema estaremos presentando, el estudio realizado a los tipos de complejidad P (algoritmo determinstico polinomial) y NP (algoritmo no determinstico). Hemos realizado esta investigacin ya que forma parte primordial de la inteligencia computacional y nos estar ayudando a la solucin lgica de muchos problemas, as como tambin tratar de encontrarle una explicacin y solucin a la complejidad tipo NP. Cabe resaltar que al igual a este hay muchas investigaciones realizadas por otros investigadores en el campo, tanto as que hay un instituto que da como premio 1 milln de dlares al que logre resolver los problemas de tipo NP. A continuacin se estarn mostrando toda la informacin que estaba disponible al momento de crear este artculo (se estarn presentando versiones de diferentes fuentes), as como algunos ejemplos de los problemas que se pueden presentar:

Problemas P y NP

La Complejidad Computacional es una rama de la teora de la computacin que estudia, de manera terica, la complejidad inherente a la resolucin de un problema computable, comnmente se estudia el tiempo y el espacio, pero para realizar esto primero debemos introducir la nocin del problema. La complejidad computacional considera globalmente todos los posibles algoritmos para resolver un problema dado. Existen diferencias entre los problemas que pueden ser resueltos por un algoritmo en tiempo polinmico y los problemas para los cuales no se conoce ningn algoritmo polinmico, es decir no es polinmico.

Tiempo polinomial En computacin cuando el tiempo de ejecucin de un algoritmo es menor que un cierto valor calculado, obviamente usando una formula polinomial como por ejemplo logartmica, lineales, cuadrticas o cubicas, se dice que dicho problema se puede resolver en un tiempo polinmico. Clasificacion de los Problemas Los problemas matematicos los podemos dividir en dos grupos: Problemas indecidibles: Aquellos que no se pueden resolver mediante un algoritmo. Problemas decidibles: Aquellos que cuentan al menis con un algoritmo para su cmputo. Sin embargo, un problema decidible puede no ser solucionado por un computador, porque el algoritmo requiere un numero elevado de operaciones para resolverlo. Esto permite separar los problemas decidibles en dos.

No admiten algoritmos razonables Admiten algoritmos razonables Problemas Intratables Problemas Tratables

Problemas Tratables Son los problemas que cuentan con al menos una solucion polinomial. Ejemplo: Todos los algoritmos a los que se la ha podido establecer su tiempo de ejecucin. Problemas Intratables La cuestin de la inclusin estricta entre las clases de complejidad P y NP es uno de los problemas abiertos ms importantes de las matemticas. El Instituto Clay de Matemticas (Cambridge, Massachusetts) premia con un milln de dlares a quin sea capaz de lograr la resolucin de esta conjetura. Alguien en una ocasin me explic ste problema con un ejemplo muy sencillo de entender. Me apostara lo que fuese a que la mayora de los lectores de aqu no sabran resolver manualmente una raz cuadrada, aunque no me cabe ninguna duda a que todos sabran elevar un determinado nmero al cuadrado. Llegamos a la conclusin que resolver una raz cuadrada (que existe un mtodo muy laborioso) es ms complicado o lento que la operacin inversa. Si un problema nos pide que comprobemos si un nmero determinado X es la raz cuadrada de Z podramos resolverlo de dos formas: Calculando la raz de Z y comparando con X (proceso lento y engorroso) bien, elevando al cuadrado a X y comparando con Z (simple multiplicacin XX)

La conclusin que sacamos de ste sencillo ejemplo es que en algunos problemas comprobar la solucin es ms eficiente que calcularla. La complejidad de la funcin elevar al cuadrado es ms simple que calcular la raz cuadrada. Qu tiene que ver

todo esto con P=NP? Pues bien, P es la clase de complejidad que contiene problemas de decisin que se pueden resolver en un tiempo polinmico. P contiene a la mayora de problemas naturales, algoritmos de programacin lineal, funciones simples,... Por ejemplo la suma de dos nmeros naturales se resuelven en tiempo polinmico (para ser ms exactos es de orden 2n). Entre los problemas que se pueden resolver en tiempo polinmico nos encontramos con diversas variedades como los logartmicos (log(n)), los lineales (n), los cuadrticos (n2), los cbicos (n3),... Volviendo al ejemplo principal llegamos a la conclusin que la funcin de elevar al cuadrado est contenida en la clase P. La clase de complejidad NP contiene problemas que no pueden resolverse en un tiempo polinmico. Cuando se dice que un algoritmo no puede obtener una solucin a un problema en tiempo polinmico siempre se intenta buscar otro procedimiento que lo consiga mejorar. Frente a los problemas contenidos en P tienen mtodos de resolucin menos eficaces. Podemos ver que la operacin de calcular la raz cuadrada se encuentra contenida en esta clase. Si nos resulta sencillo encontrar una solucin para un determinado problema, sabemos comprobar si la solucin es cierta (simplemente comparar), por lo que P es un subconjunto de la clase NP. La gran cuestin es si ocurre lo mismo a la inversa, es decir, si tengo un problema que s comprobar fcilmente si un resultado es una solucin, s calcular una solucin sencillamente? Todo problema se puede resolver en tiempo polinmico? Si alguien conoce la respuesta que se dirija al Instituto Clay y recoja su milln de dlares. Las clases P y N P Son clases de problemas de decisin. La N de N P viene de la generacin no determinstica y la P de la vericacin polinomial. Un problema de decisin pertenece a la clase P si existe un algoritmo determinstico polinomial, en el largo de la entrada, que lo resuelve. Un algoritmo determinstico es esencialmente una mquina de Turing. Un problema pertenece a la clase N P si es que es posible generar una solucin.

Algunos ejemplos de problemas de decisin en la clase P: Dado un grafo (V, E), es d la distancia mnima entre el nodo v1 y el nodo v2?. Dada una lista de nmeros L, es la lista L 0 una ordenacin ascendente de L?

El proceso de generacin y vericacin puede ser aclarado con el siguiente esquema:

Los problemas P y NP se relacionan con los problemas de decisin que requieren una respuesta de SI o No. Los problemas P pueden resolverse en Complejidad Polinmica por una maquina determinista que se subdivide en Conjunto P y Conjunto Co-P, en la primera la respuesta es positiva y en la segunda la respuesta es negativa, ambas pueden ser verificadas rpidamente. Sus aplicaciones son el Algoritmo Dijkstra, el cual encuentra un camino corto desde un origen. Y tambin se utilizan en el Ciclo Euleriano que recorre cada vrtice solo una vez en un grafo.

Los problemas NP pueden resolverse en Complejidad no polinmica por una maquina no

determinstica y se aplican en Camino Hamiltoniano, es decir, que pasa por cada vrtice de un grafo una vez. Tiempo polinmico por medio de una informacin extra (certificado) por ejemplo, verificar si un nmero es factorizable y dar un factor de l mismo.
Diagrama de Euler para problemas P, NP, NPcompleto y NP-duro

Un problema es de tipo P si existe un algoritmo polinomial que lo resuelve, dicho de forma intuitiva "si es fcil de resolver". Por ejemplo, cuando sales de viaje normalmente quieres saber cules son los caminos que puedes tomar para ir de tu hotel a varios puntos de la ciudad. Este problema se resuelve fcilmente con el algoritmo de Dijkstra en O(n) operaciones, por lo tanto es de tipo P. Un problema es de tipo NP si existe un algoritmo polinomial que es capaz de verificar una solucin propuesta. Dicho intuitivamente, NP son los problemas que son "fciles de comprobar". Todo problema P es tambin NP, pero parece ser que no es al revs. Continuando con el ejemplo anterior, en el mapa tienes marcado n lugares diferentes de la ciudad y quieres saber si existe un camino que pase por todos esos lugares exactamente una vez (sin repeticin). Este problema es muy fcil de comprobar, si yo te propongo una solucin t rpidamente puedes comprobar en tan solo O(n) operaciones que el camino que yo propuse efectivamente pasa una sola vez por los n sitios. A pesar de que es fcil de comprobar, nadie sabe cmo resolverlo facilmente. Todos los algoritmos que se han descubierto para este problema no son esencialmente mejores que una bsqueda por fuerza bruta (pero nadie ha comprobado que no exista un algoritmo polinomial para resolverlo). Este problema se conoce como el problema de Camino Hamiltoniano.

Algunos ejemplos de problemas pospuestos. El premio por resolver alguno de estos problemas es de un milln de dlares. La descripcin del Instituto Clay sobre el problema P versus NP es ms o menos la siguiente: "Supongamos que ests organizando el alojamiento para un grupo de cuatrocientos estudiantes universitarios. El espacio es limitado y slo cien de los estudiantes recibirn lugares en los dormitorios. Para complicar las cosas, el Decano te ha proporcionado una lista de parejas de estudiantes que presentan incompatibilidad entre s, y pidi que ningn par de la lista aparezca en la distribucin final."

Este es un ejemplo de lo que los cientficos en computacin llaman un problema NP, porque es fcil comprobar si una determinada lista de cien estudiantes propuestos es satisfactoria (es decir, ningn par tomado de lista aparece en la lista de incompatibilidades entregadas por el decano). Sin embargo la tarea de generar una lista desde el principio parece ser tan difcil, como completamente impracticable. De hecho, el nmero total de maneras de elegir un centenar de estudiantes procedentes de los cuatrocientos solicitantes es mayor que el nmero de tomos en el universo conocido! As que ninguna civilizacin futura podra esperar construir un supercomputador capaz de resolver el problema por fuerza bruta, es decir, revisando cada posible combinacin de 100 estudiantes. Sin embargo, esta aparente dificultad slo podra reflejar la falta de ingenio del programador. Uno de los problemas pendientes en ciencias de la computacin es determinar si existen problemas cuya respuesta puede ser rpidamente verificada, pero que requieren un tiempo imposiblemente largo para resolver, por cualquier procedimiento directo. Problemas como el mencionado al principio parecen ser de este tipo, pero hasta ahora nadie ha logrado probar que algunos de ellos son realmente tan difciles como parecen, es decir, que realmente no hay forma viable de generar una respuesta con la ayuda de un computador. Stephen Cook y Leonid Levin formularon en 1971, de forma independiente el problema de P versus NP. La pregunta, en esencia, que propone el problema P versus NP es la siguiente: "Supongan que la solucin a un problema puede ser verificada rpidamente con un computador. Entonces, es posible que la solucin en si misma pueda ser computada rpidamente?" Ustedes dirn, estos son problemas de los matemticos, o de los computlogos y si se resuelven no tiene ninguna importancia prctica. Les sugiero que lo reconsideren, porque un problema matemtico, ms abstracto an, propuesto hace unos 110 aos atrs, llev a la creacin del computador, y gener todos los adelantos tecnolgicos que disfrutamos en la actualidad gracias a la informtica.

Un poco de analoga y sobre la importancia del problema P y NP: Cada mes se publican en ArXiv artculos que dicen resolver el problema. Algunos dicen que P=NP, otros que PNP, etc. La diferencia estuvo en que este artculo en particular haba pasado todos los exmenes que utilizan los tericos en complejidad para discriminar los artculos serios. Adems, este estaba escrito por una persona conocida, y cuando haba enviado una versin preliminar a un grupo selecto de cientficos, uno de los principales, el mismo descubridor del problema y ganador del premio Turing, Stephen Cook, haba escrito en respuesta "esto parece un esfuerzo serio" (del ingls this looks like a serious effort). Esto haba motivado al resto y puso a funcionar una mquina bien aceitada de colaboracin cientfica inigualable en la red. Como lo dijo Dick Lipton, "lo que antes se haca en meses, ahora por Internet lo hacemos en das". Para saber como termin toda la historia recomiendo el post anterior de Alejandro donde tienen todos los enlaces. Aqu me voy a concentrar en la definicin e importancia de P vs NP. A continuacin un pequeo repaso del problema. Antes que nada este es considerado el problema principal, ms importante, de las ciencias de la computacin. Bsicamente el problema es "para ciertos problemas, lo mejor que podemos hacer es una bsqueda bruta", o como escribe Lipton "para ciertos problemas el algoritmo ms obvio es el mejor". NP como sabemos quiere decir "tiempo polinomial no-determinstico", y P "tiempo polinomial determinstico". Entonces los problemas o lenguajes con algoritmos que corren en tiempo polinomial estn en P, y los problemas con algoritmo en tiempo polinomial no-determinstico en NP. Una caracterizacin ms fcil de entender de problemas en NP es la siguiente: Sea A un algoritmo que tiene dos entradas, x que representa una instancia de un problema L (e.g. SAT, TSP, etc), y c que representa una solucin al problema. Entonces L estn en NP si y solo si existe un algoritmo determinstico que corre en tiempo polinomial A y existe un c tal que A(x,c)=1, i.e. que c sea una respuesta vlida al problema. Generalmente a c se le llama solucin, certificado, testigo o simplemente prueba, i.e. una prueba de que x tiene solucin. La misma caracterizacin se puede hacer para P, pero esta vez el algoritmo no tiene una prueba c. Entonces decimos que L est en P si

y solo si existe un algoritmo determinstico que corre en tiempo polinomial A tal que A(x)=1. La gran diferencia est en el certificado. Los algoritmos para lenguajes en P determinan una solucin, mientras que los algoritmos para lenguajes en NP verifican una solucin. Una buena analoga es: si yo resuelvo un problema matemtico por mi mismo (est en P), o estoy verificando la solucin de otra persona (en NP). Entonces, la diferencia radica en que estamos comparando un proceso de determinar una solucin a un problema contra un proceso de verificacin de una solucin ya dada para un problema. P vs NP en trminos computacionales se refiere a cotas inferiores de problemas NPcompletos. La conjetura es que para estos problemas no existe un mejor algoritmo que el de fuerza bruta, i.e. PNP. La mayora de los cientficos creen que esto es cierto, y de ah surgen un montn de alternativas para resolver problemas NP-completos como Bsqueda Local, Algoritmos Genticos, etc. Y la eficiencia de estos mtodos est en que pueden verificar soluciones en tiempo polinomial. En mi humilde opinin, una prueba de que PNP no cambiara mucho las cosas porque todo lo que hacemos ahora, lo hacemos en funcin de que PNP. Por ejemplo, asumimos la existencia de funciones de una va en criptografa Entonces de que nos sirve una prueba de eso? Una prueba no solo nos dice si una hiptesis es falsa o verdadera, sino que al mismo tiempo ganamos mucha informacin acerca del problema mismo. De una prueba de PNP podemos descubrir muchas cone xiones entre reas de conocimiento u objetos que creamos desconectados en nuestra teora. Eso tiene mucho ms valor que una respuesta de falso o verdadero. Esto es lo que est ocurriendo con la prueba de Deolalikar. En el aspecto filosfico, P vs NP hace la siguiente pregunta: Puede la creatividad ser automatizada? Si yo escribo un libro en el que trabaje 1 ao, y lo mando a un peridico para que un crtico lo lea, y la destruye completamente en 2 semanas, Qu es ms difcil, escribir el libro o criticar el libro? Intuitivamente el proceso creativo es ms complejo y requiere ms tiempo, pero hasta que no tengamos una prueba que indique sin duda alguna nunca sabremos, por la misma razn que expuse en el prrafo de

arriba. Simplemente por la curiosidad del hombre, tenemos que saber (esto lo dijo David Hilbert). Tambin la misma pregunta se extiende a otros mbitos como la fsica. La visin de las ciencias de la computacin y una parte de la comunidad de fsicos, es que toda nuestra realidad fsica es computable. Desde la evolucin de los seres vivos, hasta la formacin de galaxias. Todo es visto como un proceso que dado una entrada genera un salida. Entonces salen preguntas como Qu tan complejo es el plegado de protenas? Qu pasa con la informacin y la energa en un hoyo negro que se disipa en forma de radiacin de Hawking? Muchas de estas preguntas estn siendo respondidas por tcnicas de ciencias de la computacin. Por ejemplo, sabemos que si PNP entonces no podemos viajar en el tiempo, o no podemos movernos ms rpido que la luz, y otras conexiones ms extraas. Aun as, ests conexiones dan evidencia a favor de que PNP, o no. As que P vs NP no solo se refiere a problemas que solo interesan a las ciencias de la computacin. Se refiere tambin a problemas fundamentales de otras ciencias. Inclusive podra decirse que es una de las preguntas ms fundamentales de las matemticas. Saber si podemos encontrar pruebas eficientemente nos da conocimiento de cmo resolver otros problemas muy difciles como la Hiptesis de Riemann. Es por ello que el Clay Mathematics Institute lo pone en su lista de problemas fundamentales. Resultados Los resultados obtenidos en esta investigacin nos han inducido a dar una definicin completa de los problemas P y NP con el siguiente grfico.

Conclusin El primer problema natural que se demostr que es completo NP fue el problema de satisfacibilidad booleana. Este resultado fue demostrado por Stephen Cook en 1971, y se lo llam el teorema de Cook. La demostracin de Cook de que la satisfacibilidad es un problema NP-completo es muy complicada. Sin embargo, despus de que este problema se demostrara que es NP-Completo, es fcil demostrar que muchos otros problemas pertenecen a esta clase. Por lo tanto, una amplia clase de problemas en principio inconexos son reducibles unos a otros, y por lo tanto resultan en "el mismo problema" -- un resultado profundo e inesperado.

Bibliografa Baier Aranda, J. (n.d). Introduccin a la Complejidad Computacional. Disponible en: http://web.ing.puc.cl/~jabaier/iic2212/complejidad.pdf Daz Corts, E. (2010). P versus NP. Disponible en: http://www.lnds.net/blog/2010/08/pversus-np.html Jimnez, A. (2006). P versus NP. Nunca lo entendiste? Disponible en: http://www.xatakaciencia.com/matematicas/p-versus-np-nunca-lo-entendiste Universidad del Valle de Guatemala (n.d.). Problemas P y NP Completo. Disponible en: http://streaming.uvg.edu.gt/mediawiki/images/4/4f/MapaconceptualPNP4.jpg Villaga, M. (2010). La Importancia de P vs NP. Disponible en: http://computacioncuantica.blogspot.com/2010/08/la-importancia-de-p-vs-np.html

Vous aimerez peut-être aussi