Está en la página 1de 11

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 vi y


pesos pi 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?
… 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

1
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

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

2
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 (1, 4/5, 1) 12 101
unidad de peso (vi/pi)

vi/pi = ( 8’16 , 8 , 10 )
5

Algoritmos voraces
EJEMPLO INTRODUCTORIO (3)

„ Tipificación del problema:

… Solución = secuencia de decisiones X =< x1 , x2 ,…, xn > xi ∈ \


… Se expresa la solución mediante una tupla < x1 , x2 , …, xn >
donde xi representa la decisión tomada con respecto al elemento i.
n
… Función objetivo: Max( ∑xv )
i =1
i i (valor transportado)

… Restricciones:
n
„ ∑x p
i =1
i i ≤P

⎧ xi = 0 no se selecciona el objeto i
„ xi ∈ [ 0,1] ⎪⎨ xi = 1 se selecciona el objeto i completo

⎩0 < xi < 1 fracción seleccionada del objeto i
6

3
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 xi=0 fpara (1)
P_acumulado=0
ORDENA_ELEMENTOS_DECRECIENTE_V/P (E,v,p) (2)
i=1
mientras (i ≤ n) ∧ (P_acumulado < P) hacer (3)
si P_acumulado+p[i] ≤ P entonces
P_acumulado += p[i]
x[i]=1
si_no
x[i]=(P – P_acumulado) / p[i]
n+nlogn+n→Ο(nlogn)
P_acumulado=P
fsi
i=i+1
fmientras
devuelve(x,E)
fin

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 =< x1 , x2 , …, xn > la solución obtenida por el algoritmo
„ Si xi = 1 ∀i : (1 ≤ i ≤ n ) la solución es óptima
„ En caso contrario:
… Supongamos que j es el índice tal que xj <1
… Entonces xi=1 cuando i<j ; xi=0 cuando i>j
… Sea Y =< y1 , y2 , …, yn > cualquier solución factible

∑ ∑ ∑
n n
yi pi ≤ P y por tanto: ( xi − yi ) pi ≥ 0
n
… Tenemos que: i =1
xi pi = P y i =1 i =1

vi
V ( X ) − V (Y ) = ∑ i =1 xi vi − ∑ i =1 yi vi = ∑ i =1 ( xi − yi )vi = ∑ i =1 ( xi − yi ) pi
n n n n
… Por otra parte
pi
… Y dado que siempre se cumple que ( xi − yi )( vi pi ) ≥ ( xi − yi )( v j p j )

… Podemos concluir que :


8

4
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

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

5
Algoritmos voraces
ESQUEMA

VORAZ (x:conjunto(λ);DP:T):conjunto(λ)
var y: conjunto(λ)
decisión: λ λ → Elemento del problema
solución: conjunto(λ) DP → Datos del problema
----------------------------
ES_SOLUCION: conjunto(λ) → bool
comienzo SELECCIONAR: conjunto(λ) → λ
y=x FACTIBLE: λ x conjunto(λ) → bool
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
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

6
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

7
Algoritmos voraces
PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento)

„ Sean n objetos con valores vi y pesos pi 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 < x1 , x2 ,…, xn >
donde xi representa la decisión tomada con respecto al elemento i.
n
…
i =1

Función objetivo: Max( xi vi ) (valor transportado)
… Restricciones:
n

„ ∑x p
i =1
i i ≤P

⎧ xi = 0 no se selecciona el objeto i
„ xi ∈ {0,1} ⎨
⎩ xi = 1 se selecciona el objeto i
15

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
X óptima = < 1,1,0 > → beneficio = 600

„ Este contraejemplo nos sirve para demostrar que el criterio óptimo


para la mochila con fraccionamiento, no es óptimo en este caso .

16

8
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 =< s1 , s2 ,…, sn >: si ∈ C
Función objetivo
• Min |S|, Min n
Restricciones
n

• ∑ valor( s ) = M
i =1
i

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.
C = {1,5, 25,50} M = 65
S =< 50,5,5,5 > n = 4 Solución óptima

C = {1,5, 7, 25,50} M = 65
S =< 50, 7, 7,1 > n=4 Solución óptima
S =< 50,5,5,5 > n=4 No es solución voraz

C = {1,5,11, 25,50} M = 65
S =< 50,11,1,1,1,1 > n = 6 Solución factible pero no óptima

C = {5,11, 25,50} M = 65
S =< 50,11,? > n=2 NO encuentra solución

18

9
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

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.

20

10
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á ti 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) = ∑
i =1
Ei

21

Algoritmos voraces
EJERCICIOS

„ 3.- LA ASIGNACION DE TAREAS


„ Supongamos que disponemos de n trabajadores y n tareas. Sea bij>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 xij, donde xij = 0 significa que al trabajador i no le
han asignado la tarea j, y xij = 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

∑ ∑
i=1 j =1
x ij b ij

„ Diremos que una asignación es óptima si es de mínimo coste.

22

11