http://ocw.univalle.edu.co/ocw/ingenieria-de-sistemas-telematica-y-afines/complejidad-y-optimizacion/material-1/np-introduccion.pdf

Anuncio
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
Documentos relacionados
Descargar