La Programación Dinámica Y El Problema de la Mochila

Anuncio
La Programación Dinámica
Y El Problema de la Mochila
Rafael García
IMDEA Networks
[email protected]
www.informagica.org
Descripción del Problema
Aplicaciones
Sucesión de Fibonacci
Fibonacci Recursivo
función fibonacci(n)
si n <= 2 entonces
retorna 1
si no
retorna fibonacci(n-1)
+ fibonacci(n-2)
f(7) = f(6) + f(5)
f(6) = f(5) + f(4)
f(5) = f(4) + f(3)
Programación Dinámica
SP ← vector(n)
función fib(n)
si n <= 2 entonces
retorna 1
si no
si SP[n] = 0 entonces
SP[n] ← fib(n-1) + fib(n-2)
retorna SP[n]
Algoritmo de la Mochila
Pesos Máximos
0
1
2
3
4
5
0
0
0
1
0
2
0
3
0
0
0
0
0
Número de Objetos
4
0
5
0
6
0
Algoritmo de la Mochila
0
1
2
3
4
5
0
0
0
1
0
1
2
0
1
3
0
1
4
0
1
5
0
1
6
0
1
0
0
2
2
3
3
3
3
3
3
1€
1 Kg
?
0
0
2€
1 Kg
2€
2 Kg
El Algoritmo de la Mochila
repetir desde i←0 hasta n
repetir desde j←0 hasta PM
si P[i] > j entonces
SP[i][j] ← SP[i-1][j]
si no
si V[i]+SP[i-1,j-P[i]] > SP[i-1,j] entonces
SP[i,j] ← V[i] + SP[i-1,j-p[i-1]]
si no
SP[i,j] ← V[i-1, j]
Para Saber Más
www.or.deis.unibo.it/knapsack.html
www.informagica.org
Descargar