Motivación Repaso de complejidad Presentación de clases P, NP, NPC Complejidad y Optimización: NP Completitud Las clases P y NP: problemas tratables e intratables Prof.: Javier Andrés Mena Zapata Escuela de Ingeniería de Sistemas y Computación Universidad del Valle 21 de agosto de 2006 Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Veamos los hechos La situación actual (2006) es la siguiente: Existen problemas en la vida real, que son fáciles y otros que son difíciles de solucionar. Existen problemas llamados NP-Completos que actualmente no podemos saber si son fáciles o difíciles de solucionar. Toda la evidencia actual sugiere que no son fáciles, pero no está demostrado. Si lo anterior es cierto, con los computadores basados en máquinas de Turing no podrán nunca, solucionar los problemas NP-Completos. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Veamos los hechos La situación actual (2006) es la siguiente: Existen problemas en la vida real, que son fáciles y otros que son difíciles de solucionar. Existen problemas llamados NP-Completos que actualmente no podemos saber si son fáciles o difíciles de solucionar. Toda la evidencia actual sugiere que no son fáciles, pero no está demostrado. Si lo anterior es cierto, con los computadores basados en máquinas de Turing no podrán nunca, solucionar los problemas NP-Completos. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Veamos los hechos La situación actual (2006) es la siguiente: Existen problemas en la vida real, que son fáciles y otros que son difíciles de solucionar. Existen problemas llamados NP-Completos que actualmente no podemos saber si son fáciles o difíciles de solucionar. Toda la evidencia actual sugiere que no son fáciles, pero no está demostrado. Si lo anterior es cierto, con los computadores basados en máquinas de Turing no podrán nunca, solucionar los problemas NP-Completos. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Veamos los hechos La situación actual (2006) es la siguiente: Existen problemas en la vida real, que son fáciles y otros que son difíciles de solucionar. Existen problemas llamados NP-Completos que actualmente no podemos saber si son fáciles o difíciles de solucionar. Toda la evidencia actual sugiere que no son fáciles, pero no está demostrado. Si lo anterior es cierto, con los computadores basados en máquinas de Turing no podrán nunca, solucionar los problemas NP-Completos. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Veamos los hechos La situación actual (2006) es la siguiente: Existen problemas en la vida real, que son fáciles y otros que son difíciles de solucionar. Existen problemas llamados NP-Completos que actualmente no podemos saber si son fáciles o difíciles de solucionar. Toda la evidencia actual sugiere que no son fáciles, pero no está demostrado. Si lo anterior es cierto, con los computadores basados en máquinas de Turing no podrán nunca, solucionar los problemas NP-Completos. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿En dónde está la complejidad de los problemas? Cuando nos encontramos ante la situación de solucionar un problema, nos podemos encontrar con diversos obstáculos. Así, el problema puede tener algunas o todas las siguientes características: Ser difícil de entender. Es difícil o imposible de solucionar en un computador. La solución más eficiente es muy difícil de implementar. La solución más fácil de entender es muy ineficiente. No se encuentra ninguna forma de solucionar el problema eficientemente. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿En dónde está la complejidad de los problemas? Cuando nos encontramos ante la situación de solucionar un problema, nos podemos encontrar con diversos obstáculos. Así, el problema puede tener algunas o todas las siguientes características: Ser difícil de entender. Es difícil o imposible de solucionar en un computador. La solución más eficiente es muy difícil de implementar. La solución más fácil de entender es muy ineficiente. No se encuentra ninguna forma de solucionar el problema eficientemente. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿En dónde está la complejidad de los problemas? Cuando nos encontramos ante la situación de solucionar un problema, nos podemos encontrar con diversos obstáculos. Así, el problema puede tener algunas o todas las siguientes características: Ser difícil de entender. Es difícil o imposible de solucionar en un computador. La solución más eficiente es muy difícil de implementar. La solución más fácil de entender es muy ineficiente. No se encuentra ninguna forma de solucionar el problema eficientemente. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿En dónde está la complejidad de los problemas? Cuando nos encontramos ante la situación de solucionar un problema, nos podemos encontrar con diversos obstáculos. Así, el problema puede tener algunas o todas las siguientes características: Ser difícil de entender. Es difícil o imposible de solucionar en un computador. La solución más eficiente es muy difícil de implementar. La solución más fácil de entender es muy ineficiente. No se encuentra ninguna forma de solucionar el problema eficientemente. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿En dónde está la complejidad de los problemas? Cuando nos encontramos ante la situación de solucionar un problema, nos podemos encontrar con diversos obstáculos. Así, el problema puede tener algunas o todas las siguientes características: Ser difícil de entender. Es difícil o imposible de solucionar en un computador. La solución más eficiente es muy difícil de implementar. La solución más fácil de entender es muy ineficiente. No se encuentra ninguna forma de solucionar el problema eficientemente. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles ¿Qué se verá en este curso? Estudiaremos cómo estar seguros de que el problema al que nos enfrentamos es “difícil” y cómo encontrar soluciones prácticas, es decir, eficientes en tiempo de ejecución. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Camino más corto Dado un grafo G = (V , E), dos nodos a, b ∈ V y donde cada arista tiene un peso, encontrar el camino más corto entre a y b. Las aristas pueden incluso tener peso negativo y el grafo puede ser dirigido o no dirigido. Este problema se puede resolver en tiempo O(|V | × |E|). Camino simple más largo Dado un grafo G = (V , E), dos nodos a, b ∈ V donde cada arista tiene un peso, encontrar el camino más largo sin ciclos, entre los a y b. Determinar el camino simple más largo es un problema NP-Completo, aun si todos los pesos de las aristas es 1. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles Tour de Euler Un Tour de Euler de un grafo conexo, dirigido, G = (V , E) es un ciclo que recorre cada eje de G exactamente una vez, aunque puede visitar un vértice más de una vez. Se puede determinar cuándo un grafo tiene un Tour de Euler en tiempo O(|E|) y, de hecho, se pueden encontrar los vértices del Tour en tiempo O(|E|). Ciclo Hamiltoniano Un Ciclo Hamiltoniano de un grafo dirigido, G = (V , E) es un ciclo simple que contiene cada vértice de V . Determinar si un grafo tiene un ciclo hamiltoniano es NP-Completo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad Existen diversas formas de medir la complejidad de un algoritmo. La complejidad se mide en función del tamaño de la entrada. La complejidad temporal se refiere al tiempo que se demora en ejecutarse un algoritmo, la complejidad espacial se refiere a la cantidad de memoria que ocupa un algoritmo. Nota En general cuando no se especifique explícitamente, se referirá a la complejidad temporal. Ejemplo: El algoritmo X tiene complejidad O(2n ), quiere decir que la complejidad temporal es O(2n ). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad Existen diversas formas de medir la complejidad de un algoritmo. La complejidad se mide en función del tamaño de la entrada. La complejidad temporal se refiere al tiempo que se demora en ejecutarse un algoritmo, la complejidad espacial se refiere a la cantidad de memoria que ocupa un algoritmo. Nota En general cuando no se especifique explícitamente, se referirá a la complejidad temporal. Ejemplo: El algoritmo X tiene complejidad O(2n ), quiere decir que la complejidad temporal es O(2n ). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad Existen diversas formas de medir la complejidad de un algoritmo. La complejidad se mide en función del tamaño de la entrada. La complejidad temporal se refiere al tiempo que se demora en ejecutarse un algoritmo, la complejidad espacial se refiere a la cantidad de memoria que ocupa un algoritmo. Nota En general cuando no se especifique explícitamente, se referirá a la complejidad temporal. Ejemplo: El algoritmo X tiene complejidad O(2n ), quiere decir que la complejidad temporal es O(2n ). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Algoritmo de ordenamiento: Ordenar n elementos tiene una complejidad temporal de Ω(n log n), cuando se utilizan comparaciones y si la complejidad de copiar y comparar dos elementos cualquiera es O(1). Buscar elementos: En un arbol binario con n elementos tiene una complejidad en tiempo de O(h), donde h es la altura del árbol. Si el árbol es rojinegro entonces h ≤ 2 log(n). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Algoritmo de ordenamiento: Ordenar n elementos tiene una complejidad temporal de Ω(n log n), cuando se utilizan comparaciones y si la complejidad de copiar y comparar dos elementos cualquiera es O(1). Buscar elementos: En un arbol binario con n elementos tiene una complejidad en tiempo de O(h), donde h es la altura del árbol. Si el árbol es rojinegro entonces h ≤ 2 log(n). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Algoritmo de ordenamiento: Ordenar n elementos tiene una complejidad temporal de Ω(n log n), cuando se utilizan comparaciones y si la complejidad de copiar y comparar dos elementos cualquiera es O(1). Buscar elementos: En un arbol binario con n elementos tiene una complejidad en tiempo de O(h), donde h es la altura del árbol. Si el árbol es rojinegro entonces h ≤ 2 log(n). Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Notación asintótica Notación O-grande Sean f y g funciones con respecto a n. Se dice que: f (n) = O(g(n)) (1) Si existen constantes positivas c y n0 tal que 0 ≤ f (n) ≤ cg(n) para toda n ≥ n0 . A veces se dice que f está superiormente (o por encima) por g. ¡Importante! La notación f (n) = O(g(n)) NO es una igualdad. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Notación asintótica (cont.) Notación Ω Sean f y g funciones con respecto a n. Se dice que: f (n) = Ω(g(n)) (2) Si existen constantes positivas c y n0 tal que 0 ≤ cg(n) ≤ f (n) para toda n ≥ n0 . A veces se dice que f está inferiormente (o por debajo) por g. ¡Importante! La notación f (n) = Ω(g(n)) NO es una igualdad. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Notación asintótica (cont.) Notación Θ Sean f y g funciones con respecto a n. Se dice que: f (n) = Θ(g(n)) Si f (n) = Ω(g(n)) y f (n) = O(g(n)). ¡Importante! La notación f (n) = Θ(g(n)) NO es una igualdad. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud (3) Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Notación asintótica, en español De forma simple Una función f (n) es O(g(n)) si después de algún punto n0 . La función g(n) siempre supera proporcionalmente a f (n). Algo similar ocurre cuando f (n) es Ω(g(n)) ¿Para qué sirve? La notación sirve para saber cuanto crece una función con respecto a otra. Cómo a algunos algoritmos se pueden medir por su complejidad respecto al tamaño de la entrada, se pueden hacer ciertas comparaciones con respecto al “mejor” algoritmo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Notación asintótica, en español De forma simple Una función f (n) es O(g(n)) si después de algún punto n0 . La función g(n) siempre supera proporcionalmente a f (n). Algo similar ocurre cuando f (n) es Ω(g(n)) ¿Para qué sirve? La notación sirve para saber cuanto crece una función con respecto a otra. Cómo a algunos algoritmos se pueden medir por su complejidad respecto al tamaño de la entrada, se pueden hacer ciertas comparaciones con respecto al “mejor” algoritmo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad polinomial y no polinomial Definición Por cuestiones prácticas para este curso, necesitamos una definiciones sencillas, suponiendo que tenemos un algoritmo llamado A. Complejidad polinomial Se dice que A es polinomial si existe una constante k de forma tal que la complejidad de A sea O(nk ). Complejidad no polinomial Si no existe esa constante k entonces se dice que el algoritmo no tiene complejidad polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad polinomial y no polinomial Definición Por cuestiones prácticas para este curso, necesitamos una definiciones sencillas, suponiendo que tenemos un algoritmo llamado A. Complejidad polinomial Se dice que A es polinomial si existe una constante k de forma tal que la complejidad de A sea O(nk ). Complejidad no polinomial Si no existe esa constante k entonces se dice que el algoritmo no tiene complejidad polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad polinomial y no polinomial Definición Por cuestiones prácticas para este curso, necesitamos una definiciones sencillas, suponiendo que tenemos un algoritmo llamado A. Complejidad polinomial Se dice que A es polinomial si existe una constante k de forma tal que la complejidad de A sea O(nk ). Complejidad no polinomial Si no existe esa constante k entonces se dice que el algoritmo no tiene complejidad polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 12 n2 − 3n. Entonces f (n) = Θ(n2 ). Demostración. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 12 n2 − 3n. Entonces f (n) = Θ(n2 ). Demostración. Debemos encontrar dos constantes positivas c1 , c2 y n0 tal que: c1 n2 ≤ 1 2 n − 3n ≤ c2 n2 2 Para todo n ≥ n0 . Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud (4) Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 12 n2 − 3n. Entonces f (n) = Θ(n2 ). Demostración. Dividiendo por n2 se obtiene 1 3 − ≤ c2 (5) 2 n La inecuación derecha se mantiene para n ≥ 1, escogiendo c2 ≥ 21 . De la misma forma la inecuación izquierda se mantiene 1 para n ≥ 7 escogiendo c1 ≤ 14 . 1 Así, escogiendo c1 = 14 , c2 = 21 y n0 = 7 se verifica que f (n) = Θ(n2 ) c1 ≤ Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 2n . Entonces f (n) es no polinomial. Demostración. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 2n . Entonces f (n) es no polinomial. Demostración. Se demuestra por contradicción. Supongamos que f (n) = O(nk ), entonces existen constantes positivas c y n0 tal que: 2n ≤ cnk Para todo n ≥ n0 y alguna constante k . Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud (6) Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 2n . Entonces f (n) es no polinomial. Demostración. Aplicando logaritmo a ambos lados tenemos que la inecuación anterior se cumple, si: n ≤ log c + k log n n − log c ≤ k log n n − log c k ≥ log n Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud (7) (8) (9) Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejemplo Sea f (n) = 2n . Entonces f (n) es no polinomial. Demostración. k≥ n − log c log n (10) Como n − log c crece más rápido que log n entonces no existe tal constante k . Por tanto f (n) es no polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Ejercicios de adecuación y repaso Ejercicio 1 Sea f (n) = n3 − 3n + 5. Demuestre: 1 2 3 4 2 3 f (n) = O(n4 ) f (n) = O(n3 ) f (n) = Ω(n3 ) f (n) = Θ(n3 ) ¿Es nlog n polinomial o no? Demuéstrelo. Dé un ejemplo de un algoritmo para cada caso: 1 2 3 Θ(1) Θ(n3 ) Θ(2n ) Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC Temporal y espacial Notación Ejemplos de repaso Ejercicios Complejidad polinomial vs. no polinomial Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud La clase P La clase P consiste en aquellos problemas que son solucionables en tiempo polinomial. Existen muchos problemas que pertenecen a la clase P. La clase NP La clase NP es aquella cuyos problemas son verificables en tiempo polinomial. Lo que se quiere decir es que si se tuviera alguna clase de “certificado” de una solución, entonces, es posible verificar en tiempo polinomial que el certificado es correcto, respecto al tamaño de la entrada. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud La clase P La clase P consiste en aquellos problemas que son solucionables en tiempo polinomial. Existen muchos problemas que pertenecen a la clase P. La clase NP La clase NP es aquella cuyos problemas son verificables en tiempo polinomial. Lo que se quiere decir es que si se tuviera alguna clase de “certificado” de una solución, entonces, es posible verificar en tiempo polinomial que el certificado es correcto, respecto al tamaño de la entrada. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud NP-Completitud y las clases P y NP (cont.) Ejemplo Para el problema de ciclo hamiltoniano, dado una grafo G = (V , E), un certificado podría ser una secuencia hv1 , v2 , v3 , . . . , v|V | i de |V| vértices. Verificar que esta secuencia es un ciclo hamiltoniano es muy fácil. ¿por qué? La clase NP (cont.) Un hecho importante es que cualquier problema en P, se encuentra también en NP. ¿por qué?. Por ahora, un concepto importante: P ⊆ NP. La pregunta abierta es saber si NP ⊆ P o no. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud NP-Completitud y las clases P y NP (cont.) Ejemplo Para el problema de ciclo hamiltoniano, dado una grafo G = (V , E), un certificado podría ser una secuencia hv1 , v2 , v3 , . . . , v|V | i de |V| vértices. Verificar que esta secuencia es un ciclo hamiltoniano es muy fácil. ¿por qué? La clase NP (cont.) Un hecho importante es que cualquier problema en P, se encuentra también en NP. ¿por qué?. Por ahora, un concepto importante: P ⊆ NP. La pregunta abierta es saber si NP ⊆ P o no. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud NP-Completitud y las clases P y NP (cont.) La clase NPC Informalmente, la clase NPC (que llamaremos la clase NP-Completo) se compone de todos los problemas que son tan “fáciles” (o difíciles) como todos los demás que pertenecen a esta misma clase. Más allá Es acerca de los problemas de esta clase de la que hablaremos de aquí en adelante, y se mostrará una resultado muy importante: si es posible solucionar algún problema que sea NPC en tiempo polinomial, entonces se podrá solucionar cualquier otro problema de esta clase en tiempo polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud NP-Completitud y las clases P y NP (cont.) La clase NPC Informalmente, la clase NPC (que llamaremos la clase NP-Completo) se compone de todos los problemas que son tan “fáciles” (o difíciles) como todos los demás que pertenecen a esta misma clase. Más allá Es acerca de los problemas de esta clase de la que hablaremos de aquí en adelante, y se mostrará una resultado muy importante: si es posible solucionar algún problema que sea NPC en tiempo polinomial, entonces se podrá solucionar cualquier otro problema de esta clase en tiempo polinomial. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud ¿Para qué estudiar esto? Para ser un buen diseñador de algoritmos, usted debe entender las base de la teoría de la complititud-NP. Si usted se da cuenta de que un problema es NP-Completo, entonces, tiene bastante evidencia acerca de la intratabilidad del problema. En la práctica Como ingeniero(a), sería mejor invertir tiempo en una aproximación a la solución o solucionar un caso especial, en lugar de buscar EL algoritmo que solucione el problema. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud ¿Para qué estudiar esto? Para ser un buen diseñador de algoritmos, usted debe entender las base de la teoría de la complititud-NP. Si usted se da cuenta de que un problema es NP-Completo, entonces, tiene bastante evidencia acerca de la intratabilidad del problema. En la práctica Como ingeniero(a), sería mejor invertir tiempo en una aproximación a la solución o solucionar un caso especial, en lugar de buscar EL algoritmo que solucione el problema. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Esquema 1 Motivación ¿Qué clase complejidad se estudiará? Objetivo del curso Problemas computacionales fáciles y difíciles 2 Repaso de complejidad Temporal y espacial Notación Ejemplos de repaso Ejercicios 3 Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Diferencia fundamental Existe una diferencia fundamental entre la solución de problemas cotidianos y la demostración de que algún problema pertenece a NPC. Problemas “cotidianos” Cotidianamente se trata de ver las particularidades de un problema y utilizar varios algoritmos conocidos para solucionar partes de él. Demostraciones NPC Para demostrar que un problema es NPC, se debe demostrar ¿qué tan “difícil” (o fácil) es el problema?. No se probará la existencia de un algoritmo eficiente, sino que se demostrará que no existe tal algoritmo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Diferencia fundamental Existe una diferencia fundamental entre la solución de problemas cotidianos y la demostración de que algún problema pertenece a NPC. Problemas “cotidianos” Cotidianamente se trata de ver las particularidades de un problema y utilizar varios algoritmos conocidos para solucionar partes de él. Demostraciones NPC Para demostrar que un problema es NPC, se debe demostrar ¿qué tan “difícil” (o fácil) es el problema?. No se probará la existencia de un algoritmo eficiente, sino que se demostrará que no existe tal algoritmo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Diferencia fundamental Existe una diferencia fundamental entre la solución de problemas cotidianos y la demostración de que algún problema pertenece a NPC. Problemas “cotidianos” Cotidianamente se trata de ver las particularidades de un problema y utilizar varios algoritmos conocidos para solucionar partes de él. Demostraciones NPC Para demostrar que un problema es NPC, se debe demostrar ¿qué tan “difícil” (o fácil) es el problema?. No se probará la existencia de un algoritmo eficiente, sino que se demostrará que no existe tal algoritmo. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Problemas de decisión vs. problemas de optimización Para el propósito, es más fácil hablar de problema de decisión que de problemas de optimización, dado que, que general, se demostrará de que un problema es o no, tan “duro” como los demás. La mayoría de problemas de optimización se pueden convertir a problemas de decisión de forma simple. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Ejemplo problemas de decisión vs. problemas de optimización: Camino más corto ¿Ciclo Hamiltoniano? Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Ejemplo problemas de decisión vs. problemas de optimización: Camino más corto ¿Ciclo Hamiltoniano? Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Ejemplo problemas de decisión vs. problemas de optimización: Camino más corto ¿Ciclo Hamiltoniano? Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Reducciones o transformaciones Muchas veces tranformamos un problema en otro. Una reducción es una transformación especial que se utiliza para demostrar la NP-Completitud de un problema. Llamaremos a entrada de un problema en particular, una instancia de ese problema. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Supongamos que se tiene un problema de decisión A que queremos solucionar en tiempo polinomial. Suponga también que tenemos un problema de decisión diferente, llamado B que ya sabemos cómo solucionar en tiempo polinomial. Por último, supongamos que tenemos un procedimiento que transforma cualquier instancia α de A en alguna instancia β de B y que tiene las siguientes características: 1 La transformación se hace en tiempo polinomial. 2 Las respuestas son las mismas. Es decir, la respuesta de α es “sí”, si y solo si la respuesta de β es también “sí”. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Supongamos que se tiene un problema de decisión A que queremos solucionar en tiempo polinomial. Suponga también que tenemos un problema de decisión diferente, llamado B que ya sabemos cómo solucionar en tiempo polinomial. Por último, supongamos que tenemos un procedimiento que transforma cualquier instancia α de A en alguna instancia β de B y que tiene las siguientes características: 1 La transformación se hace en tiempo polinomial. 2 Las respuestas son las mismas. Es decir, la respuesta de α es “sí”, si y solo si la respuesta de β es también “sí”. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Supongamos que se tiene un problema de decisión A que queremos solucionar en tiempo polinomial. Suponga también que tenemos un problema de decisión diferente, llamado B que ya sabemos cómo solucionar en tiempo polinomial. Por último, supongamos que tenemos un procedimiento que transforma cualquier instancia α de A en alguna instancia β de B y que tiene las siguientes características: 1 La transformación se hace en tiempo polinomial. 2 Las respuestas son las mismas. Es decir, la respuesta de α es “sí”, si y solo si la respuesta de β es también “sí”. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Supongamos que se tiene un problema de decisión A que queremos solucionar en tiempo polinomial. Suponga también que tenemos un problema de decisión diferente, llamado B que ya sabemos cómo solucionar en tiempo polinomial. Por último, supongamos que tenemos un procedimiento que transforma cualquier instancia α de A en alguna instancia β de B y que tiene las siguientes características: 1 La transformación se hace en tiempo polinomial. 2 Las respuestas son las mismas. Es decir, la respuesta de α es “sí”, si y solo si la respuesta de β es también “sí”. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Supongamos que se tiene un problema de decisión A que queremos solucionar en tiempo polinomial. Suponga también que tenemos un problema de decisión diferente, llamado B que ya sabemos cómo solucionar en tiempo polinomial. Por último, supongamos que tenemos un procedimiento que transforma cualquier instancia α de A en alguna instancia β de B y que tiene las siguientes características: 1 La transformación se hace en tiempo polinomial. 2 Las respuestas son las mismas. Es decir, la respuesta de α es “sí”, si y solo si la respuesta de β es también “sí”. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Con esta información podemos realizar los siguientes pasos para lograr el objetivo: 1 Dada una una instancia α del problema A, usar un algoritmo de tiempo polinomial de reducción para transformarla en una instancia β del problema B. 2 Ejecutar algoritmo de tiempo polinomial B con la instancia β. 3 Usar la respuesta de la ejecución anterior para dar respuesta α. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Con esta información podemos realizar los siguientes pasos para lograr el objetivo: 1 Dada una una instancia α del problema A, usar un algoritmo de tiempo polinomial de reducción para transformarla en una instancia β del problema B. 2 Ejecutar algoritmo de tiempo polinomial B con la instancia β. 3 Usar la respuesta de la ejecución anterior para dar respuesta α. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Con esta información podemos realizar los siguientes pasos para lograr el objetivo: 1 Dada una una instancia α del problema A, usar un algoritmo de tiempo polinomial de reducción para transformarla en una instancia β del problema B. 2 Ejecutar algoritmo de tiempo polinomial B con la instancia β. 3 Usar la respuesta de la ejecución anterior para dar respuesta α. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud Motivación Repaso de complejidad Presentación de clases P, NP, NPC NP-Completitud y las clases P y NP Esbozo de cómo demostrar NP-Completitud Ejemplo Con esta información podemos realizar los siguientes pasos para lograr el objetivo: 1 Dada una una instancia α del problema A, usar un algoritmo de tiempo polinomial de reducción para transformarla en una instancia β del problema B. 2 Ejecutar algoritmo de tiempo polinomial B con la instancia β. 3 Usar la respuesta de la ejecución anterior para dar respuesta α. Prof.: Javier Andrés Mena Zapata Complejidad y Optimización: NP Completitud