Este documento describe el método de programación dinámica para resolver problemas de optimización que involucran decisiones secuenciales. La programación dinámica divide el problema en etapas, donde cada etapa tiene un número finito de estados posibles. Resuelve de manera recursiva los subproblemas de cada etapa para encontrar la solución óptima global al problema original en múltiples etapas.