La programación dinámica es un método de optimización que involucra dividir un problema en subproblemas y almacenar soluciones para no recalcularlas. Se utiliza un principio de optimalidad de Bellman para resolver problemas de decisión en múltiples pasos de manera recursiva. El documento explica los conceptos básicos de programación dinámica incluyendo etapas, estados, recursividad y provee un ejemplo de encontrar la ruta más segura para un viaje en diligencia.