Programacion Dinamica
Programacion Dinamica
Programacion Dinamica
Introducción
Objetivos
Desarrollo
Los problemas que pueden se resueltos mediante programación dinámica, deben tener y
cumplir ciertas características, como:
• 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:
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
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.
Bibliografía
Corvo, H. S. (MARZO de 2020). LIFERDER. Obtenido de
https://www.lifeder.com/programacion-dinamica/