Programación Dinámica

PROGRAMACIÓN DINÁMICA
- Fue introducida en 1957 por Richard Bellman.
- El desarrollo de métodos para optimizar crono-gramas de entrenamiento y logística para las fuerzas armadas, llamados "programas".
- El termino dinámico significa que las tablas se llenaban poco a poco y no de una sola vez.
PROGRAMACIÓN DINÁMICA
- La programación dinámica es un un método de diseño de algoritmos que esta compuesto de dos niveles de optimización.
- Elimina el trabajo redundante en subproblemas idénticos utilizando una tabla para almacenar resultados.
- Elimina la recursividad encontrando un orden en el cual los elementos de la tabla pueden ser llenados de manera iterativa.
CONDICIONES
- Un prolema de optimización satisface el principio de optimalidad de Bellman si en una sucesión optima de decisiones o elecciones, cada subsucesion es a su vez optima. Es decir, si miramos una subsolusión de la solución optima, debe ser solución del subproblema asociado a esa subsolución.
- Solapamiento entre subproblema, Al plantear la solución recursiva del problema, un mismo subproblema se resuelve mas de una vez.
MÉTODO GENERAL
- Ecuación recurrente, para calcular la solución de los problemas grandes en función de los problemas más pequeños.
- Determinar los casos base.
- Definir las tablas utilizadas por el algoritmo, y como son llenadas.
- Como se compone la solución global a partir de los valores de las tablas.
MÉTODO GENERAL
- La programación dinámica se suele utilizar en problemas de optimización, donde una solución esta formada por una serie de decisiones.
- Igual que la técnica divide y vencerás resuelve el problema original combinando las soluciones para subproblemas más pequeños.
- La programación dinámica no utiliza recursividad , si no que almacena los resultados de los subproblemas en una tabla calculando primero las soluciones para los problemas pequeños.
- Con esto se pretende evitar la repetición de cálculos para problemas más pequeños.
SERIE DE FIBONACCI






PROBLEMA DE LA MOCHILA









SOLUCIÓN FINAL



CONCLUSIÓN

CONSEJOS
http://foro.elhacker.net/ejercicios/ejercicios_recursivos_en_java_y_sus_soluciones-t231013.0.html
Algoritmos Recursivos
http://aljavier.github.io/recursividad-versus-iteratividad.html
Recursividad e iteratividad
AYUDA
https://www.youtube.com/channel/UCRgdoOWm0XwbfyaWUa7p3aA/videos
YouTube
http://es.stackoverflow.com/search?q=programacion+dinamica
StackOverFlow
https://github.com/lamphanviet/competitive-programming/tree/master/uva-online-judge/accepted-solutions
GitHub
GRACIAS POR SU ATENCIÓN :v
Programación Dinámica
By Marcelo Torrez Azuga
Programación Dinámica
- 58