La programación dinámica se puede utilizar para resolver problemas lineales y no lineales donde se deben tomar una serie de decisiones interrelacionadas. A diferencia de otros métodos, la programación dinámica no tiene una formulación matemática estándar, sino que se deriva de las condiciones del problema. Se resuelve el problema de forma recursiva, dividiéndolo en subproblemas más pequeños que se resuelven de forma secuencial.