Programacion Dinamica

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

PROGRAMACION DINAMICA

Introducción

El objetivo de la programación dinámica es encontrar una solución de un problema de


optimización en forma secuencial. Al contrario de la programación lineal, la programación en si
no es un algoritmo de solución única, es más bien el método para solucionar un problema de
gran magnitud además resolviendo una secuencia de problemas más pequeños, sin tener en
cuenta el número de ellos. Ahora, mediante la programación dinámica solventar un problema
que depende del tiempo en forma de una continuidad de problemas de un sólo periodo, en la
cual los parámetros de cada etapa dependen del periodo que se considera; es posible que no
se conozca la cuantificación de cada periodo sino hasta que éste llega.

Objetivos

• Aprender a identificar las generalidades de la programación dinámica y aplicando la


metodología y la resolución de problemas en donde la toma de decisiones es fundamental en
las diferentes fases.

• Conocer la diferencia de los distintos métodos que se pueden emplear en la solución y


ejecución de problemas, equiparando conceptos como programación dinámica determinista,
estocástica y programación lineal.

Desarrollo

La programación dinámica es un método de optimización que se puede utilizar en la resolución


de problemas de matemática aplicada y para darle estructura a una solución óptima,
definiendo el camino más adecuado para hallarla.

Utilizamos este tipo de programación cuando se tienen problemas en la cual se dividen en


subproblemas similares, de tal manera que su solución pueda ser reutilizada. Por lo general
esta programación se utiliza para la optimización.[ CITATION Cor20 \l 3082 ]

Los problemas que pueden se resueltos mediante programación dinámica, deben tener y
cumplir ciertas características, como:

• El problema puede ser dividido en etapas.


• Cada etapa tiene un número de estados asociados a ella.

• La decisión óptima de cada etapa depende sólo del estado actual y no de las decisiones
anteriores.

• La decisión tomada en una etapa determina cuál será el estado de la etapa siguiente

Cuando una variable describe cuántas decisiones han sido tomadas hasta cierto momento y si
el número total de decisiones es fijo, el número de etapas será igual al número de decisiones.
Las variables de estado, que son las posibles condiciones variadas en las cuales el
procedimiento se encuentra en esa etapa del problema y el número de estados, pueden ser
finitas o infinitas. La decisión en cada etapa es el resultado de asignar un número de veces las
variables de estado sucesivas Xn, Xn+1 que están unidas a través de la ecuación recursiva que
calcula los valores de Xn+1 usando el valor de Xn y la decisión en el estado dn. Las variables de
estado pertenecen al presente estado con el anterior y permiten calcular la restante cantidad
de recursos escasos. En programación dinámica existen dos procedimientos:

1. En retroceso: Caracterizado por tener unas condiciones terminales fijas y el cálculo de


valores numéricos se realiza desde la línea terminal al punto inicial.

2. En avance: Caracterizado por tener unas condiciones iniciales fijas y el cálculo de valores
numéricos se realiza desde la línea inicial al punto final.

Frente a una serie de problemas cuyas soluciones pueden ser expresadas recursivamente en
términos matemáticos, posiblemente la manera más natural de resolverlos es mediante un
método recursivo. Sin embargo, el tiempo de ejecución de una solución, normalmente de
orden exponencial, puede mejorarse mediante la programación dinámica. Para resolver un
problema se pueden hacer muchas divisiones y obtener subproblemas independientes, de esta
manera se puede llegar más fácil a la solución del problema original, sin embargo, no todos los
problemas se pueden resolver de esta forma, ya que cuando los subproblemas obtenidos no
son independientes, sino que existe solapamiento entre ellos, la solución no resulta ser
eficiente por la repetición de cálculos que conlleva. En estos casos es cuando la programación
dinámica ofrece una solución aceptable.[ CITATION FAE20 \l 3082 ]

Ventajas

Una de las principales ventajas de usar programación dinámica es que acelera el


procesamiento, ya que se usan referencias que fueron previamente calculadas. Como es una
técnica de programación recursiva, reduce las líneas de código del programa.

 Algoritmos voraces vs programación dinámica

Los algoritmos voraces son similares a la programación dinámica en el sentido que ambos son
herramientas para la optimización. Sin embargo, el algoritmo voraz busca una solución óptima
en cada paso local. Es decir, busca una elección codiciosa con la esperanza de encontrar un
óptimo global.

Por tanto, los algoritmos voraces pueden hacer una suposición que se vea óptima en ese
momento, pero que se vuelve costosa en el futuro y no garantiza un óptimo global.

Por otro lado, la programación dinámica encuentra la solución óptima para los subproblemas y
luego hace una elección informada combinando los resultados de esos subproblemas para
encontrar realmente la solución más óptima.
Desventajas

– Se necesita mucha memoria para almacenar el resultado calculado de cada subproblema, sin
poder garantizar que el valor almacenado se utilizará o no.

– Muchas veces, el valor de salida se queda almacenado sin nunca ser utilizado en los
siguientes subproblemas durante la ejecución. Esto conlleva a una utilización innecesaria de la
memoria.

– En la programación dinámica las funciones se llaman recursivamente. Esto hace que la


memoria de pila se mantenga en constante aumento.

Bibliografía
Corvo, H. S. (MARZO de 2020). LIFERDER. Obtenido de
https://www.lifeder.com/programacion-dinamica/

FAEDIS. (2020). FAEDIS. Obtenido de


http://virtual.umng.edu.co/distancia/ecosistema/ovas/ingenieria_civil/investigacion_d
e_operaciones_ii/unidad_4/DM.pdf

También podría gustarte