PROGRAMACIÓN DINÁMICAESPECIALIZACIÓN EN GERENCIA INFORMÁTICA
INTRODUCCIÓNExiste 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:   – Subproblemasoptimales: La solución óptimaa 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ÁMICALos 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  PDPara 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 PDPara 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 monedasMi 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?El boleto, actualmente, sale $0,80
Viene alguien y paga con un billete de $50
El vuelto es $50 - $0.80 = $49,20
Si le llego a dar 492 monedas de 10 centavos, no se toma nunca mas mi colectivoSi 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 pesosSi 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,20En general, si voy tomando cada vez el billete mas grande que puedo, me da la cantidad mínima

Programación dinámica

  • 1.
  • 2.
    INTRODUCCIÓNExiste una seriede 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.
  • 3.
    ¿QUÉ ES LAPROGRAMACIÓ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.
  • 4.
    ¿A QUÉ PROBLEMASSE APLICA?Esta técnica se aplica sobre problemas que a simple vista necesitan un alto coste computacional (posiblemente exponencial) donde: – Subproblemasoptimales: La solución óptimaa 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
  • 5.
    ¿QUÉ SE LOGRA?LaPD 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).
  • 6.
    ELEMENTOS DE LAPROGRAMACIÓN DINÁMICALos 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
  • 7.
    Principio de Optimalidadde 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.
  • 8.
    CARACTERÍSTICAS DEUN PROBLEMA DE PDPara 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.
  • 9.
    RESOLUCIÓN DE UNPROBLEMA DE PDPara 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.
  • 10.
    Descripción de ecuacionesde 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.
  • 11.
    El problema delas monedasMi 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?El boleto, actualmente, sale $0,80
  • 12.
    Viene alguien ypaga con un billete de $50
  • 13.
    El vuelto es$50 - $0.80 = $49,20
  • 14.
    Si le llegoa dar 492 monedas de 10 centavos, no se toma nunca mas mi colectivoSi se tienen los siguientes tipos de monedas y billetes:Monedas de 1, 5, 10, 25 y 50 centavos y de 1 peso
  • 15.
    Billetes de 2,5, 10, 20, 50 y 100 pesosSi 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,20En general, si voy tomando cada vez el billete mas grande que puedo, me da la cantidad mínima
  • 17.
    ¿Cómo se aplicael principio del óptimo?Si requiero dar vuelto de $24,20En la anterior vuelto teníamos: $20 + $20 + $5 + $2 + $2 + $2c + $2c = $49,20Aplicando: $20 + $20 + $5 + $2 + $2 + $2c + $2c = $24,20
  • 18.
    CONCLUSIÓNLa programación Dinámicanos 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.
  • 19.