2. 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.
3. ¿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.
4. ¿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
5. ¿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).
6. 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
7. 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.
8. 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.
9. 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.
10. 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.
17. ¿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
18. 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.