Vous êtes sur la page 1sur 16

PROGRAMACIÓN DINÁMICA

ESPECIALIZACIÓN EN GERENCIA INFORMÁTICA


INTRODUCCIÓN
 Existe una serie de problemas matemáticos
cuya solución se puede dar mediante el empleo
de un algoritmo recursivo o mediante la
implementación de una resolución por
etapas, planteando una serie de sub problemas
a partir del problema principal; en ambos
casos, la solución puede ser caótica, agrandar
el tamaño del problema o simplemente, el
método empleado convertirse en impracticable.
Esto puede mejorar sustancialmente mediante
la Programación Dinámica, PD.
¿QUÉ ES LA PROGRAMACIÓN DIMÁMICA?

 La Programación Dinámica es una técnica


de programación que se emplea típicamente
para resolver problemas de optimización en
los cuales el problema principal se encuadra
en varios subproblemas, solucionando cada
uno de ellos y luego ligando las soluciones
de una forma óptima, donde la solución final
permita resolver y tomar decisiones
correctas a problemas actuales y futuros.
¿A QUÉ PROBLEMAS SE APLICA?
 Esta técnica se aplica sobre problemas que a
simple vista necesitan un alto coste
computacional (posiblemente exponencial)
donde:
– Subproblemas optimales: La solución
óptima a un problema puede ser definida en
función de Soluciones óptimas a subproblemas
de tamaño menor, generalmente de forma
recursiva.
– Solapamiento entre subproblemas: Al
plantear la solución recursiva, un mismo
problema se resuelve más de una vez
¿QUÉ SE LOGRA?
 La PD utiliza un enfoque ascendente (botton-up) para
obtener la solución, primero calcula las soluciones
óptimas a problemas de tamaño pequeño. Utilizando
dichas soluciones encuentra soluciones a problemas de
mayor tamaño.
– La idea de la PD es encontrar la solución a los
subproblemas y almacenarlos en alguna estructura
(diccionario) para utilizarlas posteriormente.
– Por tanto, es más eficiente que la fuerza bruta que
resuelve el mismo subproblema una y otra vez.
-- Evita calcular lo mismo varias veces. Usualmente se
utiliza una matriz que se rellena conforme las soluciones
a los Subproblemas que son calculados (espacio vs.
tiempo).
ELEMENTOS DE LA PROGRAMACIÓN DINÁMICA

 Los siguientes cuatro elementos conforman


la resolución de un problema mediante PD:
1. Principio de Optimalidad de Bellman
2. Definición Recursiva de la solución
optimal
3. Enfoque ascendente
4. Búsqueda solución optima
PRINCIPIO DE OPTIMALIDAD DE BELLMAN

 “Una secuencia óptima de decisiones que


resuelve un problema debe cumplir la
propiedad de que cualquier subsecuencia de
decisiones debe ser tambien optima
respecto al subproblema que resuelve”.
 Esto es, la solución optima a cualquier
instancia no trivial de un problema es una
combinación de soluciones óptimas de
algunas de las sub-instancias.
CARACTERÍSTICAS DE UN PROBLEMA DE PD
 Para que un problema pueda ser resuelto con la técnica de
programación dinámica, debe cumplir con ciertas
características:
- Naturaleza secuencial de las decisiones: El problema puede
ser dividido en etapas.
- Cada etapa tiene un numero de estados asociados a ella.
- La decisión óptima de cada etapa depende solo del estado
actual y no de las decisiones anteriores.
- La decisión tomada en una etapa determina cual será el
estado de la etapa siguiente.
 En síntesis, la política óptima desde un estado s de la etapa k
a la etapa final esta constituida por una decisión que
transforma s en un estado s’ de la etapa k +1 y por la política
óptima desde el estado s’ hasta la etapa final.
RESOLUCIÓN DE UN PROBLEMA DE PD
 Para resolver un problema de programación dinámica
debemos al menos cumplir con:
 Identificación de etapas, estados y variable de
decisión:
• Cada etapa debe tener asociado una o mas decisiones
(problema de optimización), cuya dependencia de las
decisiones anteriores esta dada exclusivamente por las
variables de estado.
• Cada estado debe contener toda la información
relevante para la toma de decisión asociada al período.
• Las variables de decisión son aquellas sobre las cuales
debemos definir su valor de modo de optimizar el
beneficio acumulado y modificar el estado de la próxima
etapa.
 Descripción de ecuaciones de
recurrencia: Nos deben indicar como se
acumula la función de beneficios a optimizar
(función objetivo) y como varían las
funciones de estado de una etapa a otra.
 Resolución: Debemos optimizar cada
subproblema por etapas en función de los
resultados de la resolución del subproblema
siguiente. Al final obtendremos una solución
óptima para el problema.
EL PROBLEMA DE LAS MONEDAS
 Mi empresa de colectivos
• El precio de los boletos puede llegar a cambiar en
cualquier momento
• En todo momento se puede pagar con cualquier
moneda o billete
• Tengo que dar el vuelto usando pocas monedas o
billetes
 ¿Vuelto usando pocas monedas?
o El boleto, actualmente, sale $0,80
o Viene alguien y paga con un billete de $50
o El vuelto es $50 - $0.80 = $49,20
o Si le llego a dar 492 monedas de 10 centavos, no se
toma nunca mas mi colectivo
 Si se tienen los siguientes tipos de monedas y
billetes:
 Monedas de 1, 5, 10, 25 y 50 centavos y de 1
peso
 Billetes de 2, 5, 10, 20, 50 y 100 pesos
 Si el vuelto de $49,20, ¿Cuál es la mejor
manera (menos cantidad de billetes y monedas)
de dar esa cantidad?
 20 + 20 + 5 + 2 + 2 + 10C+ 10C = 49,20
 En general, si voy tomando cada vez el billete
mas grande que puedo, me da la cantidad
mínima
FALTA DAR ELIJO QUEDA

$ 49,20 20 $ 29,20

$ 29,20 20 $ 9,20

$ 9,20 5 $ 4,20

$ 4,20 2 $ 2,20

$ 2,20 2 $ 0,20

$ 0,20 C 10 C $ 10 C

$ 10 C 10 C $0
¿CÓMO SE APLICA EL PRINCIPIO DEL ÓPTIMO?

 Si requiero dar vuelto de $24,20


 En la anterior vuelto teníamos:

$20 + $20 + $5 + $2 + $2 + $2c + $2c =


$49,20
Aplicando:
$20 + $20 + $5 + $2 + $2 + $2c + $2c =
$24,20
CONCLUSIÓN
 La programación Dinámica nos permite resolver un problema hallando soluciones sucesivas a
sub problemas de menor tamaño y ligándolas como solución óptima del problema.
 Para desarrollar el proceso de PD se debe
1. Ver si se aplica el Principio de Optimalidad de Bellman:
– Encontrar la estructura de la solución:
• Dividir el problema en subproblemas y determinar si se puede aplicar el principio de
optimalidad.
2. Definición recursiva de la solución optimal:
– Definir el valor de la solución óptima en función de valores de soluciones para sub-problemas
de
tamaño menor.
3. Calcular el valor de la solución optimal utilizando un enfoque ascendente.
– Determinar el conjunto de subproblemas distintos a resolver (tamaño de la tabla)
– Identificar los subprblemas con solucion trivial
– Obtener los valores con un enfoque ascendente y almacenar los valores que vamos calculado
en la
tabla.
– En etapas posteriores se utilizaran los valores previamente calculados
4. Determinar la solución óptima a partir de la información préviamente calculada.
 Así, programación dinámia consiste en solucionar el presente suponiendo que en cada etapa
futura siempre se tomaran las decisiones correctas.
WEBGRAFÍA

 www.edicionsupc.es
 www.lcc.uma.es

 www.cimat.mx

 www.sci2s.ugr.es

 www.decsai.ugr.es

 www.dc.uba.ar

Vous aimerez peut-être aussi