Dra. Elisa Schaeffer - elisa.dyndns-web.com · [email protected] PISIS / FIME / UANL...
Transcript of Dra. Elisa Schaeffer - elisa.dyndns-web.com · [email protected] PISIS / FIME / UANL...
Técnicas de diseño de algoritmos
Algoritmos de aproximación
Dra. Elisa Schaeffer
PISIS / FIME / UANL
Algoritmos de aproximacion– p. 1
Soluciones no-óptimas
En situaciones donde todos los algoritmos conocidosson lentos, vale la pena considerar la posilibidad de usaruna solución aproximada, o sea, una solución que tieneun valor de la función objetivo cerca del valoroptimo,pero no necesariamente el óptimo mismo.
Depende del área de aplicación sí o no se puede haceresto eficientemente.En muchos casos es posible llegar a una soluciónaproximada muy rápidamente mientras encontrar lasolución óptima puede ser imposiblemente lento.
Algoritmos de aproximacion– p. 2
Determinismo
Un algoritmo de aproximación puede ser determinista o nodeterminista.
Si el algoritmo de aproximación no es deterministayejecuta muy rápidamente, es común ejecutarlo variasvecesy elegir el mejor de las soluciones aproximadas asíproducidas.
Algoritmos de aproximacion– p. 3
Factor de aproximación
Un algoritmo de aproximación bien diseñado cuenta conun analisis formal que muestra que la diferenciaentre su solucion y la solucion optima es de unfactor constante.Este factor se llama el factor de aproximacion.
< 1 para maximización
> 1 para minimización
Depende de la aplicación qué tan cerca debería ser la soluciónaproximada a la solución óptima.
Algoritmos de aproximacion– p. 4
Tasa de aproximación
El valor extremo del factor sobre el conjunto de todaslas instancias del problema es la tasao ındice deaproximacion (inglés: approximation ratio).
Un algoritmo de aproximación tiene tasa constantesi elvalor de la solución encontrada es por máximo unmultiple constantedel valor óptimo.
Algoritmos de aproximacion– p. 5
Eficiencia
También habrá que mostrar formalmente que el algoritmode aproximación tiene complejidad polinomial.En el caso de algoritmos de aproximación probabilistas,basta con mostrar que sea polinomial con altaprobabilidad .
Algoritmos de aproximacion– p. 6
Esquemas de aproximación
Si existe un metodo sistematico para aproximar lasolución a factores arbitrarios, ese método se llamauna esquema de aproximacion (de tiempopolinomial) (inglés: (polynomial-time) approximationscheme).
Tiempo polinomial: PTAS.
Un libro de texto recomendable sobre algoritmos deaproximación es lo de Vazirani.
Algoritmos de aproximacion– p. 7
Bin packing
El problema de empaquetear a cajas:Dado: un conjunto finito de objetos Φ = {ϕ1, ϕ2 . . . , ϕN},cada uno con un tamano definido t(ϕi) ∈ R.Pregunta: ¿Cómo empaquetear en cajas de tamaño fijoT los objetos así que
T ≥ max{t(ϕi) | ϕi ∈ Φ}
y que el número de cajas utilizadas sea mínima.
Este problema también es NP-completo.
Algoritmos de aproximacion– p. 8
Algoritmo de aproximación
1. Ordenar las cajas en una fila.
2. Procesamos los objetos en orden.
3. Primero intentamos poner el objecto actualmenteprocesado en la primera caja de la fila.
4. Si cabe, lo ponemos allí, y si no, intentamos en lasiguiente caja.
5. Iterando así obtenemos alguna asignación de objetosa cajas.
Algoritmos de aproximacion– p. 9
Calidad de la solución
Denotamos con OPT(Φ) el número de cajas que contienenpor lo menos un objetoen la asignación óptima.
Se puede mostrar que el algoritmo de aproximación simpleutiliza al máximo 17
10OPT(Φ) + 2 cajas.
Esto significa que nunca alejamos a más de 70 % de lasolución óptima.
Algoritmos de aproximacion– p. 10
Mejora
Podemos mejorar aún por ordenar los objetos así queintentamos primero el más grande y después el segundomás grande.
Para este caso se puede mostrar que llegamos a utilizar almáximo 11
9OPT(Φ) + 4 cajas, que nos da una distancia
máxima de unos 22 % del óptimo.
Algoritmos de aproximacion– p. 11
Problema del viajante
Una versión los pesos un grafo completo ponderado sondistanciasentre los vértices d(v, w) que cumplen con ladesigualdad de triangulo
d(v, u) ≤ d(v, w) + d(w, u).
También es un problema NP-completo.
Algoritmos de aproximacion– p. 12
Algoritmo de aproximación
1. Construye un árbol de expansión mínimo en tiempoO (m log n).
2. Elige un vértice de inicio cualquiera v.
3. Recorre el árbol con DFS en tiempo O (m+ n) eimprime cada vértice a la primera visita (o sea, enpreorden).
4. Imprime v en tiempo O (1).
Algoritmos de aproximacion– p. 13
Análisis
El DFS recorre cada arista delarbol 2 veces; podemospensar en el recorrido como una ruta larga R′ que visitacada vértice por lo menos una vez, pero varias vérticesmás de una vez.
“Cortamos” de la ruta larga R′ cualquier visita a un vérticeque ya ha sido visitado, así logrando el mismo efecto deimprimir los vértices en preorder.
Por la desigualdad de triangulo, sabemos que la rutacortada R no puede ser más cara que la ruta larga R′.
Algoritmos de aproximacion– p. 14
Óptimos y árboles
El costo total de R′ es dos veces el costo del árbolcubriente mínimo.
Para lograr a comparar el resultado con el óptimo, hay queanalizar el óptimo en términos de árboles cubrientes.
Si eliminamos cualquier arista de la ruta óptima ROPT ,obtenemos un árbol cubriente.
Algoritmos de aproximacion– p. 15
La tasa
El peso de este árbol es por lo menos el mismo que elpeso de un árbol cubriente mínimo C.
Entonces, si marcamos el costo de la ruta R con c(R),hemos mostrado que necesariamente
c(R) ≤ c(R′) =≤ 2C ≤ 2c(ROPT ).
Algoritmos de aproximacion– p. 16
Búsqueda local
Cuando hemos obtenido una solución heurística yaproximada de manera cualquiera a un problema deoptimización, podemos intentar mejorarla por busquedalocal.Aplicamos operaciones pequeñas y rápidamenterealizadas para causar cambios pequeños en la soluciónasí que la solución mantiene factible y puede ser quemejora.
Libros buenos de búsqueda local incluyen el libro de de Aarts yLenstra y el libro de Hoos y Stützle.
Algoritmos de aproximacion– p. 17
Un ejemplo: 2-opt
Aplicada en el problema del viajante en un grafoponderado no dirigido G = (V,E).
El costo de una arista {v, w} es c(v, w) > 0.
Elegimos (al azar) 2 aristas de la ruta R: {s, t} y {u, v}.
Algoritmos de aproximacion– p. 18
Notaciones
Marcamos el segmento de la ruta entre t y u por A y el otrosegmento entre v y s por B así que
A = [tr1r2 . . . rku]
B = [vw1w2 . . . wℓs]
R = [tr1r2 . . . rkuvw1w2 . . . wℓst]
Algoritmos de aproximacion– p. 19
Candidato a intercambio
Si el grafo G tambiencontiene las aristas {v, t} y {s, u},evaluamos si
c(s, t) + c(u, v) > c(s, u) + c(v, t).
Si es así, podemos llegar a un costo total menor porreemplazar las aristas originales por las aristas másbaratas {v, t} y {s, u}:
R′ = [tr1rx2 . . . rkuswℓwℓ−1 . . . w2w1vt].
Algoritmos de aproximacion– p. 20
Ilustración
...
...
Algoritmos de aproximacion– p. 21