Complejidad Computacional: Problemas P y NP
Complejidad Computacional: Problemas P y NP
Complejidad Computacional: Problemas P y NP
Introduccin
Muchas personas pudieran pensar que una computadora con los recursos adecuados y ofreciendo las entradas correctas pudiera resolver un sin fin de problemas, pero como veremos a continuacin para nada eso es cierto. Actualmente existen 7 grandes problemas matemticos, conocidos como los problemas del milenio, que no han podido ser solucionados por el hombre. Uno de esos problemas es de bastante inters para el campo de la computacin, por la estrecha relacin que tiene con los algoritmos, este es El problema de P Versus NP planteando por el matemtico Stephen Cook. La solucin a este problema es de mucha importancia para la teora de la computacin, ya que se cree que si es posible solucionar un problema del tipo NP se podr solucionar todos los otros problemas de este tipo. Es por esta y muchas otras razones que hemos querido indagar un poco en el tema y en el siguiente escrito presentamos algunos puntos que nos pueden ofrecer una idea general sobre estos problemas y de algunas de las formas en la que los expertos han intentado solucionarlos.
Complejidad Computacional: P y NP Antes de que podamos entrar en detalles sobre lo que son los problemas P y NP que se plantean en la teora de la complejidad computacional, es bueno que definamos algunos conceptos. Primero hablemos sobre las clases de complejidad computacional, estas clases no son ms que un grupo de problemas donde solo existe dos decisiones: si o no; y los mismos se relacionan entre s. Tiempo Polinomial, es el tiempo ideal para resolver un problema, es decir, es el tiempo de ejecucin de un algoritmo, que es menor que otro tiempo resultante de un clculo usando una formula polinomial. Una clase P consiste de los problemas que se pueden solucionar usando una maquina determinista (Maquina de Turing) en un tiempo polinomial o de manera fcil. Una clase NP, contienen todos los problemas de decisin que ofrezcan
soluciones positiva/afirmativas que se puedan verificar en un tiempo polinomial. Una definicin formal de la clase P establece que: Es el conjunto de todas las clases L {0,1}n 1 iff x L Tambin la definicin formal para la clase NP dice: Es el conjunto de todas las clases L {0,1}n para las que existe una Maquina de Turing M de tiempo polinomial, y un polinomio P, tal que x {0, 1} n : x L iff y {0, 1} p(n) s.t. M(x,y). Es bueno aclarar que una clase NP no significa No Polinomial, sino, Tiempo Polinomial No Determinista (Nondeterministic Polynomial-time). De estas dos premisas parte la gran pregunta que aun la teora de la complejidad computacional no ha podido resolver: P es Igual a NP?; podemos expresarlo de una manera ms informal preguntando: El tiempo para resolver un problema es igual al tiempo que se necesita para verificar su so lucin? para la cual existe un algoritmo de tiempo polinomial A tal que A(x) =
A pesar de que han pasado ms de 50 aos aun los cientficos y matemticos no han podido dar respuesta a este problema. Este problema es de tanto inters para la comunidad matemtica que el Instituto Clay de Matemticas ofrece un Milln de Dlares por la solucin del mismo. Para tratar los problemas de tipo P y NP tenemos la teora de NP-Completitud que fue elaborada por el cientfico de la computacin Stephen Cook en 1971 y tambin, de manera independiente en 1972 por el Ruso Leonid Levin; es por esto que tambin se le conoce como Teorema Cook-Levin. Bsicamente este teorema establece: Todo problema de la clase NP puede ser reducido en un nmero polinomial de operaciones al problema SAT. NP Completos y NP Difciles Los NP Difciles son la clase de problemas que son al menos tan difcil como todos los problemas de NP. Formalmente L es NP-Difcil si dado un Oracle para L, se puede resolver cualquier problema NP en tiempo polinomial. En otras palabras, L es NP-Difcil si NP PL. Un problema NP Completo es el tipo de problema que es NP-Difcil y NP al mismo tiempo. Por eso se dice que un NP Completo es un problema de los ms difciles en NP. La siguiente grafica nos muestra la relacin que existe entre P, NP, NP-Difcil y NP-Completo:
Segn las demostraciones de Cook y Levin los problemas del tipo NP-Completo existen, sin embargo lo difcil para ellos fue demostrar que muchos problemas comunes son de este tipo. Para demostrar que un problema L es del tipo NP-Completo solo se debe demostrar que L NP, mostrar que algn problema K que se sabe que es NPCompleto se reduce a L y por ultimo construir una reduccin polinomial F del problema NP-Completo en nuestro Problema L. Tambin se suele usar un problema SAT (Sastifacible), que es un tipo de problema consiste en decidir si, dada una formula lgica expresada como conjuncin de disyunciones existe una valuacin de sus variables que haga verdadera . Segn el Teorema Cook-Levin SAT es un problema NP-Completo Hiptesis e Intentos de Prueba La mayora de los tericas de la complejidad computacional creen que P no es igual o no pertenece al conjunto de NP (P NP). Pero eso no significa que no existan razones para no creer que P pueda ser igual a NP. Si se desea probar que P = NP, podemos usar un algoritmo de tiempo polinomial como el 3-SAT o cualquier otro de los tantos mtodos para demostrar problemas NPCompletos. En caso de querer usar un algoritmo de tiempo polinomial podemos considerar el mtodo Greedy, programacin dinmica, reduccin a programacin lineal, etc. Por otro lado si se desea probar que P NP, por lo general se intenta la diagonizacion con reduccin y circuitos booleanos. La diagonizacion se ha usado satisfactoriamente en la computacin terica para probar varios problemas, como el problema Halting.
Conclusin
De lo antes visto en esta investigacin podemos decir que es un tema bastante interesante tanto para las personas que sientan inclinacin por las matemticas, como para los ingenieros de diferentes reas, en especial para los de sistemas y computacin, esto as, porque en teoras como las de Cook, la Maquina de Turing y otros son el fundamento de la computacin moderna. Tambin puedo decir que una vez se tenga una respuesta para las interrogantes que plantean los problemas de tipo P y NP, se tendr un gran avance en la computacin, ya que si se esto se consigue los ingenieros en computacin tendr diferentes alternativas para resolver algoritmos, lo que a su vez puede significar grandes oportunidades de descubrimiento en inteligencia artificial, en las redes neuronales y otros tantos campos de las ciencias de la computacin.
Referencias
Universidad de Buenos Aires. (2006). Obtenido de http://www.dm.uba.ar/materias/optimizacion/2006/1/fbonomo_clase_npc.pdf Anonimo. (03 de Agosto de 2013). Wikipedia. Obtenido de http://es.wikipedia.org/wiki/Clases_de_complejidad_P_y_NP Clay Mathematics Institute. (2006). The Millennium Prize Problems. Cambridge. Goldreich, O. (2008). Computacional complexity: a conceptual perspective. New York: Cambridge University Press. Lewis, H., & Papadimitriou, C. (1998). Elements of Theory of Computation. New Jersey: Prentice Hall.