Sunteți pe pagina 1din 21

Algoritmos Greedy

Anlisis y Diseo de Algoritmos

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

Cmete siempre todo lo que tengas a mano!

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

Ejemplo Seleccin de actividades


Tenemos que elegir de entre un conjunto de actividades: Para cada actividad, conocemos su hora de comienzo y su hora de finalizacin. Podemos asistir a todas las actividades que queramos. Sin embargo, hay actividades que se solapan en el tiempo y no podemos estar en dos sitios a la vez. Posibles objetivos 1. Asistir al mayor nmero de actividades posible. 2. Minimizar el tiempo que estamos ociosos.
8

Ejemplo Seleccin de actividades


Problema de seleccin de actividades Dado un conjunto C de n actividades, con si = tiempo de comienzo de la actividad i fi = tiempo de finalizacin de la actividad i encontrar el subconjunto S de actividades compatibles de tamao mximo (esto es, actividades que no se solapen en el tiempo).
9

Ejemplo Seleccin de actividades


Elementos del problema Conjunto de candidatos: C = {actividades ofertadas}. Solucin parcial: S (inicialmente, S=). Funcin de seleccin: menor duracin, menor solapamiento, terminacin ms temprana Funcin de factibilidad: x es factible si es compatible (esto es, no se solapa) con las actividades de S. Criterio que define lo que es una solucin: C=. Funcin objetivo (lo que tratamos de optimizar): El tamao de S.

10

Ejemplo Seleccin de actividades


Estrategias greedy alternativas Orden en el que se pueden considerar las actividades: Orden creciente de hora de comienzo. Orden creciente de hora de finalizacin. Orden creciente de duracin: fi - si Orden creciente de conflictos con otras actividades (con cuntas actividades se solapa).
11

Ejemplo Seleccin de actividades


Estrategias greedy alternativas Contraejemplos (para descartar alternativas) Orden creciente de hora de comienzo. Orden creciente de duracin: fi - si Orden creciente de conflictos con otras actividades
12

Ejemplo Seleccin de actividades


Algoritmo Greedy SeleccinActividades (C: actividades): S Ordenar C en orden creciente de tiempo de finalizacin. Seleccionar la primera actividad de C (esto es, extraerla del conjunto C y aadirla a S). Repetir Extraer la siguiente actividad del conjunto ordenado: Si comienza despus de que la actividad previa en S haya terminado, seleccionarla (aadirla a S). hasta que C est vaco.

13

Ejemplo Seleccin de actividades


Algoritmo Greedy SeleccinActividades (C: actividades): S
{ sort(C); sort(C); // ordenar segn tiempo de finalizacin S[0] = C[0]; // seleccionar la primera actividad S[0 C[0 i = 1; prev = 0; while (i<C.length) { (i<C.length) // solucin(S)? x = C[i]; C[i]; // seleccionar x if (x.inicio >= S[prev].fin) // factible(x)? S[prev].fin) S[++prev] = x; [++prev] // aadir x a S i++; }
14

Ejemplo Seleccin de actividades


B C A E D F G H Tiempo

15

Ejemplo Seleccin de actividades


B C A E D F G H B Tiempo

16

Ejemplo Seleccin de actividades


B C A E D F G H B C Tiempo

17

Ejemplo Seleccin de actividades


B C A E D F G H B A Tiempo

18

Ejemplo Seleccin de actividades


B C A E D F G H B E Tiempo

19

Ejemplo Seleccin de actividades


B C A E D F G H B D E Tiempo

20

Ejemplo Seleccin de actividades


B C A E D F G H B E F Tiempo

21

Ejemplo Seleccin de actividades


B C A E D F G H B E G Tiempo

22

Ejemplo Seleccin de actividades


B C A E D F G H B E H Tiempo

23

Ejemplo Seleccin de actividades


Demostracin de optimalidad Por reduccin al absurdo: Suponemos que el algoritmo no calcula la solucin ptima
La actividad ir+1 termina antes que la jr+1 greedy i1 i1 ir ir+1

ptimo

j1

j2

jr

jr+1

...

Por qu no reemplazar la actividad jr+1 con ir+1?

24

Ejemplo Seleccin de actividades


Demostracin de optimalidad Por reduccin al absurdo: Suponemos que el algoritmo no calcula la solucin ptima
La actividad ir+1 termina antes que la jr+1 greedy i1 i1 ir ir+1 ir+1

ptimo

j1

j2

jr

...

Pero entonces, la solucin parcial del algoritmo greedy sigue siendo factible y, adems, es ptima

25

Ejemplo Seleccin de actividades


Demostracin de optimalidad

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

Ejemplo Almacenamiento en cintas


Almacenamiento ptimo en cintas Tenemos n ficheros que hay que almacenar en una cinta de longitud L. Cada fichero i tiene una longitud li , 1 i n Todos los ficheros se recuperan del mismo modo, siendo el tiempo medio de recuperacin (TMR),
TMR = 1 n 1 j nt j

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

Ejemplo Almacenamiento en cintas


Almacenamiento ptimo en cintas Ejemplo n=3 (5 10, (l1,l2,l3) = (5,10,3) Orden I 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 Valor D(I) 5 + 5 + 10 + 5 + 10 + 3 5 + 5 + 3 + 5 + 3 + 10 10 + 10 + 5 + 10 + 5 + 3 10 + 10 + 3 + 10 + 3 + 5 3 + 3 + 5 + 3 + 5 + 10 3 + 3 + 10 + 3 + 10 + 5

= = = = = =

38 31 43 41 29 34

28

Ejemplo Almacenamiento en cintas


Almacenamiento ptimo en cintas Algoritmo greedy
Partiendo de la cinta vaca Mientras queden ficheros por guardar Elegir el fichero ms pequeo Aadirlo a continuacin en la cinta

El algoritmo escoge la opcin ms inmediata sin tener en cuenta si esa decisin ser la mejor a largo plazo...
29

Ejemplo Almacenamiento en cintas


Almacenamiento ptimo en cintas Teorema Si l1 l2 ln, entonces el orden de colocacin ij = j, 1 j n n k minimiza

li
k =1 j =1

para todas las posibles permutaciones ij Demostracin: Ellis Horowitz & Sartaj Sahni: Sahni: Fundamentals of Computer Algorithms, 1978 Algorithms,

30

Ejemplo Problema de la mochila 0/1


Objeto 3 Objeto 2 Objeto 1

30 50 20 30

30 20 10 100 120 Mochila 160 20 10 180 220

10 60

Cmo seleccionamos los objetos de la mochila? NP


31

Ejemplo Problema de la mochila fraccional


El problema consiste en llenar una mochila: La mochila puede soportar como mximo un peso P. Tenemos n objetos fraccionables. fraccionables. Cada objeto i tiene un peso pi y proporciona un beneficio bi Objetivo: Maximizar el beneficio de los objetos transportados.

max

xb
1i n

i i

sujeto a

x p
i 1i n

P
32

Ejemplo Problema de la mochila fraccional


Ejemplo Mochila de 100kg 100kg
Beneficio () Peso (kg) 20 30 65 40 60 10 20 30 40 50

Cmo seleccionamos los objetos? Primero el ms ligero


Peso = 10+20+30+40 = 100 kg 10+20+30+ Beneficio = 20+30+65+40 = 155 20+30+65+

Primero el ms valioso
Peso = 30 + 50 + 20 = 100 kg Beneficio = 65 + 50 + 20 = 135

Primero el que tenga ms valor por unidad de peso


Peso = 30 + 10 + 20 + 40 = 100 kg Beneficio = 65 + 20 + 30 + 48 = 163
33

Ejemplo Problema de la mochila fraccional


Definimos la densidad del objeto Oi como bi/pi. Algoritmo greedy: Seleccionamos los objetos en greedy: orden decreciente de densidad. densidad. bi/pi bi+1/pi+1 para 1 i < n i+1 i+1 Se aade a la mochila todo lo que se pueda: pueda: entero, Si un objeto Oi no cabe entero, se rellena el espacio disponible con la fraccin del objeto que quepa hasta completar la capacidad de la mochila. mochila.

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

Ejemplo Problema de la mochila 0/1


Objeto 3 Objeto 2 Objeto 1

30 50 20 30

30 20 10 100 120 Mochila 160 20 10 180 220

10 60

Cmo seleccionamos los objetos de la mochila?


38

Ejemplo Problema de la mochila 0/1


Un algoritmo greedy proporciona la solucin ptima del problema de la mochila cuando se pueden fraccionar los objetos. Sin embargo, el problema es ms difcil de resolver cuando no se pueden fraccionar los objetos

max

xb
1i n

i i

sujeto a

x p
i 1i n

P con xi {0,1}

39

Ejemplo Problema de la mochila 0/1


Heurstica greedy Ordenar los objetos por densidad no creciente: creciente: bi/pi bi+1/pi+1 para 1 i < n i+1 i+1 Con un nmero ilimitado de objetos de cada tipo, tipo, si M es el valor mximo de los objetos que se pueden llevar en la mochila, la heurstica garantiza obtener, al mochila, obtener, menos, menos, un valor de M/2 (George Dantzig, 1957). M/2 Dantzig, 1957). Sin embargo, la heurstica puede proporcionar resultados mucho peores (muy alejados del ptimo) ptimo) para instancias particulares del problema. problema.

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

S-ar putea să vă placă și