You are on page 1of 17

2014

Completitud NP
Teora de la complejidad Computacional y Clases de Problemas computables

Anaitis Garcia 13-1009 Mortimer Echavarria 13-1001 2/24/2014

Universidad Iberoamericana

Mortimer Echavarra Mariez 13-1001 Anaitis Cabrera Garca 13-1009

Lenguajes Formales y Estructura de Autmatas.

Profesor: Doc. Ing. Rina Familia

Articulo Cientfico: Completitud NP

24/02/2014 Santo Domingo, R.D

Resumen Ejecutivo La teora de la complejidad computacional estudia cuales recursos son requeridos para resolver un problema como son el tiempo y el espacio. Por otro y lado la teora de la computabilidad se interesa en expresar los problemas como procesos algortmicos sin tener en cuenta cuales recursos son necesarios para resolver el problema dado.

Los problemas de decisin pueden ser clasificados en conjuntos de complejidad comparable los cuales son llamados clases de complejidad. Entre estas podemos mencionar: L, NL, P, P-Completo, NP, NP-Completo, NP-Duro.

La clase de complejidad P es el conjunto de problemas de decisin que pueden ser resueltos en una maquina determinista en tiempo polinomio lo cual responde por instinto a problemas que puedan ser resueltos en el peor de sus casos.

Un algoritmo de tiempo polinomial tiene una complejidad tal que para el tamao de la entrada del problema existe un polinomio capaz de resolverlo. Esto quiere decir que si por ejemplo, a un viajero le toma 10 minutos hacer un viaje de una ciudad a otra en un recorrido de 10 ciudades, para 20 ciudades le tomara 20 minutos, para 30 ciudades 30 minutos, etc.

La clase de complejidad NP es el conjunto de los problemas de decisin que pueden ser resueltos por una maquina no determinista en tiempo polinomio. En esta clase se encuentran muchos problemas que se desean resolver en la prctica lo cual incluye el problema de factibilidad booleana y el problema del viajante, el camino hamiltoniano para recorrer todos los vrtices una sola vez. La pregunta P=NP, la cual busca responder si P y NP son iguales motivan la introduccin de conceptos de duro y Completo , as como tambin el concepto de intratabilidad que define los problemas que pueden ser resueltos en teora pero no en la prctica.

Introduccin

En nuestra vida cotidiana cuando se observa un problema buscamos una solucin a travs de un mtodo. Este mtodo normalmente se documenta para posibles problemas futuros que puedan aparecer y/o evolucionar. En informtica tenemos dos componentes esenciales para la resolucin de un problema: Primero est el algoritmo, la base, el conjunto de mtodos y/o pasos para resolver el problema y en segundo lugar est el programa, el elemento codificado que se encuentra en el computador en el cual esta expresado el algoritmo. Dichos componentes son muy importantes, pero se debe destacar la importancia del algoritmo, pues este es lo que mueve el programa.

De forma prctica, estos programas que ejecutamos consumen recursos fsicos, esencialmente tiempo y espacio, por ello debemos tomar en cuenta la eficiencia del algoritmo empleado, cual es el mejor camino hacia la solucin? Es efectivo? Ocupa mucho espacio? Ms adelante se respondern preguntas acerca de este tema, que ms bien se refiere a una rama de la computacin: La teora de la complejidad computacional.

Un problema de complejidad computacional tiene un tamao X por la cantidad de datos, esta incgnita puede tener un nivel de complejidad para resolverse dependiendo la cantidad de datos que se tengan a mano. Pero, cabe destacar que no todos los problemas tienen una solucin posible o no todos tienen una solucin ptima, para entender esto, se estudiaran los conceptos de teora de complejidad y sus clases, tales como P, NP, etc.

Teora de la Computacin (Computabilidad) La ciencia de la computacin es el cuerpo sistematizado del conocimiento relativo al clculo. Sus principios base se remontan al diseo de algoritmos realizados por Euclides, al uso de la complejidad asinttica, y a la deducibilidad por parte de los antiguos babilonios.

La ciencia de la computacin descansa sobre dos pilares fundamentales: Los criterios fundamentales subyacentes al clculo que dieron como resultado la existencia de funciones probablemente no calculables o computables, en segundo lugar estn, las tcnicas de ingeniera para la creacin de sistemas de computacin basados en tcnicas de diseo de algoritmos.

Brookshear (1993) dice que: un proceso computacional tambin llamado proceso algortmico o algoritmo, es vital para la ciencia de la computacin, puesto que un programa o computador no puede ejecutar un problema que no tenga una solucin algortmica. As, cualquier limitacin de las capacidades de los procesos computacionales constituye tambin una limitacin de las capacidades la computadora. Segn Grimaldi (1997): evaluar cun eficiente es un algoritmo, tiene mucho que evaluar la complejidad intrnseca del mismo. En 1935, el matemtico y lgico ingls Alan Mathison Turing (1912- 1954 ) se interes en el problema de decisin de Hilbert, el cual preguntaba si poda existir un mtodo general aplicable a cualquier enunciado, para poder determinar si este es verdadero. El enfoque de Turing lo llev a plantear lo que hoy en da se conoce como la mquina de Turing. El tema de computabilidad tiene mucho que ver con la bsqueda de estructuras que son necesarias en un lenguaje de programacin, de tal forma que se asegure que un lenguaje escrito en un lenguaje de programacin X, pueda resolver cualquier problema que tenga solucin algortmica.

Teora de complejidad computacional

Es la rama de la ciencias de la computacin ( Teora de la computacin) la cual estudia de manera terica, la complejidad inherente a la resolucin de un problema computable, as como, la optimizacin de recursos requeridos durante la ejecucin de un algoritmo para resolver un problema.

Dicho de manera simple, estudia los recursos que necesita utilizar un computador para el clculo de la solucin de un problema.

Un clculo resulta complejo si es difcil de realizar, en base a esto podemos definir la complejidad de un problema X como la cantidad de recursos que se necesitan para resolver dicho problema. As, un clculo difcil requerir ms recursos que una de menor de dificultad menor.

Comnmente, el anlisis se basa en dos aspectos:

1) Tiempo: Se utiliza una aproximacin al nmero y al tipo de pasos que ejecuta un algoritmo X para resolver un problema computable.

2) Memoria: Un estimado de la cantidad de memoria utilizada para resolver un problema computable.

Estos no son los nicos aspectos que pueden ser tomados en cuenta, se pueden analizar de igual forma otros parmetros, como por ejemplo la cantidad de procesadores necesarios para resolver el problema de forma eficiente (Procesamiento en paralelo).

Un algoritmo que resuelve un problema pero que tarda mucho en hacerlo, difcilmente ser de mucha utilidad. Igualmente un algoritmo que necesite un gigabyte

de memoria para ser ejecutado, probablemente no ser utilizado, a pesar de que resuelve el problema.

Es importante resaltar que la teora de la complejidad computacional, difiere de la teora de la computacin en que esta nos proporciona informacin acerca de los lmites de la resolucin algortmica de los problema, introduciendo el concepto de computar para mostrar que problemas son decidibles con distintos tipos de maquinas, y diferentes modelos computacionales formales, mientras que la primera nos proporciona estrategias de la medida de complejidad de cada proceso algortmico necesario para resolver un problema computable.

La teora de la complejidad computacional responde a la siguiente pregunta:

Que hace a algunos problemas computacionalmente difciles (o extremadamente difciles) y a otros problemas sencillos?

De tal suerte que esta teora tiene como finalidad proporcionar mecanismos y herramientas capaces de describir y analizar la complejidad innata de un algoritmo y la complejidad intrnseca de un problema computable.

La complejidad intrnseca de un algoritmo, puede ser expresada como una funcin del tamao de la entrada del problema N.

Esto muestra la razn de crecimiento de los recursos con respecto a N: Razn del tiempo de ejecucin temporal (Temporal) : T (n) Razn del espacio de almacenamiento requerido (Espacial) : S (n).

Si un clculo requiere ms tiempo que otro decimos que es ms complejo y lo llamamos complejidad temporal. Si un clculo, por otro lado, requiere ms espacio de almacenamiento que otro problema, entonces decimos que es ms complejo, pero esta

vez hablamos de complejidad espacial.

Es muy obvio, que el tiempo que se requiere para efectuar un clculo en un computador moderno es menor que el que se necesitaba para hacer el mismo en un computador de aos atrs, y es seguro que el tiempo para realizarlo en una mquina de las prximas generaciones ser menor.

Clases de problemas El estudio de los problemas computacionales conduce a la clasificacin de los problemas en dos grandes clases: los problemas con solucin y los problemas sin solucin. Los problemas solucionables, requieren una cantidad considerable de recursos como memoria y espacio de almacenamiento. El anlisis requerido para estimar cual es el uso de recursos de un algoritmo es una cuestin terica y necesita un marco formal.

Los problemas cuya solucin es una solucin con orden de complejidad lineal son problemas que son resueltos en un tiempo que est relacionado linealmente con su tamao. Hoy da, la gran mayora de algoritmos que son resueltos por las maquinas tienen como mximo o lmite una complejidad o costo computacional polinmico, lo cual expresa que la relacin entre el tiempo de ejecucin y el tamao del problema es polinmica. Estos son los problemas agrupados en la clase P (Polynomial-Time).

Se considera que un problema es P cuando este se puede resolver en tiempo polinomial o sea cuando existe un algoritmo con una frmula de ba se polinmica que lo pueda resolver.

La clase P clasifica los problemas de decisin que una MT Determinista puede resolver en un tiempo polinmico.

Los problemas de complejidad polinmica son tratables, es decir en la practica se pueden resolverse en tiempo razonable. La mayora de los problemas corrientes (ordenacin, bsqueda...) pertenecen a esta clase.

Problemas para los cuales se ha encontrado algoritmos polinomiales.

Ordenamiento, bsqueda, caminos ms cortos, componentes fuertes. Circuito Euleriano Multiplicacin de Matrices.

Los problemas cuya relacin entre el tiempo de ejecucin y el tamao del problema no es polinomial, cuyo costo computacional no es polinomial estn agrupados en la clase NP (Non-Deterministic Polynomial-time). Esta clase contiene aquellos problemas de decisin que una MT No Determinista puede resolver en Tiempo polinmico. NP es la clase de todos los problemas decidibles en tiempo polinmico indeterminista.

Estos problemas no tienen solucin algortmica, lo que quiere decir, que una mquina no los puede resolver en un tiempo razonable.

Existe una escala para medir la complejidad, la que incluye entre otros:

P = Resoluble en tiempo polinmico. P-Completo = Los mas difciles de resolver en P. NP = Problemas con respuestas positivas verificables en tiempo polinmico. NP-Completo = Los problemas mas difciles de resolver en NP.

Muchas de estas clases, tienen una co-clase, la cual contiene los problemas complementarios a los de la clase original. Por ejemplo si X esta en NP, el

complemento de X esta en co-NP. Sin embargo es importante sealar que no debe entenderse que NP y co-NP sean complementarios, ya que existen problemas que pertenecen a ambas clases y otros que no estn en ninguna de las dos clases.

Los problemas computacionales desde el punto de vista de la decisin se divide en dos criterios.

Segn la teora de la computabilidad estos pueden ser: -Decidible -Parcialmente decidible -No decidible

Segn la teora de la complejidad: -L -NL -P -P-Completo -NP -NP-Completo -NP-Duro

Es necesario comprender el modelo terico de las maquinas de Turing, para poder obtener una clara comprensin de la clasificacin de los problemas computacionales de acuerdo a la teora de la complejidad.

MT Determinista (Para cada par (estado, smbolo), existe como mximo una transicin a otro estado). MT No Determinista (Existe al menos un par (estado, smbolo), con ms de una transicin a estados diferentes).

En este artculo nos enfocaremos principalmente en los problemas NP-Completos.

Los problemas NP parecen intratables, un problema se dice si no se ha podido descubrir un algoritmo de tiempo polinomial capaz de resolver el problema. Los

problemas que pueden ser resueltos en teora pero no en la prctica, ser llaman intratables.

Sin embargo nadie ha sabido demostrar que los NP son intratables.

Los problemas NP-Completos son todos equivalentes; lo cual quiere decir que si se encuentra un algoritmo eficiente capaz de resolver un NP-Completo entonces tendremos un algoritmo capaz de resolverlos eficientemente a todos. Ahora bien si probamos que para NP- completo X no existe ningn algoritmo eficiente entonces ningn problema de la clase NP lo tendr, por eso decimos que los problemas NP-Completos son equivalentes.

Podemos decir que los problemas NP, para ser NP deben ser reducibles, es decir todos los problemas NP pueden ser reducidos a un solo problema NP en tiempo polinmico.

(Reducir es una manera de convertir un problema en otro de tal manera que la solucin al segundo problema puede ser utilizada para

resolver el primer problema)

La pregunta P = NP El saber si las clases P y NP son iguales es uno de los ms importantes problemas abiertos en las ciencias de la Computacin Terica.

Esta pregunta motivo la introduccin de conceptos como difcil (Hard ) y Completo.

Un conjunto dado de problemas X es hard con respecto a un conjunto de problemas Y (Y pertenecientes a NP) Si X >Y o X = , es decir Y puede ser escrito como un conjunto de soluciones de los problemas X. Simplemente, Y es ms sencillo que X. Aqu, el trmino sencillo es definido en cada caso particular. El conjunto hard ms importante es NP-hard. El conjunto X es completo para Y si es hard para y es tambin un subconjunto de Y. El conjunto completo ms importante es NP-Completo.

Ejemplos de Problemas NP Completos A. El problema del viajante del comercio B. El problema de hacer cierto un circuito booleano (Circuito SAT) C. Asignacin de procesadores (multiprocessor scheduling )

El problema del viajante

El problema del viajante es un problema clsico de los problemas NP-Completos desde el punto de vista de la decisin y es NP-Duro desde el punto de vista de la

optimizacin, tambin llamado TSP por sus siglas en ingles Travelling Salesman Problem.

Un viajero tiene una lista de ciudades, cada punto de ciudad a ciudad tiene su propia distancia, Cul es el camino ms corto para visitar cada ciudad una sola vez y volver a la ciudad de inicio?

Como NP-Completo se ve de esta forma:

Se tiene un grafo con una distancia L, se debe concluir cul es el grafo con menos distancia hacia L.

Dados: n el nmero de ciudades, la matriz de distancias d(i, j) para 1<=i, j < = n, una longitud mxima k

Existe un camino que pasa por todas las ciudades con longitud como mximo k?

Circuito SAT

Dado: un circuito booleano con una nica puerta de salida. Existe una asignacin de valores a las entradas para que la salida es 1?

Asignacin de procesadores (multiprocessor scheduling)

Dadas: N el nmero de tareas, M nmero de procesadores Dur (i) la duracin de la tarea I (i<=n) T tiempo mximo (deadline)

Existe una asignacin de las tareas a los procesadores sin solapes y cumpliendo el deadline?

Problema del clique

Este problema NP-Completo consiste en buscar sub-grafos completos dentro de un grafo dado. Un subgrafo completo es aquel que tiene un conjunto de vertices adyacentes de dos en dos.

En la imagen anterior podemos ver un ejemplo de clique. Los vrtices 3, 4, 5 hacen un

clique ya que 4 y 3 forman un camino adyacente. Pero 1, 5, 6 no hacen clique porque 5 y 6 no son adyacentes.

El problema viene cuando tenemos una gran cantidad de vrtices, para poder determinar por decisin una ruta especificada de cliques.

Pongamos un ejemplo de la vida real, tenemos una red de computadoras a travs de internet, inmensa, de millones de ordenadores, necesitamos determinar la subred ms grande entre esta red, con subred nos referimos a una red con computadores que se conocen entre ellos.

Tomara demasiado tiempo determinar esto buscando por fuerza bruta entre cada subred que existe en internet, realmente tomara tiempo exponencial EXP y por ello es un problema NP-Completo.

Problemas que se han probado ser intratables Problemas no decidibles: Problema Halting. Todos los circuitos amiltonianos de una grfica

Problemas cuya intratabilidad no se ha probado. Pero para los cuales tampoco se conoce un algoritmo de tiempo polinomial.

Circuito Hamiltoniano, TSP Knapsack Satisfactibilidad Cliqu Calendarizacin Optima (Job Scheduling) Cubierta Mnima Corte Mximo.

Conclusin

En conclusin la teora de la complejidad busca abstraer los detalles de los sistemas computacionales y encontrar un algoritmo para realizar clculos sin tener que preocuparse por los detalles de implantacin; siendo as decimos que la funcin es de carcter computable o calculable.

La clase NP se caracteriza por el hecho curioso de que an no se ha encontrado un algoritmo polinomio que pueda comprobar si una solucin posible es vlida o no, lo cual lleva a mtodos de resolucin no deterministas que son aplicados a mtodos de investigacin que brindan soluciones hipotticas que son desestimadas o aceptadas a ritmo polinomio como sealamos anteriormente los problemas de esta clase se denominan NP, la N de No determinista y la P de Polinomio.

Los problemas NP-Completos presentan una gran variedad de problemas, algunos de ellos tienen una complejidad extrema. Estos problemas NP se encuentran en la frontera de la clase NP porque son los ms difciles de la clase NP. Lo interesante de estos problemas es que son equivalentes en el sentido de que si se descubre una solucin P para un problema NP-Completo podramos aplicar esta solucin a todos los problemas NP con lo cual desaparecera la clase NP-Completo del mundo cientfico ya que se carecera de problemas de este tipo.

Referencias
Brookshear, J. G. (1993). Teora de la computacin. Delaware: Addisson Wesley Iberoamericana. Grimaldi, R. (1997). Matemtica discreta y combinatoria. Delaware: Adisson Wesley Iberoamericana.