Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo:
2 B 9 Caminos de A a D
A-C-D, A-C=3, C-D=7 de longitud 10.
A D A-B-D, A-B=2, B-D=9 de longitud 11.
3
C 7
Método general
Aspectos a definir en un algoritmo de programación dinámica:
1. Ecuación recurrente, para calcular la solución de los problemas
grandes en función de los problemas mas pequeños.
2. Determinar los casos base.
3. Definir las tablas utilizadas por el algoritmo y como son rellenadas.
4. Como se recompone la solución global a partir de los valores de las
tablas.
Análisis de tiempos de ejecución
El tiempo de ejecución depende de las características concretas del
problema a resolver.
En general será de la forma:
Tamaño de la tabla * tiempo de rellenar cada elemento de la tabla
Un aspecto importante de los algoritmos de programación dinámica
es que necesitan una tabla para almacenar los resultados parciales,
que puede ocupar mucha memoria.
Además algunos de estos cálculos pueden ser innecesarios.
Ejemplo de aplicación: Problema del cambio de monedas
Problema: Dado un conjunto de n tipos de monedas, cada una con
valor Ci, y dada una cantidad P, encontrar el numero mínimo de
monedas que tenemos que usar para obtener esa cantidad.
j=0
Ejemplos de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6)
1+Cambio(i,j-di)
1+Cambio(1,1-1)
1+Cambio(1,0) = 1 + 0 = 1
Ejemplo de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6)
1+Cambio(i, j-di)
1+Cambio(1,2-1)
1+Cambio(1,1) = 1 + 1 = 2
Ejemplo de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6)
1+Cambio(i, j-di)
1+Cambio(1,3-1)
1+Cambio(1,2) = 1 + 2 = 3
Ejemplo de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6)
1+Cambio(i, j-di)
Termina la primera iteración 1+Cambio(1,8-1)
1+Cambio(1,7) = 1 + 7 = 8
Ejemplos de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6)
j=8
Monedas
j 0 1 2 3 4 5 6 7 8 M
i di Si(i>1 ^ d[i,j]=d[i-1,j]) i=i-1
Sino
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
M[i]++
1 C1 = 1 0 1 2 3 4 5 6 7 8 j=j-di
i=2 2 C2 = 4 0 1 2 3 1 2 3 4 2 1
3 C3 = 6 0 1 2 3 1 2 1 2 2
Ejemplos de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6), determinar la cantidad de monedas usadas.
j=4
Di Monedas
j 0 1 2 3 4 5 6 7 8 M
di Si(i>1 ^ d[i,j]=d[i-1,j]) i=i-1
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ Sino
M[i]++
1 C1 = 1 0 1 2 3 4 5 6 7 8 j=j-di
i=2 2 C2 = 4 0 1 2 3 1 2 3 4 2 1
3 C3 = 6 0 1 2 3 1 2 1 2 2
Ejemplo de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6), determinar la cantidad de monedas usadas.
j=4
Di Monedas
j 0 1 2 3 4 5 6 7 8 M
Si(i>1 ^ d[i,j]=d[i-1,j]) i=i-1
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
Sino
1 C1 = 1 0 1 2 3 4 5 6 7 8 M[i]++
i=2 2 C2 = 4 0 1 2 3 1 2 3 4 2 2 j=j-di
3 C3 = 6 0 1 2 3 1 2 1 2 2
Ejemplo de aplicación: Problema del cambio de monedas
Ejemplo: n=3, P=8, c=(1, 4, 6), determinar la cantidad de monedas usadas.
j=0
Di Monedas
0 1 2 3 4 5 6 7 8 M Si j=0 se termina el proceso
j
0 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
1 C1 = 1 0 1 2 3 4 5 6 7 8
i=2 2 C2 = 4 0 1 2 3 1 2 3 4 2 2
3 C3 = 6 0 1 2 3 1 2 1 2 2
Ejemplo de aplicación: Problema del cambio de monedas
Dinámica N° 1
Estimado estudiante en grupo proceda a encontrar el mejor cambio para los
siguientes casos:
Caso Grupo
1 n=3, P=6, c=(1, 3, 5) 1,5
2 n=3, P=9, c=(1,4,5) 2,6
3 n=3, P=5, c=(1,2,3) 3,7
4 n=3, P=7, c=(1, 2, 4) 4,8
5 n=4, P=10, c=(1, 3, 6, 8) Todos