1 / 30

Diseño y análisis de algoritmos

Diseño y análisis de algoritmos. Introducción a Teoría de NP-Completitud. 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

rocco
Download Presentation

Diseño y análisis de algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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: • 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. • 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: • Para cualquier instancia par la cual la respuesta es “si” hay alguna salida S, para la cual la fase de verificación devuelve cierto. • 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 P NP

  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 • Está en NP • 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 • Está en NP • 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

More Related