La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos Introducción a Teoría de NP-Completitud.

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos Introducción a Teoría de NP-Completitud."— Transcripción de la presentación:

1 Diseño y análisis de algoritmos Introducción a Teoría de NP-Completitud

2 Temario Introducción a Teoría de NP-Completitud Ejemplo de clave simétrica Introducción Intratabilidad Problemas Las clases P y NP Problema SAT Reducibilidad polinómica Problemas NP-Completos Problemas NP-Duros Algoritmos Aproximados

3 Introducción a Teoría de NP-Completitud Introducción Complejidad computacional Considera globalmente todos los posibles algoritmos para resolver un problema dado En esta teoría interesan los problemas que pueden ser resueltos por un algoritmo en tiempo polinónmico(tratable) y los problemas para los cuales no se conoce ningún algoritmo polinómico (es decir, el mejor algoritmo conocido es no polinómico y por lo tanto intratable) La teoría de la NP-Completitud no proporciona un método para obtener algoritmos de tiempo polinómico. Tampoco dice que estos algoritmos no existan. Lo que muestra es que muchos de los problemas para los que no se conoce algoritmos polinómicos están relacionados (computacionalmente) Además de los problemas P y NP existen dos clases de problemas: NP-completos NP-duros

4 Introducción a Teoría de NP-Completitud Introducción Un problema NP-completo tiene la propiedad de que puede ser resuelto en un tiempo polinómico si y sólo si todos los problemas NP-completos puede ser resuelto en un tiempo polinómico. Si un problema NP-duro puede ser resuelto en un tiempo polinómico, entonces todos los problemas NP-completos puede ser resuelto en un tiempo polinómico Con el análisis de algoritmos se ha tratado de demostrar que un problema bajo estudio puede resolverse en un tiempo que está en, para alguna función Por otro lado se busca una función lo más grande posible tal que se pueda demostrar que cualquier algoritmo que resuelva correctamente el problema (en todos sus casos) necesita de un tiempo, al menos Cuando se habrá encontrado un algoritmo o más eficiente posible (salvo por las constantes mutiplicativas ocultas) Ejemplo: multiplicación de matrices, su cota inferior es ¿Se puede encontrar un algoritmo ? Como el mejor algorimo es se puede seguir investigando

5 Introducción a Teoría de NP-Completitud Intratabilidad Def: un algoritmo de tiempo polinómico, es aquél cuya complejidad en tiempo en el caso peor, está acotada por un polinomio (en relación al tamaño de la entrada) Son polinómicos los de complejidad:,, No son polinómicos los de complejidad Un problema es intratable si no se puede resolver en tiempo polinómico.(Es una propiedad del problema). Caso contrario, es tratable. Dos categorías generales se pueden definir para los tipos intratables: Problemas que se han demostrado intratables Problemas que no se han demostrado intratables, pero para los cuales no se ha encontrado un algoritmo polinómico.

6 Introducción a Teoría de NP-Completitud Intratabilidad Ejemplos de algoritmos polinómicos vistos: Ordenamiento (quickSort) : Búsqueda Binaria: Multiplicación de matrices estándar: Caminos más cortos en un grafo: Muchos de los ejemplos anteriores pueden tener algoritmos no polinómicos que los resuelven. Pero eso no quiere decir que los problemas no sean tratables. Existen dos tipos, de problemas, para los cuales se ha demostrado su intratabilidad: Problemas que generan una cantidad no polinomial de salidas. Ejemplo, determinar todos los circuitos Hamiltonianos (un circuito hamiltoniano es un camino de un grafo de n nodos, que visita una vez cada nodo y vuelve al nodo de partida.) pueden ser hasta (n-1)! Porblemas para los que se les puede probar que no se pueden resolver en un tiempo polinomial

7 Introducción a Teoría de NP-Completitud Intratabilidad Porblemas para los que se les puede probar que no se pueden resolver en un tiempo polinomial. Por extraño que parezca, se han encontrado pocos problemas de este tipo: Problemas indecidibles: no existe algoritmo que los resuelva. Problema de parada. Problemas decidibles: generalmente construídos artificialmente, con aplicaciones prácticas. Existen problemas para los cuales no se ha encontrado un algoritmo polinomial, pero nadie ha demostrado que dicho algoritmo no sea posible: Problema de la mochila Problema del vendedor viajero Problema de la suma de subconjuntos Problema de coloreado de grafos Problema de los circuitos hamiltonianos Existe una relación interesante entre muchos de estos tipos de problemas : la estudia la teoría de la NP-completitud

8 Introducción a Teoría de NP-Completitud Problemas Inicialmente nos restringiremos a problemas de decisión : la salida de un problema de decisión es simplemente sí o no. En el curso se mostraron muchos de los problemas anteriores como problemas de optimización. Cada problema de tiene un problema de decisión correspondiente. Ejemplos: Problema del vendedor viajero: dado un grafo dirigido con arcos valorados, el problema de optimización consiste en encontrar un circuito de costo mínimo, que empiece en un nodo, acabe en ese nodo y visite al resto de los nodos exáctamente una vez. El problema de desición asociado consiste en determinar, dado un positivo d, si el grafo tiene un circito de costo no mayor que d. Problema de coloreado de grafos: Determinar el mínimo número de colores necesario para colorear un grafo, de tal forma que no haya dos vértices adyacentes con el mismo color. El problema de decisión correspondiente consiste en, dado un entero m, determinar si existe un coloreado que utilice como mucho m colores.

9 Introducción a Teoría de NP-Completitud Problemas Problema del Cliqué: un cliqué de un grafo no dirigido G(V,A), es un conjunto W de V, tal que cada vértice de W es adyacente al resto de vértices en W. W={a,b,c,d} El problema de optimización del cliqué consiste en maximizar el tamaño del cliqué El problema de decisión del cliqué consiste en determinar, dado un número entero positivo k, si existe para el grafo un cliqué que contenga al menos k vértices. No se han encontrado algoritmos polinomiales para los problemas descritos ya sea para su versión de optimización o de decisión. Sin embargo, si se desarrollara un algoritmo polinómico para el problema de optimización, se tendría también un algoritmo polinómico para su versión de decisión. Una solución al problema de optimización, produce una solución del correspondiente problema de decisión. Por lo que al comienzo se estudiarán los problemas de decisión para pasar luego a los de optimización.

10 Introducción a Teoría de NP-Completitud Las clases P y NP Definición: P es el conjunto de todos los problemas de decisión que pueden ser resueltos por un algoritmo polinomial. ¿Qué problemas de decisión están en P? ¿Qué problemas de decisión no están en P? Un algoritmo no determinista está compuesto por dos fases: 1.Fase de adivinación (no determinista):dada una instancia o conjunto de datos para un problema dado, produce una salida S, que puede entenderse como una supuesta solución. 2.Fase de verificación (determinista):Dada la instancia y la salida S, y procediendo de forma determinista, o se devuelve cierto lo cual significa que se ha verificado que la respuesta para la instancia es si, o devuelve falso. Teóricamente, se dice que un algoritmo no determinista resuelve un problema de decisión si: 1.Para cualquier instancia par la cual la respuesta es si hay alguna salida S, para la cual la fase de verificación devuelve cierto. 2.Para cualquier instancia par la cual la respuesta es no no hay ninguna salida S, para la cual la fase de verificación devuelva verdadero

11 Introducción a Teoría de NP-Completitud Las clases P y NP Ejemplo: Problema del Vendedor viajero Supongamos que dado un grafo G(V,A) y un número d, una persona asegura que la respuesta al problema es si, es decir asegura que hay un circuito con costo total inferior a d. Es razonable pedirle que pruebe su afirmación, mostrando o produciendo un circuito hamiltoniano de costo no superior a d. Si la persona produce, por ejemplo S, una lista de todos los vértices del grafo, se podría construir un algoritmo que verificara si la ruta determinada por S tiene un costo menor a d. funcion verificar(G,d,S):booleano inicio si S es circuito and costo_total(S) <=d entonces devolver verdadero sino devolver falso fin-si fin Ejercicio:implementar el algoritmo con más detalle y mostrar que su complejidad es polinomial.

12 Introducción a Teoría de NP-Completitud Las clases P y NP Definición: Un algoritmo no determinístico de tiempo polinomial es un algoritmo no determinista cuya fase de verificación es un algoritmo de tiempo polinomial Definición : NP es el conjunto de todos los problemas de decisión que pueden ser resueltos por algoritmo no determinísticos de tiempo polinomial. NP viene de Nondeterministic Polinomyal Para que un problema esté en NP debe existir un algoritmo que haga la verificación en tiempo polinómico. Ya que se puede verificar con un algoritmo polinomial el problema del vendedor viajero está en NP. Esto no significa que haya algoritmos de tiempo polinómicos que lo resuelvan El principal propósito de introducir los conceptos de algoritmos no determinista y la clase NP es el clasificar los problemas ¿qué otros porblemas son NP?. Todos los nombrados anteriormente (Y muchos más)

13 Introducción a Teoría de NP-Completitud Las clases P y NP Hay un gran número de problemas que están trivialmente en NP: todo problema P está también en NP. La figura muestra la relación que se cree existe entre las clases P y NP Nadie ha probado que exista un problema en NP que no esté en P La cuestión de si P=NP es una de las más misteriosas e importantes en informática Para mostrar que tendríamos que encontrar un problema en NP que no esté e P, mientras que para probar que P=NP, en principio, tendríamos que encontrar un algoritmo polinomial para cada problema en NP Se verá que esta tarea se puede simplificar bastante. Veremos que es suficiente encontrar un algoritmo de tiempo polinomial para uno sólo de los problemas en la clase de problemas NP-completos NP P

14 Introducción a Teoría de NP-Completitud Problema SAT Una variable lógica, puede tomar valores verdadero o fálso. Si x es una variable lógica, es la negación de x. Un literal es una variable lógica o su negación Una cláusula es una secuencia de literales separados por el operador lógico or Una expresión lógica en forma normal conjuntiva (FNC), es una secuencia de cláusulas separadas por el operador lógico and El problema de decisión de satisfactibilidad FNC (SAT-FNC), consiste en determinar, dada una expresión lógica FNC, si existe una asignación de valores verdadero-falso para las variables, de manera que la expresión completa sea verdadera. Ejemplo: para la instancia la respuesta es si puesto que la expresión es verdadera cuando Para la instancia la respuesta es no

15 Introducción a Teoría de NP-Completitud Problema SAT A veces se clasifica como subproblema SAT, dependiendo de las variables de una cláusula, 2-SAT a lo más dos variables por cláusula, 3-SAT 3 variables por cláusula. Es fácil escribir un algoritmo determinista de complejidad polinomial, que tome como entrada, una expresión lógica en FNC y una asignación de variables y verifique si la expresión es verdadera para la asignación. Por lo tanto, SAT, está en la clase NP Nadie ha encontrado un algoritmo polinomial para resolver SAT-FNC, pero tampoco nadie ha probado que dicho algoritmo no exista, por lo que no se sabe si está en la clase P En 1971, Stephen Cook demostró que si SAT está en P entonces P= NP

16 Introducción a Teoría de NP-Completitud Reducibilidad polinómica Supongamos que se requiere resolver el problema de decisión A y que se tiene el algoritmo que resuelve el problema de decisión B Supongamos también que se tiene un algoritmo que construye una instancia y de B, para toda instancia x de A de tal forma que un algoritmo para B responde si para y si y sólo si la respuesta al problema para x es si. Dicho algoritmo se denomina algoritmo de transformación. Definición: Si existe un algoritmo de transformación polinomial del problema de decisión A en el problema de decisión B, el problema A es reducible polinomialmente al problema B. Se denota

17 Introducción a Teoría de NP-Completitud Reducibilidad polinómica Si el algoritmo de reducibilidad es polinomial y se tiene un algoritmo polinomial para B, intuitivamente parece que el algoritmo para A resultante de la combinación debe ser de complejidad polinomial Teorema1: Si el problema de decisión está en P y, entonces el problema de decisión A está en P. Demostración: Sea p el polinomio que acota la complejidad en tiempo del algoritmo de transformación, y q el polinomio que acota la complejidad del algoritmo polinomial B, Supongamos que se tiene una instancia para A de tamaño n Como el algoritmo de transformación da como mucho pasos, el tamaño de la instancia para el problema B es a lo más El alcoritmo para B se realiza con mucho en pasos. Por lo tanto la cantidad total de trabajo para resolver A es a lo más, que es un polinomio en n

18 Introducción a Teoría de NP-Completitud Problemas NP-Completos Definición:Un problema B es NP-Completo si 1.Está en NP 2.Para cualquier otro problema A en NP, Por el teorema 1, si pudiéramos demostrar para cualquier problema NP- completo que está en P, se podría concluir que P=NP. Si se demuestra que no puede existir una solución polinomial para algun problema NP-Completo, entonces NINIGUNO la tiene. El destino de un problema NP-Completo es el destino de todos, todos son tratables o todos son intratables. Teorema 2 (Cook/Levin):El problema SAT es NP-Completo No se verá la demostración, pero esta no se basa en reducir exahustivamente todos los problemas NP a SAT. La demostración, se basa en propiedades comunes a todos los problemas NP, de manera de probar que cualquier problema NP se puede reducir a SAT. Una vez probado el Teorema 2, se puede probar que mucho otros problemas son NP-Completos. Las demostraciones se basan en el siguiente teorema.

19 Introducción a Teoría de NP-Completitud Problemas NP-Completos Teorema 3: Un problema C es NP- completo si 1.Está en NP 2.Para algún problema NP-Completo B, Demostración Por ser B NP-Completo, para cualquier problema A en NP Como la reductibilidad es transitiva, entonces Puesto que C está en NP, satisface la definición de NP-Completo. Por los teoremas 2 y 3, podemos demostrar que un problema es NP-Completo mostrando que está en NP y que SAT se puede reducir a él. PDC=Problema de decisión Cliqué, es NP-Completo Ejercicio:probar que el PDC está en NP, escribiendo un algoritmo polinomial que verifique la solución de las instancias de PDC. Probar que SAT se puede reducir al PDC

20 Introducción a Teoría de NP-Completitud Problemas NP-Completos Sea una expresión lógica en FNC, con variables Transformamos B en un grafo G(V,A) donde, es un literal de la cláusula, Por ejemplo para el grafo equivalente es: Ejercicio, probar que la transformación es polinómica

21 Introducción a Teoría de NP-Completitud Problemas NP-Completos Se debe probar que B es satisfacible si y sólo si G tiene un cliqué de tamaño al menos k Si B es satisfacible, entonces G tiene un cliqué de tamaño al menos k. Si B es satisfacible, hay una asignación de variables que hace cada cláusula cierta Esto significa que hay al menos un literal en cada cláusula que es verdadero. Elegimos uno de estos literales de cada. Sea es el literal cierto tomado de forma un cliqué en G de tamaño k, ya que hay una arco entre cada par de vértices y en, porque y tanto y como z son verdaderos Si G tiene un cliqué de tamaño al menos k, entonces B es satisfacible. Ya que no hay arista entre un vértice y otro, los índices de los vérices del cliqué deben ser todos diferentes Ya que sólo hay k índices diferentes, el cliqué tiene que tener como mucho k vértices

22 Introducción a Teoría de NP-Completitud Problemas NP-Completos Por tanto si el grafo G tiene un cliqué de tamaño al menos k, el número de vértices de tiene que ser exactamente k Tomamos S contiene k literales, uno por cada cláusula. S no puede contener un literal y y su complemento porque, seguún la definición de G no hay ningún arco conectando con para ningún i y j Por lo tanto si hacemos y asignamos arbitrariamente los valores a las variables que no están en S, todas las cláusulas son verdaderas. Por lo tanto, B es satisfacible.

23 Introducción a Teoría de NP-Completitud Problemas NP-Completos Se ha demostrado que el problema de decisión de los Ciclos Hamiltonianos PDCH es NP–completo. Este problema consiste en determinar si un grafo tiene al menos un ciclo que pase por todos los vértice, exactamente una vez y vuelva al vértice inicial. Para demostrarlo: Se construyó un algoritmo de verificación por lo que es NP Se demostró que SAT se puede reducir a PDCH Ejemplo de ciclo hamiltoniano

24 Introducción a Teoría de NP-Completitud Problemas NP-Completos Ejercicio: demostrar que el problema de decisión del vendedor viajero (PDV simétrico, con grafo no dirigido) es NP-Completo La función verificar ya vista sirve también para el caso simétrico. Por tanto PDV es NP. Sólo queda probar que algún problema NP-Completo se reduce a PDV. PDCH se puede reducir a PDV Transformamos una instancia G(V,A) de PDCH en una instancia G=(V,A), con el mismo conjunto de vértices V, un arco entre cada par de vértices, y el siguiente costo: G tiene un circuito Hamiltoniano si y solo si G tiene un circuito de longitud o costo no mayor que n, con n=|V| cantidad de vértices

25 Introducción a Teoría de NP-Completitud Problemas NP-Completos Ejemplo: El grafo G se ha transformado a G En este caso la respuesta es no Ejercicio, plantear un algoritmo polinomial para transformar el grafo

26 Introducción a Teoría de NP-Completitud Problemas NP-Duros Ahora se extenderan los resultados a problemas en general, más allá de los de decisión. Definición : si el problema A puede resolverse en tiempo polinomial, utilizando un algoritmo polinomial hipotético para el problema B, entonces A es Turing reducible en tiempo polinomial a B. Se denota: Claramente, si A y B son problemas de decisión, Definición: Un problema B es NP-Duro si, para algún problema NP-completo A, se cumple Las reducciones turing son transitivas, por lo tanto todos los problemas NP se reducen a algún problema NP-duro. Esto significa que si existe un algoritmo polinomial para un problema NP-duro, entonces P=NP. duro

27 Introducción a Teoría de NP-Completitud Problemas NP-Duros ¿Qué problemas son NP-Duros? Todo problma NP-Completo es NP-duro Los problemas de optimización asociados a problemas NP-Completos son NP-duros ¿Qué problemas no son NP-Duros? No se sabe si hay un problema así. De hecho si se demostrara que algún problema no es NP-Duro, estaríamos probando P NP La razón es que (por contradicción) si P=NP, todo problema en NP se podría resolver con un algoritmo polinomial Por tanto, podríamos resolver cualquier problema en NP, utilizando un algoritmo polinomial para un problema B, simplemente llamando al algoritmo polinomial de cada problema (no se necesitaría el algoritmo hipotético para B) Por lo tanto todos los problemas serían NP-Duros

28 Introducción a Teoría de NP-Completitud Problemas NP-Duros Por otro lado, cualquier problema para el cual conocemos un algoritmo polinomial, podría no ser NP-duro De hecho, si probáramos que algún problema para el cual tenemos un algoritmo polinomial fuera NP-duro, se estaría probando que P=NP La razón es que tendríamos un algoritmo polinomial real en vez de un algoritmo hipotético para algun problema NP-duro Por tanto, podríamos resolver cada problema en NP en tiempo polinómico utilizando la Turing reducción del problema al problema NP-duro. El hecho de que un problema sea NP-Completo o NP-duro es instructivo. Pues se sabe de antemano que no hay algoritmo determinista eficiente para resolverlos por lo que hay que usar otras estrategias: Usar Bactracking o Branch and Bound, aunque en muchos casos, la explosión combinatorial sea muy grande Encontrar un algoritmo eficiente y determinista para una subclase de instancias. Desarrollar un algoritmo aproximado :no garantiza devolver la solución óptima. A veces se llaman heurísticas, que pueden ser determinísticas o probabilísticas. La idea es que siempre encuentre una solución aunque no sea la óptima.

29 Introducción a Teoría de NP-Completitud Algoritmos aproximados Se puede medir la calidad de la aproximación de estos algoritmos Sea P un problema, I una instancia de P, y F*(I) el valor de la solución óptima para I. Un algoritmo aproximado A, produce soluciones factibles para I cuyo valor es F(I) es menor (o mayor)que F*(I) si P es un problema de maximización (o minimización). Definición : A es un algoritmo aproximado absoluto si para cualquier instancia I | F*(I) - F(I)| <= k Para alguna constante k. Definición : A es un algoritmo aproximadocon una razón de aproximación r(n) si para si para cualquier instancia I de tamaño n, F(I) está en proporción r(n) con respecto al valor de la solución óptima F*(I) : Un algoritmo que alcanza una razón d aproximación r(n) se denomina algoritmo r(n)-aproximado

30 Introducción a Teoría de NP-Completitud Algoritmos aproximados La razón de aproximación nunca es menor que 1, ya que Un algoritmo 1-aproximado es óptimo, cuanto mayor sea la razón, peores serán las soluciones. implica


Descargar ppt "Diseño y análisis de algoritmos Introducción a Teoría de NP-Completitud."

Presentaciones similares


Anuncios Google