Вы находитесь на странице: 1из 11
TEMA 5 ALGORITMOS VORACES Departamento de Lenguajes y Sistemas Informáticos UNIVERSIDAD DE ALICANTE
TEMA 5
ALGORITMOS
VORACES
Departamento de Lenguajes y Sistemas Informáticos
UNIVERSIDAD DE ALICANTE

Algoritmos voraces (greedy)

EJEMPLO INTRODUCTORIO (1)

El Problema de la Mochila (continuo). Sean n objetos con valores v i y pesos p i y una mochila con capacidad máxima de transporte de un peso P. Seleccionar un conjunto de objetos de forma que:

no sobrepase el peso P

(restricción)

el valor transportado sea máximo

(función objetivo)

El problema se reduce a:

Seleccionar un subconjunto de los objetos disponibles Que cumpla las restricciones Maximice la función objetivo

¿Cómo resolverlo?

Maximice la función objetivo ¿Cómo resolverlo? Selección de objetos a introducir en la mochila (secuencia
Maximice la función objetivo ¿Cómo resolverlo? Selección de objetos a introducir en la mochila (secuencia

Selección de objetos a introducir en la mochila (secuencia de decisión) Se necesita un criterio que decida qué objeto seleccionar en cada momento (criterio de selección)

2

Algoritmos voraces

EJEMPLO INTRODUCTORIO (2)

¿Qué criterio seguimos?

Supongamos el siguiente ejemplo:

Criterios posibles:



P = 12

n = 3


p = (6,5,2)

v = (49, 40,20)

CRITERIO

SOLUCIÓN

PESO

VALOR

El de mayor valor

(1, 1, 1/2)

12

99

p = (6,5,2) v = (49, 40,20) CRITERIO SOLUCIÓN PESO VALOR El de mayor valor (1,
p = (6,5,2) v = (49, 40,20) CRITERIO SOLUCIÓN PESO VALOR El de mayor valor (1,

3

Algoritmos voraces

EJEMPLO INTRODUCTORIO (2)

¿Qué criterio seguimos?

Supongamos el siguiente ejemplo:


P = 12

n = 3

p = (6,5,2)

v = (49, 40,20)

Criterios posibles:

CRITERIO

SOLUCIÓN

PESO

VALOR

El de mayor valor

(1, 1, 1/2)

12

99

El de menor peso

(5/6, 1, 1)

12

100,8

PESO VALOR El de mayor valor (1, 1, 1/2) 12 99 El de menor peso (5/6,
PESO VALOR El de mayor valor (1, 1, 1/2) 12 99 El de menor peso (5/6,

4

Algoritmos voraces EJEMPLO INTRODUCTORIO (2) ¿Qué criterio seguimos? ⎧ P = 12 ⎪ Supongamos el
Algoritmos voraces
EJEMPLO INTRODUCTORIO (2)
¿Qué criterio seguimos?
⎧ P = 12
Supongamos el siguiente ejemplo:
⎧ p = (6,5,2)
n = 3
v = (49, 40,20)
Criterios posibles:
CRITERIO
SOLUCIÓN
PESO
VALOR
El de mayor valor
(1, 1, 1/2)
12
99
El de menor peso
(5/6, 1, 1)
12
100,8
El de mayor valor por
unidad de peso (v i /p i )
(1, 4/5, 1)
12
101
v i /p i = ( 8’16 ,
8 , 10 )
5
Algoritmos voraces
EJEMPLO INTRODUCTORIO (3)
Tipificación del problema:
Solución = secuencia de decisiones
X =< xx …>∈x x
,,,
1
2
n
i
Se expresa la solución mediante una tupla
< xx
,,,
… x >
1
2
n
donde x i representa la decisión tomada con respecto al elemento i.
n
Función objetivo:
Max(
x v
)
(valor transportado)
i
i
i = 1
Restricciones:
n
xp
P
i
i
i = 1
⎧ x
= 0
no se selecciona el objeto
i
i
x ∈ [0,1]
se selecciona el objeto
i
completo
i
x
= 1
i
0
<
x
<
1
fracción seleccionada del objeto
i
i
6
Algoritmos voraces EJEMPLO INTRODUCTORIO (4) función MOCHILA_C (E:vector[λ];v,p:vector[R];n,P:R):vector[0,1]x
Algoritmos voraces
EJEMPLO INTRODUCTORIO (4)
función MOCHILA_C (E:vector[λ];v,p:vector[R];n,P:R):vector[0,1]x
vector[λ]
var
P_acumulado: N
x: vector[0,1]
comienzo
para i=1 hasta n hacer x i =0 fpara
(1)
P_acumulado=0
(2)
i=1
(3)
n+nlogn+n→Ο (n logn )
devuelve(x,E)
fin
7
Algoritmos voraces EJEMPLO INTRODUCTORIO (5) ¿Conduce siempre este criterio a la obtención de la solución
Algoritmos voraces
EJEMPLO INTRODUCTORIO (5)
¿Conduce siempre este criterio a la obtención de la solución óptima?
Teorema: Si se seleccionan los objetos por orden decreciente de v/p entonces este
algoritmo encuentra la solución óptima
Demostración:
Supongamos los elementos ordenados (decreciente v/p)
Sea
X =< xx
,,,
…>x
la solución obtenida por el algoritmo
1
2
n
Si
x
=
1
∀i ≤≤in
: (1
)
la solución es óptima
i
En caso contrario:
x
< 1
Supongamos que j es el índice tal que
j
Entonces x i =1 cuando i<j ; x i =0 cuando i>j
Y =< yy
,,,
…>y
Sea
cualquier solución factible
1
2
n
n
n
x p
= P
yp
≤ P
n
1 (
x
yp
)0
Tenemos que:
y
y por tanto:
i
i
i
i
i
ii
i = 1
i = 1
i =
xv
yv
=
(
x
−= y ) v
ii
ii
i
i
i
iii
===
111
p
i
Y dado que siempre se cumple que
(
x
− y
)(
vp
)
(
x
− y
)(
v
p
)
i
iii
i
i
j
j
Podemos concluir que :
8

Por otra parte

V

(

X

)

V

() Y

=

∑∑∑ nnn

n

i

=

Por otra parte V ( X ) − V () Y = ∑∑∑ nnn ∑ n

1

(

x

i

y

i

)

p

i

v

i

Algoritmos voraces

DEFINICION

Sea C un conjunto de elementos Problema de selección / optimización: aquel cuya resolución consiste en obtener un subconjunto de C (que será la solución al problema) tal que:

Satisfaga unas restricciones Optimice una cierta función objetivo

Solución factible: Aquella que cumple las restricciones del problema Solución óptima: Solución factible que optimiza (maximiza o minimiza) la función objetivo del problema.

Los algoritmos voraces implementan una estrategia de resolución de este tipo de problemas

9

Algoritmos voraces

DEFINICION

Los algoritmos voraces implementan una estrategia concreta para

obtener la solución óptima al problema Pasos:

Construirá la solución por etapas En cada etapa:

Se elige un elemento i del conjunto C para incluirlo en el subconjunto solución.

El elemento i será aquel que produce un óptimo local para esta etapa (según estado actual de la solución y sin considerar decisiones futuras)

Se comprueba si la solución sigue siendo factible al añadir i a la solución. Si lo es, el candidato i se incluye en la solución. Si no lo es, se descarta para siempre.

La decisión es irreversible. El elemento i ya nunca se vuelve a reconsiderar.

Terminará el proceso cuando hayamos encontrado la solución buscada o nos quedemos sin elementos que considerar

10

Algoritmos voraces

ESQUEMA

VORAZ (x:conjunto(λ);DP:T):conjunto(λ) var y: conjunto(λ) decisión: λ solución: conjunto(λ) comienzo y=x
VORAZ (x:conjunto(λ);DP:T):conjunto(λ)
var y: conjunto(λ)
decisión: λ
solución: conjunto(λ)
comienzo
y=x
solución=∅
mientras (y ≠ ∅) ∧ (¬ES_SOLUCION(solución)) hacer
decisión=SELECCIONAR(y)
si FACTIBLE(decisión,solución) entonces
solución=solución ∪ {decisión}
fsi
y = y – {decisión}
fmientras
devuelve solución
fin

λ Elemento del problema DP Datos del problema

----------------------------

ES_SOLUCION: conjunto(λ) bool SELECCIONAR: conjunto(λ) λ FACTIBLE: λ x conjunto(λ) bool

11

Algoritmos voraces

CARACTERÍSTICAS Y ÁMBITO DE APLICACIÓN

Se obtiene algoritmos eficientes y fáciles de implementar

Costes normalmente polinómicos y a menudo O(nlgn)

¿Porqué no se emplea siempre?

No todos los problemas admiten esta estrategia La búsqueda de óptimos locales no conduce siempre a óptimos globales. Para aplicarlo con garantías a un problema ha de encontrarse un criterio de selección que encuentre siempre la solución óptima al problema.

Es decir, hemos de demostrar formalmente que la función escogida consigue encontrar óptimos globales para cualquier entrada del algoritmo.

12

Algoritmos voraces

CARACTERÍSTICAS Y ÁMBITO DE APLICACIÓN

Se aplica mucho aunque se sepa que no necesariamente encuentran la solución óptima

Cuando es preferible una solución aproximada a tiempo a una óptima demasiado tarde Equilibrio entre eficiencia (reducida complejidad) y eficacia (solución aproximada que depende del criterio de selección)

Pero ¡¡CUIDADO!!. En estos casos:

Podemos obtener una solución no óptima a un problema que la tiene o incluso podemos no encontrar ninguna solución Para cada problema particular, hay que indagar si se pueden dar estas circunstancias y sobre todo, valorar cómo afectarán a la toma de decisiones derivada del uso del algoritmo

13

Algoritmos voraces

EJEMPLOS DE APLICACIÓN

Problema de la mochila discreta (sin fraccionamiento) Problema del cambio

14

Algoritmos voraces PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento) Sean n objetos con valores v
Algoritmos voraces
PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento)
Sean n objetos con valores v i y pesos p i y una mochila con capacidad
máxima de transporte de un peso P. Seleccionar un conjunto de
objetos de forma que:
no sobrepase el peso P
el valor transportado sea máximo
Tipificación del problema:
Expresaremos la solución mediante una tupla
< x x … x >
,,,
1
2
n
donde x i representa la decisión tomada con respecto al elemento i.
n
Max(
x v
)
Función objetivo:
(valor transportado)
i
i
i = 1
Restricciones:
n
xp
≤ P
i
i
i = 1
x ∈
{0,1}
⎧ x
= 0
no se selecciona el objeto
i
i
i
⎩ se selecciona el objeto
= 1
i
x i
15
Algoritmos voraces PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento) Cuando no se permiten fraccionar objetos,
Algoritmos voraces
PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento)
Cuando no se permiten fraccionar objetos, el método voraz no
resuelve el problema.
No hay ningún criterio voraz (conocido) de selección que conduzca
a la solución óptima.
Ejemplo:
⎧ p = (60,60, 20)
n
= 3
v = (300,300,200)
P
= 120
v /
p =
(5,5,10)
solución:
<
0,1,1
>→
beneficio
=
500
=<
1,1,0
>→
beneficio
=
600
X óptima
Este contraejemplo nos sirve para demostrar que el criterio óptimo
para la mochila con fraccionamiento, no es óptimo en este caso .
16
Algoritmos voraces PROBLEMA DEL CAMBIO Formar una cantidad M con el menor número de monedas
Algoritmos voraces
PROBLEMA DEL CAMBIO
Formar una cantidad M con el menor número de monedas tomadas
de un conjunto C.
La solución es una secuencia de decisiones (monedas):
S =< ss
,
,
… s >
,
:
s ∈ C
1
2
n
i
Función objetivo
• Min |S|, Min n
Restricciones
n
• ∑
valor s
(
i ) =
M
i = 1
Obtención de la solución: Dado que se trata de minimizar el
número de monedas, se deberá tomar la de mayor valor
posible (siempre que se satisfagan las restricciones).
17

Algoritmos voraces

PROBLEMA DEL CAMBIO

Formar una cantidad M con el menor número de monedas tomadas de un conjunto C.

con el menor número de monedas tomadas de un conjunto C . S =< 50,5,5,5 >=
con el menor número de monedas tomadas de un conjunto C . S =< 50,5,5,5 >=

S

=< 50,5,5,5 >=n

4

Solución óptima

S

=< 50,7,7,1 >=n

4

Solución óptima

S

=< 50,5,5,5 >=n

4

No es solución voraz

S

=< 50,11,1,1,1,1 >=n

6

Solución factible pero no óptima

S

=<>50,11,?

n = 2

NO encuentra solución

18

Algoritmos voraces

EJERCICIOS OBLIGATORIOS

1.- Calculo del árbol de recubrimiento de coste mínimo (Algoritmos de Prim y Kruskal) 2.- El fontanero diligente 3.- La asignación de tareas

de recubrimiento de coste mínimo (Algoritmos de Prim y Kruskal) 2.- El fontanero diligente 3.- La
de recubrimiento de coste mínimo (Algoritmos de Prim y Kruskal) 2.- El fontanero diligente 3.- La

19

Algoritmos voraces

EJERCICIOS

1.- ARBOL DE RECUBRIMIENTO DE COSTE MINIMO Partimos de un grafo conexo, ponderado y no dirigido g = (V,A) de arcos no negativos, y deseamos encontrar el árbol de recubrimiento de g de coste mínimo. Por árbol de recubrimiento de un grafo g entendemos un subgrafo sin ciclos que contenga a todos sus vértices. En caso de haber varios árboles de coste mínimo, nos quedaremos de entre ellos con el que posea menos arcos. Existen al menos dos algoritmos muy conocidos que resuelven este problema, como son el de Prim y el de Kruskal. En ambos se va construyendo el árbol por etapas, y en cada una se añade un arco. La forma en la que se realiza esa elección es la que distingue a ambos algoritmos.

y en cada una se añade un arco. La forma en la que se realiza esa
y en cada una se añade un arco. La forma en la que se realiza esa
y en cada una se añade un arco. La forma en la que se realiza esa
y en cada una se añade un arco. La forma en la que se realiza esa

20

Algoritmos voraces EJERCICIOS 2.- EL FONTANERO DILIGENTE Un fontanero necesita hacer n reparaciones urgentes, y
Algoritmos voraces
EJERCICIOS
2.- EL FONTANERO DILIGENTE
Un fontanero necesita hacer n reparaciones urgentes, y sabe de
antemano el tiempo que le va a llevar cada una de ellas: en la tarea i-
ésima tardará t i minutos. Como en su empresa le pagan dependiendo
de la satisfacción del cliente, necesita decidir el orden en el que
atenderá los avisos para minimizar el tiempo medio de espera de los
clientes.
En otras palabras, si llamamos Ei a lo que espera el cliente i-ésimo
hasta ver reparada su avería por completo, necesita minimizar la
expresión:
n
E
(
n
)
= ∑
E
i
i = 1
21
Algoritmos voraces EJERCICIOS 3.- LA ASIGNACION DE TAREAS Supongamos que disponemos de n trabajadores y
Algoritmos voraces
EJERCICIOS
3.- LA ASIGNACION DE TAREAS
Supongamos que disponemos de n trabajadores y n tareas. Sea b ij >0
el coste de asignarle el trabajo j al trabajador i. Una asignación de
tareas puede ser expresada como una asignación de los valores 0 ó
1 a las variables x ij , donde x ij = 0 significa que al trabajador i no le
han asignado la tarea j, y x ij = 1 indica que sí. Una asignación válida
es aquella en la que a cada trabajador sólo le corresponde una tarea
y cada tarea está asignada a un trabajador.
Dada una asignación válida, definimos el coste de dicha asignación
como:
n
n
∑ ∑
x
b
ij
ij
i
=
1
j
=
1
Diremos que una asignación es óptima si es de mínimo coste.
22