Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Greedy IA
Greedy IA
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
Caractersticas generales
greedy (adj):
avaricioso, voraz, vido, codicioso, glotn
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.
2.
3.
4.
5.
6.
Esquema general
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
(S{x} es factible)
S = S
S{x}
}
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
10
Ejemplo
Seleccin de actividades
Estrategias greedy alternativas
Orden en el que se pueden considerar las actividades:
Ejemplo
Seleccin de actividades
Estrategias greedy alternativas
Contraejemplos (para descartar alternativas)
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[
C[0
0]; // seleccionar la primera actividad
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
S[prev].fin)
].fin) // factible(x)?
S[++
[++prev
prev]
] = x;
// 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
Tiempo
16
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
Tiempo
17
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
Tiempo
B A
18
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
Tiempo
19
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
Tiempo
D
E
20
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
Tiempo
21
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
Tiempo
22
Ejemplo
Seleccin de actividades
B
C
A
E
D
F
G
H
B
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
ptimo
j1
j2
jr
ir+1
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
...
25
Ejemplo
Seleccin de actividades
Demostracin de optimalidad
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 =
n 1 j nt j
t j = li
1 k j
li
1 j n 1 k j
27
k
Ejemplo
Almacenamiento en cintas
Almacenamiento ptimo en cintas
Ejemplo
n=3
(5,10
10,,3)
(l1,l2,l3) = (5
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
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
30
Ejemplo
Problema de la mochila 0/1
Objeto 3
30
50
Objeto 2
20
30
30
Objeto 1
20
10
60
100
120
Mochila
20
10
10
160
180
220
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
i i
sujeto a
1i n
x p
i
1i n
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
Primero el ms valioso
Peso = 30 + 50 + 20 = 100 kg
Beneficio = 65 + 50 + 20 = 135
33
Ejemplo
Problema de la mochila fraccional
Algoritmo greedy:
greedy: Seleccionamos los objetos en
orden decreciente de densidad
densidad..
bi/pi bi+
i+1
1/pi+
i+1
1 para 1 i < n
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).
36
Heursticas greedy
Satisfacer vs. optimizar
37
Ejemplo
Problema de la mochila 0/1
Objeto 3
30
50
Objeto 2
20
30
30
Objeto 1
20
10
60
100
120
Mochila
20
10
10
160
180
220
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
i i
1i n
sujeto a
x p
i
P con xi {0,1}
1i n
39
Ejemplo
Problema de la mochila 0/1
Heurstica greedy
Ordenar los objetos por densidad no creciente:
creciente:
bi/pi bi+
i+1
1/pi+
i+1
1 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/2
2 (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.
41