La Programación Dinámica es un método de solución de problemas que permite descomponer un modelo matemático muy grande, en problemas más pequeños de fácil resolución, que al resolver cada uno de ellos se obtiene la solución apropiada al problema mayor del cual fueron generados los más pequeños. La programación dinámica se apoya como estrategia de solución en “divide y vencerás”.
En sí, la programación dinámica, no tiene una técnica específica que se aplique a todos los problemas para resolverlos como es el caso de la programación lineal. Mas bien, es un método de resolución de problemas, que aunque mantiene algunas características comunes entre unos y otros, cada aplicación requiere un grado de práctica, creatividad y conocimientos para lograr dividir el problema grande en muchos pequeños lógicos y que se encuentren relacionados entre sí.