Documente Academic
Documente Profesional
Documente Cultură
Algoritmos Greedy
Caractersticas generales Elementos de un algoritmo greedy Esquema de un algoritmo greedy Ejemplos Seleccin de actividades Almacenamiento ptimo en cintas Problema de la mochila fraccional Heursticas greedy Ejemplo: El problema de la mochila Aplicaciones
1
Caractersticas generales
Se utilizan generalmente para resolver problemas de optimizacin (obtener el mximo o el mnimo). Toman decisiones en funcin de la informacin que est disponible en cada momento. Una vez tomada la decisin, sta no vuelve a replantearse en el futuro. Suelen ser rpidos y fciles de implementar. No siempre garantizan alcanzar la solucin ptima.
2
Caractersticas generales
greedy (adj): avaricioso, voraz, vido, codicioso, glotn
Caractersticas generales
NOTA IMPORTANTE El enfoque greedy no nos garantiza obtener greedy soluciones ptimas. Por lo tanto, siempre habr que estudiar la correccin del algoritmo para demostrar si las soluciones obtenidas son ptimas o no.
Elementos
Para poder resolver un problema usando el enfoque greedy, greedy, tendremos que considerar 6 elementos:
1. 2. 3.
4.
5.
6.
Conjunto de candidatos (elementos seleccionables). Solucin parcial (candidatos seleccionados). Funcin de seleccin (determina el mejor candidato del conjunto de candidatos seleccionables). Funcin de factibilidad (determina si es posible completar la solucin parcial para alcanzar una solucin del problema). Criterio que define lo que es una solucin (indica si la solucin parcial obtenida resuelve el problema). Funcin objetivo (valor de la solucin alcanzada). 5
Esquema general
Se parte de un conjunto vaco: S = . De la lista de candidatos, se elige el mejor (de seleccin). acuerdo con la funcin de seleccin). Comprobamos si se puede llegar a una solucin con el candidato seleccionado (funcin de factibilidad). (funcin factibilidad). Si no es as, lo eliminamos de la lista de candidatos posibles y nunca ms lo consideraremos. Si an no hemos llegado a una solucin, seleccionamos otro candidato y repetimos el proceso hasta llegar a una solucin [o quedarnos sin posibles candidatos].
Esquema general
Greedy (conjunto de candidatos C): solucin S
S = while (S no sea una solucin y C ) { x = seleccin(C) C = C {x} if (S{x} es factible) (S S = S{x} S } if (S es una solucin) return S; else return No se encontr una solucin;
7
10
13
15
16
17
18
19
20
21
22
23
ptimo
j1
j2
jr
jr+1
...
24
ptimo
j1
j2
jr
...
Pero entonces, la solucin parcial del algoritmo greedy sigue siendo factible y, adems, es ptima
25
Jon Kleinberg & Eva Tardos: Algorithm Design. Design. Seccin 4.1 Interval Scheduling: The greedy algorithm Interval Scheduling: stays ahead. ahead. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Cormen, Leiserson, Rivest & Clifford Stein: Introduction to Algorithms. Stein: Algorithms. [2 edicin] Seccin 16.1 An activity-selection problem. An activityproblem.
26
t j = li
1 k j
Nos piden que encontremos una permutacin de los n ficheros tal que, cuando estn almacenados en la cinta el TMR sea mnimo, lo que equivalente a minimizar
D( I ) =
1 j n 1 k j
li
27
k
= = = = = =
38 31 43 41 29 34
28
El algoritmo escoge la opcin ms inmediata sin tener en cuenta si esa decisin ser la mejor a largo plazo...
29
li
k =1 j =1
para todas las posibles permutaciones ij Demostracin: Ellis Horowitz & Sartaj Sahni: Sahni: Fundamentals of Computer Algorithms, 1978 Algorithms,
30
30 50 20 30
10 60
max
xb
1i n
i i
sujeto a
x p
i 1i n
P
32
Primero el ms valioso
Peso = 30 + 50 + 20 = 100 kg Beneficio = 65 + 50 + 20 = 135
34
Heursticas greedy
Hay situaciones en las cuales no podemos encontrar un algoritmo greedy que proporcione una solucin ptima En muchas ocasiones, se podran obtener mejores soluciones reconsiderando alternativas desechadas por un algoritmo greedy (cuando, a partir de una solucin ptima local no se puede alcanzar una solucin ptima global). Pese a ello, resultan tiles los algoritmos greedy que proporcionan una solucin rpida a problemas complejos, aunque sta no sea ptima.
35
Heursticas greedy
Heurstica: Procedimiento que proporciona una solucin aceptable a un problema mediante mtodos que carecen de justificacin formal (p.ej. por tanteo, usando reglas empricas). Heursticas para problemas concretos (p.ej. NP) Metaheursticas (heursticas de propsito general): Enfriamiento simulado Bsqueda tab GRASP [Greedy Randomized Adaptive Search Procedures] Procedures] Algoritmos bioinspirados: algoritmos genticos, bioinspirados: algoritmos memticos, colonias de hormigas memticos,
36
Heursticas greedy
Satisfacer vs. optimizar Cuando el tiempo que se tarda en resolver un problema es un factor clave, un algoritmo greedy puede utilizarse como criterio heurstico. Tambin puede utilizarse un algoritmo greedy para encontrar una primera solucin (como punto de partida para otra heurstica).
37
30 50 20 30
10 60
max
xb
1i n
i i
sujeto a
x p
i 1i n
P con xi {0,1}
39
40
Aplicaciones
Planificacin de tareas.
Minimizacin del tiempo de espera = Almacenamiento en cintas. Planificacin de tareas a plazo fijo = Seleccin de actividades.
Cajero (devolver un nmero mnimo de monedas/billetes [pero no sellos]). Caminos mnimos en grafos (algoritmo de Dijkstra). Dijkstra) rbol generador minimal (algoritmos de Prim & Kruskal). Kruskal) Cdigos Huffman y compresin de datos. Construccin de rboles de decisin. Heursticas greedy greedy
41