Dynamic Programming
Um método para resolver um problema complexo, dividindo-o em uma coleção de subproblemas mais simples, resolvendo cada um desses subproblemas apenas uma vez e armazenando suas soluções. A programação dinâmica é frequentemente usada em problemas de otimização.