Upload
jsadb
View
2
Download
0
Embed Size (px)
DESCRIPTION
Apuntes sobre algoritmos aproximados
Citation preview
Algoritmos aproximados
Algoritmos exactos
• Algoritmo exacto:– Algoritmo que siempre calcula una solución
óptima para un problema de optimización
• Técnicas para diseñar algoritmos exactos:– Técnica voraz– Técnicas de búsqueda:
• Vuelta atrás
• Ramificación y poda
– Programación dinámica
Heurísticas
• Algoritmos no exactos:– Algoritmos que no siempre calculan una solución
óptima (sólo para algunos datos)
• Algoritmos basados en una función de selección:
– Diseño similar a los voraces, pero no exactos:• Heurísticas:
– Algoritmos sencillos y eficientes, a menudo basados en el sentido común
• Algoritmos aproximados:– Calculan una solución cercana a la óptima y acotada
• Número mínimo de colores para colorear los nodos de un grafo de forma que los nodos adyacentes tengan colores distintos
• Ejemplo:
Coloreado de un grafo
1
4
3
2 51
4
3
2 5
Coloreado de un grafo
• Algoritmo heurístico:– Se ordenan los nodos y los colores
– Se toma un color y se intentan colorear todos los nodos posibles con el primer color
– Se toma en siguiente color y se intentan colorear todos los nodos posibles aún no coloreados
– Así sucesivamente hasta colorear todos los nodos
Coloreado de un grafo
• Ejemplo:
• Orden 1-3-4-2-5: 2 colores
• Orden 1-5-2-3-4: 3 colores
1
4
3
2 5
Coloreado de un grafo
• Casos extremos:– Orden que permite encontrar el número
mínimo n de colores:• Se disponen en primer lugar los nodos coloreados
en la solución óptima con el color 1, después los nodos coloreados con el color 2 y así sucesivamente hasta el último color n
Coloreado de un grafo
• Casos extremos:– Dado un grafo bipartito, orden que hace que
esta heurística necesite 2 colores: 1, 3, …, 2n-1, 2, 4, …, 2n
1
4
3
2
5
8
7
6
Coloreado de un grafo
• Casos extremos:– Dado un grafo bipartito, orden que hace que
esta heurística necesite n colores: 1, 2, …, 2n-1, 2n
1
4
3
2
5
8
7
6
Problema del viajante
• Ciclo hamiltoniano más corto
• Ejemplo:– Solución óptima: 1-2-3-6-4-5-1,
3+8+20+15+5+7 = 58
1
5
2
6
3
4
3
10117
25
81226 9
9420
518
15
• Algoritmo heurístico:– Tomar siempre el arco de longitud menor a algún nodo
no visitado
• Ejemplo:
– Solución heurística: 1-2-3-5-4-6-1, 3+8+4+5+15+25 = 60
1
5
2
6
3
4
3
10117
25
81226 9
9420
518
15
Problema del viajante
• Ejemplo:
– Solución heurística: 1-2-3-5-4-6-1, 3+8+4+5+15+25 = 60
– Solución óptima: 1-2-3-6-4-5-1, 3+8+20+15+5+7 = 58
1
5
2
6
3
4
3
10117
25
81226 9
9420
518
15
Problema del viajante
• Haciendo la distancia entre el primer y el último nodo arbitrariamente larga, tenemos una solución arbitrariamente mala
• Problema del viajante métrico:d(i,j) d(i,k) + d(k,j)
Esta propiedad permite sustituir dos arcos (i,k) y (k,j) por otro (i,j) igual o menor
Problema del viajante Algoritmos aproximados
• Justificación:– Problemas para los que sólo hay algoritmos
ineficientes
– Si es aceptable una solución subóptima pero “buena”
• Clases de algoritmos aproximados:– Algoritmo aproximado c-absoluto:
• La solución calculada dista de la óptima en un valor máximo de c
– Algoritmo aproximado ε-relativo:• La solución calculada dista de la óptima en un error relativo
máximo de ε
• Algoritmo aproximado:– Árbol de recubrimiento de
coste mínimo (ARM):3+7+4+5+15 = 34
– Long. ARM Long. ciclo hamiltoniano óptimo
– Un recorrido del árbol de recubrimiento de coste mínimo tiene el doble de longitud:
1-2-1-5-3-5-4-6-4-5-1, 68
Problema del viajante
15
1
52
6
3 4
3 7
4 5
• Algoritmo aproximado:– Pueden suprimirse las
visitas a nodos ya visitados, que equivale a sustituir dos arcos por uno menor o igual
Problema del viajante
15
1
52
6
3 4
3 7
4 59
9
2518
• Algoritmo aproximado:– Resulta el recorrido en
preorden del ARM:1-2-5-3-4-6-1,
3+9+4+9+15+25 = 65
Problema del viajante
15
1
52
6
3 4
3
49
9
25
• Algoritmo aproximado:– Algoritmo aproximado 1-relativo:
• Long. recorrido en preorden de ARM 2·long.ARM 2·ciclo.hamil.ópt.
• Como máximo tiene el doble de coste que la solución óptima
Problema del viajante
• Formulación para su resolución por búsqueda o por programación dinámica:– Sea h(i,S) la longitud del camino mínimo desde el
nodo i hasta 1 que pase exactamente una vez por cada nodo de S:
• Ecuaciones:
• Llamada inicial: h(1,S-{1})
• i{1..n}, Spartes de N-{1} ¡de tamaño 2n-1!
Problema del viajante Problema de la mochila 0/1
• Algoritmos heurísticos o aproximados:– Algoritmo heurístico:
• El algoritmo voraz (B/P) óptimo en 81% casos
• No proporciona ninguna cota en la diferencia o proporción con respecto a la solución óptima
• Ejemplo:– p1=1, b1=2
– p2=x, b2=x, para un valor x arbitrariamente grande
• Podemos probar otras heurísticas con GreedEx:– ¡El algoritmo voraz B óptimo en 85% casos!
Problema de la mochila 0/1
• Algoritmos heurísticos o aproximados:– Algoritmo aproximado:
• Tomar el máximo entre la solución voraz y el objeto de mayor beneficio absoluto
• Algoritmo aproximado ½-relativo:– Como mínimo calcula la mitad de beneficio de la
solución óptimaVéase clase Mochilas_0_1
Sistema OptimEx
• Sistema para la experimentación y comparación de algoritmos de optimización:– Parecido a GreedEx, pero:
• Genérico
• Sin visualizaciones• Sin explicaciones
– Guía de uso
Sistema OptimEx• Tabla de resumen:
– Número de ejecuciones– Porcentajes de casos en que se han obtenido resultados
óptimos, subóptimos o “superóptimos”
– Desviación, como porcentaje, de los resultados no óptimos con respecto a las soluciones óptimas
Problema de selección de actividades
• Implementado en GreedEx• Existen algoritmos voraces óptimos:
– Orden creciente de fin de actividad
– Orden decreciente de comienzo de actividad
• Algoritmo aproximado:– Orden creciente de duración de actividad
– Diferencia relativa la mitad (1-relativo)
– Sin embargo:• Calcula la solución óptima en más del 95% de los casos• En la mayor parte de los casos subóptimos sólo difiere en 1
actividad
Problema del llenado de cajas (a)
• Problema de maximización
• Sean objetos de pesos ps={2,3,4,5} y 2 cajas de capacidad c=7:– Número máximo de objetos que pueden
meterse: 4, {2,5},{3,4}
Problema del llenado de cajas (a)
• Algoritmo aproximado para k cajas:– Se ordenan los objetos en orden creciente de
peso y se van metiendo en cada caja y en orden todos los objetos que se pueda:
• Solución ej. anterior, objetos de pesos ps={2,3,4,5} y 2 cajas de capacidad c=7: 3 objetos, {2,3},{4}
• Algoritmo aproximado 1-absoluto
Véase versiones masObjetos… de clase LlenadoCajas
Problema del llenado de cajas (b)
• Problema de minimización
• Sean objetos de pesos ps={5,2,4,1,8} y capacidad de cada caja c=10:– Número mínimo de cajas para meter los
objetos: 2, {5,4,1}, {2,8}
Problema del llenado de cajas (b)
• Algoritmo de vuelta atrás:– Árbol de búsqueda creado, ps={5,2,4,1,8},c=10:
Véase versión menosCajasBack de clase LlenadoCajas
Problema del llenado de cajas (b)
• Algoritmos aproximados:– Igual a la función de selección de la versión anterior
del problema
– Se ordenan los objetos en orden creciente de peso y se van metiendo en cada caja y en orden todos los objetos que se pueda:
• Sean objetos de pesos {2,3,4,5} y cajas de capacidad 7. Solución: 3 cajas, {2,3},{4},{5}. Solución óptima: 2, {2,5}, {3,4}
• Algoritmo aproximado con un valor menor o igual que 2+opt·17/10
Véase versión menosCajasAprox1 de clase LlenadoCajas
Problema del llenado de cajas (b)
• Algoritmos aproximados:– Se ordenan los objetos en orden decreciente de peso
y se va metiendo cada uno en la primera caja donde cabe:
• Solución ejemplo anterior, cajas de capacidad 7: 2 cajas, {5,2},{4,3}
• Contraejemplo: sean objetos de pesos {6,5,3,2,2,2} y cajas de capacidad 10. Solución: 3 cajas, {6,3},{5,2,2},{2}. Solución óptima: 2 cajas, {6,2,2},{5,3,2}
• Algoritmo aproximado con un valor menor o igual que 4+opt·11/9 Véase versión menosCajasAprox2
de clase LlenadoCajas
Problema del equilibrado de carga
• Problema de minimización
• Sean tareas de tiempos ts={2,3,4,6,2,2} y 3 procesadores:– Se desea repartir las tareas entre los
procesadores de forma equilibrada– Máxima carga de algún procesador: 7, {6},
{4,2},{3,2,2}
Problema del equilibrado de carga
• Algoritmos de aproximación:– Cada tarea se asigna a la máquina que tiene menos
carga:• Sean tareas de tiempos ts={2,3,4,6,2,2} y 3 procesadores.
Solución: máxima carga 8, {6,2},{3,2},{4,2}. Solución óptima: 7, {6},{4,2},{3,2,2}
• Algoritmo aproximado con una diferencia relativa del doble (1-relativo)
Véase versión equilibrarCargaAprox1 de clase EquilibradoCargas
Problema del equilibrado de carga
• Algoritmos de aproximación:– Las tareas se ordenan en orden decreciente de
duración y se van asignando a la máquina que tiene menos carga:
• Sean tareas de tiempos ts={2,3,4,6,2,2} y 3 procesadores. Solución (óptima): máxima carga 7, {6},{4,2},{3,2,2}
• Sean tareas de tiempos ts={3,3,3,4,5} y 5 procesadores. Solución: máxima carga 10, {5,3},{4,3,3}. Solución óptima: 9, {5,4},{3,3,3}
• Algoritmo aproximado con una diferencia relativa de 3/2 (½-relativo)
Véase versión equilibrarCargaAprox2 de clase EquilibradoCargas