Está en la página 1de 11

TEMA 5 ALGORITMOS VORACES

Departamento de Lenguajes y Sistemas Informticos 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 mxima de transporte de un peso P. Seleccionar un conjunto de objetos de forma que:

no sobrepase el peso P el valor transportado sea mximo


(restriccin) (funcin objetivo)

El problema se reduce a:

Seleccionar un subconjunto de los objetos disponibles Que cumpla las restricciones Maximice la funcin objetivo

Cmo resolverlo?

Seleccin de objetos a introducir en la mochila (secuencia de decisin) Se necesita un criterio que decida qu objeto seleccionar en cada momento (criterio de seleccin)

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:
SOLUCIN PESO VALOR

CRITERIO

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:
SOLUCIN PESO VALOR

CRITERIO

El de mayor valor El de menor peso

(1, 1, 1/2) (5/6, 1, 1)

12 12

99 100,8

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:
SOLUCIN PESO VALOR

CRITERIO

El de mayor valor El de menor peso El de mayor valor por unidad de peso (vi/pi)

(1, 1, 1/2) (5/6, 1, 1) (1, 4/5, 1)

12 12 12

99 100,8 101

vi/pi = ( 816 , 8 , 10 )
5

Algoritmos voraces
EJEMPLO INTRODUCTORIO (3)

Tipificacin del problema:


Solucin = secuencia de decisiones X =< x1 , x2 ,, xn > xi Se expresa la solucin mediante una tupla < x1 , x2 , , xn > donde xi representa la decisin tomada con respecto al elemento i.

Funcin objetivo: Max( Restricciones:


xv )
i =1 i i

(valor transportado)

x p
i =1 i

P
xi = 0 no se selecciona el objeto i se selecciona el objeto i completo
6

xi [ 0,1] xi = 1

0 < xi < 1 fraccin seleccionada del objeto i

Algoritmos voraces
EJEMPLO INTRODUCTORIO (4)
funcin 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 (1) para i=1 hasta n hacer xi=0 fpara P_acumulado=0 ORDENA_ELEMENTOS_DECRECIENTE_V/P (E,v,p) i=1 mientras (i n) (P_acumulado < P) hacer si P_acumulado+p[i] P entonces P_acumulado += p[i] x[i]=1 si_no x[i]=(P P_acumulado) / p[i] P_acumulado=P fsi i=i+1 fmientras devuelve(x,E) fin

(2) (3)

n+nlogn+n(nlogn)

Algoritmos voraces
EJEMPLO INTRODUCTORIO (5)

Conduce siempre este criterio a la obtencin de la solucin ptima? Teorema: Si se seleccionan los objetos por orden decreciente de v/p entonces este algoritmo encuentra la solucin ptima Demostracin: Supongamos los elementos ordenados (decreciente v/p) Sea X =< x1 , x2 , , xn > la solucin obtenida por el algoritmo

Si xi = 1 i : (1 i n ) la solucin es ptima En caso contrario:


Supongamos que j es el ndice tal que

xj <1

Sea Y =< y1 , y2 , , yn > cualquier solucin factible Tenemos que:

Entonces xi=1 cuando i<j ; xi=0 cuando i>j

n i =1

xi pi = P y

n i =1

yi pi P y por tanto:
n n

n i =1

( xi yi ) pi 0
n

Por otra parte

V ( X ) V (Y ) = i =1 xi vi i =1 yi vi = i =1 ( xi yi )vi = i =1 ( xi yi ) pi

vi pi

Y dado que siempre se cumple que Podemos concluir que :

( xi yi )( vi pi ) ( xi yi )( v j p j )
8

Algoritmos voraces
DEFINICION

Sea C un conjunto de elementos Problema de seleccin / optimizacin: aquel cuya resolucin consiste en obtener un subconjunto de C (que ser la solucin al problema) tal que:

Satisfaga unas restricciones Optimice una cierta funcin objetivo

Solucin factible: Aquella que cumple las restricciones del problema Solucin ptima: Solucin factible que optimiza (maximiza o minimiza) la funcin objetivo del problema.
Los algoritmos voraces implementan una estrategia de resolucin de este tipo de problemas

Algoritmos voraces
DEFINICION

Los algoritmos voraces implementan una estrategia concreta para obtener la solucin ptima al problema Pasos:

Construir la solucin por etapas En cada etapa:


Se elige un elemento i del conjunto C para incluirlo en el subconjunto solucin. El elemento i ser aquel que produce un ptimo local para esta etapa (segn estado actual de la solucin y sin considerar decisiones futuras) Se comprueba si la solucin sigue siendo factible al aadir i a la solucin. Si lo es, el candidato i se incluye en la solucin. Si no lo es, se descarta para siempre. La decisin es irreversible. El elemento i ya nunca se vuelve a reconsiderar.

Terminar el proceso cuando hayamos encontrado la solucin buscada o nos quedemos sin elementos que considerar
10

Algoritmos voraces
ESQUEMA VORAZ (x:conjunto();DP:T):conjunto() var y: conjunto() Elemento del problema decisin: DP Datos del problema solucin: conjunto() ---------------------------ES_SOLUCION: conjunto() bool SELECCIONAR: conjunto() comienzo FACTIBLE: x conjunto() bool y=x solucin= mientras (y ) (ES_SOLUCION(solucin)) hacer decisin=SELECCIONAR(y) si FACTIBLE(decisin,solucin) entonces solucin=solucin {decisin} fsi y = y {decisin} fmientras devuelve solucin fin
11

Algoritmos voraces
CARACTERSTICAS Y MBITO DE APLICACIN

Se obtiene algoritmos eficientes y fciles de implementar Costes normalmente polinmicos y a menudo O(nlgn) Porqu no se emplea siempre?

No todos los problemas admiten esta estrategia La bsqueda de ptimos locales no conduce siempre a ptimos globales. Para aplicarlo con garantas a un problema ha de encontrarse un criterio de seleccin que encuentre siempre la solucin ptima al problema.

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

12

Algoritmos voraces
CARACTERSTICAS Y MBITO DE APLICACIN

Se aplica mucho aunque se sepa que no necesariamente encuentran la solucin ptima Cuando es preferible una solucin aproximada a tiempo a una ptima

demasiado tarde Equilibrio entre eficiencia (reducida complejidad) y eficacia (solucin aproximada que depende del criterio de seleccin)

Pero CUIDADO!!. En estos casos:


Podemos obtener una solucin no ptima a un problema que la tiene o incluso podemos no encontrar ninguna solucin Para cada problema particular, hay que indagar si se pueden dar estas circunstancias y sobre todo, valorar cmo afectarn a la toma de decisiones derivada del uso del algoritmo

13

Algoritmos voraces
EJEMPLOS DE APLICACIN

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 vi y pesos pi y una mochila con capacidad mxima de transporte de un peso P. Seleccionar un conjunto de objetos de forma que:

no sobrepase el peso P el valor transportado sea mximo Expresaremos la solucin mediante una tupla < x1 , x2 ,, xn > donde xi representa la decisin tomada con respecto al elemento i.
n

Tipificacin del problema:


Funcin objetivo: Max( xi vi ) (valor transportado) i =1 Restricciones:



x p
i =1 i

P
xi = 0 no se selecciona el objeto i xi = 1 se selecciona el objeto i

xi {0,1}

15

Algoritmos voraces
PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento)

Cuando no se permiten fraccionar objetos, el mtodo voraz no resuelve el problema. No hay ningn criterio voraz (conocido) de seleccin que conduzca a la solucin ptima. Ejemplo: p = (60, 60, 20) n = 3 v = (300,300, 200) P = 120

v / p = (5,5,10) solucin: < 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

Algoritmos voraces
PROBLEMA DEL CAMBIO

Formar una cantidad M con el menor nmero de monedas tomadas de un conjunto C.


La solucin es una secuencia de decisiones (monedas):

S =< s1 , s2 ,, sn >: si C
Min |S|, Min n

Funcin objetivo

Restricciones

valor( s ) = M
i =1 i

Obtencin de la solucin: Dado que se trata de minimizar el nmero 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 nmero de monedas tomadas de un conjunto C.


C = {1,5, 25,50} M = 65

S =< 50,5,5,5 >

n = 4 Solucin ptima

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

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

C = {5,11, 25,50}
S =< 50,11,? >

M = 65
n=2 NO encuentra solucin

18

Algoritmos voraces
EJERCICIOS OBLIGATORIOS

1.- Calculo del rbol de recubrimiento de coste mnimo (Algoritmos de Prim y Kruskal) 2.- El fontanero diligente 3.- La asignacin 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 mnimo. Por rbol de recubrimiento de un grafo g entendemos un subgrafo sin ciclos que contenga a todos sus vrtices. En caso de haber varios rboles de coste mnimo, 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 aade un arco. La forma en la que se realiza esa eleccin 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 isima tardar ti minutos. Como en su empresa le pagan dependiendo de la satisfaccin 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 avera por completo, necesita minimizar la expresin:

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 asignacin de tareas puede ser expresada como una asignacin 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 asignacin vlida es aquella en la que a cada trabajador slo le corresponde una tarea y cada tarea est asignada a un trabajador. Dada una asignacin vlida, definimos el coste de dicha asignacin como: n n


i=1

j =1

ij

ij

Diremos que una asignacin es ptima si es de mnimo coste.


22

11

También podría gustarte