La méthode de programmation dynamique, comme la méthode diviser pour régner, résout des problèmes en combinant des solutions de sous-problèmes. Les algorithmes diviser-pour-régner partitionnent le problème en sous-problèmes indépendants qu’ils résolvent récursivement, puis combinent leurs solutions pour résoudre le problème initial.
Les différents algorithmes de programmation dynamique utilisant les formules de récurrences précédentes pour la recherche de chemins minimaux sont valables pour des graphes sans circuit de valeur strictement négative. Algorithme de Bellman. Valuations de signes quelconques sur un graphe sans circuit de valeur négative.
Il n'y a pas de secret, et pour être réellement à l'aise avec ce domaine il est nécessaire de pratiquer énormément sur des sujets variés, car des problèmes de programmation dynamique peuvent être formulés de nombreuses manières.
La première étape de notre optimisation consiste donc à transformer notre algorithme dynamique récursif (méthode descendante) en un algorithme dynamique itératif (méthode ascendante).