Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programación Dinámica: Conceptos, Algoritmos y Aplicaciones, Resúmenes de Programación C

Documento sobre la implementación de la programación Dinámica

Tipo: Resúmenes

2020/2021

Subido el 06/05/2021

marco-lopez-48
marco-lopez-48 🇸🇻

5

(1)

1 documento

1 / 19

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Programación Dinámica
Programación con Estructuras de
Datos
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Vista previa parcial del texto

¡Descarga Programación Dinámica: Conceptos, Algoritmos y Aplicaciones y más Resúmenes en PDF de Programación C solo en Docsity!

Programación Dinámica

Programación con Estructuras de

Datos

Programación Dinámica El término de Programación Dinámica fue usado originalmente en los 40 ’s para describir el proceso de resolver problemas donde se necesita encontrar las mejores decisiones una tras otra.

Programación Dinámica La Programación Dinámica (PD) determina la solución óptima de un problema de “n” variables descomponiéndola en “n” etapas, con cada etapa incluyendo un subproblema de una sola variable. La principal contribución de la PD es el principio de optimalidad, el cual establece que una política óptima consiste de subpolíticas óptimas, un marco de referencia para descomponer el problema en etapas. La mayor parte de las veces, la Programación Dinámica obtiene soluciones con un avance en reversa, desde el final de un problema hacia el principio con lo que un problema grande y engorroso se convierte en una serie de problemas más pequeños y más tratables.

Programación Dinámica Es una técnica algorítmica la cual está basada usualmente en una fórmula recurrente y uno (o varios) estado(s) inicial(es). Una sub-solución del problema es construida de las halladas previamente. Esta técnica se aplica sobre problemas que a simple vista necesitan un alto coste computacional (posiblemente exponencial). La Programación Dinámica utiliza un enfoque ascendente (bottom-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.

Elementos de la Programación Dinámica. Los siguientes cuatro elementos conforman la resolución de un problema mediante Programación Dinámica:

  1. Principio de Optimalidad de Bellman.
  2. Definición Recursiva de la solución óptima.
  3. Enfoque ascendente.
  4. Búsqueda de solución óptima.

Enunciado del principio de Bellman. “En una secuencia de decisiones óptima que resuelve un problema toda subsecuencia ha de ser también óptima” Hemos de observar que aunque este principio parece evidente no siempre es aplicable y por tanto es necesario verificar que se cumple para el problema en cuestión. Un ejemplo claro para el que no se verifica este principio aparece al tratar de encontrar el camino de coste máximo entre dos vértices de un grafo ponderado.

Características de los problemas de Programación Dinámica.

  1. El procedimiento de solución está diseñado para encontrar una política óptima para el problema completo, es decir, una receta para las decisiones de la política óptima en cada etapa para cada uno de los estados posibles.
  2. Dado el estado actual, una política óptima para las etapas restantes es independiente de la política adoptada en etapas anteriores. (este es el principio de optimalidad para la programación dinámica). En general en los problemas de Programación Dinámica, el conocimiento del estado actual del sistema expresa toda la información sobre su comportamiento anterior, y esta información es necesaria para determinar la política óptima de ahí en adelante.
  3. El procedimiento de solución se inicia al encontrar la política óptima para la última etapa. La política óptima para la última etapa prescribe la política óptima de decisión para cada estado posible en esa etapa.
  4. Se dispone de una relación recursiva que indica la política óptima para la etapa dada la política óptima para la etapa (n+ 1 )

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

  • Identificación de etapas, estados y variables de decisión: ❑ Cada etapa debe tener asociado una o más decisiones (problema de optimización), cuya dependencia de las decisiones anteriores está 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.

Problemas que se resuelven con Programación Dinámica a) Cálculo de los números de Fibonacci. b) Cálculo de los Coeficientes Binomiales. c) Cálculo de Intereses Bancarios. d) Viaje más barato por río. e) Problema del cambio de moneda. f) Algoritmos de Dijkstra, Floyd, Warshall. g) Problema del viajante de comercio. h) Problema de la mochila. i) Horarios de Trenes. j) Multiplicación Óptima de Matrices. k) Problema de la Diligencia. l) El problema de planificación en una fábrica de automóviles.

Cálculo de la sucesión de Fibonacci. En esta, la sucesión se puede expresar de manera recursiva. Pero con esto perdería mucho potencial dado que la forma recursiva repite cálculos innecesariamente, la estructura matemática es la siguiente: En esta se tienen tres estados posibles:

  • El primero es cuando n = 0 , se toma la decisión que se guardará 1 en la secuencia.
  • En el segundo, cuando n = 1 , se decide guardar 1 en la secuencia.
  • En el tercero, cuando n > 1 , se decide guardar la suma de los dos últimos valores de la secuencia.

Como puede verse: ➢ Se basa en una tabla de resultados. ➢ Se tiene una sucesión de etapas. ➢ Cada etapa tiene un estado asociado. ➢ A partir de ese estado se toma una decisión la cual afectará o no al siguiente estado. ➢ Se evita hacer cálculos innecesarios (recursividad).

El problema de la mochila por PD En una mochila de capacidad 8 lbs se desea saber qué elementos ingresar para maximizar la ganancia y que no sobrepase el peso soportado por la mochila $2. 1 lbs $5. 2 lbs $6. 4 lbs $10. 5 lbs $13. 7 lbs $16. 8 lbs

El problema de la mochila por PD ETAPA Artículo Peso(lb) Beneficio ($) 0 1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 A A A A A A A A 0 2 5 7 7 7 7 7 7 A B A + B A + B A + B A + B A + B A + B 0 2 5 7 7 8 11 13 13 A B A + B A + B A + C B + C A + B + C A + B + C 0 2 5 7 7 10 12 15 17 A B A + B A + B D A + D B + D A + B + D 0 2 5 7 7 10 12 15 17 A B A + B A + B D A + D B + D A + B + D 0 2 5 7 7 10 12 15 17 A B A + B A + B D A + D B + D A + B + D 5 E 7 13 6 F 8 16 3 C 4 6 4 D 5 10 GANANCIA EN PESO 1 A 1 2 2 B 2 5 Estado inicial