La programación dinámica es una rama de la investigación operativa y un método matemático para optimizar el proceso de decisión. A principios de la década de 1950, cuando el matemático estadounidense R.E. Bellman y otros estudiaban el problema de optimización del proceso de decisión de varios pasos, propusieron el famoso principio de optimización, que transformaba el proceso de varias etapas en una serie de pasos únicos. uno por uno utilizando la relación entre cada etapa, creando un nuevo método para resolver este tipo de problema de optimización de procesos: la programación dinámica.
La programación dinámica es un método utilizado en matemáticas e informática para resolver problemas de optimización que contienen subproblemas superpuestos. La idea básica es descomponer el problema original en subproblemas similares y, en el proceso de resolución del problema, la solución al problema original se obtiene a través de las soluciones de los subproblemas. La idea de programación dinámica es la base de muchos algoritmos y se utiliza ampliamente en los campos de la informática y la ingeniería. Los ejemplos de aplicaciones más famosos incluyen: resolución del problema del camino más corto, problema de mochila, gestión de proyectos, optimización del flujo de red, etc.