Está en la página 1de 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!

3
Caractersticas generales

NOTA IMPORTANTE

El enfoque greedy
greedy no nos garantiza obtener
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,, tendremos que considerar 6 elementos:
greedy
1. Conjunto de candidatos (elementos seleccionables).
2. Solucin parcial (candidatos seleccionados).
3. Funcin de seleccin (determina el mejor candidato
del conjunto de candidatos seleccionables).
4. Funcin de factibilidad (determina si es posible
completar la solucin parcial para alcanzar una solucin
del problema).
5. Criterio que define lo que es una solucin (indica
si la solucin parcial obtenida resuelve el problema).
6. 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


acuerdo con la funcin de seleccin).
seleccin).

 Comprobamos si se puede llegar a una solucin con el


candidato seleccionado (funcin
(funcin de factibilidad).
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]. 6

Esquema general
Greedy (conjunto de candidatos C): solucin S
S =
while (S no sea una solucin y C ) {
x = seleccin(C)
C = C {x}
(S{x} es factible)
if (S
S{x}
S = 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
S[0] = C[0]; // seleccionar la primera actividad
C[0
i = 1; prev = 0;
while (i<
(i<C.length
C.length)
) { // solucin(S)?
x = C[i
C[i];
]; // seleccionar x
if (x.inicio >= S[prev].fin) // factible(x)?
S[prev].fin)
S[++
[++prev
prev]
] = x; // aadir x a S
i++;
}
14
}

Ejemplo
Seleccin de actividades
B

H Tiempo

15
Ejemplo
Seleccin de actividades
B

H Tiempo

16

Ejemplo
Seleccin de actividades
B

H Tiempo

B C

17
Ejemplo
Seleccin de actividades
B

H Tiempo

B A

18

Ejemplo
Seleccin de actividades
B

H Tiempo

B E

19
Ejemplo
Seleccin de actividades
B

H Tiempo

B D
E

20

Ejemplo
Seleccin de actividades
B

H Tiempo

B E F

21
Ejemplo
Seleccin de actividades
B

H Tiempo

B E G

22

Ejemplo
Seleccin de actividades
B

H Tiempo

B E H

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

ptimo j1 j2 jr ir+1 ...

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
Interval Scheduling
Scheduling:: The greedy algorithm
stays ahead
ahead..
 Thomas H. Cormen,
Cormen, Charles E. Leiserson,
Leiserson, Ronald L.
Rivest & Clifford Stein:
Stein: Introduction to Algorithms.
Algorithms.
[2 edicin] Seccin 16.1 An
An activity-
activity-selection problem
problem.
.

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),
1
TMR =
n 1 j nt j
t j = li1 k j
k

 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 ) = li
1 j n 1 k j
k
27
Ejemplo
Almacenamiento en cintas
Almacenamiento ptimo en cintas
Ejemplo
n=3
(l1,l2,l3) = (5
(5,10
10,,3)

Orden I Valor D(I)


1,2,3 5 + 5 + 10 + 5 + 10 + 3 = 38
1,3,2 5 + 5 + 3 + 5 + 3 + 10 = 31
2,1,3 10 + 10 + 5 + 10 + 5 + 3 = 43
2,3,1 10 + 10 + 3 + 10 + 3 + 5 = 41
3,1,2 3 + 3 + 5 + 3 + 5 + 10 = 29
28
3,2,1 3 + 3 + 10 + 3 + 10 + 5 = 34

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
minimiza n k

li
k =1 j =1
j

para todas las posibles permutaciones ij

Demostracin: Ellis Horowitz & Sartaj Sahni


Sahni::
Fundamentals of Computer Algorithms,
Algorithms, 1978 30

Ejemplo
Problema de la mochila 0/1

Objeto 3 30

Objeto 2 50 30
20
Objeto 1 30
20 20
10 10 10

60 100 120 Mochila 160 180 220

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
1i n
i i P
32

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

Cmo seleccionamos los objetos?


 Primero el ms ligero
Peso = 10
10+
+20
20+
+30
30++40 = 100 kg
Beneficio = 20
20+
+30
30+
+65
65+
+40 = 155
 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:
greedy: Seleccionamos los objetos en
orden decreciente de densidad
densidad..

bi/pi bi+
i+11/pi+
i+11 para 1 i < n

 Se aade a la mochila todo lo que se pueda


pueda::
Si un objeto Oi no cabe entero
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:
bioinspirados: algoritmos genticos,
algoritmos memticos,
memticos, colonias de hormigas 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 30

Objeto 2 50 30
20
Objeto 1 30
20 20
10 10 10

60 100 120 Mochila 160 180 220

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
1i n
i i 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+
i+11/pi+
i+11 para 1 i < n

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,
mochila, la heurstica garantiza obtener,
obtener, al
menos,, un valor de M/
menos M/22 (George Dantzig
Dantzig,, 1957).
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

También podría gustarte