Fundamentos de Programación Entera

Anuncio
Complejidad computacional
Contenido
1
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Carlos Testuri
Fundamentos de Programación Entera
1/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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.
Carlos Testuri
Fundamentos de Programación Entera
2/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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
Carlos Testuri
Resolución eficiente desconocida
Mochilero
Covertura, empaque y partición
Vendedor viajero (TSP)
Localización instalación no-cap.
Arbol de Steiner
Programación entera (general)
Fundamentos de Programación Entera
3/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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
Covertura, 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?
Carlos Testuri
Fundamentos de Programación Entera
3/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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
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.
Carlos Testuri
Fundamentos de Programación Entera
4/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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?
Carlos Testuri
Fundamentos de Programación Entera
5/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Problemas: instancias y 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.
Carlos Testuri
Fundamentos de Programación Entera
6/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Problemas: instancias y tamaño: ejemplo
Dado el problema
max cτ x
s.a. Ax ≤ b
x ∈ Zn+ .
se tiene la instancia
I = {c, A,
P
Pb} con
P tamaño
Pm
L = L(I) = ni=1 dlog ci e + ni=1 m
j=1 dlog aij e +
j=1 dlog bj e.
Si todas 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 aún más se utiliza la notación de orden,
(mn + m + n)(log(u)) = O(?)
Carlos Testuri
Fundamentos de Programación Entera
7/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Problemas: algoritmos
Los algoritmos son diseñados para los problemas, pero se aplican para
resolver instancias de los mismos.
Se dice que un algoritmo resuelve un problema si para todas sus
instancias se ejecuta 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) = maxI {f (I) : |I| = l}.
Se dice que el algoritmo es polinomial para resolver el problema si
existe un entero k tal que f ∗ (l) = O(lk ).
Carlos Testuri
Fundamentos de Programación Entera
8/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
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.
Carlos Testuri
Fundamentos de Programación Entera
9/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Clase de problema P: ejemplo MST
Arbol de expansión minimal.
Sea G = (V, E) con m =
P|E| y n = |V|. P
Dada la instancia I = { e∈E ce xe ≤ K, e∈E xe = n − 1,
P
∀S ⊆ V, S 6= ∅, V, x ∈ Bm },
e∈E(S) xe ≤ |S| − 1,
el tamaño
P de la entrada es
P |S|
L(I) = e∈E dlog ce e + dlog Ke + dlog (n − 1)e + 2i=1 dlog |S|e.
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.
Carlos Testuri
Fundamentos de Programación Entera
10/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Clase de problema N P: ejemplo mochilero
Mochilero.
P
P
Dada la instancia I = { ni=1 ci xi ≥ K, ni=1 ai xi ≤ b, x ∈ Bn }, el
tamaño P
de la entrada es
P
L(I) = ni=1 dlog ci e + dlog Ke + ni=1 dlog ai e + dlog be.
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 O(l2 cmax ) mediante programación dinámica;
pero esto es exponencial con respecto al tamaño de la entrada
O(n(log cmax + log amax ) + log K + log b).
Carlos Testuri
Fundamentos de Programación Entera
11/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Clase de problema N P: ejemplo ∆TSP
TSP con desigualdad triangular (por simetría en grafo no dirigido).
Dada P
la instancia
P
P
I = { e∈E ce xe ≤ K, e∈E(S) xe = 2, e∈E(S) xe ≤ |S| − 1,
V, 2 ≤ |S| ≤ n, x ∈ Bm }, el tamaño de la entrada es
P
P |S|
L(I) = e∈E dlog ce e + dlog Ke + 2i=1 dlog |S|e.
∀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.
Carlos Testuri
Fundamentos de Programación Entera
12/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Reducción polinomial y la clase N PC
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.
Carlos Testuri
Fundamentos de Programación Entera
13/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Reducción polinomial y la clase N PC
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 − completo, N PC, como el
subconjunto de problemas P ∈ N P tales que para todo Q ∈ N P,
Q es reducible polinomialmente a P.
¿Cómo determinar que un problema esta en N PC?
Carlos Testuri
Fundamentos de Programación Entera
13/20
Complejidad computacional
Introducción
Problemas de decisión
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)
(x1 ∨ ¬x2 ∨ x3 ) ∧
(x2 ∨ x4 ∨ ¬x5 ) ∧
.
(¬x3 ∨ x4 ∨ x6 ) ∧
...
Carlos Testuri
Fundamentos de Programación Entera
14/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Problema de satisfacibilidad booleana (SAT)
En términos de IP, es resolver el problema de factibilidad (BIP):
x1 + (1 − x2 ) + x3 ≥ 1
x2 + x4 + (1 − x5 ) ≥ 1
(1 − x3 ) + x4 + x6 ) ≥ 1
...
x ∈ Bn .
Stephen Cook demostró (1971) que el problema SAT 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).
Carlos Testuri
Fundamentos de Programación Entera
15/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Lema de reducción
La formalización del mecanismo de comparación (o reducción) es
Proposición
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.
Carlos Testuri
Fundamentos de Programación Entera
16/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Comparación entre P y N P
Los problemas vistos están en P o en N PC.
Proposición
Si P ∩ N PC 6= ∅, entonces P = N P.
No se ha podido demostrar que P = N P o que P =
6 N P.
En la práctica se asume que P =
6 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.
Carlos Testuri
Fundamentos de Programación Entera
17/20
Complejidad computacional
Introducción
Problemas de decisión
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.
Carlos Testuri
Fundamentos de Programación Entera
18/20
Complejidad computacional
Introducción
Problemas de decisión
Reducción polinomial
Diagrama de clases
Las clases se pueden representar mediante un diagrama de Euler.
N P − hard
NP
P
N PC
Complejidad
Carlos Testuri
Fundamentos de Programación Entera
19/20
Complejidad computacional
Introducción
Problemas de decisión
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.
Carlos Testuri
Fundamentos de Programación Entera
20/20
Descargar