4. Complejidad computacional

Documentos relacionados
Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari

Fundamentos de Programación Entera

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Fundamentos de Programación Entera. 6. Planos de corte. Carlos Testuri Germán Ferrari

Fundamentos de Programación Entera. 1. Introducción. Carlos Testuri Germán Ferrari

IN34A - Optimización

Algoritmos de Planos de Corte

Complejidad Computacional

MARITZA HERRERA FLOREZ YUDY MARCELA BOLAÑOS RIVERA

Máquinas de Turing no-determinísticas (MTND)

Formulando con modelos lineales enteros

Complejidad Computacional

Complejidad computacional (Análisis de Algoritmos)

Problemas computacionales, intratabilidad y problemas NP completos. Febrero Facultad de Ingeniería. Universidad del Valle

Contenido. 1 Resolución mediante planos de corte. Resolución mediante planos de corte

Introducción a la Complejidad Computacional

Problemas computacionales, intratabilidad y problemas NP completos. 26 de agosto de Facultad de Ingeniería. Universidad del Valle

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

Análisis de algoritmos

Problemas NP-completos

Teoría de la Computación puesta en Práctica

Optimización combinatoria Flujo en redes. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

Clases de complejidad computacional: P y NP

CLASES DE PROBLEMAS. 1) Introducción 2) Problemas de decisión, Lenguajes, Codificación. y la clase NP-Completa. 6) Otras clases de problemas NP-

ALGORITMOS HEURÍSTICOS Y APROXIMADOS. Análisis y diseño de algoritmos II- 2009

Modelado en Programación Lineal y Entera en Modelado Cuantitativo para Problemas de Producción

Método Simplex en Optimización de Problemas de Producción

NP Completitud I: SAT y 3-SAT. Febrero 2017

Optimización de Problemas de Producción

como les va con las practicas?

Multiplicación de matrices simétricas

CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA

Contenido. Contenidos interactivos... xiii Plataforma de contenidos interactivos... xviii Prefacio... xix. Parte I Fundamentos...

Algoritmos y Complejidad

La lógica de segundo orden: Sintaxis

Programación lineal entera

Complejidad de los Algoritmos

Programa de Asignatura

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

MATROIDES Y EL ALGORITMO VORAZ

Contenido. Capítulo I Sistemas numéricos 2. Capítulo II Métodos de conteo 40

Algoritmo Cuántico de Búsqueda Paralelo

Geometría y Poliedros

Dualidad. Dpto. Ingeniería Industrial, Universidad de Chile. 22 de abril de IN3701, Optimización

CLASIFICACIÓN DE PROBLEMAS

Ejemplo: ubicación de estación de bomberos

Análisis y Complejidad de Algoritmos. Completitud NP

Algoritmos Voraces. Diseño y Análisis de Algoritmos

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Programación Matemática. Profesor: Juan Pérez Retamales

Elementos de Programación (P02) Ing. Alvaro Torres Tatis

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

Notación Asintótica 2

Tema 2 Fundamentos de Complejidad Algorítmica

Programación Entera. Nelson Devia C. IN Modelamiento y Optimización Departamento de Ingeniería Industrial Universidad de Chile

4 horas. 96 horas. Competencias Especificas: Construye algoritmos analizando su complejidad mediante técnicas y métodos documentados.

Casos especiales de la P. L.

Programación lineal entera (PLE)

Teoría estructural de grafos y su aplicación a algoritmos de optimización combinatoria

Casos especiales de la P. L.

Algoritmos en teoría de números

RESOLUCIÓN DE MODELOS DE PROGRAMACIÓN ENTERA

Modelos de Redes: Árbol. M. En C. Eduardo Bustos Farías

Casos especiales de la P. L.

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 2: Lunes 18 Viernes 22 de Marzo. Contenidos

Optimización lineal. Diego A. Patino. 2 de septiembre de Pontificia Universidad Javeriana 1/ 29

Transcripción:

Fundamentos de Programación Entera 4. Complejidad computacional Carlos Testuri Germán Ferrari Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República 2012-2018

Contenido 1 Complejidad computacional Introducción Problemas de decisión Clases de complejidad Reducción polinomial

Introducción Complejidad computacional La teoría de complejidad computacional permite clasificar los problemas según su grado de dificultad de resolución. Un objetivo es determinar cuando un problema puede ser resuelto mediante un uso de orden polinomial de los recursos dedicados (tiempo, memoria), donde las bases del polinomio son medidas de las dimensiones del problema (ej. tamaño entrada). Para la mayoría de los problemas IP no se conoce un algoritmo de resolución eficiente. Además, no se ha podido probar que dichos algoritmos no existan. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 3 / 21

Introducción Problemas según resolubilidad Resolubles eficientemente Determinación de lotes no-cap. Flujo en red Camino más corto Flujo máximo Transporte Asignación Arbol de expansión minimal Programación entera con TU Resolución eficiente desconocida Mochilero Cobertura, empaque y partición Vendedor viajero (TSP) Localización instalación no-cap. Arbol de Steiner Programación entera (general) Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 4 / 21

Introducción Problemas según resolubilidad Resolubles eficientemente Determinación de lotes no-cap. Flujo en red Camino más corto Flujo máximo Transporte Asignación Arbol de expansión minimal Programación entera con TU Resolución eficiente desconocida Mochilero Cobertura, empaque y partición Vendedor viajero (TSP) Localización instalación no-cap. Arbol de Steiner Programación entera (general) Cómo caracterizar los problemas según resolución? Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 4 / 21

Introducción Clasificación de problemas según dificultad Los problemas se pueden caracterizar según su grado de dificultad de resolución en fáciles y difíciles. Un mecanismo de comparación (o reducción) es Proposición (1) Dados los problemas P y Q, 1. Si Q es fácil y P no es más difícil que Q, entonces P es fácil. 2. Si P es difícil y P no es más difícil que Q, entonces Q es difícil. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 5 / 21

Problemas de decisión Problemas de decisión La teoría de complejidad es establecida sobre problemas de decisión. Los problemas de decisión retornan las respuestas: SI o NO. Por lo que se necesita representar los problemas de optimización en términos de problemas de decisión asociados. Dado el problema de optimización max{c(x) : x X}, se puede establecer el problema de decisión equivalente en términos de dificultad de resolución: - Dada una constante K, existe x X con valor c(x) K? Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 6 / 21

Problemas de decisión Instancias y su tamaño Se denomina instancia de un problema a su conjunto factible y su función objetivo. [El problema es la colección de todas las instancias]. Para comparar instancias de problemas según tamaño se establece un formato estándar que describe las instancias. Se denomina tamaño de la instancia, a la cantidad de bits usada en la representación binaria de la descripción de la instancia. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 7 / 21

Problemas de decisión Instancias y su tamaño Se denomina instancia de un problema a su conjunto factible y su función objetivo. [El problema es la colección de todas las instancias]. Para comparar instancias de problemas según tamaño se establece un formato estándar que describe las instancias. Se denomina tamaño de la instancia, a la cantidad de bits usada en la representación binaria de la descripción de la instancia. Todo entero z puede escribirse en base binaria según z = a k 2 k + a k 1 2 k 1 +... + a 1 2 1 + a 0 donde a i {0, 1}, i = 0,..., k, y k = log 2 z. Si se representa el signo de z con un bit, su tamaño es de log 2 z + 2 bits. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 7 / 21

Problemas de decisión Ejemplo de instancias y su tamaño Dado el problema max s.a. c τ x Ax b x Z n +. con c Z n, A Z m+n, b Z m. Se tiene la instancia I = {c, A, b} con tamaño L(I) = n i=1 log c i + n m i=1 j=1 log a ij + m j=1 log b j. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 8 / 21

Problemas de decisión Ejemplo de instancias y su tamaño Dado el problema max s.a. c τ x Ax b x Z n +. con c Z n, A Z m+n, b Z m. Se tiene la instancia I = {c, A, b} con tamaño L(I) = n i=1 log c i + n m i=1 j=1 log a ij + m j=1 log b j. Si todos los componentes de la instancia están acotados por un valor u, se puede considerar como cota superior a (n + mn + m) log(u). Para simplificar aun más se utiliza la notación de orden (n + mn + m) log(u) =: O(mn log(u)). Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 8 / 21

Problemas de decisión Algoritmos Los algoritmos son diseñados para resolver problemas, pero se aplican para resolver instancias de los mismos. Se dice que un algoritmo resuelve un problema si para todas sus instancias genera una respuesta válida en tiempo finito. Dado un problema y un algoritmo que lo resuelve, se denomina f (I) a la cantidad de operaciones necesarias para resolver la instancia I del problema mediante el algoritmo. Dada cierta dimensión de la instancia de un problema, l, se denomina cantidad de operaciones del algoritmo para el peor caso a f (l) = max I {f (I) : L(I) = l}. Se dice que el algoritmo resuelve el problema en tiempo polinomial si existe un entero p tal que f (l) = O(l p ). Un algoritmo se considera eficiente si su tiempo de ejecución crece polinomialmente en función del tamaño de la instancia. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 9 / 21

Clases de complejidad Clases de problemas de decisión N P y P Los problemas se clasifican según su grado de dificultad de resolución en clases. La clase de problemas de decisión N P esta integrada por los problemas para cuyas instancias con respuesta SI existe una demostración polinomial de la respuesta. Sea P la clase de problemas de decisión en N P para los que existe un algoritmo polinomial. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 10 / 21

Clases de complejidad Clase de problema P: ejemplo MST Arbol de expansión minimal. Sea G = (V, E) con m = E y n = V. Dada la instancia I = { e E c ex e K, e E x e = n 1, e E(S) x e S 1, S V, S, V, x B m }, el tamaño de la entrada es L(I) = e E log c e + log K + log (n 1) + 2 S i=1 log S. El algoritmo de Kruskal resuelve el problema en O(m log(m)), por lo que la cantidad de operaciones para obtener la respuesta SI es O(L log(l)). Entonces MST esta en P. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 11 / 21

Clases de complejidad Clase de problema N P: ejemplo mochilero Mochilero. Dada la instancia I = { n i=1 c ix i K, n i=1 a ix i b, x B n }, el tamaño de la entrada es L(I) = n i=1 log c i + log K + n i=1 log a i + log b. Para una instancia cuya respuesta es SI, se pueden verificar que su solución x cumple ax b y cx K en tiempo polinomial de L(I). Por lo tanto el problema está en N P. Se puede resolver en tiempo O(nb) mediante programación dinámica; pero esto es exponencial con respecto al tamaño de la entrada. Dado que b, a diferencia que n, no es polinomial en el largo de la entrada. Debido a que el tiempo es polinomial en el valor de la entrada (b) se dice que es pseudo-polinomial. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 12 / 21

Clases de complejidad Clase de problema N P: ejemplo TSP TSP con desigualdad triangular (por simetría en grafo no dirigido). Dada la instancia I = { e E c ex e K, e E(S) x e = 2, e E(S) x e S 1, S V, 2 S n, x B m }, el tamaño de la entrada es L(I) = e E log c e + log K + 2 S i=1 log S. Para una instancia cuya respuesta es SI, se pueden verificar que su solución forma un tour que no excede K en tiempo polinomial. Por lo tanto el problema está en N P. No se conoce algoritmo que resuelva polinomialmente el problema. Todos los problemas de la lista con resolución eficiente desconocida están entre los más difíciles en N P. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 13 / 21

Reducción polinomial Reducción polinomial y la clase N PC La definición formal de que un problema no es más difícil que otro: Dados P y Q N P, se dice que P es polinomialmente reducible a Q, si una instancia de P puede convertirse en tiempo polinomial a Q. Es decir si existe un algoritmo que resuelve Q, entonces éste puede ser utilizado para resolver P con un costo adicional que es polinomial en términos del tamaño de la instancia. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 14 / 21

Reducción polinomial Reducción polinomial y la clase N PC La definición formal de que un problema no es más difícil que otro: Dados P y Q N P, se dice que P es polinomialmente reducible a Q, si una instancia de P puede convertirse en tiempo polinomial a Q. Es decir si existe un algoritmo que resuelve Q, entonces éste puede ser utilizado para resolver P con un costo adicional que es polinomial en términos del tamaño de la instancia. Se define la clase de problemas N P complete (N PC) como el subconjunto de problemas P N P tales que para todo Q N P, Q es polinomialmente reducible a P. Cómo determinar que un problema esta en N PC? Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 14 / 21

Reducción polinomial Determinación de la clase N PC El esquema de reducción necesita de un primer problema para N PC. El problema de satisfacibilidad booleana (SAT) busca determinar si una expresión booleana (sin cuantificadores) tiene una valoración de sus variables que hace que la expresión sea verdadera. Ejemplo (tres literales por cláusula disyuntiva, 3SAT) (x 1 x 2 x 3 ) (x 2 x 4 x 5 ) ( x 3 x 4 x 6 )... x B n. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 15 / 21

Reducción polinomial Problema de satisfacibilidad booleana (SAT) En términos de IP, es resolver el problema de factibilidad (BIP): x 1 + (1 x 2 ) + x 3 1 x 2 + x 4 + (1 x 5 ) 1 (1 x 3 ) + x 4 + x 6 1... x B n. Stephen Cook demostró (1971) que el problema 3SAT está en N PC. Para demostrar que BIP está en N PC, se necesita mostrar que: 1. BIP está en N P (directo), y 2. SAT se reduce a BIP (la reducción está implícita en el ej. anterior). Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 16 / 21

Reducción polinomial Lema de reducción La formalización del mecanismo de comparación (o reducción) es Proposición (2) Dados los problemas P y Q en N P, 1. Si Q está en P y P es polinomialmente reducible a Q, entonces P está en P. 2. Si P está en N PC y P es polinomialmente reducible a Q, entonces Q está en N PC. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 17 / 21

Reducción polinomial Comparación entre P y N P Los problemas vistos están en P o en N PC. Proposición (3) Si P N PC, entonces P = N P. No se ha podido demostrar que P = N P o que P N P. En la práctica se asume que P N P. El conocimiento de la teoría, el desarrollo de algoritmos especializados y la experiencia permiten determinar soluciones validadas de grandes instancias de problemas. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 18 / 21

Reducción polinomial Problemas N P hard Se denomina problemas N P hard a los problemas de optimización cuyos problemas de decisión están en N PC. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 19 / 21

Reducción polinomial Diagrama de clases Las clases se pueden representar mediante un diagrama de Euler. N P N P hard P N PC Complejidad Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 20 / 21

Reducción polinomial Optimización y problema de separación Una forma de determinar que un problema está en P es encontrando un algoritmo que lo resuelva en tiempo polinomial. Otra forma es utilizando una reducción polinomial. Por otra parte, el grupo de problemas de optimización max{c(x) : x conv(x)} es resoluble polinomialmente si y solo si el grupo de problemas de separación: Pertenece x a conv(x)? Si no, determinar una inecuación que satisfagan todos los elementos de X, excepto x. es resoluble polinomialmente. Ambas propiedades son equivalentes. Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1er. Semestre 2018 21 / 21