16
PROGRAMACIÓN DINÁMICA ESPECIALIZACIÓN EN GERENCIA INFORMÁTICA

Programación dinámica

Embed Size (px)

DESCRIPTION

Presentación realizada en el desarrollo de la Especialización en Gestión Informática

Citation preview

Page 1: Programación dinámica

PROGRAMACIÓN DINÁMICA

ESPECIALIZACIÓN EN GERENCIA INFORMÁTICA

Page 2: Programación dinámica

INTRODUCCIÓN

Existe una serie de problemas matemáticoscuya solución se puede dar mediante el empleode un algoritmo recursivo o mediante laimplementación de una resolución poretapas, planteando una serie de sub problemasa partir del problema principal; en amboscasos, la solución puede ser caótica, agrandarel tamaño del problema o simplemente, elmétodo empleado convertirse en impracticable.Esto puede mejorar sustancialmente mediantela Programación Dinámica, PD.

Page 3: Programación dinámica

¿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.

Page 4: Programación dinámica

¿A QUÉ PROBLEMAS SE APLICA?

Esta técnica se aplica sobre problemas que asimple vista necesitan un alto costecomputacional (posiblemente exponencial)donde:

– Subproblemas optimales: La soluciónóptima a un problema puede ser definida enfunción de Soluciones óptimas a subproblemasde tamaño menor, generalmente de formarecursiva.

– Solapamiento entre subproblemas: Alplantear la solución recursiva, un mismoproblema se resuelve más de una vez

Page 5: Programación dinámica

¿QUÉ SE LOGRA?

La PD utiliza un enfoque ascendente (botton-up) paraobtener la solución, primero calcula las solucionesóptimas a problemas de tamaño pequeño. Utilizandodichas soluciones encuentra soluciones a problemas demayor tamaño.

– La idea de la PD es encontrar la solución a lossubproblemas y almacenarlos en alguna estructura(diccionario) para utilizarlas posteriormente.

– Por tanto, es más eficiente que la fuerza bruta queresuelve 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).

Page 6: Programación dinámica

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

Page 7: Programación dinámica

PRINCIPIO DE OPTIMALIDAD DE BELLMAN

“Una secuencia óptima de decisiones queresuelve un problema debe cumplir lapropiedad de que cualquier subsecuencia dedecisiones debe ser tambien optimarespecto al subproblema que resuelve”.

Esto es, la solución optima a cualquierinstancia no trivial de un problema es unacombinación de soluciones óptimas dealgunas de las sub-instancias.

Page 8: Programación dinámica

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.

Page 9: Programación dinámica

RESOLUCIÓN DE UN PROBLEMA DE PD

Para resolver un problema de programación dinámicadebemos al menos cumplir con:

Identificación de etapas, estados y variable dedecisió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.

Page 10: Programación dinámica

Descripción de ecuaciones derecurrencia: Nos deben indicar como seacumula la función de beneficios a optimizar(función objetivo) y como varían lasfunciones de estado de una etapa a otra.

Resolución: Debemos optimizar cadasubproblema por etapas en función de losresultados de la resolución del subproblemasiguiente. Al final obtendremos una soluciónóptima para el problema.

Page 11: Programación dinámica

EL PROBLEMA DE LAS MONEDAS

Mi empresa de colectivos

• El precio de los boletos puede llegar a cambiar encualquier momento

• En todo momento se puede pagar con cualquiermoneda o billete

• Tengo que dar el vuelto usando pocas monedas obilletes

¿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 setoma nunca mas mi colectivo

Page 12: Programación dinámica

Si se tienen los siguientes tipos de monedas ybilletes:

Monedas de 1, 5, 10, 25 y 50 centavos y de 1peso

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

Page 13: Programación dinámica

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

Page 14: Programación dinámica

¿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

Page 15: Programación dinámica

CONCLUSIÓN

La programación Dinámica nos permite resolver un problema hallando soluciones sucesivas asub 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.

Page 16: Programación dinámica

WEBGRAFÍA

www.edicionsupc.es

www.lcc.uma.es

www.cimat.mx

www.sci2s.ugr.es

www.decsai.ugr.es

www.dc.uba.ar