Professional Documents
Culture Documents
ALGORITMOS
VORACES
UNIVERSIDAD DE ALICANTE
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)
Algoritmos voraces
EJEMPLO INTRODUCTORIO (2)
2
Algoritmos voraces
EJEMPLO INTRODUCTORIO (2)
vi/pi = ( 8’16 , 8 , 10 )
5
Algoritmos voraces
EJEMPLO INTRODUCTORIO (3)
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 )
4
Algoritmos voraces
DEFINICION
Algoritmos voraces
DEFINICION
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
12
6
Algoritmos voraces
CARACTERÍSTICAS Y ÁMBITO DE APLICACIÓN
13
Algoritmos voraces
EJEMPLOS DE APLICACIÓN
14
7
Algoritmos voraces
PROBLEMA DE LA MOCHILA DISCRETA (sin fraccionamiento)
∑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)
16
8
Algoritmos voraces
PROBLEMA DEL CAMBIO
• ∑ valor( s ) = M
i =1
i
17
Algoritmos voraces
PROBLEMA DEL CAMBIO
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
19
Algoritmos voraces
EJERCICIOS
20
10
Algoritmos voraces
EJERCICIOS
21
Algoritmos voraces
EJERCICIOS
∑ ∑
i=1 j =1
x ij b ij
22
11