algoritmos aproximados

9
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 5 1 4 3 2 5

Upload: jsadb

Post on 05-Dec-2015

2 views

Category:

Documents


0 download

DESCRIPTION

Apuntes sobre algoritmos aproximados

TRANSCRIPT

Page 1: Algoritmos aproximados

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

Page 2: Algoritmos aproximados

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

Page 3: Algoritmos aproximados

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

Page 4: Algoritmos aproximados

• 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

Page 5: Algoritmos aproximados

• 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!

Page 6: Algoritmos aproximados

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

Page 7: Algoritmos aproximados

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

Page 8: Algoritmos aproximados

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

Page 9: Algoritmos aproximados

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